From 34628e7a20c923000f13e06dd81ec877af5fa307 Mon Sep 17 00:00:00 2001 From: vehikl-jacare Date: Fri, 27 Nov 2020 11:36:55 -0500 Subject: [PATCH 01/37] WIP add marker flags control to tasks Co-Authored-By: Justin Struk <10167488+JStruk@users.noreply.github.com> Co-Authored-By: Robert Komaromi Co-Authored-By: Gerrie Swart --- src/components/inspectors/MarkerFlags.vue | 15 ++++++++ .../advancedAccordionConfigWithMarkerFlags.js | 34 +++++++++++++++++++ src/components/nodes/task/index.js | 4 +-- 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 src/components/inspectors/MarkerFlags.vue create mode 100644 src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js diff --git a/src/components/inspectors/MarkerFlags.vue b/src/components/inspectors/MarkerFlags.vue new file mode 100644 index 000000000..da612a207 --- /dev/null +++ b/src/components/inspectors/MarkerFlags.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js b/src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js new file mode 100644 index 000000000..49feb56be --- /dev/null +++ b/src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js @@ -0,0 +1,34 @@ +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, + config: { + label: 'Marker Flags', + name: 'markerFlags', + }, + }, + ], +}; diff --git a/src/components/nodes/task/index.js b/src/components/nodes/task/index.js index 3c3dc5d0f..c195e710b 100644 --- a/src/components/nodes/task/index.js +++ b/src/components/nodes/task/index.js @@ -1,8 +1,8 @@ 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'; export const id = 'processmaker-modeler-task'; @@ -49,7 +49,7 @@ export default { }, ], }, - advancedAccordionConfig, + advancedAccordionConfigWithMarkerFlags, ], }, ], From 62d373c41b7796b1255a620aaf7952c2ec0abad8 Mon Sep 17 00:00:00 2001 From: vehikl-jacare Date: Mon, 30 Nov 2020 10:05:36 -0500 Subject: [PATCH 02/37] WIP: add task marker options in advanced inspector Co-Authored-By: Justin Struk <10167488+JStruk@users.noreply.github.com> Co-Authored-By: Robert Komaromi Co-Authored-By: Gerrie Swart --- src/components/inspectors/InspectorPanel.vue | 2 +- src/components/inspectors/MarkerFlags.vue | 25 ++++++++++++++++++- .../advancedAccordionConfigWithMarkerFlags.js | 1 + src/components/nodes/task/index.js | 18 +++++++++++++ src/components/nodes/task/task.vue | 12 +++++++++ 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/components/inspectors/InspectorPanel.vue b/src/components/inspectors/InspectorPanel.vue index 202094e24..a42c69537 100644 --- a/src/components/inspectors/InspectorPanel.vue +++ b/src/components/inspectors/InspectorPanel.vue @@ -193,7 +193,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 index da612a207..cd3ac2173 100644 --- a/src/components/inspectors/MarkerFlags.vue +++ b/src/components/inspectors/MarkerFlags.vue @@ -1,12 +1,35 @@ diff --git a/src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js b/src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js index 49feb56be..2901f7f64 100644 --- a/src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js +++ b/src/components/inspectors/advancedAccordionConfigWithMarkerFlags.js @@ -25,6 +25,7 @@ export default { }, { component: MarkerFlags, + name: 'taskMarkers', config: { label: 'Marker Flags', name: 'markerFlags', diff --git a/src/components/nodes/task/index.js b/src/components/nodes/task/index.js index c195e710b..938cb34fe 100644 --- a/src/components/nodes/task/index.js +++ b/src/components/nodes/task/index.js @@ -3,6 +3,7 @@ import nameConfigSettings from '@/components/inspectors/nameConfigSettings'; import { taskHeight, taskWidth } from './taskConfig'; import defaultNames from '@/components/nodes/task/defaultNames'; import advancedAccordionConfigWithMarkerFlags from '@/components/inspectors/advancedAccordionConfigWithMarkerFlags'; +import omit from 'lodash/omit'; export const id = 'processmaker-modeler-task'; @@ -19,6 +20,7 @@ export default { return moddle.create('bpmn:Task', { name: $t(defaultNames[id]), assignment: 'requester', + isForCompensation: false, }); }, diagram(moddle) { @@ -29,6 +31,22 @@ export default { }), }); }, + inspectorHandler(value, node, setNodeProp, moddle, definitions, defaultInspectorHandler) { + if (value.markerFlags) { + if (value.markerFlags.loopCharacteristics) { + //TODO: set the loop characteristics up + } + + const currentIsForCompensationValue = node.definition.get('isForCompensation'); + const newIsForCompensationValue = value.markerFlags.isForCompensation; + + if (newIsForCompensationValue != null && newIsForCompensationValue !== currentIsForCompensationValue) { + setNodeProp(node, 'isForCompensation', newIsForCompensationValue); + } + } + + defaultInspectorHandler(omit(value, 'markerFlags', 'isForCompensation')); + }, inspectorConfig: [ { name: defaultNames[id], diff --git a/src/components/nodes/task/task.vue b/src/components/nodes/task/task.vue index 13d605866..7672e4427 100644 --- a/src/components/nodes/task/task.vue +++ b/src/components/nodes/task/task.vue @@ -101,6 +101,18 @@ export default { this.recalcMarkersAlignment(); } }, + node: { + handler({definition}) { + if (definition.isForCompensation == null) { + return; + } + setupCompensationMarker(this.node.definition, this.markers, this.$set); + }, + deep: true, + }, + 'node.definition.loopCharacteristics'() { + setupMultiInstanceMarkers(this.node.definition, this.markers, this.$set); + }, }, methods: { getElementsUnderArea(element) { From 4efa251c866e7ee6beb901610dc284f50439fa4d Mon Sep 17 00:00:00 2001 From: vehikl-jacare Date: Mon, 30 Nov 2020 10:24:13 -0500 Subject: [PATCH 03/37] add custom data transform for task Co-Authored-By: Justin Struk <10167488+JStruk@users.noreply.github.com> Co-Authored-By: Robert Komaromi Co-Authored-By: Gerrie Swart --- src/components/inspectors/InspectorPanel.vue | 14 ++++++++------ src/components/nodes/task/index.js | 3 +++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/components/inspectors/InspectorPanel.vue b/src/components/inspectors/InspectorPanel.vue index a42c69537..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; diff --git a/src/components/nodes/task/index.js b/src/components/nodes/task/index.js index 938cb34fe..685f44520 100644 --- a/src/components/nodes/task/index.js +++ b/src/components/nodes/task/index.js @@ -47,6 +47,9 @@ export default { defaultInspectorHandler(omit(value, 'markerFlags', 'isForCompensation')); }, + inspectorData(node, defaultDataTransform) { + return defaultDataTransform(node); + }, inspectorConfig: [ { name: defaultNames[id], From 6f7044fce3229f59cddc4239384a680e66af53d6 Mon Sep 17 00:00:00 2001 From: vehikl-jacare Date: Mon, 30 Nov 2020 10:57:59 -0500 Subject: [PATCH 04/37] set some default values for markerFlags Co-Authored-By: Justin Struk <10167488+JStruk@users.noreply.github.com> Co-Authored-By: Robert Komaromi Co-Authored-By: Gerrie Swart --- src/components/inspectors/MarkerFlags.vue | 15 +++++++++++++-- src/components/nodes/task/index.js | 11 +++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/components/inspectors/MarkerFlags.vue b/src/components/inspectors/MarkerFlags.vue index cd3ac2173..f7e6cc602 100644 --- a/src/components/inspectors/MarkerFlags.vue +++ b/src/components/inspectors/MarkerFlags.vue @@ -15,11 +15,22 @@