gpt4 book ai didi

javascript - d3.js:在树形布局中展开多条路径

转载 作者:行者123 更新时间:2023-11-29 21:16:49 25 4
gpt4 key购买 nike

我的 JSON 在不同的路径中包含相同的节点名称,我希望能够打开所有具有相同名称或名称中包含子字符串的子节点。

试过这个例子:[ Search Collapsible Tree ],但它只打开一条路径。
这个想法是实现子字符串搜索,如果路径有一个包含搜索词的节点,则打开(展开)该路径。

因此,我将 Select2 替换为文本输入,但搜索仍然仅限于一个结果。 enter image description here

最佳答案

您只需更改树搜索功能即可找到所有节点(然后突出显示所有内容):

	function searchTree(obj,search,path, paths){
if(obj.name.indexOf(search) != -1){ //if search is found return, add the object to the path and return it
path.push(obj);
paths.push(path.slice(0)); // clone array
}
else if(obj.children || obj._children){ //if children are collapsed d3 object will have them instantiated as _children
var children = (obj.children) ? obj.children : obj._children;
for(var i=0;i<children.length;i++){
path.push(obj);// we assume this path is the right one
searchTree(children[i],search,path, paths);
path.pop();
}
}
}

...

$("#search").on("select2-selecting", function(e) {
var paths = [];
searchTree(root,e.object.text,[], paths);
if(paths.length > 0)
{
paths.forEach(function(p) { openPaths(p) });
//openPaths(paths);
}
else{
alert(e.object.text+" not found!");
}
})

关于javascript - d3.js:在树形布局中展开多条路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39062545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com