【问题标题】:undo remove nodes operation in Cytoscape JS撤消 Cytoscape JS 中的删除节点操作
【发布时间】:2016-01-12 06:24:20
【问题描述】:

当您在 cytoscape JS 中删除节点时(使用 cy.remove()),连接到这些节点的边也会从图中删除。 cy.remove() 的描述说它从图中删除元素并返回它们。 但是,返回的数据不包括已删除的边。

因此,以下操作序列

removedData = cy.remove(someNodes); cy.add(removedData);

请修改图表,因为它们可能会导致某些边消失。

您应该如何在 Cytoscape JS 中执行可逆删除操作?

【问题讨论】:

  • 请注意,我已经通过删除/添加 CSS 类(即使用 display: 'none')复制了从图表中添加和删除元素的视觉效果,但我仍然对概述的问题的解决方案非常感兴趣。特别是因为使用 CSS 删除元素,即使使用 display:'none',也不会阻止布局算法像图中存在节点一样。
  • 此解决方案删除一个节点及其子节点(节点加边),并可以恢复它们:stackoverflow.com/questions/30490567/…

标签: javascript cytoscape.js cytoscape


【解决方案1】:

你可以明确地包含边:

removedData = cy.remove(someNodes.union(someNodes.connectedEdges()));

那么removedData.restore()cy.add(removedData) 都将恢复节点和边。

【讨论】:

  • 谢谢,起初我忽略了这种方法,因为感觉它是一项昂贵的操作,但我想别无选择。根据它的实现,我猜它仍然可以相当活泼。
  • 非常感谢!我正在研究捕获已删除节点的所有信息,但似乎找不到将两个集合合并在一起的方法,您的回答提供了一个我一直在寻找的解决方案。干杯!
【解决方案2】:

使用 CytoscapeJS 2.5.4 我可以运行以下命令并删除和恢复连接的节点

removedData = cy.remove("#node2");

--pause--

removedDate.restore();

【讨论】:

  • 我使用 Cytoscape.js 2.7.5 也遇到了同样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
相关资源
最近更新 更多