From bd20db3aba83072214585700c181761a9358e7a5 Mon Sep 17 00:00:00 2001 From: Martin Stamm Date: Wed, 3 Nov 2021 10:29:54 +0100 Subject: [PATCH] chore(drilldown): rename subprocess-navigation -> drilldown and document * rename subprocess-navigation -> drilldown * add JSDoc comments --- lib/Viewer.js | 4 ++-- .../DrilldownCentering.js} | 12 +++++++++--- .../DrilldownOverlays.js} | 17 +++++++++++++---- .../SubprocessCompatibility.js | 8 ++++---- lib/features/drilldown/index.js | 14 ++++++++++++++ lib/features/subprocess-navigation/index.js | 14 -------------- lib/import/BpmnImporter.js | 3 ++- .../DrilldownSpec.js} | 6 +++--- .../legacy-subprocesses.bpmn | 0 .../nested-subprocesses.bpmn | 0 10 files changed, 47 insertions(+), 31 deletions(-) rename lib/features/{subprocess-navigation/SubprocessCentering.js => drilldown/DrilldownCentering.js} (73%) rename lib/features/{subprocess-navigation/SubprocessOverlays.js => drilldown/DrilldownOverlays.js} (82%) rename lib/features/{subprocess-navigation => drilldown}/SubprocessCompatibility.js (95%) create mode 100644 lib/features/drilldown/index.js delete mode 100644 lib/features/subprocess-navigation/index.js rename test/spec/features/{subprocess-navigation/SubprocessNavigationSpec.js => drilldown/DrilldownSpec.js} (96%) rename test/spec/features/{subprocess-navigation => drilldown}/legacy-subprocesses.bpmn (100%) rename test/spec/features/{subprocess-navigation => drilldown}/nested-subprocesses.bpmn (100%) diff --git a/lib/Viewer.js b/lib/Viewer.js index cc996adf..27a81bde 100644 --- a/lib/Viewer.js +++ b/lib/Viewer.js @@ -4,7 +4,7 @@ import CoreModule from './core'; import TranslateModule from 'diagram-js/lib/i18n/translate'; import SelectionModule from 'diagram-js/lib/features/selection'; import OverlaysModule from 'diagram-js/lib/features/overlays'; -import SubprocessNavigationModule from './features/subprocess-navigation'; +import DrilldownModdule from './features/drilldown'; import BaseViewer from './BaseViewer'; @@ -68,7 +68,7 @@ Viewer.prototype._modules = [ TranslateModule, SelectionModule, OverlaysModule, - SubprocessNavigationModule + DrilldownModdule ]; // default moddle extensions the viewer is composed of diff --git a/lib/features/subprocess-navigation/SubprocessCentering.js b/lib/features/drilldown/DrilldownCentering.js similarity index 73% rename from lib/features/subprocess-navigation/SubprocessCentering.js rename to lib/features/drilldown/DrilldownCentering.js index 7c9c7096..9c8d7973 100644 --- a/lib/features/subprocess-navigation/SubprocessCentering.js +++ b/lib/features/drilldown/DrilldownCentering.js @@ -1,9 +1,15 @@ -export default function SubprocessCentering(eventBus, canvas) { +/** + * Move collapsed subprocesses into view when drilling down. Zoom and scroll + * are saved in a session. + * + * @param {eventBus} eventBus + * @param {canvas} canvas + */ +export default function DrilldownCentering(eventBus, canvas) { var currentPlane = 'base'; var positionMap = {}; eventBus.on('plane.set', function(event) { - var currentViewbox = canvas.viewbox(); positionMap[currentPlane] = { x: currentViewbox.x, @@ -32,4 +38,4 @@ export default function SubprocessCentering(eventBus, canvas) { }); } -SubprocessCentering.$inject = [ 'eventBus', 'canvas' ]; +DrilldownCentering.$inject = [ 'eventBus', 'canvas' ]; diff --git a/lib/features/subprocess-navigation/SubprocessOverlays.js b/lib/features/drilldown/DrilldownOverlays.js similarity index 82% rename from lib/features/subprocess-navigation/SubprocessOverlays.js rename to lib/features/drilldown/DrilldownOverlays.js index 8d5f4e75..f5938a1f 100644 --- a/lib/features/subprocess-navigation/SubprocessOverlays.js +++ b/lib/features/drilldown/DrilldownOverlays.js @@ -5,7 +5,15 @@ import { getBusinessObject, is } from '../../util/ModelUtil'; var ARROW_DOWN_SVG = ''; -export default function SubprocessOverlays(eventBus, elementRegistry, overlays, canvas) { +/** + * Adds Overlays that allow switching planes on collapsed subprocesses. + * + * @param {eventBus} eventBus + * @param {elementRegistry} elementRegistry + * @param {overlays} overlays + * @param {canvas} canvas + */ +export default function DrilldownOverlays(eventBus, elementRegistry, overlays, canvas) { var breadcrumbs = domify(''); var container = canvas.getContainer(); container.appendChild(breadcrumbs); @@ -15,8 +23,8 @@ export default function SubprocessOverlays(eventBus, elementRegistry, overlays, var parents = getParentChain(subProcess); var path = parents.map(function(el) { - var title = escapeHTML(el.name) || el.id; - var link = domify('
  • ' + title + '
  • '); + var title = escapeHTML(el.name || el.id); + var link = domify('
  • ' + title + '
  • '); link.addEventListener('click', function() { if (canvas.getPlane(el.id)) { @@ -82,9 +90,10 @@ export default function SubprocessOverlays(eventBus, elementRegistry, overlays, }); } -SubprocessOverlays.$inject = [ 'eventBus', 'elementRegistry', 'overlays', 'canvas' ]; +DrilldownOverlays.$inject = [ 'eventBus', 'elementRegistry', 'overlays', 'canvas' ]; +// helpers var getParentChain = function(child) { var bo = getBusinessObject(child); diff --git a/lib/features/subprocess-navigation/SubprocessCompatibility.js b/lib/features/drilldown/SubprocessCompatibility.js similarity index 95% rename from lib/features/subprocess-navigation/SubprocessCompatibility.js rename to lib/features/drilldown/SubprocessCompatibility.js index 332c0887..dd7eaed8 100644 --- a/lib/features/subprocess-navigation/SubprocessCompatibility.js +++ b/lib/features/drilldown/SubprocessCompatibility.js @@ -8,8 +8,8 @@ var DEFAULT_POSITION = { }; /** - * Hooks into `import.render.start` and creates new planes for collapsed - * subprocesses with elements on the parent diPlane. + * Hook into `import.render.start` and create new planes for diagrams with + * collapsed subprocesses and all dis on the same plane. * * @param {eventBus} eventBus * @param {moddle} moddle @@ -77,14 +77,14 @@ SubprocessCompatibility.prototype.createNewDiagrams = function(plane) { if (is(parent, 'bpmn:SubProcess') && parent !== plane.bpmnElement) { // don't change the array while we iterate over it - elementsToMove.push({ element: diElement, parent: parent }); + elementsToMove.push({ diElement: diElement, parent: parent }); } }); var newDiagrams = []; elementsToMove.forEach(function(element) { - var diElement = element.element; + var diElement = element.diElement; var parent = element.parent; // parent is expanded, get nearest collapsed parent diff --git a/lib/features/drilldown/index.js b/lib/features/drilldown/index.js new file mode 100644 index 00000000..51590c51 --- /dev/null +++ b/lib/features/drilldown/index.js @@ -0,0 +1,14 @@ +import OverlaysModule from 'diagram-js/lib/features/overlays'; +import ChangeSupportModule from 'diagram-js/lib/features/change-support'; + +import DrilldownOverlays from './DrilldownOverlays'; +import DrilldownCentering from './DrilldownCentering'; +import SubprocessCompatibility from './SubprocessCompatibility'; + +export default { + __depends__: [ OverlaysModule, ChangeSupportModule ], + __init__: [ 'drilldownOverlays', 'drilldownCentering', 'subprocessCompatibility'], + drilldownOverlays: [ 'type', DrilldownOverlays ], + drilldownCentering: [ 'type', DrilldownCentering ], + subprocessCompatibility: [ 'type', SubprocessCompatibility ] +}; \ No newline at end of file diff --git a/lib/features/subprocess-navigation/index.js b/lib/features/subprocess-navigation/index.js deleted file mode 100644 index 0360ff3d..00000000 --- a/lib/features/subprocess-navigation/index.js +++ /dev/null @@ -1,14 +0,0 @@ -import OverlaysModule from 'diagram-js/lib/features/overlays'; -import ChangeSupportModule from 'diagram-js/lib/features/change-support'; - -import SubprocessCentering from './SubprocessCentering'; -import SubprocessCompatibility from './SubprocessCompatibility'; -import SubprocessOverlays from './SubprocessOverlays'; - -export default { - __depends__: [ OverlaysModule, ChangeSupportModule ], - __init__: [ 'subprocessOverlays', 'subprocessCompatibility', 'subprocessCentering' ], - subprocessOverlays: [ 'type', SubprocessOverlays ], - subprocessCompatibility: [ 'type', SubprocessCompatibility ], - subprocessCentering: [ 'type', SubprocessCentering ] -}; \ No newline at end of file diff --git a/lib/import/BpmnImporter.js b/lib/import/BpmnImporter.js index 4b13cbe7..78bdc960 100644 --- a/lib/import/BpmnImporter.js +++ b/lib/import/BpmnImporter.js @@ -102,12 +102,13 @@ BpmnImporter.prototype.add = function(semantic, di, parentElement) { // ROOT ELEMENT // handle the special case that we deal with a - // invisible root element (process or collaboration) + // invisible root element (process, subprocess or collaboration) if (is(di, 'bpmndi:BPMNPlane')) { // add a virtual element (not being drawn) element = this._elementFactory.createRoot(elementData(semantic, di)); + // for subprocesses, the id is already defined on the collapsed shape if (is(semantic, 'bpmn:SubProcess')) { element.id = element.id + '_plane'; } diff --git a/test/spec/features/subprocess-navigation/SubprocessNavigationSpec.js b/test/spec/features/drilldown/DrilldownSpec.js similarity index 96% rename from test/spec/features/subprocess-navigation/SubprocessNavigationSpec.js rename to test/spec/features/drilldown/DrilldownSpec.js index d664f353..7fb17171 100644 --- a/test/spec/features/subprocess-navigation/SubprocessNavigationSpec.js +++ b/test/spec/features/drilldown/DrilldownSpec.js @@ -3,14 +3,14 @@ import { } from 'test/TestHelper'; import coreModule from 'lib/core'; -import subprocessNavigationModule from 'lib/features/subprocess-navigation'; +import DrilldownModule from 'lib/features/drilldown'; import { bootstrapViewer } from '../../../helper'; -describe('features - subprocess-navigation', function() { +describe('features - drilldown', function() { var testModules = [ coreModule, - subprocessNavigationModule + DrilldownModule ]; var multiLayerXML = require('./nested-subprocesses.bpmn'); diff --git a/test/spec/features/subprocess-navigation/legacy-subprocesses.bpmn b/test/spec/features/drilldown/legacy-subprocesses.bpmn similarity index 100% rename from test/spec/features/subprocess-navigation/legacy-subprocesses.bpmn rename to test/spec/features/drilldown/legacy-subprocesses.bpmn diff --git a/test/spec/features/subprocess-navigation/nested-subprocesses.bpmn b/test/spec/features/drilldown/nested-subprocesses.bpmn similarity index 100% rename from test/spec/features/subprocess-navigation/nested-subprocesses.bpmn rename to test/spec/features/drilldown/nested-subprocesses.bpmn