JavaScript InfoVis Toolkit、特にSpaceTreeの視覚化を使用しています。
すべてのツリーを展開してから、特定のリーフノードからルートに戻るパスを表示する必要があります。
ツリーをうまく拡張できましたが、リーフノードを選択し、ルートに戻るパスを強調表示しているため、問題が発生しています。
この関数を使用して、ST.select(node, onComplete)
関心のあるリーフノードを選択しています。実際、ルートに戻るパス(ラインとノード)が強調表示されています。
これを行うために、ルートとそのプロットラインに戻ってノードを強調表示できるようにするメソッドonBeforePlotNode
とメソッドを実装しました。onBeforePlotLine
ST.Controller
onBeforePlotNode: function(node){
//add some color to the nodes in the path between the
//root node and the selected node.
if (node.selected) {
node.data.$color = "#dddddd";
} else {
delete node.data.$color;
}
},
onBeforePlotLine: function(adj){
if (adj.nodeFrom.selected && adj.nodeTo.selected) {
adj.data.$color = "#33CC33";
adj.data.$lineWidth = 5;
} else {
delete adj.data.$color;
delete adj.data.$lineWidth;
}
}
問題は、リーフノードを強調表示するために呼び出すST.select()
と、このレベルの下にあるすべての子ノードが折りたたまれ/非表示になることです。
これが実際に動作することを確認するために、いくつかの例をアップロードしました。
完全なツリー拡張-リーフが選択されていません
リーフが選択されています-パスが表示されていますが、ノードN2の下のすべての子が欠落しています
ブラウザウィンドウが少し小さい場合は、下にスクロールする必要があります。
だから私の質問は、レベル3の子(レベル1がルート)を折りたたむことなく、JavaScript InfoVisでリーフノードからルートノードにノードを表示するにはどうすればよいですか?
私のleafeノードを見つけてツリーをルートに戻す方法があれば(途中でスタイルを設定する)、それをやって幸せになるでしょう