fix(modeling/BpmnLayouter): properly lay out boundary event connections
Closes #891
This commit is contained in:
parent
5438f1a0c2
commit
06ffc9d407
|
@ -322,8 +322,12 @@ function getBoundaryEventTargetLayout(attachOrientation, targetOrientation, atta
|
||||||
if (isHorizontalOrientation(attachOrientation)) {
|
if (isHorizontalOrientation(attachOrientation)) {
|
||||||
// orientation is 'right' or 'left'
|
// orientation is 'right' or 'left'
|
||||||
|
|
||||||
// loop or opposite horizontal orientation
|
// loop or opposite horizontal orientation or same orientation
|
||||||
if (isLoop || isOppositeHorizontalOrientation(attachOrientation, targetOrientation)) {
|
if (
|
||||||
|
isLoop ||
|
||||||
|
isOppositeHorizontalOrientation(attachOrientation, targetOrientation) ||
|
||||||
|
isSame(attachOrientation, targetOrientation)
|
||||||
|
) {
|
||||||
return 'h';
|
return 'h';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,8 +336,12 @@ function getBoundaryEventTargetLayout(attachOrientation, targetOrientation, atta
|
||||||
} else {
|
} else {
|
||||||
// orientation is 'top' or 'bottom'
|
// orientation is 'top' or 'bottom'
|
||||||
|
|
||||||
// loop or opposite vertical orientation
|
// loop or opposite vertical orientation or same orientation
|
||||||
if (isLoop || isOppositeVerticalOrientation(attachOrientation, targetOrientation)) {
|
if (
|
||||||
|
isLoop ||
|
||||||
|
isOppositeVerticalOrientation(attachOrientation, targetOrientation) ||
|
||||||
|
isSame(attachOrientation, targetOrientation)
|
||||||
|
) {
|
||||||
return 'v';
|
return 'v';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,12 @@
|
||||||
<bpmn:subProcess id="SubProcess" />
|
<bpmn:subProcess id="SubProcess" />
|
||||||
<bpmn:task id="Task_Right" />
|
<bpmn:task id="Task_Right" />
|
||||||
<bpmn:boundaryEvent id="BoundaryEvent_TopLeft" attachedToRef="SubProcess" />
|
<bpmn:boundaryEvent id="BoundaryEvent_TopLeft" attachedToRef="SubProcess" />
|
||||||
|
<bpmn:boundaryEvent id="BoundaryEvent_TopCenter" attachedToRef="SubProcess" />
|
||||||
<bpmn:boundaryEvent id="BoundaryEvent_BottomRight" attachedToRef="SubProcess" />
|
<bpmn:boundaryEvent id="BoundaryEvent_BottomRight" attachedToRef="SubProcess" />
|
||||||
|
<bpmn:boundaryEvent id="BoundaryEvent_BottomCenter" attachedToRef="SubProcess" />
|
||||||
<bpmn:boundaryEvent id="BoundaryEvent_BottomLeft" attachedToRef="SubProcess" />
|
<bpmn:boundaryEvent id="BoundaryEvent_BottomLeft" attachedToRef="SubProcess" />
|
||||||
<bpmn:boundaryEvent id="BoundaryEvent_TopRight" attachedToRef="SubProcess" />
|
<bpmn:boundaryEvent id="BoundaryEvent_TopRight" attachedToRef="SubProcess" />
|
||||||
|
<bpmn:boundaryEvent id="BoundaryEvent_RightCenter" attachedToRef="SubProcess" />
|
||||||
<bpmn:task id="Task_Bottom" />
|
<bpmn:task id="Task_Bottom" />
|
||||||
<bpmn:task id="Task_Top" />
|
<bpmn:task id="Task_Top" />
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
|
@ -25,15 +28,24 @@
|
||||||
<bpmndi:BPMNShape id="BoundaryEvent_0s0nl1k_di" bpmnElement="BoundaryEvent_TopLeft">
|
<bpmndi:BPMNShape id="BoundaryEvent_0s0nl1k_di" bpmnElement="BoundaryEvent_TopLeft">
|
||||||
<dc:Bounds x="282" y="320" width="36" height="36" />
|
<dc:Bounds x="282" y="320" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="BoundaryEvent_TopCenter_di" bpmnElement="BoundaryEvent_TopCenter">
|
||||||
|
<dc:Bounds x="432" y="282" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="BoundaryEvent_0nomac7_di" bpmnElement="BoundaryEvent_BottomRight">
|
<bpmndi:BPMNShape id="BoundaryEvent_0nomac7_di" bpmnElement="BoundaryEvent_BottomRight">
|
||||||
<dc:Bounds x="632" y="450" width="36" height="36" />
|
<dc:Bounds x="632" y="450" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="BoundaryEvent_BottomCenter_di" bpmnElement="BoundaryEvent_BottomCenter">
|
||||||
|
<dc:Bounds x="432" y="482" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="BoundaryEvent_1spolhy_di" bpmnElement="BoundaryEvent_BottomLeft">
|
<bpmndi:BPMNShape id="BoundaryEvent_1spolhy_di" bpmnElement="BoundaryEvent_BottomLeft">
|
||||||
<dc:Bounds x="282" y="482" width="36" height="36" />
|
<dc:Bounds x="282" y="482" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="BoundaryEvent_13iwzlu_di" bpmnElement="BoundaryEvent_TopRight">
|
<bpmndi:BPMNShape id="BoundaryEvent_13iwzlu_di" bpmnElement="BoundaryEvent_TopRight">
|
||||||
<dc:Bounds x="632" y="282" width="36" height="36" />
|
<dc:Bounds x="632" y="282" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="BoundaryEvent_RightCenter_di" bpmnElement="BoundaryEvent_RightCenter">
|
||||||
|
<dc:Bounds x="632" y="372" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Task_0ygk7bh_di" bpmnElement="Task_Bottom">
|
<bpmndi:BPMNShape id="Task_0ygk7bh_di" bpmnElement="Task_Bottom">
|
||||||
<dc:Bounds x="400" y="650" width="100" height="80" />
|
<dc:Bounds x="400" y="650" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
|
|
@ -162,6 +162,54 @@ describe('features/modeling - layout', function() {
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('attached bottom center, orientation bottom', function() {
|
||||||
|
// when
|
||||||
|
var connection = connect('BoundaryEvent_BottomCenter', 'Task_Bottom');
|
||||||
|
|
||||||
|
expect(connection).to.have.waypoints([
|
||||||
|
{ x: 450, y: 518 },
|
||||||
|
{ x: 450, y: 650 }
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('attached top center, orientation top', function() {
|
||||||
|
// when
|
||||||
|
var connection = connect('BoundaryEvent_TopCenter', 'Task_Top');
|
||||||
|
|
||||||
|
expect(connection).to.have.waypoints([
|
||||||
|
{ x: 450, y: 282 },
|
||||||
|
{ x: 450, y: 80 }
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('attached right center, orientation right', function() {
|
||||||
|
// when
|
||||||
|
var connection = connect('BoundaryEvent_RightCenter', 'Task_Right');
|
||||||
|
|
||||||
|
expect(connection).to.have.waypoints([
|
||||||
|
{ x: 668, y: 390 },
|
||||||
|
{ x: 850, y: 390 }
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('attached right center, orientation left', function() {
|
||||||
|
// when
|
||||||
|
var connection = connect('BoundaryEvent_RightCenter', 'Task_Left');
|
||||||
|
|
||||||
|
expect(connection).to.have.waypoints([
|
||||||
|
{ x: 668, y: 390 },
|
||||||
|
{ x: 688, y: 390 },
|
||||||
|
{ x: 688, y: 410 },
|
||||||
|
{ x: 536, y: 410 },
|
||||||
|
{ x: 536, y: 390 },
|
||||||
|
{ x: 100, y: 390 }
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue