svgdata.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /**
  2. * Sample plugin.
  3. */
  4. Draw.loadPlugin(function(ui) {
  5. /**
  6. * Overrides SVG export to add metadata for each cell.
  7. */
  8. var graphCreateSvgImageExport = Graph.prototype.createSvgImageExport;
  9. Graph.prototype.createSvgImageExport = function()
  10. {
  11. var exp = graphCreateSvgImageExport.apply(this, arguments);
  12. // Overrides rendering to add metadata
  13. var expDrawCellState = exp.drawCellState;
  14. exp.drawCellState = function(state, canvas)
  15. {
  16. var svgDoc = canvas.root.ownerDocument;
  17. var g = (svgDoc.createElementNS != null) ?
  18. svgDoc.createElementNS(mxConstants.NS_SVG, 'g') : svgDoc.createElement('g');
  19. g.setAttribute('id', 'cell-' + state.cell.id);
  20. // Temporary replaces root for content rendering
  21. var prev = canvas.root;
  22. prev.appendChild(g);
  23. canvas.root = g;
  24. expDrawCellState.apply(this, arguments);
  25. // Adds metadata if group is not empty
  26. if (g.firstChild == null)
  27. {
  28. g.parentNode.removeChild(g);
  29. }
  30. else if (mxUtils.isNode(state.cell.value))
  31. {
  32. g.setAttribute('content', mxUtils.getXml(state.cell.value));
  33. }
  34. // Restores previous root
  35. canvas.root = prev;
  36. };
  37. return exp;
  38. };
  39. });