UNPKG

dmn-js-drd

Version:

A decision requirements diagram view for dmn-js

48 lines (47 loc) 1.48 kB
import { forEach } from 'min-dash'; import { containsDi } from 'dmn-js-shared/lib/util/DiUtil'; import { is } from 'dmn-js-shared/lib/util/ModelUtil'; /** * Generates missing DI on import. * * @param {DrdFactory} drdFactory * @param {ElementFactory} elementFactory * @param {EventBus} eventBus */ export default function DiGenerator(drdFactory, elementFactory, eventBus, drdUpdater) { function createDi(definitions) { // retrieve or create dmnDI var dmnDI = definitions.dmnDI; if (!dmnDI) { dmnDI = drdFactory.create('dmndi:DMNDI'); definitions.set('dmnDI', dmnDI); } var diagram = drdFactory.create('dmndi:DMNDiagram'); dmnDI.set('diagrams', [diagram]); var index = 0; forEach(definitions.get('drgElement'), function (drgElement) { // generate DI for decisions only if (!is(drgElement, 'dmn:Decision')) { return; } var dimensions = elementFactory._getDefaultSize(drgElement); var di = drdFactory.createDiShape(drgElement, { x: 150 + index * 30, y: 150 + index * 30, width: dimensions.width, height: dimensions.height }); drdUpdater.updateDiParent(di, diagram); index++; }); } eventBus.on('import.start', ({ definitions }) => { if (!containsDi(definitions)) { createDi(definitions); } }); } DiGenerator.$inject = ['drdFactory', 'elementFactory', 'eventBus', 'drdUpdater']; //# sourceMappingURL=DiGenerator.js.map