3

ポートで円を作成しようとしています。ワークフローを実装しています。ポートで開始円と終了円を作成する必要がありますが、今まで成功していません。

円を作成できますが、ポートがないため、メソッド getPortAttrs が呼び出されます。

joint.shapes.devs.CircleModel = joint.shapes.basic.Generic.extend(_.extend({}, joint.shapes.basic.PortsModelInterface, {
    markup: '<g class="rotatable"><g class="scalable"><circle class="body"/> </g> <g class="inPorts"/> <g class="outPorts"/> </g>',
    portMarkup: '<g class="port<%= id %>"> <circle class="port-body"/> <text class="port-label"/> </g>',
    defaults: joint.util.deepSupplement({
        type: 'devs.CircleModel',
        size: { width: 20, height: 20 },
        inPorts: [],
        outPorts: [],
        attrs: {
            '.': { magnet: true },
            '.body': {
                transform: 'translate(10, 10)',
                r: 10,
                'stroke-width': 2,
                stroke: 'green',
                fill: 'green'
            },
            '.port-body': {
                r: 5,
                magnet: true,
                stroke: 'black'
            },
            '.inPorts .port-label': { dy:-30, x: 4 },
            '.outPorts .port-label':{ dy: 15, x: 4 }
        }
    }, joint.dia.Element.prototype.defaults),

    getPortAttrs: function (portName, index, total, selector, type) {
        var attrs = {};
        var portClass = 'port' + index;
        var portSelector = selector + '>.' + portClass;
        var portTextSelector = portSelector + '>.port-label';
        var portCircleSelector = portSelector + '>.port-body';
        attrs[portTextSelector] = { text: portName };
        attrs[portCircleSelector] = { port: { id: portName || _.uniqueId(type) , type: type } };
        attrs[portSelector] = { ref: '.body', 'ref-x': (index + 0.5) * (1 / total) };
        if (selector === '.outPorts') { attrs[portSelector]['ref-dy'] = 0; }
        return attrs;
    }
}));
4

0 に答える 0