From 1958b2e81be8ff3adff52d0af3fd1bba10d05594 Mon Sep 17 00:00:00 2001 From: Philipp Fromme Date: Thu, 9 May 2019 14:24:05 +0200 Subject: [PATCH] fix(bpmn-connect-preview): override #getConnection --- lib/Modeler.js | 2 + lib/features/connect/BpmnConnectPreview.js | 67 ++++++++++++++++++++++ lib/features/connect/index.js | 8 +++ 3 files changed, 77 insertions(+) create mode 100644 lib/features/connect/BpmnConnectPreview.js create mode 100644 lib/features/connect/index.js diff --git a/lib/Modeler.js b/lib/Modeler.js index 21a198dc..6d0c9adb 100644 --- a/lib/Modeler.js +++ b/lib/Modeler.js @@ -16,6 +16,7 @@ import AutoPlaceModule from './features/auto-place'; import AutoResizeModule from './features/auto-resize'; import AutoScrollModule from 'diagram-js/lib/features/auto-scroll'; import BendpointsModule from 'diagram-js/lib/features/bendpoints'; +import ConnectModule from './features/connect'; import ContextPadModule from './features/context-pad'; import CopyPasteModule from './features/copy-paste'; import DistributeElementsModule from './features/distribute-elements'; @@ -207,6 +208,7 @@ Modeler.prototype._modelingModules = [ AutoScrollModule, AutoResizeModule, BendpointsModule, + ConnectModule, ContextPadModule, CopyPasteModule, DistributeElementsModule, diff --git a/lib/features/connect/BpmnConnectPreview.js b/lib/features/connect/BpmnConnectPreview.js new file mode 100644 index 00000000..ac87b922 --- /dev/null +++ b/lib/features/connect/BpmnConnectPreview.js @@ -0,0 +1,67 @@ +import inherits from 'inherits'; + +import ConnectPreview from 'diagram-js/lib/features/connect/ConnectPreview'; + +/** + * Shows connection preview during connect. + * + * @param {Canvas} canvas + * @param {BpmnRules} bpmnRules + * @param {ElementFactory} elementFactory + * @param {EventBus} eventBus + * @param {GraphicsFactory} graphicsFactory + * @param {didi.Injector} injector + */ +export default function BpmnConnectPreview( + bpmnRules, + canvas, + elementFactory, + eventBus, + graphicsFactory, + injector +) { + ConnectPreview.call( + this, + canvas, + elementFactory, + eventBus, + graphicsFactory, + injector + ); + + this._bpmnRules = bpmnRules; +} + +inherits(BpmnConnectPreview, ConnectPreview); + +BpmnConnectPreview.$inject = [ + 'bpmnRules', + 'canvas', + 'elementFactory', + 'eventBus', + 'graphicsFactory', + 'injector' +]; + +/** + * Get connection that connect source and target once connect is finished. + * + * @param {Object|boolean} canConnect + * @param {djs.model.shape} source + * @param {djs.model.shape} target + * + * @returns {djs.model.connection} + */ +BpmnConnectPreview.prototype.getConnection = function(canConnect, source, target) { + var attrs = canConnect; + + if (!attrs || !attrs.type) { + attrs = this._bpmnRules.canConnect(source, target); + } + + if (!attrs) { + return; + } + + return this._elementFactory.createConnection(attrs); +}; \ No newline at end of file diff --git a/lib/features/connect/index.js b/lib/features/connect/index.js new file mode 100644 index 00000000..7519068c --- /dev/null +++ b/lib/features/connect/index.js @@ -0,0 +1,8 @@ +import BpmnConnectPreview from './BpmnConnectPreview'; +import ConnectModule from 'diagram-js/lib/features/connect'; + +export default { + __depends__: [ ConnectModule ], + __init__: [ 'connectPreview' ], + connectPreview: [ 'type', BpmnConnectPreview ] +}; \ No newline at end of file