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 @@ + + + + + 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 @@