cytoscape.js是否支持折叠/扩展复合节点?
Eg. before collapsing
node1 (-)
--node1.1
--node1.2
------node1.2.1
崩溃后
node1 (+)
扩展/折叠的(+)或( - )符号会很棒。
寻找使用Compound节点对一组节点进行分组并通过用户交互进行折叠/展开的选项。如果cytoscape.js默认不支持此功能,那么任何替代/解决方法都可以达到目标吗?
答案 0 :(得分:1)
使用API相对简单。
折叠:node1.descendants().addClass('collapsed-child')
展开:node1.descendants().removeClass('collapsed-child')
... .collapsed-child { opacity: 0; }
您可能还想更改后代的位置,以便父节点更小。或者,如果您不关心崩溃儿童的边缘,则可以display: none
使用.collapsed-child
。
答案 1 :(得分:0)
对于在 Cytoscape.js 中寻找删除节点及其子节点问题的解决方案的其他人,我尝试使用已接受答案中的(公认过时的)解决方案失败:.descendants()
。
在 GitHub 上等待回复时,
https://github.com/cytoscape/cytoscape.js/issues/2877
我设计了以下解决方案。简而言之,我:
.successors()
而不是 .dependents()
(上面建议).addClass()
var myNode = cy.elements('node[name="Technology"]');
// cy.collection() : return a new, empty collection
// https://js.cytoscape.org/#cy.collection
var myCollection = cy.collection();
setTimeout(function(){
console.log('Deleting "Technology" node + descendants ...')
// Save data for later recall:
// https://js.cytoscape.org/#cy.remove
myCollection = myCollection.union(myNode.successors().targets().remove());
myNode.successors().targets().remove();
// nested setTimeout():
setTimeout(function(){
console.log('Restoring "Technology" node + descendants ...')
myCollection.restore();
console.log('Done!')
}, 2000);
}, 2000);