fix(import): set <isFrame> property on import

Closes #1278
This commit is contained in:
Niklas Kiefer 2020-02-07 09:10:39 +01:00 committed by Nico Rehwaldt
parent b9bf021bed
commit 566f0eadaa
3 changed files with 56 additions and 2 deletions

View File

@ -115,7 +115,8 @@ BpmnImporter.prototype.add = function(semantic, parentElement) {
// SHAPE // SHAPE
else if (is(di, 'bpmndi:BPMNShape')) { else if (is(di, 'bpmndi:BPMNShape')) {
var collapsed = !isExpanded(semantic); var collapsed = !isExpanded(semantic),
isFrame = isFrameElement(semantic);
hidden = parentElement && (parentElement.hidden || parentElement.collapsed); hidden = parentElement && (parentElement.hidden || parentElement.collapsed);
var bounds = semantic.di.bounds; var bounds = semantic.di.bounds;
@ -126,7 +127,8 @@ BpmnImporter.prototype.add = function(semantic, parentElement) {
x: Math.round(bounds.x), x: Math.round(bounds.x),
y: Math.round(bounds.y), y: Math.round(bounds.y),
width: Math.round(bounds.width), width: Math.round(bounds.width),
height: Math.round(bounds.height) height: Math.round(bounds.height),
isFrame: isFrame
})); }));
if (is(semantic, 'bpmn:BoundaryEvent')) { if (is(semantic, 'bpmn:BoundaryEvent')) {
@ -333,3 +335,7 @@ function isPointInsideBBox(bbox, point) {
y >= bbox.y && y >= bbox.y &&
y <= bbox.y + bbox.height; y <= bbox.y + bbox.height;
} }
function isFrameElement(semantic) {
return is(semantic, 'bpmn:Group');
}

16
test/fixtures/bpmn/import/groups.bpmn vendored Normal file
View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" id="simple" targetNamespace="http://bpmn.io/schema/bpmn" exporter="camunda modeler" exporterVersion="2.6.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
<bpmn2:process id="Process_1" isExecutable="false">
<bpmn2:group id="Group_1" categoryValueRef="CategoryValue_1o9po2j" />
</bpmn2:process>
<bpmn2:category id="Category_0fj5y1s">
<bpmn2:categoryValue id="CategoryValue_1o9po2j" />
</bpmn2:category>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
<bpmndi:BPMNShape id="Group_1_di" bpmnElement="Group_1">
<dc:Bounds x="280" y="60" width="430" height="360" />
</bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn2:definitions>

View File

@ -480,6 +480,38 @@ describe('import - Importer', function() {
}); });
}); });
it('should import groups', function(done) {
// given
var xml = require('../../fixtures/bpmn/import/groups.bpmn');
var events = [];
// log events
diagram.get('eventBus').on('bpmnElement.added', function(e) {
events.push({
type: 'add',
semantic: e.element.businessObject.id,
di: e.element.businessObject.di.id,
diagramElement: e.element && e.element.id,
isFrame: e.element && e.element.isFrame
});
});
// when
runImport(diagram, xml, function(err) {
// then
expect(events).to.eql([
{ type: 'add', semantic: 'Process_1', di: 'BPMNPlane_1', diagramElement: 'Process_1', isFrame: undefined },
{ type: 'add', semantic: 'Group_1', di: 'Group_1_di', diagramElement: 'Group_1', isFrame: true }
]);
done(err);
});
});
}); });