123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import inherits from 'inherits';
- import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';
- import { is } from '../../../util/ModelUtil';
- import {
- getChildLanes
- } from '../util/LaneUtil';
- import {
- eachElement
- } from 'diagram-js/lib/util/Elements';
- var LOW_PRIORITY = 500;
- /**
- * BPMN specific delete lane behavior
- */
- export default function DeleteLaneBehavior(eventBus, modeling, spaceTool) {
- CommandInterceptor.call(this, eventBus);
- function compensateLaneDelete(shape, oldParent) {
- var siblings = getChildLanes(oldParent);
- var topAffected = [];
- var bottomAffected = [];
- eachElement(siblings, function(element) {
- if (element.y > shape.y) {
- bottomAffected.push(element);
- } else {
- topAffected.push(element);
- }
- return element.children;
- });
- if (!siblings.length) {
- return;
- }
- var offset;
- if (bottomAffected.length && topAffected.length) {
- offset = shape.height / 2;
- } else {
- offset = shape.height;
- }
- var topAdjustments,
- bottomAdjustments;
- if (topAffected.length) {
- topAdjustments = spaceTool.calculateAdjustments(
- topAffected, 'y', offset, shape.y - 10);
- spaceTool.makeSpace(
- topAdjustments.movingShapes,
- topAdjustments.resizingShapes,
- { x: 0, y: offset }, 's');
- }
- if (bottomAffected.length) {
- bottomAdjustments = spaceTool.calculateAdjustments(
- bottomAffected, 'y', -offset, shape.y + shape.height + 10);
- spaceTool.makeSpace(
- bottomAdjustments.movingShapes,
- bottomAdjustments.resizingShapes,
- { x: 0, y: -offset }, 'n');
- }
- }
- /**
- * Adjust sizes of other lanes after lane deletion
- */
- this.postExecuted('shape.delete', LOW_PRIORITY, function(event) {
- var context = event.context,
- hints = context.hints,
- shape = context.shape,
- oldParent = context.oldParent;
- // only compensate lane deletes
- if (!is(shape, 'bpmn:Lane')) {
- return;
- }
- // compensate root deletes only
- if (hints && hints.nested) {
- return;
- }
- compensateLaneDelete(shape, oldParent);
- });
- }
- DeleteLaneBehavior.$inject = [
- 'eventBus',
- 'modeling',
- 'spaceTool'
- ];
- inherits(DeleteLaneBehavior, CommandInterceptor);
|