sigma.svg.edges.def.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. ;(function() {
  2. 'use strict';
  3. sigma.utils.pkg('sigma.svg.edges');
  4. /**
  5. * The default edge renderer. It renders the node as a simple line.
  6. */
  7. sigma.svg.edges.def = {
  8. /**
  9. * SVG Element creation.
  10. *
  11. * @param {object} edge The edge object.
  12. * @param {object} source The source node object.
  13. * @param {object} target The target node object.
  14. * @param {configurable} settings The settings function.
  15. */
  16. create: function(edge, source, target, settings) {
  17. var color = edge.color,
  18. prefix = settings('prefix') || '',
  19. edgeColor = settings('edgeColor'),
  20. defaultNodeColor = settings('defaultNodeColor'),
  21. defaultEdgeColor = settings('defaultEdgeColor');
  22. if (!color)
  23. switch (edgeColor) {
  24. case 'source':
  25. color = source.color || defaultNodeColor;
  26. break;
  27. case 'target':
  28. color = target.color || defaultNodeColor;
  29. break;
  30. default:
  31. color = defaultEdgeColor;
  32. break;
  33. }
  34. var line = document.createElementNS(settings('xmlns'), 'line');
  35. // Attributes
  36. line.setAttributeNS(null, 'data-edge-id', edge.id);
  37. line.setAttributeNS(null, 'class', settings('classPrefix') + '-edge');
  38. line.setAttributeNS(null, 'stroke', color);
  39. return line;
  40. },
  41. /**
  42. * SVG Element update.
  43. *
  44. * @param {object} edge The edge object.
  45. * @param {DOMElement} line The line DOM Element.
  46. * @param {object} source The source node object.
  47. * @param {object} target The target node object.
  48. * @param {configurable} settings The settings function.
  49. */
  50. update: function(edge, line, source, target, settings) {
  51. var prefix = settings('prefix') || '';
  52. line.setAttributeNS(null, 'stroke-width', edge[prefix + 'size'] || 1);
  53. line.setAttributeNS(null, 'x1', source[prefix + 'x']);
  54. line.setAttributeNS(null, 'y1', source[prefix + 'y']);
  55. line.setAttributeNS(null, 'x2', target[prefix + 'x']);
  56. line.setAttributeNS(null, 'y2', target[prefix + 'y']);
  57. // Showing
  58. line.style.display = '';
  59. return this;
  60. }
  61. };
  62. })();