Cytoscape中的动态/可滚动容器大小(+ cy.fit()问题)

时间:2017-11-27 21:57:49

标签: cytoscape.js

所以我最近一直在尝试Cytoscape。我的项目的目标基本上是一个协作图,人们将能够添加/删除节点,从而使节点在此过程中增长。该图将包含许多复合节点。

我见过的大多数例子都使用占用屏幕空间100%的容器div。这适用于“受控”图形,但在我的情况下不起作用,因为它的大小是动态的。

这是一个在固定的3000px / 3000px容器中使用circle布局的JSFiddle: https://jsfiddle.net/Jeto143/zj8ed82a/5/

  1. 有没有办法让容器大小变得动态而不是明确说明它?或者我是否必须以某种方式计算新的最佳容器大小,然后调用cy.resize()修改:实际上,无论网络有多大,使用100%/ 100%进入cy.fit()可能只会有效,所以请忽略这个问题就是这种情况。

  2. 是否存在推荐的布局,用于以非分层方式显示大量/未知数量的数据,以“巧妙地”以尽可能最有效的方式放置节点(包括复合节点),同时避免任何重叠? (我想这要问很多......)

  3. 为什么cy.fit()似乎没有在我的例子中起作用?我在图初始化和CTRL +点击节点时使用它(显示封闭的邻域),但它似乎不喜欢3000x3000px容器(看起来更好100%x100%)。 编辑:如果您忽略了1,也会忽略此问题,因为100%/ 100%似乎也没问题。

  4. 非常感谢任何帮助/建议。

    非常感谢你。

1 个答案:

答案 0 :(得分:1)

TLDR:这是(1)。

Cytoscape有一个pannable视口,就像一张地图。您可以在CSS中定义视口(div)的尺寸。视口中显示的内容是节点位置,缩放级别和平移级别的函数 - 就像地图视口中可见的内容一样,它是缩放,平移和感兴趣点位置的函数。 / p>

所以要么你必须

(a)在缩放和平移方面重新考虑您的UI并使用Cytoscape中的内置设施,或

(b)在Cytoscape中禁用缩放和平移(可能在缩放1处保持在(0,0))并让用户在向图形添加内容时滚动页面并调整其容器div的大小以容纳新内容。