2016-04-04 14:11:34 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var inherits = require('inherits');
|
|
|
|
|
|
|
|
var CommandInterceptor = require('diagram-js/lib/command/CommandInterceptor');
|
|
|
|
|
|
|
|
var is = require('../../../util/ModelUtil').is,
|
|
|
|
getBusinessObject = require('../../../util/ModelUtil').getBusinessObject;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A behavior that unsets the Default property of
|
|
|
|
* sequence flow source on element delete, if the
|
|
|
|
* removed element is the Gateway or Task's default flow.
|
|
|
|
*
|
|
|
|
* @param {EventBus} eventBus
|
|
|
|
* @param {Modeling} modeling
|
|
|
|
*/
|
|
|
|
function DeleteSequenceFlowBehavior(eventBus, modeling) {
|
|
|
|
|
|
|
|
CommandInterceptor.call(this, eventBus);
|
|
|
|
|
|
|
|
|
|
|
|
this.preExecute('connection.delete', function(event) {
|
|
|
|
var context = event.context,
|
|
|
|
connection = context.connection,
|
|
|
|
source = connection.source;
|
|
|
|
|
|
|
|
if (isDefaultFlow(connection, source)) {
|
|
|
|
modeling.updateProperties(source, {
|
|
|
|
'default': null
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
inherits(DeleteSequenceFlowBehavior, CommandInterceptor);
|
|
|
|
|
|
|
|
DeleteSequenceFlowBehavior.$inject = [ 'eventBus', 'modeling' ];
|
|
|
|
|
|
|
|
module.exports = DeleteSequenceFlowBehavior;
|
|
|
|
|
|
|
|
|
2018-02-27 08:57:22 +00:00
|
|
|
// helpers //////////////////////
|
2016-04-04 14:11:34 +00:00
|
|
|
|
|
|
|
function isDefaultFlow(connection, source) {
|
|
|
|
|
|
|
|
if (!is(connection, 'bpmn:SequenceFlow')) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
var sourceBo = getBusinessObject(source),
|
|
|
|
sequenceFlow = getBusinessObject(connection);
|
|
|
|
|
|
|
|
return sourceBo.get('default') === sequenceFlow;
|
|
|
|
}
|