joint.shapes.devs.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /*! JointJS v0.9.0 - JavaScript diagramming library 2014-05-13
  2. This Source Code Form is subject to the terms of the Mozilla Public
  3. License, v. 2.0. If a copy of the MPL was not distributed with this
  4. file, You can obtain one at http://mozilla.org/MPL/2.0/.
  5. */
  6. if (typeof exports === 'object') {
  7. var joint = {
  8. util: require('../src/core').util,
  9. shapes: {
  10. basic: require('./joint.shapes.basic')
  11. },
  12. dia: {
  13. ElementView: require('../src/joint.dia.element').ElementView,
  14. Link: require('../src/joint.dia.link').Link
  15. }
  16. };
  17. var _ = require('lodash');
  18. }
  19. joint.shapes.devs = {};
  20. joint.shapes.devs.Model = joint.shapes.basic.Generic.extend(_.extend({}, joint.shapes.basic.PortsModelInterface, {
  21. markup: '<g class="rotatable"><g class="scalable"><rect/></g><text class="label"/><g class="inPorts"/><g class="outPorts"/></g>',
  22. portMarkup: '<g class="port<%= id %>"><circle/><text/></g>',
  23. defaults: joint.util.deepSupplement({
  24. type: 'devs.Model',
  25. size: { width: 1, height: 1 },
  26. inPorts: [],
  27. outPorts: [],
  28. attrs: {
  29. '.': { magnet: false },
  30. rect: {
  31. width: 150, height: 250,
  32. stroke: 'black'
  33. },
  34. circle: {
  35. r: 10,
  36. magnet: true,
  37. stroke: 'black'
  38. },
  39. text: {
  40. fill: 'black',
  41. 'pointer-events': 'none'
  42. },
  43. '.label': { text: 'Model', 'ref-x': .3, 'ref-y': .2 },
  44. '.inPorts text': { x:-15, dy: 4, 'text-anchor': 'end' },
  45. '.outPorts text':{ x: 15, dy: 4 }
  46. }
  47. }, joint.shapes.basic.Generic.prototype.defaults),
  48. getPortAttrs: function(portName, index, total, selector, type) {
  49. var attrs = {};
  50. var portClass = 'port' + index;
  51. var portSelector = selector + '>.' + portClass;
  52. var portTextSelector = portSelector + '>text';
  53. var portCircleSelector = portSelector + '>circle';
  54. attrs[portTextSelector] = { text: portName };
  55. attrs[portCircleSelector] = { port: { id: portName || _.uniqueId(type) , type: type } };
  56. attrs[portSelector] = { ref: 'rect', 'ref-y': (index + 0.5) * (1 / total) };
  57. if (selector === '.outPorts') { attrs[portSelector]['ref-dx'] = 0; }
  58. return attrs;
  59. }
  60. }));
  61. joint.shapes.devs.Atomic = joint.shapes.devs.Model.extend({
  62. defaults: joint.util.deepSupplement({
  63. type: 'devs.Atomic',
  64. size: { width: 80, height: 80 },
  65. attrs: {
  66. rect: { fill: 'salmon' },
  67. '.label': { text: 'Atomic' },
  68. '.inPorts circle': { fill: 'PaleGreen' },
  69. '.outPorts circle': { fill: 'Tomato' }
  70. }
  71. }, joint.shapes.devs.Model.prototype.defaults)
  72. });
  73. joint.shapes.devs.Coupled = joint.shapes.devs.Model.extend({
  74. defaults: joint.util.deepSupplement({
  75. type: 'devs.Coupled',
  76. size: { width: 200, height: 300 },
  77. attrs: {
  78. rect: { fill: 'seaGreen' },
  79. '.label': { text: 'Coupled' },
  80. '.inPorts circle': { fill: 'PaleGreen' },
  81. '.outPorts circle': { fill: 'Tomato' }
  82. }
  83. }, joint.shapes.devs.Model.prototype.defaults)
  84. });
  85. joint.shapes.devs.Link = joint.dia.Link.extend({
  86. defaults: {
  87. type: 'devs.Link',
  88. attrs: { '.connection' : { 'stroke-width' : 2 }}
  89. }
  90. });
  91. joint.shapes.devs.ModelView = joint.dia.ElementView.extend(joint.shapes.basic.PortsViewInterface);
  92. joint.shapes.devs.AtomicView = joint.shapes.devs.ModelView;
  93. joint.shapes.devs.CoupledView = joint.shapes.devs.ModelView;
  94. if (typeof exports === 'object') {
  95. module.exports = joint.shapes.devs;
  96. }