Skip to content

Commit

Permalink
feat(modeling): allow to drag participant via nested lane
Browse files Browse the repository at this point in the history
Related to #957
  • Loading branch information
nikku committed Jun 25, 2019
1 parent 7b0e304 commit fdb299d
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
12 changes: 12 additions & 0 deletions lib/features/modeling/behavior/FixHoverBehavior.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import { is } from '../../../util/ModelUtil';
import { isAny } from '../util/ModelingUtil';

var HIGH_PRIORITY = 1500;
var HIGHEST_PRIORITY = 2000;


/**
* Correct hover targets in certain situations to improve diagram interaction.
Expand Down Expand Up @@ -90,6 +92,16 @@ export default function FixHoverBehavior(elementRegistry, eventBus, canvas) {
}
});


// allow movement of participants from lanes
eventBus.on('shape.move.start', HIGHEST_PRIORITY, function(event) {
var shape = event.shape;

if (is(shape, 'bpmn:Lane')) {
event.shape = getLanesRoot(shape) || shape;
}
});

}

FixHoverBehavior.$inject = [
Expand Down
52 changes: 52 additions & 0 deletions test/spec/features/modeling/behavior/FixHoverBehaviorSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -382,4 +382,56 @@ describe('features/modeling/behavior - fix hover', function() {

});


describe('participant with lane', function() {

var diagramXML = require('./FixHoverBehavior.lane-connect.bpmn');

beforeEach(bootstrapModeler(diagramXML, {
modules: testModules.concat([
globalConnectModule,
bendpointsModule
])
}));

beforeEach(inject(function(dragging) {
dragging.setOptions({ manual: true });
}));


it('should move the participant when lane is dragged', inject(
function(canvas, eventBus, elementRegistry, move, dragging) {

// given
var lane = elementRegistry.get('Lane_1'),
participant = elementRegistry.get('Participant_Lanes');

var rootElement = canvas.getRootElement(),
rootElementGfx = canvas.getGraphics(rootElement);

var moveEndSpy = spy(function(event) {
expect(event.context.shape).to.equal(participant);
});

eventBus.on('shape.move.end', moveEndSpy);

// when
move.start(canvasEvent({ x: 100, y: 100 }), lane);

dragging.move(canvasEvent({ x: 140, y: 120 }));

dragging.hover({
element: rootElement,
gfx: rootElementGfx
});

dragging.end();

// then
expect(moveEndSpy).to.have.been.calledOnce;
}
));

});

});

0 comments on commit fdb299d

Please sign in to comment.