Categories

NameVisible
$.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."); }});