我如何防止Javascript InfoVis SpaceTree`ST。选择()`法从倒塌的节点?
-
26-09-2019 - |
题
我使用的JavaScript InfoVis的工具包,并且特别的 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()
强调叶节点的所有儿童节点下的这个水平是倒塌/隐藏。
看见这个动作我已经上传了一些例子:
你可能需要以滚动下如果您是一位很小。
所以我的问题是,如何秀节点,从叶节点回到根节点在JavaScript InfoVis没有崩溃3级的儿童(1级,正在根)?
如果有办法找到我的leafe节点和走树回的根源(设置的风格上的方式)然后,我会生那样做
解决方案
确定后通过挖掘所有的代码时,打乱它与控制台。日志()电和断点,我找到它。
它已做到与初始 onClick
呼叫,事实上,该图作为更新的循环的运行的背景和事实,一切都不管 onClick
似乎忽略的 busy
状态的曲线图。
会发生什么
onClick
被称为并触发一连串的事件,部分人是异步的select
被称为其或多或少是同步并且其工作onClick
最后完成和它的一个副作用是,它重新扩大图select
已经设clickedNode
现在onClick
使用新设置的价值和螺钉起来
解决方案
我们需要重新设计 select
所以这方面的忙碌状态下的图:
select: function(id, onComplete) {
var that = this;
if (this.busy) {
window.setTimeout(function() {
that.select(id, onComplete);
}, 1);
return;
}
// original select code follows here (remove the old var that = this; assignment)
这一切,我们只是简单地检查忙碌的状态,并延误选择,直到它的 false
.这也应适用于所有其他功能除了 onClick
这被称为从外,图书馆设计师这里有没有一个糟糕的工作的指示有什么副作用和什么没有。
其他提示
你有没有尝试设置“限制:假”在ST的属性?这解决了这个问题对我来说。