/*! JointJS v0.9.0 - JavaScript diagramming library 2014-05-13
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/.
*/
if (typeof exports === 'object') {
var joint = {
util: require('../src/core').util,
shapes: {
basic: require('./joint.shapes.basic')
},
dia: {
ElementView: require('../src/joint.dia.element').ElementView,
Link: require('../src/joint.dia.link').Link
}
};
var _ = require('lodash');
}
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 },
rect: {
width: 150, height: 250,
stroke: 'black'
},
circle: {
r: 10,
magnet: true,
stroke: 'black'
},
text: {
fill: 'black',
'pointer-events': 'none'
},
'.label': { text: 'Model', 'ref-x': .3, 'ref-y': .2 },
'.inPorts text': { x:-15, dy: 4, 'text-anchor': 'end' },
'.outPorts text':{ x: 15, dy: 4 }
}
}, joint.shapes.basic.Generic.prototype.defaults),
getPortAttrs: function(portName, index, total, selector, type) {
var attrs = {};
var portClass = 'port' + index;
var portSelector = selector + '>.' + portClass;
var portTextSelector = portSelector + '>text';
var portCircleSelector = portSelector + '>circle';
attrs[portTextSelector] = { text: portName };
attrs[portCircleSelector] = { port: { id: portName || _.uniqueId(type) , type: type } };
attrs[portSelector] = { ref: 'rect', '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: {
rect: { fill: 'salmon' },
'.label': { text: 'Atomic' },
'.inPorts circle': { fill: 'PaleGreen' },
'.outPorts circle': { 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: {
rect: { fill: 'seaGreen' },
'.label': { text: 'Coupled' },
'.inPorts circle': { fill: 'PaleGreen' },
'.outPorts circle': { 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;
if (typeof exports === 'object') {
module.exports = joint.shapes.devs;
}