BpmnDiOrdering.js 906 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import { getDi } from '../../draw/BpmnRenderUtil';
  2. import { getBusinessObject } from '../../util/ModelUtil';
  3. import {
  4. filter,
  5. map
  6. } from 'min-dash';
  7. import { selfAndAllChildren } from 'diagram-js/lib/util/Elements';
  8. var HIGH_PRIORITY = 2000;
  9. export default function BpmnDiOrdering(eventBus, canvas) {
  10. eventBus.on('saveXML.start', HIGH_PRIORITY, orderDi);
  11. function orderDi() {
  12. var root = canvas.getRootElement(),
  13. rootDi = getBusinessObject(root).di,
  14. elements,
  15. diElements;
  16. elements = selfAndAllChildren([ root ], false);
  17. // only bpmndi:Shape and bpmndi:Edge can be direct children of bpmndi:Plane
  18. elements = filter(elements, function(element) {
  19. return element !== root && !element.labelTarget;
  20. });
  21. diElements = map(elements, getDi);
  22. rootDi.set('planeElement', diElements);
  23. }
  24. }
  25. BpmnDiOrdering.$inject = [ 'eventBus', 'canvas' ];