在jointjs中使元素"不可选"

sof*_*var 5 javascript jointjs

我在我的一个项目中使用了Jointjs图表库.

1)我很想知道它是否提供了限制用户不使用图表元素的方法.我的意思是:用户可以将图表视为图像而不是与图像进行交互,如调整大小,更改位置,拖动链接等.

2) 我的应用程序严重依赖它.虽然我已经解决了自动布局的问题,但是有可能使用Jointjs,我们可以告诉lib我们想要这些元素和东西,并请帮助我们制作具有最合适,非碰撞元素的图表,并且最小化如果链接是连续的直线,链接的数量是否相互碰撞以及路径中的元素?

3) 最后,我想知道我们是否可以检查与其他元素或同一图表中的其他链接发生冲突的链接.我知道在元素的情况下它是可能的.

if (element1.getBBox().intersect(element2.getBBox())) {
    // elements intersect
}
Run Code Online (Sandbox Code Playgroud)

dav*_*ave 9

1)new joint.dia.Paper({ interactive: false, ... })在纸上直接使用或者将指针事件CSS属性设置为none:paper.$el.css('pointer-events', 'none')

2)您可以使用joint.layout.DirectedGraph插件.这个插件可以在这里下载:http://jointjs.com/download和一篇描述它的博客文章:http://www.daviddurman.com/automatic-graph-layout-with-jointjs-and-dagre.html.

3)这通常不容易.我将指向此站点以获取计算两个路径之间交集的示例:http://www.kevlindev.com/geometry/2D/intersections/intersect_bezier2_bezier2.svg.这是下载的库:http://www.kevlindev.com/gui/math/intersection/index.htm

  • 正确,这将是一种方法.另一个是你可以通过使用类似:`paper.findViewByModel(myElement).options.interactive = false来实际设置`interactive:false`到特定元素(更确切地说,它们的视图). (3认同)