$.ajax({url: "/GetMeasures", dataType: 'json', cache: false, success: function(data, textStatus, jqXHR) {
var measures = data;
var colgroup = $('#categoryTree colgroup');
var theadtr = $('#categoryTree thead tr');
var bodytr = $('#categoryTree body tr');
//Add a column per measure.
for(var i = 0; i < measures.length; i++) {
var measure = measures[i];
if(measure.visible) {
colgroup.append('');
theadtr.append(' | ');
bodytr.append(' | ');
}
}
//Setup the tree table.
$("#categoryTree").fancytree({
extensions: ["table"],
table: {
indentation: 20, // indent 20px per node level
nodeColumnIdx: 0
},
renderColumns: function(event, data) {
var node = data.node, $tdList = $(node.tr).find(">td");
//$tdList.eq(0).text(node.name);
$tdList.eq(1).html("");
//$tdList.eq(2).text(node.data.counts);
if(node.data.type == 'Item') {
for(var i = 0; i < measures.length; i++) {
var measure = measures[i];
if(measure.id in node.data.counts) {
$tdList.eq(2+i).text("X");
}
else {
$tdList.eq(2+i).text("_");
}
}
}
},
source: {
url: "/GetCategories",
cache: false
},
lazyLoad: function(event, data) {
var node = data.node.data;
if(node.type == 'Category') {
data.result = {
url: "/GetSubcategories",
data: {id: node.id}
}
}
else if(node.type == 'Subcategory') {
data.result = {
url: "/GetItems",
data: {id: node.id}
}
}
else {
data.result = [];
}
},
postProcess: function(event, data) {
var nodes = data.response;
for(var i = 0; i < nodes.length; i++) {
nodes[i].key = (data.node != null ? data.node.key + "/" : "") + nodes[i].id;
nodes[i].title = nodes[i].name;
nodes[i].cache = false;
nodes[i].type = data.node.data.type == null ? "Category" : data.node.data.type == 'Category' ? "Subcategory" : "Item";
nodes[i].lazy = nodes[i].folder = nodes[i].type != 'Item';
//check(data.node);
}
}
});
}, fail: function(jqXHR, textStatus, errorThrown) {
//TODO:
alert("Get measures failed.");
}});