在Javascript Infovis Toolkit树形图中显示特定深度的标签

时间:2012-07-28 12:33:46

标签: javascript treemap infovis

我创建了一个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似乎不会改变 - 它是每个节点的静态属性。

我或许可以编写一个条件,根据设置为父级的深度当前节点更改深度级别。有人知道我在哪里找到它吗?

谢谢!

1 个答案:

答案 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 = '';          
        }           
    }
}