From 8d583dd91ffed6e821adb2323d074db8302373c5 Mon Sep 17 00:00:00 2001 From: Philipp Fromme Date: Mon, 9 Mar 2020 10:41:35 +0100 Subject: [PATCH] chore(auto-place): adjust to new auto place API --- lib/features/auto-place/BpmnAutoPlaceUtil.js | 56 +++++++++++--------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/lib/features/auto-place/BpmnAutoPlaceUtil.js b/lib/features/auto-place/BpmnAutoPlaceUtil.js index 1e6af72d..bb7343ec 100644 --- a/lib/features/auto-place/BpmnAutoPlaceUtil.js +++ b/lib/features/auto-place/BpmnAutoPlaceUtil.js @@ -8,7 +8,8 @@ import { } from 'diagram-js/lib/layout/LayoutUtil'; import { - deconflictPosition, + findFreePosition, + generateGetNextPosition, getConnectedDistance } from 'diagram-js/lib/features/auto-place/AutoPlaceUtil'; @@ -46,13 +47,15 @@ export function getFlowNodePosition(source, element) { var sourceTrbl = asTRBL(source); var sourceMid = getMid(source); - var horizontalDistance = getConnectedDistance(source, 'x', function(connection) { - return is(connection, 'bpmn:SequenceFlow'); + var horizontalDistance = getConnectedDistance(source, { + filter: function(connection) { + return is(connection, 'bpmn:SequenceFlow'); + } }); - var orientation = 'left', - rowSize = 80, - margin = 30; + var margin = 30, + minDistance = 80, + orientation = 'left'; if (is(source, 'bpmn:BoundaryEvent')) { orientation = getOrientation(source, source.host, -25); @@ -62,29 +65,30 @@ export function getFlowNodePosition(source, element) { } } - function getVerticalDistance(orient) { - if (orient.indexOf('top') != -1) { - return -1 * rowSize; - } else if (orient.indexOf('bottom') != -1) { - return rowSize; - } else { - return 0; - } - } - var position = { x: sourceTrbl.right + horizontalDistance + element.width / 2, - y: sourceMid.y + getVerticalDistance(orientation) + y: sourceMid.y + getVerticalDistance(orientation, minDistance) }; - var escapeDirection = { + var nextPositionDirection = { y: { margin: margin, - rowSize: rowSize + minDistance: minDistance } }; - return deconflictPosition(source, element, position, escapeDirection); + return findFreePosition(source, element, position, generateGetNextPosition(nextPositionDirection)); +} + + +function getVerticalDistance(orientation, minDistance) { + if (orientation.indexOf('top') != -1) { + return -1 * minDistance; + } else if (orientation.indexOf('bottom') != -1) { + return minDistance; + } else { + return 0; + } } @@ -100,14 +104,14 @@ export function getTextAnnotationPosition(source, element) { y: sourceTrbl.top - 50 - element.height / 2 }; - var escapeDirection = { + var nextPositionDirection = { y: { margin: -30, - rowSize: 20 + minDistance: 20 } }; - return deconflictPosition(source, element, position, escapeDirection); + return findFreePosition(source, element, position, generateGetNextPosition(nextPositionDirection)); } @@ -123,12 +127,12 @@ export function getDataElementPosition(source, element) { y: sourceTrbl.bottom + 40 + element.width / 2 }; - var escapeDirection = { + var nextPositionDirection = { x: { margin: 30, - rowSize: 30 + minDistance: 30 } }; - return deconflictPosition(source, element, position, escapeDirection); + return findFreePosition(source, element, position, generateGetNextPosition(nextPositionDirection)); } \ No newline at end of file