【问题标题】:Make elements 'not selectable' in jointjs在jointjs中使元素“不可选择”
【发布时间】:2014-02-25 19:05:55
【问题描述】:

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

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

2) 我的应用严重依赖它。虽然我已经解决了自动布局的问题,但是使用 Jointjs 是否可行,我们可以告诉库我们想要这些元素和东西吗,请帮助我们用最合适的、非碰撞的元素和最少的元素制作图表如果链接是连续的直线,则相互碰撞以及与路径中的元素发生碰撞的链接数?

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

if (element1.getBBox().intersect(element2.getBBox())) {
    // elements intersect
}

【问题讨论】:

    标签: javascript jointjs


    【解决方案1】:

    1) 直接在纸上使用new joint.dia.Paper({ interactive: false, ... }) 或将pointer-events 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

    【讨论】:

    • 非常感谢您的完美回答。帮助很大!我们可以使特定元素“不可选择”吗?我有一个joint.shapes.devs 类型的元素。我想让这种类型的特定元素“不可选择”而不是这种类型的所有元素
    • 啊!你的答案有解决方案element.attr({rect:{style:{'pointer-events':'none'}}}); :)
    • 正确,这是一种方法。另一个是您实际上可以使用以下内容将interactive: false 设置为特定元素(更准确地说,它们的视图):paper.findViewByModel(myElement).options.interactive = false
    • 很抱歉再次打扰您,我们可以更改特定 inPort 的 css 吗?为了将 sourcePort 链接到我使用source: { id: source.id, selector: source.getPortSelector(sourcePort) } 的目标,它为我提供了准确的源端口,但是在知道它是我的源连接器之后如何在这个特定端口上应用 css?有办法吗? Can we fit the label automatically inside the element if its width is longer than the element-width?
    • 偶遇foreignobject 不知道怎么用?你能解释一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多