То, как я это делаю, заключается в том, чтобы поместить некоторую информацию в массив данных этих специальных узлов, а затем, когда придет время его рисовать, я внесу изменения только в эти узлы.
Данные:
var json =
{
'id':'id0.0',
'name':'Root',
'data':
{
'mytype':'1'
},
'children':
[
{
'id':'id1.0',
'name':'Node 1.0',
'data':
{
'mytype':'2'
},
'children':
[
{
'id':'id2.0',
'name':'Node 2.0'
},
{
'id':'id2.1',
'name':'Node 2.1'
},
{
'id':'id2.2',
'name':'Node 2.2'
}
]
}
]
};
Итак, вы можете видеть, что у некоторого узла есть элемент данных с именем mytype , вы должны следить за ним, когда дерево рисуется.Для этого вам нужно реализовать функцию onBeforePlotNode .Этот метод полезен для изменения стиля узла непосредственно перед его построением.
Вот код для создания SpaceTree, который будет обрабатывать ваши специальные узлы:
myTree = new $jit.ST({
//id of viz container element
injectInto: 'MyGraph',
orientation: 'top',
duration: 200,
transition: $jit.Trans.Quart.easeInOut,
levelDistance: 50,
//enable panning
Navigation:
{
enable:true,
panning:true,
zooming:20
},
//set node and edge styles
//set overridable=true for styling individual
//nodes or edges
Node: {
overridable: true,
autoWidth: true,
autoHeight: true,
type: 'rectangle'
},
Edge: {
type: 'bezier',
overridable: true
},
onBeforePlotNode: function(node)
{
//if(node.data.class == 'node')
if(node.data.mytype == '2')
{
node.data.$height = 60;
}
},
});
Вы можете увидеть, что OnBeforePlotNode имеет видглядя на данные узла, чтобы увидеть, является ли он особенным.Тогда вы можете изменить только эти узлы.