【问题标题】:How to autoselect DAG node ancestors in Cytoscape.js如何在 Cytoscape.js 中自动选择 DAG 节点祖先
【发布时间】:2014-05-08 01:31:47
【问题描述】:

当在使用 Cytoscape.js 渲染的 DAG 中选择(即单击)节点时,我希望自动选择所有“祖先”节点。

我已调整 this algorithm 为选定节点的所有祖先(或更准确地说,前辈 - 请参阅 Wikipedia 上的有向图页面)设置属性“已访问”为 1。

但是,随后在所有具有node.data('visited') == 1 的节点上调用node.select() 不会导致使用:selected 选择器定义的样式应用于这些节点,除非您按住shift。即使这样,只有祖先被突出显示,点击的节点没有样式。

http://jsbin.com/piguxuna/1/edit?js,console,output

附注:该示例展示了如何使用 dagre 在 Cytoscape.js 中进行 GraphViz 点/Sugiyama 布局。

【问题讨论】:

  • 使用中键鼠标单击桌面/Chrome 并点击 iPad/iOS 6.0.1,结果显示行为与预期一致。不过,iPhone/Safari 5.0.1 上什么都没有显示。

标签: javascript cytoscape.js


【解决方案1】:

(1) 如果您使用旧浏览器,您可能会遇到错误。仅支持现代、自动更新的浏览器。如果您无法更新手机上的浏览器,请将您的操作系统更新到最新版本。

(2) 你的选择方法有问题。在点击时,您应该构建所需元素的集合(参见cy.add()cy.collection())。然后,你可以toSelectEles.select() and cy.elements().not( toSelectEles ).unselect()

【讨论】:

  • 谢谢,我不担心旧版浏览器支持。鼠标左键单击行为是否可以匹配鼠标中键单击和触摸设备点击行为?还给定一个带有节点 [A -> B -> C, D -> E -> C] 的 DAG,我希望能够通过单击 A 来选择所有节点,然后单击 Shift+D。当前 shift 被忽略(即仅选择 D、E、C)。我不知道这种行为是否可以通过触摸屏手势实现,任何帮助将不胜感激。
猜你喜欢
  • 1970-01-01
  • 2014-08-08
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 2017-02-10
相关资源
最近更新 更多