我创建了一个treemap with the Javascript Infovis Toolkit,有4个等级(奥运会>运动>事件>奖牌),我希望一次显示三个 - 但只有2/3的标签。
(例如:在顶视图中,我会显示所有不同的运动,以及运动中的所有事件,但不会显示事件的标签,因为有太多。)
我正在使用以下代码尝试隐藏关卡,但在放大时它并没有取消隐藏它们。
onPlaceLabel: function(domElement, node){
if (node._depth == 0) {console.dir(node);}
if (node._depth > 1) {
domElement.style.display = 'none';
} else {
domElement.style.display = '';
}
}
放大/缩小时,_depth似乎不会改变 - 它是每个节点的静态属性。
我或许可以编写一个条件,根据设置为父级的深度当前节点更改深度级别。有人知道我在哪里找到它吗?
谢谢!
答案 0 :(得分:2)
想出来! onBeforeComputer();方法在计算所有内容之前对所选节点执行操作。见下面的代码:
//sets the selected node depth as the .currentParentDepth
onBeforeCompute : function(node){
if (typeof this.currentParentDepth === "undefined") {
this.currentParentDepth = 0;
}
else {
this.currentParentDepth = node._depth;
}
},
onPlaceLabel: function(domElement, node){
if (this.currentParentDepth == 0) {
if (node._depth > 1) {
domElement.style.display = 'none';
} else {
domElement.style.display = '';
}
} else if (this.currentParentDepth == 1) {
if (node._depth > 2) {
domElement.style.display = 'none';
} else {
domElement.style.display = '';
}
}
}