backbone.js jointJS/Rappid -使用曼哈顿路由器时源和目标箭头的错误显示

mm5n2pyu  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(125)

我希望有一个特定的单元格总是向后,以便能够把一个完整的图形放在它上面,如图所示(这里这个单元格有一个浅蓝色的背景色),但当链路使用曼哈顿路由器时,我的源和目标箭头没有相应地显示。

我编写的将此单元格设置为Back的代码如下:

cell.toBack();

这意味着此单元格将始终位于图表的最低级别。
我应该怎么做才能使这个单元格上的所有过渡都显示在纸上,我的意思是,如下图所示?

ryevplcw

ryevplcw1#

问题

示例中使用的曼哈顿路由器无法找到路由,因为源元素和目标元素都被一个大的障碍物(浅蓝色矩形)覆盖。

溶液1

1.请确保容器元素具有唯一的类型。

var Container = joint.dia.Element.define('ns.Container', {
  attrs: {
    rect: {
      refWidth: '100%',
      refHeight: '100%',
      stroke: 'black',
      fill: 'lightblue'
    }
  }  
}, {
  markup: 'rect'
});

var container = new Container;
container.resize(200,200);
container.position(100, 100);
container.addTo(graph);
  • 对于旧版本的JointJS/Rappid*
var Container = joint.dia.Element.extend({
  markup: 'rect',
  defaults: joint.util.deepSupplement({
    type: 'ns.Container',
    attrs: {
      rect: {
        'ref-width': '100%',
        'ref-height': '100%',
        'stroke': 'black',
        'fill': 'lightblue'
       }
    }
  }, joint.dia.Element.prototype.defaults)
});

1.指示曼哈顿路由器不要考虑障碍物的容器元素。

new joint.dia.Paper({
  defaulRouter: {
    name: 'manhattan',
    args: { excludeTypes: 'ns.Container' }
  }
});

溶液2

将元素嵌入到容器元素中会导致曼哈顿路由器自动忽略容器。

container.embed(activity1);
container.embed(activity2);

相关问题