diff --git a/package.json b/package.json
index b0406a525..8464c9cb4 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
"check-peer-deps": "npm ls --depth=0",
"posttest": "npm run report:combined",
"test-unit": "JEST_JUNIT_OUTPUT_DIR=test_summary_reports/jest/ vue-cli-service test:unit --ci --runInBand --reporters=default --reporters=jest-junit",
- "test-ci": "TZ=UTC vue-cli-service test:e2e --spec tests/e2e/specs/Modeler.spec.js --mode test --headless --browser chrome --reporter mocha-junit-reporter --reporter-options mochaFile=test_summary_reports/mocha/test-results.xml",
+ "test-ci": "TZ=UTC vue-cli-service test:e2e --mode test --headless --browser chrome -- --reporter mocha-junit-reporter --reporter-options mochaFile=reports/mocha/test-results.xml",
"mkdir:reports": "mkdir reports || true",
"precopy:reports": "npm run mkdir:reports",
"copy:reports": "cp cypress-coverage/coverage-final.json reports/from-cypress.json && cp jest-coverage/coverage-final.json reports/from-jest.json",
diff --git a/src/components/inspectors/InspectorPanel.vue b/src/components/inspectors/InspectorPanel.vue
index 202094e24..46c172395 100644
--- a/src/components/inspectors/InspectorPanel.vue
+++ b/src/components/inspectors/InspectorPanel.vue
@@ -175,13 +175,15 @@ export default {
const type = this.highlightedNode && this.highlightedNode.type;
- this.data = type && this.nodeRegistry[type].inspectorData
- ? this.nodeRegistry[type].inspectorData(this.highlightedNode)
- : Object.entries(this.highlightedNode.definition).reduce((data, [key, value]) => {
- data[key] = value;
+ const defaultDataTransform = (node) => Object.entries(node.definition).reduce((data, [key, value]) => {
+ data[key] = value;
+
+ return data;
+ }, {});
- return data;
- }, {});
+ this.data = type && this.nodeRegistry[type].inspectorData
+ ? this.nodeRegistry[type].inspectorData(this.highlightedNode, defaultDataTransform)
+ : defaultDataTransform(this.highlightedNode);
},
isSequenceFlow(type) {
return type === sequenceFlowId;
@@ -193,7 +195,7 @@ export default {
return definition.targetRef.$type === 'bpmn:CallActivity';
},
customInspectorHandler(value) {
- return this.nodeRegistry[this.highlightedNode.type].inspectorHandler(value, this.highlightedNode, this.setNodeProp, this.moddle, this.definitions);
+ return this.nodeRegistry[this.highlightedNode.type].inspectorHandler(value, this.highlightedNode, this.setNodeProp, this.moddle, this.definitions, this.defaultInspectorHandler);
},
processNodeInspectorHandler(value) {
return this.defaultInspectorHandler(omit(value, ['artifacts', 'flowElements', 'laneSets']));
diff --git a/src/components/inspectors/MarkerFlags.vue b/src/components/inspectors/MarkerFlags.vue
new file mode 100644
index 000000000..aba606892
--- /dev/null
+++ b/src/components/inspectors/MarkerFlags.vue
@@ -0,0 +1,48 @@
+
+
+
+ No loop characteristics
+ Parallel multi-instance
+ Sequential multi-instance
+ Loop
+
+
+ For Compensation
+
+
+
+
+
+
+
diff --git a/src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js b/src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js
new file mode 100644
index 000000000..2901f7f64
--- /dev/null
+++ b/src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js
@@ -0,0 +1,35 @@
+import idConfigSettings from './idConfigSettings';
+import DocumentationFormTextArea from './DocumentationFormTextArea';
+import MarkerFlags from '@/components/inspectors/MarkerFlags';
+
+export default {
+ component: 'FormAccordion',
+ container: true,
+ config: {
+ initiallyOpen: false,
+ label: 'Advanced',
+ icon: 'cogs',
+ name: 'advanced-accordion',
+ },
+ items: [
+ {
+ component: 'FormInput',
+ config: idConfigSettings,
+ },
+ {
+ component: DocumentationFormTextArea,
+ config: {
+ label: 'Description',
+ name: 'documentation',
+ },
+ },
+ {
+ component: MarkerFlags,
+ name: 'taskMarkers',
+ config: {
+ label: 'Marker Flags',
+ name: 'markerFlags',
+ },
+ },
+ ],
+};
diff --git a/src/components/inspectors/process.js b/src/components/inspectors/process.js
index 6aa3434dd..4f70cd3d4 100644
--- a/src/components/inspectors/process.js
+++ b/src/components/inspectors/process.js
@@ -16,7 +16,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-process',
},
items: [
{
diff --git a/src/components/modeler/Modeler.vue b/src/components/modeler/Modeler.vue
index 5b5b67121..6974b1ad5 100644
--- a/src/components/modeler/Modeler.vue
+++ b/src/components/modeler/Modeler.vue
@@ -125,7 +125,8 @@ import { id as laneId } from '../nodes/poolLane';
import { id as sequenceFlowId } from '../nodes/sequenceFlow';
import { id as associationId } from '../nodes/association';
import { id as messageFlowId } from '../nodes/messageFlow';
-import { id as dataAssociationFlowId } from '../nodes/dataOutputAssociation';
+import { id as dataOutputAssociationFlowId } from '../nodes/dataOutputAssociation/config';
+import { id as dataInputAssociationFlowId } from '../nodes/dataInputAssociation/config';
import PaperManager from '../paperManager';
import registerInspectorExtension from '@/components/InspectorExtensionManager';
@@ -431,7 +432,7 @@ export default {
types.forEach(bpmnType => {
if (!this.parsers[bpmnType]) {
- this.parsers[bpmnType] = { custom: [], implementation: [], default: [] };
+ this.parsers[bpmnType] = { custom: [], implementation: [], default: []};
}
if (customParser) {
@@ -746,7 +747,7 @@ export default {
store.commit('addNode', node);
this.poolTarget = null;
- if ([sequenceFlowId, laneId, associationId, messageFlowId, dataAssociationFlowId].includes(node.type)) {
+ if ([sequenceFlowId, laneId, associationId, messageFlowId, dataOutputAssociationFlowId, dataInputAssociationFlowId].includes(node.type)) {
return;
}
diff --git a/src/components/nodes/association/index.js b/src/components/nodes/association/index.js
index cbb94c004..e6809dc28 100644
--- a/src/components/nodes/association/index.js
+++ b/src/components/nodes/association/index.js
@@ -25,7 +25,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-association',
},
items: [
{
diff --git a/src/components/nodes/baseStartEvent/index.js b/src/components/nodes/baseStartEvent/index.js
index 081b3d9fa..f6953ca23 100644
--- a/src/components/nodes/baseStartEvent/index.js
+++ b/src/components/nodes/baseStartEvent/index.js
@@ -34,7 +34,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-start-event',
},
items: [
{
diff --git a/src/components/nodes/boundaryEvent/index.js b/src/components/nodes/boundaryEvent/index.js
index 7378edf8b..56ffce63b 100644
--- a/src/components/nodes/boundaryEvent/index.js
+++ b/src/components/nodes/boundaryEvent/index.js
@@ -36,7 +36,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-boundary-event',
},
items: [
{
diff --git a/src/components/nodes/boundaryTimerEvent/index.js b/src/components/nodes/boundaryTimerEvent/index.js
index 69deefc80..72b47bd25 100644
--- a/src/components/nodes/boundaryTimerEvent/index.js
+++ b/src/components/nodes/boundaryTimerEvent/index.js
@@ -83,7 +83,7 @@ export default merge(cloneDeep(boundaryEventConfig), {
config: {
label: 'Timing Control',
icon: 'clock',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-boundary-timer-event',
},
items: [
{
diff --git a/src/components/nodes/dataInputAssociation/index.js b/src/components/nodes/dataInputAssociation/index.js
index fe9e7984e..4b71220d4 100644
--- a/src/components/nodes/dataInputAssociation/index.js
+++ b/src/components/nodes/dataInputAssociation/index.js
@@ -17,7 +17,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-data-input-association',
},
items: [
{
diff --git a/src/components/nodes/dataObject/index.js b/src/components/nodes/dataObject/index.js
index 1586291cf..c139fefaf 100644
--- a/src/components/nodes/dataObject/index.js
+++ b/src/components/nodes/dataObject/index.js
@@ -40,7 +40,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-data-object',
},
items: [
{
diff --git a/src/components/nodes/dataOutputAssociation/index.js b/src/components/nodes/dataOutputAssociation/index.js
index ee30cce71..5538d5f53 100644
--- a/src/components/nodes/dataOutputAssociation/index.js
+++ b/src/components/nodes/dataOutputAssociation/index.js
@@ -17,7 +17,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-data-output-association',
},
items: [
{
diff --git a/src/components/nodes/dataStore/index.js b/src/components/nodes/dataStore/index.js
index 0bc9c5513..2eb77f79a 100644
--- a/src/components/nodes/dataStore/index.js
+++ b/src/components/nodes/dataStore/index.js
@@ -40,7 +40,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-data-store',
},
items: [
{
diff --git a/src/components/nodes/endEvent/index.js b/src/components/nodes/endEvent/index.js
index 1793c967a..f99eae310 100644
--- a/src/components/nodes/endEvent/index.js
+++ b/src/components/nodes/endEvent/index.js
@@ -40,7 +40,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-end-event',
},
items: [
{
diff --git a/src/components/nodes/eventBasedGateway/index.js b/src/components/nodes/eventBasedGateway/index.js
index 0cac59674..7a6b7f2f2 100644
--- a/src/components/nodes/eventBasedGateway/index.js
+++ b/src/components/nodes/eventBasedGateway/index.js
@@ -35,7 +35,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-event-based-gateway',
},
items: [
{
diff --git a/src/components/nodes/exclusiveGateway/index.js b/src/components/nodes/exclusiveGateway/index.js
index 4c539b694..de9ef65b4 100644
--- a/src/components/nodes/exclusiveGateway/index.js
+++ b/src/components/nodes/exclusiveGateway/index.js
@@ -38,7 +38,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-exlcusive-gateway',
},
items: [
{
diff --git a/src/components/nodes/gateway/index.js b/src/components/nodes/gateway/index.js
index 93057298d..a4e428a7e 100644
--- a/src/components/nodes/gateway/index.js
+++ b/src/components/nodes/gateway/index.js
@@ -33,7 +33,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-gateway',
},
items: [
{
diff --git a/src/components/nodes/inclusiveGateway/index.js b/src/components/nodes/inclusiveGateway/index.js
index 07b074053..a800ae91b 100644
--- a/src/components/nodes/inclusiveGateway/index.js
+++ b/src/components/nodes/inclusiveGateway/index.js
@@ -39,7 +39,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-inclusive-gateway-config',
},
items: [
{
@@ -55,7 +55,7 @@ export default {
initiallyOpen: false,
label: 'Advanced',
icon: 'cogs',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-inclusive-gateway-advanced',
},
items: [
{
diff --git a/src/components/nodes/intermediateEvent/index.js b/src/components/nodes/intermediateEvent/index.js
index faeaf3f0b..428805325 100644
--- a/src/components/nodes/intermediateEvent/index.js
+++ b/src/components/nodes/intermediateEvent/index.js
@@ -35,7 +35,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-intermediate-gateway-config',
},
items: [
{
diff --git a/src/components/nodes/intermediateMessageEvent/index.js b/src/components/nodes/intermediateMessageEvent/index.js
index 6153134d1..91c957f43 100644
--- a/src/components/nodes/intermediateMessageEvent/index.js
+++ b/src/components/nodes/intermediateMessageEvent/index.js
@@ -38,7 +38,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-intermediate-message-event',
},
items: [
{
diff --git a/src/components/nodes/intermediateTimerEvent/index.js b/src/components/nodes/intermediateTimerEvent/index.js
index d61aed979..7773c8756 100644
--- a/src/components/nodes/intermediateTimerEvent/index.js
+++ b/src/components/nodes/intermediateTimerEvent/index.js
@@ -92,7 +92,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-intermediate-timer-config',
},
items: [
{
@@ -107,7 +107,7 @@ export default {
config: {
label: 'Timing Control',
icon: 'clock',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-intermediate-timer-event-timing-control',
},
items: [
{
diff --git a/src/components/nodes/manualTask/index.js b/src/components/nodes/manualTask/index.js
index c66dc230a..616e1c143 100644
--- a/src/components/nodes/manualTask/index.js
+++ b/src/components/nodes/manualTask/index.js
@@ -38,7 +38,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-manual-task',
},
items: [
{
diff --git a/src/components/nodes/messageFlow/index.js b/src/components/nodes/messageFlow/index.js
index 8a4267a8d..09df3c866 100644
--- a/src/components/nodes/messageFlow/index.js
+++ b/src/components/nodes/messageFlow/index.js
@@ -25,7 +25,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-message-flow',
},
items: [
{
diff --git a/src/components/nodes/parallelGateway/index.js b/src/components/nodes/parallelGateway/index.js
index 71cf06f6c..d957c2981 100644
--- a/src/components/nodes/parallelGateway/index.js
+++ b/src/components/nodes/parallelGateway/index.js
@@ -36,7 +36,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-parallel-gateway-config',
},
items: [
{
@@ -52,7 +52,7 @@ export default {
initiallyOpen: false,
label: 'Advanced',
icon: 'cogs',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-parallel-gateway-direction',
},
items: [
{
diff --git a/src/components/nodes/pool/index.js b/src/components/nodes/pool/index.js
index f3131be7c..38bf33182 100644
--- a/src/components/nodes/pool/index.js
+++ b/src/components/nodes/pool/index.js
@@ -36,7 +36,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-pool',
},
items: [
{
diff --git a/src/components/nodes/poolLane/index.js b/src/components/nodes/poolLane/index.js
index 512684edd..a16a86b74 100644
--- a/src/components/nodes/poolLane/index.js
+++ b/src/components/nodes/poolLane/index.js
@@ -34,7 +34,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-pool-lane',
},
items: [
{
diff --git a/src/components/nodes/scriptTask/index.js b/src/components/nodes/scriptTask/index.js
index 944cc813b..6d97e6ca8 100644
--- a/src/components/nodes/scriptTask/index.js
+++ b/src/components/nodes/scriptTask/index.js
@@ -38,7 +38,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-script-task',
},
items: [
{
diff --git a/src/components/nodes/sequenceFlow/index.js b/src/components/nodes/sequenceFlow/index.js
index 8be8d37e2..107fccc41 100644
--- a/src/components/nodes/sequenceFlow/index.js
+++ b/src/components/nodes/sequenceFlow/index.js
@@ -65,7 +65,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-sequence-flow',
},
items: [
{
diff --git a/src/components/nodes/serviceTask/index.js b/src/components/nodes/serviceTask/index.js
index b52d1dc70..226d3e0ec 100644
--- a/src/components/nodes/serviceTask/index.js
+++ b/src/components/nodes/serviceTask/index.js
@@ -24,7 +24,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-service-task',
},
items: [
{
diff --git a/src/components/nodes/startTimerEvent/index.js b/src/components/nodes/startTimerEvent/index.js
index e83364003..de8bf645d 100644
--- a/src/components/nodes/startTimerEvent/index.js
+++ b/src/components/nodes/startTimerEvent/index.js
@@ -66,7 +66,7 @@ export default merge(cloneDeep(baseStartEventConfig), {
config: {
label: 'Timing Control',
icon: 'clock',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-start-timer-timing-control',
},
items: [
{
diff --git a/src/components/nodes/subProcess/index.js b/src/components/nodes/subProcess/index.js
index 571c71954..33da56de9 100644
--- a/src/components/nodes/subProcess/index.js
+++ b/src/components/nodes/subProcess/index.js
@@ -57,7 +57,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-subprocess',
},
items: [
{
diff --git a/src/components/nodes/task/index.js b/src/components/nodes/task/index.js
index 3c3dc5d0f..cf4be7c63 100644
--- a/src/components/nodes/task/index.js
+++ b/src/components/nodes/task/index.js
@@ -1,8 +1,9 @@
import component from './task.vue';
import nameConfigSettings from '@/components/inspectors/nameConfigSettings';
import { taskHeight, taskWidth } from './taskConfig';
-import advancedAccordionConfig from '@/components/inspectors/advancedAccordionConfig';
import defaultNames from '@/components/nodes/task/defaultNames';
+import advancedAccordionConfigWithMarkerFlags from '@/components/inspectors/advancedAccordionConfigWithMarkerFlags';
+import omit from 'lodash/omit';
export const id = 'processmaker-modeler-task';
@@ -29,6 +30,22 @@ export default {
}),
});
},
+ inspectorHandler(value, node, setNodeProp, moddle, definitions, defaultInspectorHandler) {
+ handleMarkerFlagsValue(value.markerFlags, node, setNodeProp, moddle);
+ defaultInspectorHandler(omit(value, 'markerFlags'));
+ },
+ inspectorData(node, defaultDataTransform) {
+ const inspectorData = defaultDataTransform(node);
+
+ inspectorData.markerFlags = {
+ isForCompensation: inspectorData.isForCompensation,
+ loopCharacteristics: getLoopCharacteristicsRadioValue(inspectorData.loopCharacteristics),
+ };
+ delete inspectorData.isForCompensation;
+ delete inspectorData.loopCharacteristics;
+
+ return inspectorData;
+ },
inspectorConfig: [
{
name: defaultNames[id],
@@ -40,7 +57,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-task',
},
items: [
{
@@ -49,8 +66,67 @@ export default {
},
],
},
- advancedAccordionConfig,
+ advancedAccordionConfigWithMarkerFlags,
],
},
],
};
+
+function handleMarkerFlagsValue(markerFlags, node, setNodeProp, moddle) {
+ if (!markerFlags) {
+ return;
+ }
+
+ if (markerFlags.loopCharacteristics) {
+ if (markerFlags.loopCharacteristics === 'no_loop') {
+ setNodeProp(node, 'loopCharacteristics', null);
+ }
+
+ const currentLoopCharacteristics = node.definition.get('loopCharacteristics') || {};
+
+ if (markerFlags.loopCharacteristics === 'loop' && currentLoopCharacteristics.$type !== 'bpmn:StandardLoopCharacteristics') {
+ setNodeProp(node, 'loopCharacteristics', moddle.create('bpmn:StandardLoopCharacteristics'));
+ }
+
+ if (markerFlags.loopCharacteristics === 'parallel_mi' ) {
+ if (currentLoopCharacteristics.$type === 'bpmn:MultiInstanceLoopCharacteristics' && !currentLoopCharacteristics.isSequential){
+ return;
+ }
+ setNodeProp(node, 'loopCharacteristics', moddle.create('bpmn:MultiInstanceLoopCharacteristics'));
+ }
+
+ if (markerFlags.loopCharacteristics === 'sequential_mi') {
+ if (currentLoopCharacteristics.$type === 'bpmn:MultiInstanceLoopCharacteristics' && currentLoopCharacteristics.isSequential){
+ return;
+ }
+ setNodeProp(node, 'loopCharacteristics', moddle.create('bpmn:MultiInstanceLoopCharacteristics', { isSequential: true }));
+ }
+ }
+
+ const currentIsForCompensationValue = node.definition.get('isForCompensation');
+ const newIsForCompensationValue = markerFlags.isForCompensation;
+
+ if (newIsForCompensationValue != null && newIsForCompensationValue !== currentIsForCompensationValue) {
+ setNodeProp(node, 'isForCompensation', newIsForCompensationValue);
+ }
+}
+
+function getLoopCharacteristicsRadioValue(loopCharacteristics) {
+ if (!loopCharacteristics) {
+ return 'no_loop';
+ }
+
+ if (loopCharacteristics.$type === 'bpmn:StandardLoopCharacteristics') {
+ return 'loop';
+ }
+
+ if (loopCharacteristics.$type === 'bpmn:MultiInstanceLoopCharacteristics' && !loopCharacteristics.isSequential) {
+ return 'parallel_mi';
+ }
+
+ if (loopCharacteristics.$type === 'bpmn:MultiInstanceLoopCharacteristics' && loopCharacteristics.isSequential) {
+ return 'sequential_mi';
+ }
+
+ return 'no_loop';
+}
diff --git a/src/components/nodes/task/setupCompensationMarker.js b/src/components/nodes/task/setupCompensationMarker.js
index 07feb9e16..8c7d9f7a3 100644
--- a/src/components/nodes/task/setupCompensationMarker.js
+++ b/src/components/nodes/task/setupCompensationMarker.js
@@ -1,7 +1,10 @@
import compensationIcon from '@/assets/compensation.svg';
-export default function setupCompensationMarker(nodeDefinition, markers, $set) {
- if (nodeDefinition.isForCompensation) {
- $set(markers.bottomCenter, 'compensation', compensationIcon);
+export default function setupCompensationMarker(nodeDefinition, markers, $set, $delete) {
+ if (!nodeDefinition.isForCompensation) {
+ $delete(markers.bottomCenter, 'compensation');
+ return;
}
+
+ $set(markers.bottomCenter, 'compensation', compensationIcon);
}
diff --git a/src/components/nodes/task/setupMultiInstanceMarkers.js b/src/components/nodes/task/setupMultiInstanceMarkers.js
index 82bc0b66d..8c7c11a7c 100644
--- a/src/components/nodes/task/setupMultiInstanceMarkers.js
+++ b/src/components/nodes/task/setupMultiInstanceMarkers.js
@@ -5,7 +5,7 @@ import loopIcon from '@/assets/loop.svg';
const standardLoop = 'bpmn:StandardLoopCharacteristics';
const multiInstanceLoop = 'bpmn:MultiInstanceLoopCharacteristics';
-export default function setupMultiInstanceMarkers(nodeDefinition, markers, $set) {
+export default function setupMultiInstanceMarkers(nodeDefinition, markers, $set, $delete) {
const loopCharacteristics = nodeDefinition.get('loopCharacteristics');
const handledLoopTypes = [
@@ -14,6 +14,7 @@ export default function setupMultiInstanceMarkers(nodeDefinition, markers, $set)
];
if (!loopCharacteristics || !handledLoopTypes.includes(loopCharacteristics.$type)) {
+ $delete(markers.bottomCenter, 'loopCharacteristics');
return;
}
diff --git a/src/components/nodes/task/task.vue b/src/components/nodes/task/task.vue
index 61516f72e..6e588d454 100644
--- a/src/components/nodes/task/task.vue
+++ b/src/components/nodes/task/task.vue
@@ -29,7 +29,7 @@ import CrownConfig from '@/components/crown/crownConfig/crownConfig';
import { gridSize } from '@/graph';
import defaultNames from '@/components/nodes/task/defaultNames';
import boundaryEventDropdownData from '@/components/nodes/boundaryEvent/boundaryEventDropdownData';
-import setupMultiInstanceMarkers from '@/components/nodes/task/setupMultiInstanceMarkers';
+import setupLoopCharacteristicsMarkers from '@/components/nodes/task/setupMultiInstanceMarkers';
import setupCompensationMarker from '@/components/nodes/task/setupCompensationMarker';
import { getRectangleAnchorPoint } from '@/portsUtils';
@@ -103,6 +103,12 @@ export default {
this.recalcMarkersAlignment();
}
},
+ 'node.definition.isForCompensation'() {
+ setupCompensationMarker(this.node.definition, this.markers, this.$set, this.$delete);
+ },
+ 'node.definition.loopCharacteristics'() {
+ setupLoopCharacteristicsMarkers(this.node.definition, this.markers, this.$set, this.$delete);
+ },
},
methods: {
getElementsUnderArea(element) {
@@ -127,15 +133,14 @@ export default {
middleIsOddNumber(value) {
return Math.abs((value / 2) % 2) === 1;
},
-
},
mounted() {
this.shape = new TaskShape();
let bounds = this.node.diagram.bounds;
this.shape.position(bounds.x, bounds.y);
this.shape.resize(bounds.width, bounds.height);
- setupCompensationMarker(this.node.definition, this.markers, this.$set);
- setupMultiInstanceMarkers(this.node.definition, this.markers, this.$set);
+ setupCompensationMarker(this.node.definition, this.markers, this.$set, this.$delete);
+ setupLoopCharacteristicsMarkers(this.node.definition, this.markers, this.$set, this.$delete);
this.shape.attr({
body: {
rx: 8,
diff --git a/src/components/nodes/textAnnotation/index.js b/src/components/nodes/textAnnotation/index.js
index abb7246a0..3e0875dbe 100644
--- a/src/components/nodes/textAnnotation/index.js
+++ b/src/components/nodes/textAnnotation/index.js
@@ -51,7 +51,7 @@ export default {
initiallyOpen: true,
label: 'Configuration',
icon: 'cog',
- name: 'inspector-accordion',
+ name: 'inspector-accordion-text-annotation',
},
items: [
{
diff --git a/src/components/validationStatus/ValidationStatus.vue b/src/components/validationStatus/ValidationStatus.vue
index c3d268b1e..06c2adc5c 100644
--- a/src/components/validationStatus/ValidationStatus.vue
+++ b/src/components/validationStatus/ValidationStatus.vue
@@ -15,7 +15,7 @@
-