JointJS:使链接标签在链接本身上移动

时间:2015-10-20 18:00:22

标签: javascript jointjs

对于链接 - 在JointJS图中 - 我尝试实现本教程(http://jointjs.com/tutorial/constraint-move-to-circle)来移动链接上的标签,但我不明白将ConstraintElementView放在哪里。< / p>

  1. 我想在链接上移动链接的标签。那么如何将链接定义为可移动标签的“路径”?
  2. ConstraintElementView

    var constraint = label; // ???
    
    var ConstraintElementView = joint.dia.ElementView.extend({
    
        pointerdown: function(evt, x, y) {
            var position = this.model.get('position');
            var size = this.model.get('size');
            var center = g.rect(position.x, position.y, size.width, size.height).center();
            var intersection = constraint.intersectionWithLineFromCenterToPoint(center);
            joint.dia.ElementView.prototype.pointerdown.apply(this, [evt, intersection.x, intersection.y]);
        },
        pointermove: function(evt, x, y) {
            var intersection = constraint.intersectionWithLineFromCenterToPoint(g.point(x, y));
            joint.dia.ElementView.prototype.pointermove.apply(this, [evt, intersection.x, intersection.y]);
        }
    });
    

    链接标签

    paper.on({
        /**
        *   Doubleclick on link: Add label for link
        */
        'cell:pointerdblclick': function(cellView, event, x, y){            
            if (cellView.model.isLink()) {
                cellView.model.label(0, {
                    position: .5,
                    attrs: {
                        rect: { fill: '#eeeeee' },
                        text: { text: 'text', 'font-size': 12, ref: 'rect' }
                    }
                });
            }
        }
    });
    

    var paper = new joint.dia.Paper({
        el: $('#canvas'),
        width: 801,
        height: 496,
        model: graph,
        gridSize: 10,
        elementView: ConstraintElementView,
        defaultLink: new joint.dia.Link({
            router: { name: 'manhattan' },
            connector: { name: 'rounded' },
            attrs: {
                '.marker-target': { d: 'M 10 0 L 0 5 L 10 10 z', fill: '#6a6c8a', stroke: '#6a6c8a' },
                '.connection': { stroke: '#6a6c8a', 'stroke-width': 2 }
            }
        })
    });
    
    1. 由于它可以在链接上移动,因此它应该与曼哈顿风格链接的每个部分的中心对齐。但我认为没有机会获得每个细分市场中心的价值。

2 个答案:

答案 0 :(得分:5)

您无需创建任何路径。只需通过计算其相对值来改变标签的位置 - 当然也可以使用绝对值。

Set

答案 1 :(得分:1)

可以通过纸张上labelMove对象的interactive选项启用标签可以沿着链接移动:

var paper = new joint.dia.Paper({ // ... interactive: { labelMove: true } // ... })

此标记默认为false