簡體   English   中英

如何將節點傳遞給 cytoscape-cola.js 中的 gapInequalities?

[英]How do you pass nodes to gapInequalities in cytoscape-cola.js?

layout字典的gapInequalities元素的cytoscape.js-cola 文檔說:

  gapInequalities: undefined, // list of inequality constraints for the gap between the nodes,
                              // e.g. [{"axis":"y", "left":node1, "right":node2, "gap":25}]

您如何設置在leftright值中指定節點的對象?

maxkfranz 在這里有用地指出這些對象需要是集合對象 這些包含對指定節點(“元素”)的引用,並通過查詢 cytoscape.js “核心對象”來創建。 我不清楚的是,鑒於layout object 需要引用節點元素,並且在layout告訴如何渲染它們之前不應將元素添加到圖中,您如何正確設置這些集合對象?

例如,要指定節點b應該放在節點a之上,用什么來代替???a??? ???b??? 在下面的代碼中?

cy = cytoscape({
  elements: [
      { data: { id: 'a' } },
      { data: { id: 'b' } },
      . . .
  ],
  layout: {
    name: 'cola',
    gapInequalities: [
        { axis: 'y', left: ???'a'???, right: ???'b'???, gap: 25 }
        . . .
    ],
    . . .
  }
  . . .
]);

在這種情況下,答案不能是cy.$id('a')cy.$id('b')因為尚未創建cy object。 您可以通過創建沒有元素的cy object 然后調用cy.add()將它們放入其中來解決這個問題。但是傳遞給cytoscape()layout object 會發生什么?

我對cytoscape.jscola.js都是新手,所以我很可能只是在這里遺漏了一些非常基本的想法。 一個簡單的示例顯示 function 調用設置對象和調用它們的順序可能會做到這一點。 在我的應用程序中,節點和邊逐漸添加到圖表中,並且 animation 需要顯示它們正在添加,因此無論如何不要在開始時設置所有元素更有意義。

由於您的節點和邊是逐漸添加的,您可以創建沒有元素和布局 object 的 cy object。 然后當新節點出現時,您可以將它們添加到圖表並應用布局。

cy object 初始化后,每次新節點到來時,應用以下內容:

cy.add(...);
cy.layout({
  name: 'cola',
  gapInequalities: [{ axis: 'y', left: cy.$id("a"), right: cy.$id("b"), gap: 25 }],
  ...
}).run();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM