@bptlab/openbpt-modeler-typed-pn-variants 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +25 -0
- package/assets/icons/pn-fire-transition.svg +6 -0
- package/assets/icons/pn-inhibitor-arc.svg +30 -0
- package/assets/icons/pn-place.svg +62 -0
- package/assets/icons/pn-transition.svg +46 -0
- package/assets/icons/pn-unfire-transition.svg +6 -0
- package/assets/icons/reset.svg +1 -0
- package/assets/icons/toggle-off.svg +1 -0
- package/assets/icons/toggle-on.svg +1 -0
- package/assets/simulation.css +265 -0
- package/assets/tpn-js.css +101 -0
- package/dist/lib/BaseViewer.js +181 -0
- package/dist/lib/BaseViewer.js.map +1 -0
- package/dist/lib/CustomModeler.js +100 -0
- package/dist/lib/CustomModeler.js.map +1 -0
- package/dist/lib/NavigatedViewer.js +14 -0
- package/dist/lib/NavigatedViewer.js.map +1 -0
- package/dist/lib/Viewer.js +53 -0
- package/dist/lib/Viewer.js.map +1 -0
- package/dist/lib/auto-place/CustomAutoPlace.js +10 -0
- package/dist/lib/auto-place/CustomAutoPlace.js.map +1 -0
- package/dist/lib/auto-place/CustomAutoPlaceUtil.js +51 -0
- package/dist/lib/auto-place/CustomAutoPlaceUtil.js.map +1 -0
- package/dist/lib/auto-place/index.js +9 -0
- package/dist/lib/auto-place/index.js.map +1 -0
- package/dist/lib/common/copy-paste/CommonCopyPaste.js +58 -0
- package/dist/lib/common/copy-paste/CommonCopyPaste.js.map +1 -0
- package/dist/lib/common/copy-paste/ModdleCopy.js +168 -0
- package/dist/lib/common/copy-paste/ModdleCopy.js.map +1 -0
- package/dist/lib/common/copy-paste/index.js +10 -0
- package/dist/lib/common/copy-paste/index.js.map +1 -0
- package/dist/lib/common/editor-actions/EditorActions.js +110 -0
- package/dist/lib/common/editor-actions/EditorActions.js.map +1 -0
- package/dist/lib/common/editor-actions/index.js +7 -0
- package/dist/lib/common/editor-actions/index.js.map +1 -0
- package/dist/lib/common/keyboard/KeyboardBindings.js +101 -0
- package/dist/lib/common/keyboard/KeyboardBindings.js.map +1 -0
- package/dist/lib/common/keyboard/index.js +8 -0
- package/dist/lib/common/keyboard/index.js.map +1 -0
- package/dist/lib/common/search/CommonSearchProvider.js +72 -0
- package/dist/lib/common/search/CommonSearchProvider.js.map +1 -0
- package/dist/lib/common/search/index.js +9 -0
- package/dist/lib/common/search/index.js.map +1 -0
- package/dist/lib/core/index.js +6 -0
- package/dist/lib/core/index.js.map +1 -0
- package/dist/lib/declarations-panel/Util.js +32 -0
- package/dist/lib/declarations-panel/Util.js.map +1 -0
- package/dist/lib/declarations-panel/cmd/IdentifierCommitHandler.js +34 -0
- package/dist/lib/declarations-panel/cmd/IdentifierCommitHandler.js.map +1 -0
- package/dist/lib/declarations-panel/cmd/MultiCommandHandler.js +24 -0
- package/dist/lib/declarations-panel/cmd/MultiCommandHandler.js.map +1 -0
- package/dist/lib/declarations-panel/cmd/index.js +19 -0
- package/dist/lib/declarations-panel/cmd/index.js.map +1 -0
- package/dist/lib/declarations-panel/context/DeclarationsPanelContext.js +10 -0
- package/dist/lib/declarations-panel/context/DeclarationsPanelContext.js.map +1 -0
- package/dist/lib/declarations-panel/context/index.js +2 -0
- package/dist/lib/declarations-panel/context/index.js.map +1 -0
- package/dist/lib/declarations-panel/hooks/index.js +2 -0
- package/dist/lib/declarations-panel/hooks/index.js.map +1 -0
- package/dist/lib/declarations-panel/hooks/useService.js +7 -0
- package/dist/lib/declarations-panel/hooks/useService.js.map +1 -0
- package/dist/lib/declarations-panel/provider/DeclarationsProvider.js +107 -0
- package/dist/lib/declarations-panel/provider/DeclarationsProvider.js.map +1 -0
- package/dist/lib/declarations-panel/provider/IdentifierService.js +107 -0
- package/dist/lib/declarations-panel/provider/IdentifierService.js.map +1 -0
- package/dist/lib/declarations-panel/provider/SimulationModeService.js +14 -0
- package/dist/lib/declarations-panel/provider/SimulationModeService.js.map +1 -0
- package/dist/lib/declarations-panel/provider/index.js +14 -0
- package/dist/lib/declarations-panel/provider/index.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/ArcProps.js +123 -0
- package/dist/lib/declarations-panel/provider/properties/ArcProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/IdProps.js +47 -0
- package/dist/lib/declarations-panel/provider/properties/IdProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/ModelDeclarations.js +193 -0
- package/dist/lib/declarations-panel/provider/properties/ModelDeclarations.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/NameProps.js +43 -0
- package/dist/lib/declarations-panel/provider/properties/NameProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/PlaceProps.js +135 -0
- package/dist/lib/declarations-panel/provider/properties/PlaceProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/ReferenceSelect.js +21 -0
- package/dist/lib/declarations-panel/provider/properties/ReferenceSelect.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/TokenProps.js +116 -0
- package/dist/lib/declarations-panel/provider/properties/TokenProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/Util.js +112 -0
- package/dist/lib/declarations-panel/provider/properties/Util.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/VariableArcProps.js +107 -0
- package/dist/lib/declarations-panel/provider/properties/VariableArcProps.js.map +1 -0
- package/dist/lib/declarations-panel/provider/properties/index.js +8 -0
- package/dist/lib/declarations-panel/provider/properties/index.js.map +1 -0
- package/dist/lib/declarations-panel/render/DeclarationsPanel.js +197 -0
- package/dist/lib/declarations-panel/render/DeclarationsPanel.js.map +1 -0
- package/dist/lib/declarations-panel/render/DeclarationsPanelRenderer.js +154 -0
- package/dist/lib/declarations-panel/render/DeclarationsPanelRenderer.js.map +1 -0
- package/dist/lib/declarations-panel/render/PanelHeaderProvider.js +55 -0
- package/dist/lib/declarations-panel/render/PanelHeaderProvider.js.map +1 -0
- package/dist/lib/declarations-panel/render/PanelPlaceholderProvider.js +17 -0
- package/dist/lib/declarations-panel/render/PanelPlaceholderProvider.js.map +1 -0
- package/dist/lib/declarations-panel/render/index.js +9 -0
- package/dist/lib/declarations-panel/render/index.js.map +1 -0
- package/dist/lib/draw/CustomRenderer.js +361 -0
- package/dist/lib/draw/CustomRenderer.js.map +1 -0
- package/dist/lib/draw/TextRenderer.js +52 -0
- package/dist/lib/draw/TextRenderer.js.map +1 -0
- package/dist/lib/draw/index.js +8 -0
- package/dist/lib/draw/index.js.map +1 -0
- package/dist/lib/import/CustomImporter.js +177 -0
- package/dist/lib/import/CustomImporter.js.map +1 -0
- package/dist/lib/import/CustomTreeWalker.js +178 -0
- package/dist/lib/import/CustomTreeWalker.js.map +1 -0
- package/dist/lib/import/Importer.js +47 -0
- package/dist/lib/import/Importer.js.map +1 -0
- package/dist/lib/import/index.js +7 -0
- package/dist/lib/import/index.js.map +1 -0
- package/dist/lib/moddle/CustomModdle.js +86 -0
- package/dist/lib/moddle/CustomModdle.js.map +1 -0
- package/dist/lib/moddle/index.js +15 -0
- package/dist/lib/moddle/index.js.map +1 -0
- package/dist/lib/moddle/resources/dc.json +99 -0
- package/dist/lib/moddle/resources/diagramSchema.js +210 -0
- package/dist/lib/moddle/resources/diagramSchema.js.map +1 -0
- package/dist/lib/moddle/resources/modelSchema.js +254 -0
- package/dist/lib/moddle/resources/modelSchema.js.map +1 -0
- package/dist/lib/modeling/CustomElementFactory.js +66 -0
- package/dist/lib/modeling/CustomElementFactory.js.map +1 -0
- package/dist/lib/modeling/CustomLabelEditing.js +177 -0
- package/dist/lib/modeling/CustomLabelEditing.js.map +1 -0
- package/dist/lib/modeling/CustomModeling.js +40 -0
- package/dist/lib/modeling/CustomModeling.js.map +1 -0
- package/dist/lib/modeling/CustomUpdater.js +291 -0
- package/dist/lib/modeling/CustomUpdater.js.map +1 -0
- package/dist/lib/modeling/CustomVerification.js +111 -0
- package/dist/lib/modeling/CustomVerification.js.map +1 -0
- package/dist/lib/modeling/ElementFactory.js +56 -0
- package/dist/lib/modeling/ElementFactory.js.map +1 -0
- package/dist/lib/modeling/LabelUtil.js +151 -0
- package/dist/lib/modeling/LabelUtil.js.map +1 -0
- package/dist/lib/modeling/UpdateLabelHandler.js +86 -0
- package/dist/lib/modeling/UpdateLabelHandler.js.map +1 -0
- package/dist/lib/modeling/UpdateModdlePropertiesHandler.js +88 -0
- package/dist/lib/modeling/UpdateModdlePropertiesHandler.js.map +1 -0
- package/dist/lib/modeling/UpdatePropertiesHandler.js +136 -0
- package/dist/lib/modeling/UpdatePropertiesHandler.js.map +1 -0
- package/dist/lib/modeling/behavior/AdaptiveLabelPositioningBehavior.js +169 -0
- package/dist/lib/modeling/behavior/AdaptiveLabelPositioningBehavior.js.map +1 -0
- package/dist/lib/modeling/behavior/LabelBehavior.js +255 -0
- package/dist/lib/modeling/behavior/LabelBehavior.js.map +1 -0
- package/dist/lib/modeling/behavior/index.js +8 -0
- package/dist/lib/modeling/behavior/index.js.map +1 -0
- package/dist/lib/modeling/behavior/util/GeometricUtil.js +99 -0
- package/dist/lib/modeling/behavior/util/GeometricUtil.js.map +1 -0
- package/dist/lib/modeling/behavior/util/LabelLayoutUtil.js +178 -0
- package/dist/lib/modeling/behavior/util/LabelLayoutUtil.js.map +1 -0
- package/dist/lib/modeling/behavior/util/LineAttachmentUtil.js +175 -0
- package/dist/lib/modeling/behavior/util/LineAttachmentUtil.js.map +1 -0
- package/dist/lib/modeling/index.js +36 -0
- package/dist/lib/modeling/index.js.map +1 -0
- package/dist/lib/palette/CustomContextPadProvider.js +182 -0
- package/dist/lib/palette/CustomContextPadProvider.js.map +1 -0
- package/dist/lib/palette/CustomPaletteProvider.js +93 -0
- package/dist/lib/palette/CustomPaletteProvider.js.map +1 -0
- package/dist/lib/palette/TokenModals.js +105 -0
- package/dist/lib/palette/TokenModals.js.map +1 -0
- package/dist/lib/palette/index.js +28 -0
- package/dist/lib/palette/index.js.map +1 -0
- package/dist/lib/replace/ReplaceMenuProvider.js +84 -0
- package/dist/lib/replace/ReplaceMenuProvider.js.map +1 -0
- package/dist/lib/replace/index.js +9 -0
- package/dist/lib/replace/index.js.map +1 -0
- package/dist/lib/rules/CustomRuleProvider.js +107 -0
- package/dist/lib/rules/CustomRuleProvider.js.map +1 -0
- package/dist/lib/rules/index.js +8 -0
- package/dist/lib/rules/index.js.map +1 -0
- package/dist/lib/simulation/EventHelper.js +6 -0
- package/dist/lib/simulation/EventHelper.js.map +1 -0
- package/dist/lib/simulation/Utils.js +8 -0
- package/dist/lib/simulation/Utils.js.map +1 -0
- package/dist/lib/simulation/binding-utils/arcPlaceInfoLogic.js +157 -0
- package/dist/lib/simulation/binding-utils/arcPlaceInfoLogic.js.map +1 -0
- package/dist/lib/simulation/binding-utils/bindingUtils.js +64 -0
- package/dist/lib/simulation/binding-utils/bindingUtils.js.map +1 -0
- package/dist/lib/simulation/binding-utils/earlyReturnLogic.js +107 -0
- package/dist/lib/simulation/binding-utils/earlyReturnLogic.js.map +1 -0
- package/dist/lib/simulation/binding-utils/exactSynchro.js +102 -0
- package/dist/lib/simulation/binding-utils/exactSynchro.js.map +1 -0
- package/dist/lib/simulation/binding-utils/helpers.js +141 -0
- package/dist/lib/simulation/binding-utils/helpers.js.map +1 -0
- package/dist/lib/simulation/binding-utils/inhibitorLogic.js +166 -0
- package/dist/lib/simulation/binding-utils/inhibitorLogic.js.map +1 -0
- package/dist/lib/simulation/binding-utils/linkingLogic.js +384 -0
- package/dist/lib/simulation/binding-utils/linkingLogic.js.map +1 -0
- package/dist/lib/simulation/context-pads/ContextPads.js +141 -0
- package/dist/lib/simulation/context-pads/ContextPads.js.map +1 -0
- package/dist/lib/simulation/context-pads/FireTransitionHandler.js +481 -0
- package/dist/lib/simulation/context-pads/FireTransitionHandler.js.map +1 -0
- package/dist/lib/simulation/context-pads/FireTransitionUtils.js +169 -0
- package/dist/lib/simulation/context-pads/FireTransitionUtils.js.map +1 -0
- package/dist/lib/simulation/context-pads/FormJsAdapter.js +99 -0
- package/dist/lib/simulation/context-pads/FormJsAdapter.js.map +1 -0
- package/dist/lib/simulation/context-pads/index.js +8 -0
- package/dist/lib/simulation/context-pads/index.js.map +1 -0
- package/dist/lib/simulation/palette/Palette.js +36 -0
- package/dist/lib/simulation/palette/Palette.js.map +1 -0
- package/dist/lib/simulation/palette/index.js +6 -0
- package/dist/lib/simulation/palette/index.js.map +1 -0
- package/dist/lib/simulation/reset-simulation/ResetSimulation.js +36 -0
- package/dist/lib/simulation/reset-simulation/ResetSimulation.js.map +1 -0
- package/dist/lib/simulation/reset-simulation/index.js +6 -0
- package/dist/lib/simulation/reset-simulation/index.js.map +1 -0
- package/dist/lib/simulation/simulation-history/SimulationHistory.js +158 -0
- package/dist/lib/simulation/simulation-history/SimulationHistory.js.map +1 -0
- package/dist/lib/simulation/simulation-history/index.js +6 -0
- package/dist/lib/simulation/simulation-history/index.js.map +1 -0
- package/dist/lib/simulation/simulator/Simulator.js +131 -0
- package/dist/lib/simulation/simulator/Simulator.js.map +1 -0
- package/dist/lib/simulation/simulator/index.js +6 -0
- package/dist/lib/simulation/simulator/index.js.map +1 -0
- package/dist/lib/simulation/toggle-simulation-mode/DisableModeling.js +85 -0
- package/dist/lib/simulation/toggle-simulation-mode/DisableModeling.js.map +1 -0
- package/dist/lib/simulation/toggle-simulation-mode/ToggleSimulationMode.js +65 -0
- package/dist/lib/simulation/toggle-simulation-mode/ToggleSimulationMode.js.map +1 -0
- package/dist/lib/simulation/toggle-simulation-mode/index.js +8 -0
- package/dist/lib/simulation/toggle-simulation-mode/index.js.map +1 -0
- package/dist/lib/util/EventBusEvents.js +70 -0
- package/dist/lib/util/EventBusEvents.js.map +1 -0
- package/dist/lib/util/FileUtil.js +35 -0
- package/dist/lib/util/FileUtil.js.map +1 -0
- package/dist/lib/util/HtmlUtil.js +67 -0
- package/dist/lib/util/HtmlUtil.js.map +1 -0
- package/dist/lib/util/Util.js +60 -0
- package/dist/lib/util/Util.js.map +1 -0
- package/dist/lib/util/constants.js +6 -0
- package/dist/lib/util/constants.js.map +1 -0
- package/dist/lib/util/emptyDiagram.js +12 -0
- package/dist/lib/util/emptyDiagram.js.map +1 -0
- package/dist/lib/util/generated-icons.js +12 -0
- package/dist/lib/util/generated-icons.js.map +1 -0
- package/dist/scripts/build-icons.js +30 -0
- package/dist/scripts/build-icons.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/index.js +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import CommandInterceptor from "diagram-js/lib/command/CommandInterceptor";
|
|
2
|
+
import { center, getBusinessObject, is, ifModelElement } from "../util/Util";
|
|
3
|
+
import { remove as collectionRemove } from "diagram-js/lib/util/Collections";
|
|
4
|
+
import { getLabel, isLabel, requiresExternalLabel } from "./LabelUtil";
|
|
5
|
+
import { assign, forEach } from "min-dash";
|
|
6
|
+
import { MODELER_PREFIX, MODELER_DI_PREFIX } from "../util/constants";
|
|
7
|
+
import { createDefaultInscriptionElementForClass, getArcColor, } from "../declarations-panel/provider/properties/Util";
|
|
8
|
+
export default class CustomUpdater extends CommandInterceptor {
|
|
9
|
+
constructor(eventBus, customElementFactory, connectionDocking, translate) {
|
|
10
|
+
super(eventBus);
|
|
11
|
+
this.updateDiAndSemanticParent = function (element, oldParent) {
|
|
12
|
+
// a label's parent does not change here
|
|
13
|
+
if (element.type === "label") {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const parentShape = element.parent;
|
|
17
|
+
const businessObject = element.businessObject;
|
|
18
|
+
const parentBusinessObject = parentShape && parentShape.businessObject;
|
|
19
|
+
const parentDi = parentBusinessObject && parentBusinessObject.di;
|
|
20
|
+
this.updateSemanticParent(businessObject, parentBusinessObject);
|
|
21
|
+
this.updateDiParent(businessObject.di, parentDi);
|
|
22
|
+
};
|
|
23
|
+
this.updateSemanticParent = function (businessObject, newParent) {
|
|
24
|
+
let containment = businessObject.$parent;
|
|
25
|
+
const translate = this._translate;
|
|
26
|
+
if (businessObject.$parent === newParent) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (is(businessObject, `${MODELER_PREFIX}:ModelElement`)) {
|
|
30
|
+
containment = "modelElements";
|
|
31
|
+
}
|
|
32
|
+
if (!containment) {
|
|
33
|
+
throw new Error(translate("no parent for {element} in {parent}", {
|
|
34
|
+
element: businessObject.id,
|
|
35
|
+
parent: newParent.id,
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
let children;
|
|
39
|
+
if (businessObject.$parent) {
|
|
40
|
+
// Remove from old parent
|
|
41
|
+
children = businessObject.$parent.get(containment);
|
|
42
|
+
collectionRemove(children, businessObject);
|
|
43
|
+
}
|
|
44
|
+
if (!newParent) {
|
|
45
|
+
businessObject.$parent = null;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// Add to new parent
|
|
49
|
+
children = newParent.get(containment);
|
|
50
|
+
children.push(businessObject);
|
|
51
|
+
businessObject.$parent = newParent;
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
this.updateDiParent = function (di, parentDi) {
|
|
55
|
+
if (parentDi && !is(parentDi, `${MODELER_DI_PREFIX}:Plane`)) {
|
|
56
|
+
parentDi = parentDi.$parent;
|
|
57
|
+
}
|
|
58
|
+
if (di.$parent === parentDi) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const planeElements = (parentDi || di.$parent).get("planeElements");
|
|
62
|
+
if (parentDi) {
|
|
63
|
+
planeElements.push(di);
|
|
64
|
+
di.$parent = parentDi;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
collectionRemove(planeElements, di);
|
|
68
|
+
di.$parent = null;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
this.updateBounds = function (shape) {
|
|
72
|
+
const di = shape.businessObject.di;
|
|
73
|
+
const target = isLabel(shape) ? this._getLabel(di) : di;
|
|
74
|
+
let bounds = target.bounds;
|
|
75
|
+
if (!bounds) {
|
|
76
|
+
bounds = this._customElementFactory.createDiBounds();
|
|
77
|
+
target.set("bounds", bounds);
|
|
78
|
+
}
|
|
79
|
+
assign(bounds, {
|
|
80
|
+
x: shape.x,
|
|
81
|
+
y: shape.y,
|
|
82
|
+
width: shape.width,
|
|
83
|
+
height: shape.height,
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
this.updateConnection = function (context) {
|
|
87
|
+
const connection = context.connection;
|
|
88
|
+
const businessObject = getBusinessObject(connection);
|
|
89
|
+
const newSource = getBusinessObject(connection.source);
|
|
90
|
+
const newTarget = getBusinessObject(connection.target);
|
|
91
|
+
if (businessObject.source !== newSource) {
|
|
92
|
+
businessObject.source = newSource;
|
|
93
|
+
}
|
|
94
|
+
if (businessObject.target !== newTarget) {
|
|
95
|
+
businessObject.target = newTarget;
|
|
96
|
+
}
|
|
97
|
+
this.updateConnectionWaypoints(connection);
|
|
98
|
+
this.updateDiConnection(businessObject.di, newSource, newTarget);
|
|
99
|
+
};
|
|
100
|
+
this.updateConnectionWaypoints = function (connection) {
|
|
101
|
+
connection.businessObject.di.set("waypoint", this._customElementFactory.createDiWaypoints(connection.waypoints));
|
|
102
|
+
};
|
|
103
|
+
this.updateDiConnection = function (di, newSource, newTarget) {
|
|
104
|
+
if (di.sourceElement && di.sourceElement.modelElement !== newSource) {
|
|
105
|
+
di.sourceElement = newSource && newSource.di;
|
|
106
|
+
}
|
|
107
|
+
if (di.targetElement && di.targetElement.modelElement !== newTarget) {
|
|
108
|
+
di.targetElement = newTarget && newTarget.di;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
this.connectionWaypoints = function (source, target) {
|
|
112
|
+
const connection = { source, target };
|
|
113
|
+
// Todo: Handle reflexive and bidirectional edges if necessary
|
|
114
|
+
// if (connection.source === connection.target) {
|
|
115
|
+
// connection.waypoints = reflexiveEdge(connection.source);
|
|
116
|
+
// } else if () {
|
|
117
|
+
// //TODO: Handle bidirectional edges
|
|
118
|
+
// }
|
|
119
|
+
connection.waypoints = [
|
|
120
|
+
center(connection.source),
|
|
121
|
+
center(connection.target),
|
|
122
|
+
];
|
|
123
|
+
connection.waypoints =
|
|
124
|
+
this._connectionDocking.getCroppedWaypoints(connection);
|
|
125
|
+
// console.log(this._connectionDocking.getDockingPoint(connection, connection.source));
|
|
126
|
+
return connection.waypoints;
|
|
127
|
+
};
|
|
128
|
+
this._getLabel = function (di) {
|
|
129
|
+
if (!di.label) {
|
|
130
|
+
di.label = this._customElementFactory.createDiLabel();
|
|
131
|
+
}
|
|
132
|
+
return di.label;
|
|
133
|
+
};
|
|
134
|
+
this.createArcInscription = function (arc) {
|
|
135
|
+
if (!arc.businessObject.inscription) {
|
|
136
|
+
const newInscription = this._customElementFactory.create(`${MODELER_PREFIX}:Inscription`, { inscriptionElements: [] });
|
|
137
|
+
newInscription.$parent = arc;
|
|
138
|
+
const arcColor = getArcColor(arc);
|
|
139
|
+
if (arcColor && arcColor.length) {
|
|
140
|
+
arcColor.forEach((dataClass) => {
|
|
141
|
+
const inscriptionElement = createDefaultInscriptionElementForClass(dataClass, newInscription, this._customElementFactory);
|
|
142
|
+
newInscription.inscriptionElements.push(inscriptionElement);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
arc.businessObject.inscription = newInscription;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
this._customElementFactory = customElementFactory;
|
|
149
|
+
this._connectionDocking = connectionDocking;
|
|
150
|
+
this._translate = translate;
|
|
151
|
+
// Maintain a reference to the original this object
|
|
152
|
+
const self = this;
|
|
153
|
+
// Crop connection ends to avoid overlapping with elements
|
|
154
|
+
function cropConnection(e) {
|
|
155
|
+
const context = e.context;
|
|
156
|
+
const hints = context.hints || {};
|
|
157
|
+
if (!context.cropped && hints.createElementsBehavior !== false) {
|
|
158
|
+
const connection = context.connection;
|
|
159
|
+
// connection.waypoints = self.connectionWaypoints(connection.source, connection.target);
|
|
160
|
+
connection.waypoints =
|
|
161
|
+
connectionDocking.getCroppedWaypoints(connection);
|
|
162
|
+
context.cropped = true;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
this.executed(["connection.layout", "connection.create"], cropConnection);
|
|
166
|
+
this.reverted(["connection.layout"], function (e) {
|
|
167
|
+
delete e.context.cropped;
|
|
168
|
+
});
|
|
169
|
+
// DI Update
|
|
170
|
+
function updateParent(e) {
|
|
171
|
+
const context = e.context;
|
|
172
|
+
const element = context.shape || context.connection;
|
|
173
|
+
self.updateDiAndSemanticParent(element, context.oldParent);
|
|
174
|
+
}
|
|
175
|
+
function reverseUpdateParent(e) {
|
|
176
|
+
const context = e.context;
|
|
177
|
+
const element = context.shape || context.connection;
|
|
178
|
+
const oldParent = context.parent || context.newParent;
|
|
179
|
+
self.updateDiAndSemanticParent(element, oldParent);
|
|
180
|
+
}
|
|
181
|
+
this.executed([
|
|
182
|
+
"shape.move",
|
|
183
|
+
"shape.create",
|
|
184
|
+
"shape.delete",
|
|
185
|
+
"connection.create",
|
|
186
|
+
"connection.move",
|
|
187
|
+
"connection.delete",
|
|
188
|
+
], ifModelElement(updateParent));
|
|
189
|
+
this.reverted([
|
|
190
|
+
"shape.move",
|
|
191
|
+
"shape.create",
|
|
192
|
+
"shape.delete",
|
|
193
|
+
"connection.create",
|
|
194
|
+
"connection.move",
|
|
195
|
+
"connection.delete",
|
|
196
|
+
], ifModelElement(reverseUpdateParent));
|
|
197
|
+
// Update root element of canvas
|
|
198
|
+
function updateRoot(e) {
|
|
199
|
+
const context = e.context;
|
|
200
|
+
const oldRoot = context.oldRoot;
|
|
201
|
+
const children = oldRoot.children;
|
|
202
|
+
forEach(children, function (child) {
|
|
203
|
+
if (is(child, `${MODELER_PREFIX}:ModelElement`)) {
|
|
204
|
+
self.updateParent(child);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
this.executed(["canvas.updateRoot"], updateRoot);
|
|
209
|
+
this.reverted(["canvas.updateRoot"], updateRoot);
|
|
210
|
+
// Update bounds of everything but labels
|
|
211
|
+
function updateBounds(e) {
|
|
212
|
+
const shape = e.context.shape;
|
|
213
|
+
if (!is(shape, `${MODELER_PREFIX}:ModelElement`)) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
self.updateBounds(shape);
|
|
217
|
+
}
|
|
218
|
+
this.executed(["shape.move", "shape.create", "shape.resize"], ifModelElement(function (e) {
|
|
219
|
+
// Exclude labels since they are handled differently during shape.changed
|
|
220
|
+
if (e.context.shape.type === "label") {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
updateBounds(e);
|
|
224
|
+
}));
|
|
225
|
+
this.reverted(["shape.move", "shape.create", "shape.resize"], ifModelElement(function (e) {
|
|
226
|
+
// Exclude labels since they are handled differently during shape.changed
|
|
227
|
+
if (e.context.shape.type === "label") {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
updateBounds(e);
|
|
231
|
+
}));
|
|
232
|
+
// Update label bounds
|
|
233
|
+
eventBus.on("shape.changed", function (e) {
|
|
234
|
+
if (e.element.type === "label") {
|
|
235
|
+
updateBounds({ context: { shape: e.element } });
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
function updateElementLabel(e) {
|
|
239
|
+
const { element } = e.context;
|
|
240
|
+
const label = getLabel(element);
|
|
241
|
+
const di = element.businessObject.di;
|
|
242
|
+
const diLabel = di && di.get("label");
|
|
243
|
+
if (!requiresExternalLabel(element) ||
|
|
244
|
+
is(di, `${MODELER_DI_PREFIX}:Plane`)) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
if (label && !diLabel) {
|
|
248
|
+
di.set("label", self._customElementFactory.createDiLabel());
|
|
249
|
+
}
|
|
250
|
+
else if (!label && diLabel) {
|
|
251
|
+
di.set("label", null);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
this.executed("element.updateLabel", ifModelElement(updateElementLabel));
|
|
255
|
+
this.reverted("element.updateLabel", ifModelElement(updateElementLabel));
|
|
256
|
+
// Update connections
|
|
257
|
+
function updateConnection(e) {
|
|
258
|
+
const context = e.context;
|
|
259
|
+
self.updateConnection(context);
|
|
260
|
+
}
|
|
261
|
+
this.executed([
|
|
262
|
+
"connection.create",
|
|
263
|
+
"connection.move",
|
|
264
|
+
"connection.delete",
|
|
265
|
+
"connection.reconnect",
|
|
266
|
+
], ifModelElement(updateConnection));
|
|
267
|
+
this.reverted([
|
|
268
|
+
"connection.create",
|
|
269
|
+
"connection.move",
|
|
270
|
+
"connection.delete",
|
|
271
|
+
"connection.reconnect",
|
|
272
|
+
], ifModelElement(updateConnection));
|
|
273
|
+
function createArcInscription(e) {
|
|
274
|
+
self.createArcInscription(e.context.connection);
|
|
275
|
+
}
|
|
276
|
+
this.executed(["connection.create"], ifModelElement(createArcInscription));
|
|
277
|
+
// Update waypoints
|
|
278
|
+
function updateConnectionWaypoints(e) {
|
|
279
|
+
self.updateConnectionWaypoints(e.context.connection);
|
|
280
|
+
}
|
|
281
|
+
this.executed(["connection.layout", "connection.move", "connection.updateWaypoints"], ifModelElement(updateConnectionWaypoints));
|
|
282
|
+
this.reverted(["connection.layout", "connection.move", "connection.updateWaypoints"], ifModelElement(updateConnectionWaypoints));
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
CustomUpdater.$inject = [
|
|
286
|
+
"eventBus",
|
|
287
|
+
"customElementFactory",
|
|
288
|
+
"connectionDocking",
|
|
289
|
+
"translate",
|
|
290
|
+
];
|
|
291
|
+
//# sourceMappingURL=CustomUpdater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomUpdater.js","sourceRoot":"","sources":["../../../lib/modeling/CustomUpdater.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import CommandInterceptor from "diagram-js/lib/command/CommandInterceptor";
|
|
2
|
+
import { is, ifModelElement } from "../util/Util";
|
|
3
|
+
import { MODELER_PREFIX } from "../util/constants";
|
|
4
|
+
import { isStructurallyIncorrect } from "../simulation/binding-utils/earlyReturnLogic";
|
|
5
|
+
export default class CustomVerification extends CommandInterceptor {
|
|
6
|
+
constructor(eventBus, overlays, elementRegistry) {
|
|
7
|
+
super(eventBus);
|
|
8
|
+
this.verifyStructuralCorrectness = function (self, transition) {
|
|
9
|
+
const [isIncorrect, message] = isStructurallyIncorrect(transition.incoming, transition.outgoing);
|
|
10
|
+
if (self._overlayMap.has(transition)) {
|
|
11
|
+
self._overlays.remove(self._overlayMap.get(transition));
|
|
12
|
+
self._overlayMap.delete(transition);
|
|
13
|
+
}
|
|
14
|
+
if (isIncorrect) {
|
|
15
|
+
const escapedMessage = message
|
|
16
|
+
.replace(/&/g, "&")
|
|
17
|
+
.replace(/</g, "<")
|
|
18
|
+
.replace(/>/g, ">")
|
|
19
|
+
.replace(/"/g, """)
|
|
20
|
+
.replace(/'/g, "'");
|
|
21
|
+
const overlayId = self._overlays.add(transition, {
|
|
22
|
+
position: {
|
|
23
|
+
bottom: -2,
|
|
24
|
+
right: -2,
|
|
25
|
+
},
|
|
26
|
+
html: `
|
|
27
|
+
<div class="structurally-incorrect-overlay" style="cursor: pointer; overflow: visible; font-size: 25;">
|
|
28
|
+
<div class="structurally-incorrect-tooltip">${escapedMessage}</div>
|
|
29
|
+
<svg width="24px" height="24px" viewBox="0 0 20 20" style="overflow: visible;">
|
|
30
|
+
<circle cx="10" cy="10" r="10" fill="#fff3cd" stroke="#856404" stroke-width="0.15em"/>
|
|
31
|
+
<text x="10" y="14" text-anchor="middle" font-size="16" fill="#856404" font-family="Arial">⚠</text>
|
|
32
|
+
</svg>
|
|
33
|
+
</div>
|
|
34
|
+
`,
|
|
35
|
+
});
|
|
36
|
+
self._overlayMap.set(transition, overlayId);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
this._overlays = overlays;
|
|
40
|
+
this._elementRegistry = elementRegistry;
|
|
41
|
+
this._overlayMap = new Map();
|
|
42
|
+
const self = this;
|
|
43
|
+
function verifyInitially(e) {
|
|
44
|
+
var _a;
|
|
45
|
+
const allTransitions = [];
|
|
46
|
+
const elements = (_a = self._elementRegistry) === null || _a === void 0 ? void 0 : _a._elements;
|
|
47
|
+
if (!elements)
|
|
48
|
+
return;
|
|
49
|
+
Object.values(elements).forEach((id) => {
|
|
50
|
+
if (is(id.element, `${MODELER_PREFIX}:Transition`)) {
|
|
51
|
+
allTransitions.push(id.element);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
for (const transition of allTransitions) {
|
|
55
|
+
self.verifyStructuralCorrectness(self, transition);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
eventBus.on("import.done", verifyInitially);
|
|
59
|
+
function getTransition(contextArc) {
|
|
60
|
+
var _a, _b;
|
|
61
|
+
const sourceIsTransition = ((_a = contextArc.source) === null || _a === void 0 ? void 0 : _a.type) === `${MODELER_PREFIX}:Transition`;
|
|
62
|
+
const targetIsTransition = ((_b = contextArc.target) === null || _b === void 0 ? void 0 : _b.type) === `${MODELER_PREFIX}:Transition`;
|
|
63
|
+
if (!sourceIsTransition && !targetIsTransition)
|
|
64
|
+
return;
|
|
65
|
+
const transition = sourceIsTransition
|
|
66
|
+
? contextArc.source
|
|
67
|
+
: contextArc.target;
|
|
68
|
+
return transition;
|
|
69
|
+
}
|
|
70
|
+
function verifyAfterConnectionUpdate(e) {
|
|
71
|
+
var _a, _b;
|
|
72
|
+
let contextArc = e.context;
|
|
73
|
+
let attempts = 0;
|
|
74
|
+
while (attempts < 2 &&
|
|
75
|
+
((_a = contextArc.source) === null || _a === void 0 ? void 0 : _a.type) !== `${MODELER_PREFIX}:Transition` &&
|
|
76
|
+
((_b = contextArc.target) === null || _b === void 0 ? void 0 : _b.type) !== `${MODELER_PREFIX}:Transition`) {
|
|
77
|
+
contextArc = contextArc.connection;
|
|
78
|
+
attempts++;
|
|
79
|
+
if (!contextArc)
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const transition = getTransition(contextArc);
|
|
83
|
+
if (!transition)
|
|
84
|
+
return;
|
|
85
|
+
self.verifyStructuralCorrectness(self, transition);
|
|
86
|
+
}
|
|
87
|
+
self.executed(["connection.create", "connection.delete"], ifModelElement(verifyAfterConnectionUpdate));
|
|
88
|
+
self.reverted(["connection.create", "connection.delete"], ifModelElement(verifyAfterConnectionUpdate));
|
|
89
|
+
function verifyAfterElementUpdate(e) {
|
|
90
|
+
let contextArc = e.context.element;
|
|
91
|
+
if (!(contextArc === null || contextArc === void 0 ? void 0 : contextArc.type) || contextArc.type !== `${MODELER_PREFIX}:Arc`)
|
|
92
|
+
return;
|
|
93
|
+
const transition = getTransition(contextArc);
|
|
94
|
+
if (!transition)
|
|
95
|
+
return;
|
|
96
|
+
self.verifyStructuralCorrectness(self, transition);
|
|
97
|
+
}
|
|
98
|
+
self.executed([
|
|
99
|
+
"element.updateModdleProperties",
|
|
100
|
+
"element.updateProperties",
|
|
101
|
+
"element.updateLabel",
|
|
102
|
+
], verifyAfterElementUpdate);
|
|
103
|
+
self.reverted([
|
|
104
|
+
"element.updateModdleProperties",
|
|
105
|
+
"element.updateProperties",
|
|
106
|
+
"element.updateLabel",
|
|
107
|
+
], verifyAfterElementUpdate);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
CustomVerification.$inject = ["eventBus", "overlays", "elementRegistry"];
|
|
111
|
+
//# sourceMappingURL=CustomVerification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomVerification.js","sourceRoot":"","sources":["../../../lib/modeling/CustomVerification.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { assign } from "min-dash";
|
|
2
|
+
import BaseElementFactory from "diagram-js/lib/core/ElementFactory";
|
|
3
|
+
import { DEFAULT_LABEL_SIZE } from "./LabelUtil";
|
|
4
|
+
export default class ElementFactory extends BaseElementFactory {
|
|
5
|
+
constructor(customElementFactory) {
|
|
6
|
+
super();
|
|
7
|
+
this._customElementFactory = customElementFactory;
|
|
8
|
+
}
|
|
9
|
+
baseCreate(elementType, attrs) {
|
|
10
|
+
return super.create(elementType, attrs);
|
|
11
|
+
}
|
|
12
|
+
create(elementType, attrs) {
|
|
13
|
+
// Leave label creation to diagram-js
|
|
14
|
+
// Assumes that a label's business object has been assigned elsewhere
|
|
15
|
+
if (elementType === "label") {
|
|
16
|
+
return this.baseCreate(elementType, assign({ type: "label" }, DEFAULT_LABEL_SIZE, attrs));
|
|
17
|
+
}
|
|
18
|
+
return this.createElement(elementType, attrs);
|
|
19
|
+
}
|
|
20
|
+
createElement(elementType, attrs) {
|
|
21
|
+
attrs = attrs || {};
|
|
22
|
+
let businessObject = attrs.businessObject;
|
|
23
|
+
if (!businessObject) {
|
|
24
|
+
businessObject = this._customElementFactory.create(attrs.type, attrs);
|
|
25
|
+
}
|
|
26
|
+
if (!businessObject.di) {
|
|
27
|
+
if (elementType === "root") {
|
|
28
|
+
businessObject.di = this._customElementFactory.createDiPlane(businessObject, [], {
|
|
29
|
+
id: businessObject.id + "_di",
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
else if (elementType === "connection") {
|
|
33
|
+
businessObject.di = this._customElementFactory.createDiEdge(businessObject, [], {
|
|
34
|
+
id: businessObject.id + "_di",
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
businessObject.di = this._customElementFactory.createDiShape(businessObject, [], {
|
|
39
|
+
id: businessObject.id + "_di",
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (attrs.di) {
|
|
44
|
+
assign(businessObject.di, attrs.di);
|
|
45
|
+
delete attrs.di;
|
|
46
|
+
}
|
|
47
|
+
const size = this._customElementFactory.defaultSizeForType(businessObject);
|
|
48
|
+
attrs = assign({
|
|
49
|
+
businessObject,
|
|
50
|
+
id: businessObject.id,
|
|
51
|
+
}, size, attrs);
|
|
52
|
+
return this.baseCreate(elementType, attrs);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ElementFactory.$inject = ["customElementFactory"];
|
|
56
|
+
//# sourceMappingURL=ElementFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElementFactory.js","sourceRoot":"","sources":["../../../lib/modeling/ElementFactory.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,kBAAkB;IAC5D,YAAY,oBAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;IACpD,CAAC;IAED,UAAU,CAAC,WAAW,EAAE,KAAK;QAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,KAAK;QACvB,qCAAqC;QACrC,qEAAqE;QACrE,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,UAAU,CACpB,WAAW,EACX,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAAE,KAAK,CAAC,CACrD,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,aAAa,CAAC,WAAW,EAAE,KAAK;QAC9B,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QAEpB,IAAI,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAE1C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACvB,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBAC3B,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAC1D,cAAc,EACd,EAAE,EACF;oBACE,EAAE,EAAE,cAAc,CAAC,EAAE,GAAG,KAAK;iBAC9B,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;gBACxC,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CACzD,cAAc,EACd,EAAE,EACF;oBACE,EAAE,EAAE,cAAc,CAAC,EAAE,GAAG,KAAK;iBAC9B,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAC1D,cAAc,EACd,EAAE,EACF;oBACE,EAAE,EAAE,cAAc,CAAC,EAAE,GAAG,KAAK;iBAC9B,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAE3E,KAAK,GAAG,MAAM,CACZ;YACE,cAAc;YACd,EAAE,EAAE,cAAc,CAAC,EAAE;SACtB,EACD,IAAI,EACJ,KAAK,CACN,CAAC;QAEF,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,cAAc,CAAC,OAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { getBusinessObject, isAny } from "../util/Util";
|
|
2
|
+
import { assign } from "min-dash";
|
|
3
|
+
import { MODELER_PREFIX } from "../util/constants";
|
|
4
|
+
import { isWritingArc } from "../declarations-panel/provider/properties/Util";
|
|
5
|
+
export function getArcInscriptionText(arcBusinessObject) {
|
|
6
|
+
const inscription = arcBusinessObject.inscription;
|
|
7
|
+
if (!inscription ||
|
|
8
|
+
!inscription.inscriptionElements ||
|
|
9
|
+
!inscription.inscriptionElements.length) {
|
|
10
|
+
return "";
|
|
11
|
+
}
|
|
12
|
+
const variableType = arcBusinessObject.variableType;
|
|
13
|
+
const isExactSynchronization = arcBusinessObject.isExactSynchronization;
|
|
14
|
+
const inscriptionText = inscription.inscriptionElements
|
|
15
|
+
.map((inscriptionElement) => {
|
|
16
|
+
const generationPrefix = inscriptionElement.isGenerated ? "\u03BD_" : "";
|
|
17
|
+
const variableName = inscriptionElement.variableName || inscriptionElement.dataClass.alias;
|
|
18
|
+
let variableTypeSuffix = "";
|
|
19
|
+
if (variableType && variableType.id === inscriptionElement.dataClass.id) {
|
|
20
|
+
variableTypeSuffix = "[]";
|
|
21
|
+
if (!isWritingArc(arcBusinessObject)) {
|
|
22
|
+
variableTypeSuffix += isExactSynchronization ? "=" : "⊆";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return `${generationPrefix}${variableName}${variableTypeSuffix}`;
|
|
26
|
+
})
|
|
27
|
+
.join(", ");
|
|
28
|
+
return inscription.inscriptionElements.length > 1
|
|
29
|
+
? `(${inscriptionText})`
|
|
30
|
+
: inscriptionText;
|
|
31
|
+
}
|
|
32
|
+
export function getLabel(element) {
|
|
33
|
+
const businessObject = getBusinessObject(element);
|
|
34
|
+
if (businessObject.$type === `${MODELER_PREFIX}:Arc`) {
|
|
35
|
+
return getArcInscriptionText(businessObject);
|
|
36
|
+
}
|
|
37
|
+
const attr = getLabelAttribute(element);
|
|
38
|
+
if (attr) {
|
|
39
|
+
return businessObject[attr] || "";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// CustomModelerTodo: Usually, the label attribute should be 'name' for standard elements.
|
|
43
|
+
// However, if you want a different attribute to serve as the label, specify that here.
|
|
44
|
+
export function getLabelAttribute(element) {
|
|
45
|
+
const businessObject = getBusinessObject(element);
|
|
46
|
+
if (isAny(businessObject, [
|
|
47
|
+
`${MODELER_PREFIX}:Place`,
|
|
48
|
+
`${MODELER_PREFIX}:Transition`,
|
|
49
|
+
])) {
|
|
50
|
+
return "name";
|
|
51
|
+
}
|
|
52
|
+
// else if (isAny(businessObject, [`${MODELER_PREFIX}:Arc`])) {
|
|
53
|
+
// return 'inscription';
|
|
54
|
+
// }
|
|
55
|
+
}
|
|
56
|
+
export function setLabel(element, text) {
|
|
57
|
+
const businessObject = element.businessObject;
|
|
58
|
+
const attr = getLabelAttribute(element);
|
|
59
|
+
if (attr) {
|
|
60
|
+
businessObject[attr] = text;
|
|
61
|
+
}
|
|
62
|
+
return element;
|
|
63
|
+
}
|
|
64
|
+
export function isLabel(element) {
|
|
65
|
+
return element && !!element.labelTarget;
|
|
66
|
+
}
|
|
67
|
+
// Returns true if there exists an external label for the given element
|
|
68
|
+
export function existsExternalLabel(element) {
|
|
69
|
+
return isLabel(element.label);
|
|
70
|
+
}
|
|
71
|
+
// Returns true if labels for that type of element are external
|
|
72
|
+
// CustomModelerTodo: Modify this function to return true for elements that
|
|
73
|
+
// require external labels.
|
|
74
|
+
export function requiresExternalLabel(element) {
|
|
75
|
+
const businessObject = getBusinessObject(element);
|
|
76
|
+
return isAny(businessObject, [
|
|
77
|
+
`${MODELER_PREFIX}:Place`,
|
|
78
|
+
`${MODELER_PREFIX}:Arc`,
|
|
79
|
+
]);
|
|
80
|
+
}
|
|
81
|
+
export const DEFAULT_LABEL_SIZE = {
|
|
82
|
+
width: 90,
|
|
83
|
+
height: 20,
|
|
84
|
+
};
|
|
85
|
+
const FLOW_LABEL_INDENT = 15;
|
|
86
|
+
export function getExternalLabelMid(element) {
|
|
87
|
+
if (element.waypoints) {
|
|
88
|
+
return getFlowLabelPosition(element.waypoints);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
return {
|
|
92
|
+
x: element.x + element.width / 2,
|
|
93
|
+
y: element.y + element.height + DEFAULT_LABEL_SIZE.height / 2,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export function getExternalLabelBounds(businessObject, element) {
|
|
98
|
+
let mid;
|
|
99
|
+
let size;
|
|
100
|
+
let bounds;
|
|
101
|
+
const di = businessObject.di;
|
|
102
|
+
const label = di["label"];
|
|
103
|
+
if (label && label.bounds) {
|
|
104
|
+
bounds = label.bounds;
|
|
105
|
+
size = {
|
|
106
|
+
width: Math.max(DEFAULT_LABEL_SIZE.width, bounds.width),
|
|
107
|
+
height: bounds.height,
|
|
108
|
+
};
|
|
109
|
+
mid = {
|
|
110
|
+
x: bounds.x + bounds.width / 2,
|
|
111
|
+
y: bounds.y + bounds.height / 2,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
mid = getExternalLabelMid(element);
|
|
116
|
+
size = DEFAULT_LABEL_SIZE;
|
|
117
|
+
}
|
|
118
|
+
return assign({
|
|
119
|
+
x: mid.x - size.width / 2,
|
|
120
|
+
y: mid.y - size.height / 2,
|
|
121
|
+
}, size);
|
|
122
|
+
}
|
|
123
|
+
function getFlowLabelPosition(waypoints) {
|
|
124
|
+
// get the waypoints mid
|
|
125
|
+
const mid = waypoints.length / 2 - 1;
|
|
126
|
+
const first = waypoints[Math.floor(mid)];
|
|
127
|
+
const second = waypoints[Math.ceil(mid + 0.01)];
|
|
128
|
+
// get position
|
|
129
|
+
const position = getWaypointsMid(waypoints);
|
|
130
|
+
// calculate angle
|
|
131
|
+
const angle = Math.atan((second.y - first.y) / (second.x - first.x));
|
|
132
|
+
let x = position.x;
|
|
133
|
+
let y = position.y;
|
|
134
|
+
if (Math.abs(angle) < Math.PI / 2) {
|
|
135
|
+
y -= FLOW_LABEL_INDENT;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
x += FLOW_LABEL_INDENT;
|
|
139
|
+
}
|
|
140
|
+
return { x: x, y: y };
|
|
141
|
+
}
|
|
142
|
+
function getWaypointsMid(waypoints) {
|
|
143
|
+
const mid = waypoints.length / 2 - 1;
|
|
144
|
+
const first = waypoints[Math.floor(mid)];
|
|
145
|
+
const second = waypoints[Math.ceil(mid + 0.01)];
|
|
146
|
+
return {
|
|
147
|
+
x: first.x + (second.x - first.x) / 2,
|
|
148
|
+
y: first.y + (second.y - first.y) / 2,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=LabelUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabelUtil.js","sourceRoot":"","sources":["../../../lib/modeling/LabelUtil.js"],"names":[],"mappings":"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"}
|