/*! JointJS v0.9.7 - JavaScript diagramming library 2016-04-20
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
// JointJS library.
// (c) 2011-2013 client IO
joint.shapes.devs = {};
joint.shapes.devs.Model = joint.shapes.basic.Generic.extend(_.extend({}, joint.shapes.basic.PortsModelInterface, {
markup: '',
portMarkup: '',
defaults: joint.util.deepSupplement({
type: 'devs.Model',
size: { width: 1, height: 1 },
inPorts: [],
outPorts: [],
attrs: {
'.': { magnet: false },
'.body': {
width: 150, height: 250,
stroke: '#000000'
},
'.port-body': {
r: 10,
magnet: true,
stroke: '#000000'
},
text: {
'pointer-events': 'none'
},
'.label': { text: 'Model', 'ref-x': .5, 'ref-y': 10, ref: '.body', 'text-anchor': 'middle', fill: '#000000' },
'.inPorts .port-label': { x:-15, dy: 4, 'text-anchor': 'end', fill: '#000000' },
'.outPorts .port-label':{ x: 15, dy: 4, fill: '#000000' }
}
}, joint.shapes.basic.Generic.prototype.defaults),
getPortAttrs: function(portName, index, total, selector, type) {
var attrs = {};
var portClass = 'port' + index;
var portSelector = selector + '>.' + portClass;
var portLabelSelector = portSelector + '>.port-label';
var portBodySelector = portSelector + '>.port-body';
attrs[portLabelSelector] = { text: portName };
attrs[portBodySelector] = { port: { id: portName || _.uniqueId(type) , type: type } };
attrs[portSelector] = { ref: '.body', 'ref-y': (index + 0.5) * (1 / total) };
if (selector === '.outPorts') { attrs[portSelector]['ref-dx'] = 0; }
return attrs;
}
}));
joint.shapes.devs.Atomic = joint.shapes.devs.Model.extend({
defaults: joint.util.deepSupplement({
type: 'devs.Atomic',
size: { width: 80, height: 80 },
attrs: {
'.body': { fill: 'salmon' },
'.label': { text: 'Atomic' },
'.inPorts .port-body': { fill: 'PaleGreen' },
'.outPorts .port-body': { fill: 'Tomato' }
}
}, joint.shapes.devs.Model.prototype.defaults)
});
joint.shapes.devs.Coupled = joint.shapes.devs.Model.extend({
defaults: joint.util.deepSupplement({
type: 'devs.Coupled',
size: { width: 200, height: 300 },
attrs: {
'.body': { fill: 'seaGreen' },
'.label': { text: 'Coupled' },
'.inPorts .port-body': { fill: 'PaleGreen' },
'.outPorts .port-body': { fill: 'Tomato' }
}
}, joint.shapes.devs.Model.prototype.defaults)
});
joint.shapes.devs.Link = joint.dia.Link.extend({
defaults: {
type: 'devs.Link',
attrs: { '.connection' : { 'stroke-width' : 2 }}
}
});
joint.shapes.devs.ModelView = joint.dia.ElementView.extend(joint.shapes.basic.PortsViewInterface);
joint.shapes.devs.AtomicView = joint.shapes.devs.ModelView;
joint.shapes.devs.CoupledView = joint.shapes.devs.ModelView;