2

4つのレベル(オリンピック>スポーツ>イベント>メダル)のJavascript Infovis Toolkitを使用してツリーマップを作成しており、一度に3つ表示したいと考えていますが、ラベルは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は変わらないようです—これは各ノードの静的プロパティです。

親として設定された現在の深度ノードに基づいて表示する深度レベルを変更する条件を記述できる場合があります。誰が私がそれを見つけるだろうか知っていますか?

ありがとう!

4

1 に答える 1

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 = '';          
        }           
    }
}
于 2012-07-28T13:29:07.393 に答える