Я использую 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 отсутствуют
Возможно, вам придется прокрутить страницу вниз, если окно браузера немногоsmall.
Итак, мой вопрос: как мне показать узлы от конечного узла до корневого узла в JavaScript InfoVis, не сворачивая потомки уровня 3 (уровень 1 является корневым)?
Еслибыл способ найти мой главный узел и пройтись подерево обратно в корень (установка стилей на пути), тогда я буду рад сделать это