diff --git a/ui/cypress/fixtures/doWhile/doWhileSwitch.json b/ui/cypress/fixtures/doWhile/doWhileSwitch.json
index 65de6e27fd..d19b33d6e8 100644
--- a/ui/cypress/fixtures/doWhile/doWhileSwitch.json
+++ b/ui/cypress/fixtures/doWhile/doWhileSwitch.json
@@ -1,401 +1,416 @@
{
- "createTime": 1660244521990,
- "status": "COMPLETED",
- "endTime": 1660244523050,
- "workflowId": "c56d02d5-cc01-4a82-a611-00a3f7f56305",
- "tasks": [
- {
- "taskType": "DO_WHILE",
- "status": "COMPLETED",
- "inputData": {
- "value": null
+ "ownerApp": "nq_mwi_conductor_ui_server",
+ "createTime": 1660252744369,
+ "status": "COMPLETED",
+ "endTime": 1660252745449,
+ "workflowId": "9aaf69a6-9c61-4460-93b5-0a657a084ba4",
+ "tasks": [
+ {
+ "taskType": "INLINE",
+ "status": "COMPLETED",
+ "inputData": {
+ "evaluatorType": "javascript",
+ "expression": "1",
+ "value": null
+ },
+ "referenceTaskName": "inline_task_outside",
+ "retryCount": 0,
+ "seq": 1,
+ "pollCount": 0,
+ "taskDefName": "inline_task_outside",
+ "scheduledTime": 1660252744439,
+ "startTime": 1660252744437,
+ "endTime": 1660252744504,
+ "updateTime": 1660252744446,
+ "startDelayInSeconds": 0,
+ "retried": false,
+ "executed": true,
+ "callbackFromWorker": true,
+ "responseTimeoutSeconds": 0,
+ "workflowInstanceId": "9aaf69a6-9c61-4460-93b5-0a657a084ba4",
+ "workflowType": "LoopTestWithSwitch",
+ "taskId": "07ae873e-5316-4e89-9c1e-a9cab711f1a2",
+ "callbackAfterSeconds": 0,
+ "outputData": {
+ "result": 1
+ },
+ "workflowTask": {
+ "name": "inline_task_outside",
+ "taskReferenceName": "inline_task_outside",
+ "inputParameters": {
+ "value": "${workflow.input.value}",
+ "evaluatorType": "javascript",
+ "expression": "1"
},
- "referenceTaskName": "LoopTask",
- "retryCount": 0,
- "seq": 1,
- "pollCount": 0,
- "taskDefName": "Loop Task",
- "scheduledTime": 1660244522071,
- "startTime": 1660244522070,
- "endTime": 1660244522935,
- "updateTime": 1660244522201,
- "startDelayInSeconds": 0,
- "retried": false,
- "executed": false,
- "callbackFromWorker": true,
- "responseTimeoutSeconds": 0,
- "workflowInstanceId": "c56d02d5-cc01-4a82-a611-00a3f7f56305",
- "workflowType": "LoopTestWithSwitch",
- "taskId": "426d651c-0c8c-498f-b328-10b0dc2d37d3",
- "callbackAfterSeconds": 0,
- "outputData": {
- "1": {
- "inline_task_1": {
- "result": {
- "result": "NODE_2"
- }
- },
- "Set_NODE_2": {},
- "switch_task": {
- "evaluationResult": [
- "NODE_2"
- ]
+ "type": "INLINE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false
+ },
+ "rateLimitPerFrequency": 0,
+ "rateLimitFrequencyInSeconds": 0,
+ "workflowPriority": 0,
+ "iteration": 0,
+ "subworkflowChanged": false,
+ "taskDefinition": null,
+ "queueWaitTime": -2,
+ "loopOverTask": false
+ },
+ {
+ "taskType": "DO_WHILE",
+ "status": "COMPLETED",
+ "inputData": {
+ "value": null
+ },
+ "referenceTaskName": "LoopTask",
+ "retryCount": 0,
+ "seq": 2,
+ "pollCount": 0,
+ "taskDefName": "Loop Task",
+ "scheduledTime": 1660252744620,
+ "startTime": 1660252744618,
+ "endTime": 1660252745337,
+ "updateTime": 1660252744808,
+ "startDelayInSeconds": 0,
+ "retried": false,
+ "executed": false,
+ "callbackFromWorker": true,
+ "responseTimeoutSeconds": 0,
+ "workflowInstanceId": "9aaf69a6-9c61-4460-93b5-0a657a084ba4",
+ "workflowType": "LoopTestWithSwitch",
+ "taskId": "790126b0-81e8-4286-ac65-d1f4c8eca271",
+ "callbackAfterSeconds": 0,
+ "outputData": {
+ "1": {
+ "inline_task": {
+ "result": {
+ "result": "NODE_2"
}
},
- "iteration": 1
+ "switch_task": {
+ "evaluationResult": ["null"]
+ }
},
- "workflowTask": {
- "name": "Loop Task",
- "taskReferenceName": "LoopTask",
- "inputParameters": {
- "value": "${workflow.input.value}"
+ "iteration": 1
+ },
+ "workflowTask": {
+ "name": "Loop Task",
+ "taskReferenceName": "LoopTask",
+ "inputParameters": {
+ "value": "${workflow.input.value}"
+ },
+ "type": "DO_WHILE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false,
+ "loopCondition": "false",
+ "loopOver": [
+ {
+ "name": "inline_task",
+ "taskReferenceName": "inline_task",
+ "inputParameters": {
+ "value": "${workflow.input.value}",
+ "evaluatorType": "javascript",
+ "expression": "function e() { if ($.value == 1){return {\"result\": 'NODE_1'}} else { return {\"result\": 'NODE_2'}}} e();"
+ },
+ "type": "INLINE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false
},
- "type": "DO_WHILE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false,
- "loopCondition": "false",
- "loopOver": [
+ {
+ "name": "switch_task",
+ "taskReferenceName": "switch_task",
+ "inputParameters": {
+ "switchCaseValue": "${inline_task_1.output.result.result}"
+ },
+ "type": "SWITCH",
+ "decisionCases": {
+ "NODE_1": [
+ {
+ "name": "Set_NODE_1",
+ "taskReferenceName": "Set_NODE_1",
+ "inputParameters": {
+ "node": "NODE_1"
+ },
+ "type": "SET_VARIABLE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false
+ }
+ ],
+ "NODE_2": [
+ {
+ "name": "Set_NODE_2",
+ "taskReferenceName": "Set_NODE_2",
+ "inputParameters": {
+ "node": "NODE_2"
+ },
+ "type": "SET_VARIABLE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false
+ }
+ ]
+ },
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false,
+ "evaluatorType": "value-param",
+ "expression": "switchCaseValue"
+ }
+ ]
+ },
+ "rateLimitPerFrequency": 0,
+ "rateLimitFrequencyInSeconds": 1,
+ "workflowPriority": 0,
+ "iteration": 1,
+ "subworkflowChanged": false,
+ "taskDefinition": null,
+ "queueWaitTime": -2,
+ "loopOverTask": true
+ },
+ {
+ "taskType": "INLINE",
+ "status": "COMPLETED",
+ "inputData": {
+ "evaluatorType": "javascript",
+ "expression": "function e() { if ($.value == 1){return {\"result\": 'NODE_1'}} else { return {\"result\": 'NODE_2'}}} e();",
+ "value": null
+ },
+ "referenceTaskName": "inline_task__1",
+ "retryCount": 0,
+ "seq": 3,
+ "pollCount": 0,
+ "taskDefName": "inline_task",
+ "scheduledTime": 1660252744696,
+ "startTime": 1660252744693,
+ "endTime": 1660252744931,
+ "updateTime": 1660252744702,
+ "startDelayInSeconds": 0,
+ "retried": false,
+ "executed": true,
+ "callbackFromWorker": true,
+ "responseTimeoutSeconds": 0,
+ "workflowInstanceId": "9aaf69a6-9c61-4460-93b5-0a657a084ba4",
+ "workflowType": "LoopTestWithSwitch",
+ "taskId": "27f7fbc4-325b-43c4-872f-37dc64c9dab0",
+ "callbackAfterSeconds": 0,
+ "outputData": {
+ "result": {
+ "result": "NODE_2"
+ }
+ },
+ "workflowTask": {
+ "name": "inline_task",
+ "taskReferenceName": "inline_task",
+ "inputParameters": {
+ "value": "${workflow.input.value}",
+ "evaluatorType": "javascript",
+ "expression": "function e() { if ($.value == 1){return {\"result\": 'NODE_1'}} else { return {\"result\": 'NODE_2'}}} e();"
+ },
+ "type": "INLINE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false
+ },
+ "rateLimitPerFrequency": 0,
+ "rateLimitFrequencyInSeconds": 0,
+ "workflowPriority": 0,
+ "iteration": 1,
+ "subworkflowChanged": false,
+ "taskDefinition": null,
+ "queueWaitTime": -3,
+ "loopOverTask": true
+ },
+ {
+ "taskType": "SWITCH",
+ "status": "COMPLETED",
+ "inputData": {
+ "case": "null"
+ },
+ "referenceTaskName": "switch_task__1",
+ "retryCount": 0,
+ "seq": 4,
+ "pollCount": 0,
+ "taskDefName": "SWITCH",
+ "scheduledTime": 1660252745049,
+ "startTime": 1660252745047,
+ "endTime": 1660252745163,
+ "updateTime": 1660252745056,
+ "startDelayInSeconds": 0,
+ "retried": false,
+ "executed": true,
+ "callbackFromWorker": true,
+ "responseTimeoutSeconds": 0,
+ "workflowInstanceId": "9aaf69a6-9c61-4460-93b5-0a657a084ba4",
+ "workflowType": "LoopTestWithSwitch",
+ "taskId": "2e2a0836-a2e6-4902-9e41-9bbc2c75e0ed",
+ "callbackAfterSeconds": 0,
+ "outputData": {
+ "evaluationResult": ["null"]
+ },
+ "workflowTask": {
+ "name": "switch_task",
+ "taskReferenceName": "switch_task",
+ "inputParameters": {
+ "switchCaseValue": "${inline_task_1.output.result.result}"
+ },
+ "type": "SWITCH",
+ "decisionCases": {
+ "NODE_1": [
{
- "name": "inline_task_1",
- "taskReferenceName": "inline_task_1",
+ "name": "Set_NODE_1",
+ "taskReferenceName": "Set_NODE_1",
"inputParameters": {
- "value": "${workflow.input.value}",
- "evaluatorType": "javascript",
- "expression": "function e() { if ($.value == 1){return {\"result\": 'NODE_1'}} else { return {\"result\": 'NODE_2'}}} e();"
+ "node": "NODE_1"
},
- "type": "INLINE",
+ "type": "SET_VARIABLE",
"startDelay": 0,
"optional": false,
"asyncComplete": false
- },
+ }
+ ],
+ "NODE_2": [
{
- "name": "switch_task",
- "taskReferenceName": "switch_task",
+ "name": "Set_NODE_2",
+ "taskReferenceName": "Set_NODE_2",
"inputParameters": {
- "switchCaseValue": "${inline_task_1.output.result.result}"
- },
- "type": "SWITCH",
- "decisionCases": {
- "NODE_1": [
- {
- "name": "Set_NODE_1",
- "taskReferenceName": "Set_NODE_1",
- "inputParameters": {
- "node": "NODE_1"
- },
- "type": "SET_VARIABLE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false
- }
- ],
- "NODE_2": [
- {
- "name": "Set_NODE_2",
- "taskReferenceName": "Set_NODE_2",
- "inputParameters": {
- "node": "NODE_2"
- },
- "type": "SET_VARIABLE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false
- }
- ]
+ "node": "NODE_2"
},
+ "type": "SET_VARIABLE",
"startDelay": 0,
"optional": false,
- "asyncComplete": false,
- "evaluatorType": "value-param",
- "expression": "switchCaseValue"
+ "asyncComplete": false
}
]
},
- "rateLimitPerFrequency": 0,
- "rateLimitFrequencyInSeconds": 1,
- "workflowPriority": 0,
- "iteration": 1,
- "subworkflowChanged": false,
- "taskDefinition": null,
- "queueWaitTime": -1,
- "loopOverTask": true
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false,
+ "evaluatorType": "value-param",
+ "expression": "switchCaseValue"
},
+ "rateLimitPerFrequency": 0,
+ "rateLimitFrequencyInSeconds": 0,
+ "workflowPriority": 0,
+ "iteration": 1,
+ "subworkflowChanged": false,
+ "taskDefinition": null,
+ "queueWaitTime": -2,
+ "loopOverTask": true
+ }
+ ],
+ "input": {},
+ "output": {
+ "evaluationResult": ["null"]
+ },
+ "taskToDomain": {},
+ "failedReferenceTaskNames": [],
+ "workflowDefinition": {
+ "createTime": 1660244498873,
+ "updateTime": 1660252731854,
+ "name": "LoopTestWithSwitch",
+ "description": "Loop Test With Switch WF",
+ "version": 3,
+ "tasks": [
{
- "taskType": "INLINE",
- "status": "COMPLETED",
- "inputData": {
+ "name": "inline_task_outside",
+ "taskReferenceName": "inline_task_outside",
+ "inputParameters": {
+ "value": "${workflow.input.value}",
"evaluatorType": "javascript",
- "expression": "function e() { if ($.value == 1){return {\"result\": 'NODE_1'}} else { return {\"result\": 'NODE_2'}}} e();",
- "value": null
- },
- "referenceTaskName": "inline_task_1__1",
- "retryCount": 0,
- "seq": 2,
- "pollCount": 0,
- "taskDefName": "inline_task_1",
- "scheduledTime": 1660244522137,
- "startTime": 1660244522134,
- "endTime": 1660244522361,
- "updateTime": 1660244522146,
- "startDelayInSeconds": 0,
- "retried": false,
- "executed": true,
- "callbackFromWorker": true,
- "responseTimeoutSeconds": 0,
- "workflowInstanceId": "c56d02d5-cc01-4a82-a611-00a3f7f56305",
- "workflowType": "LoopTestWithSwitch",
- "taskId": "19b0ecc8-37cb-4038-857a-8e9b885acdf0",
- "callbackAfterSeconds": 0,
- "outputData": {
- "result": {
- "result": "NODE_2"
- }
- },
- "workflowTask": {
- "name": "inline_task_1",
- "taskReferenceName": "inline_task_1",
- "inputParameters": {
- "value": "${workflow.input.value}",
- "evaluatorType": "javascript",
- "expression": "function e() { if ($.value == 1){return {\"result\": 'NODE_1'}} else { return {\"result\": 'NODE_2'}}} e();"
- },
- "type": "INLINE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false
- },
- "rateLimitPerFrequency": 0,
- "rateLimitFrequencyInSeconds": 0,
- "workflowPriority": 0,
- "iteration": 1,
- "subworkflowChanged": false,
- "taskDefinition": null,
- "queueWaitTime": -3,
- "loopOverTask": true
- },
- {
- "taskType": "SWITCH",
- "status": "COMPLETED",
- "inputData": {
- "hasChildren": "true",
- "case": "NODE_2"
- },
- "referenceTaskName": "switch_task__1",
- "retryCount": 0,
- "seq": 3,
- "pollCount": 0,
- "taskDefName": "SWITCH",
- "scheduledTime": 1660244522479,
- "startTime": 1660244522477,
- "endTime": 1660244522654,
- "updateTime": 1660244522489,
- "startDelayInSeconds": 0,
- "retried": false,
- "executed": true,
- "callbackFromWorker": true,
- "responseTimeoutSeconds": 0,
- "workflowInstanceId": "c56d02d5-cc01-4a82-a611-00a3f7f56305",
- "workflowType": "LoopTestWithSwitch",
- "taskId": "aabe9d65-0f11-4d95-b8f6-e4c21cb544cb",
- "callbackAfterSeconds": 0,
- "outputData": {
- "evaluationResult": [
- "NODE_2"
- ]
- },
- "workflowTask": {
- "name": "switch_task",
- "taskReferenceName": "switch_task",
- "inputParameters": {
- "switchCaseValue": "${inline_task_1.output.result.result}"
- },
- "type": "SWITCH",
- "decisionCases": {
- "NODE_1": [
- {
- "name": "Set_NODE_1",
- "taskReferenceName": "Set_NODE_1",
- "inputParameters": {
- "node": "NODE_1"
- },
- "type": "SET_VARIABLE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false
- }
- ],
- "NODE_2": [
- {
- "name": "Set_NODE_2",
- "taskReferenceName": "Set_NODE_2",
- "inputParameters": {
- "node": "NODE_2"
- },
- "type": "SET_VARIABLE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false
- }
- ]
- },
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false,
- "evaluatorType": "value-param",
- "expression": "switchCaseValue"
+ "expression": "1"
},
- "rateLimitPerFrequency": 0,
- "rateLimitFrequencyInSeconds": 0,
- "workflowPriority": 0,
- "iteration": 1,
- "subworkflowChanged": false,
- "taskDefinition": null,
- "queueWaitTime": -2,
- "loopOverTask": true
+ "type": "INLINE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false
},
{
- "taskType": "SET_VARIABLE",
- "status": "COMPLETED",
- "inputData": {
- "node": "NODE_2"
+ "name": "Loop Task",
+ "taskReferenceName": "LoopTask",
+ "inputParameters": {
+ "value": "${workflow.input.value}"
},
- "referenceTaskName": "Set_NODE_2__1",
- "retryCount": 0,
- "seq": 4,
- "pollCount": 0,
- "taskDefName": "Set_NODE_2",
- "scheduledTime": 1660244522482,
- "startTime": 1660244522477,
- "endTime": 1660244522709,
- "updateTime": 1660244522542,
- "startDelayInSeconds": 0,
- "retried": false,
- "executed": true,
- "callbackFromWorker": true,
- "responseTimeoutSeconds": 0,
- "workflowInstanceId": "c56d02d5-cc01-4a82-a611-00a3f7f56305",
- "workflowType": "LoopTestWithSwitch",
- "taskId": "eeda447b-4040-47e1-935a-af9f62d30ce9",
- "callbackAfterSeconds": 0,
- "outputData": {},
- "workflowTask": {
- "name": "Set_NODE_2",
- "taskReferenceName": "Set_NODE_2",
- "inputParameters": {
- "node": "NODE_2"
+ "type": "DO_WHILE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false,
+ "loopCondition": "false",
+ "loopOver": [
+ {
+ "name": "inline_task",
+ "taskReferenceName": "inline_task",
+ "inputParameters": {
+ "value": "${workflow.input.value}",
+ "evaluatorType": "javascript",
+ "expression": "function e() { if ($.value == 1){return {\"result\": 'NODE_1'}} else { return {\"result\": 'NODE_2'}}} e();"
+ },
+ "type": "INLINE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false
},
- "type": "SET_VARIABLE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false
- },
- "rateLimitPerFrequency": 0,
- "rateLimitFrequencyInSeconds": 0,
- "workflowPriority": 0,
- "iteration": 1,
- "subworkflowChanged": false,
- "taskDefinition": null,
- "queueWaitTime": -5,
- "loopOverTask": true
+ {
+ "name": "switch_task",
+ "taskReferenceName": "switch_task",
+ "inputParameters": {
+ "switchCaseValue": "${inline_task_1.output.result.result}"
+ },
+ "type": "SWITCH",
+ "decisionCases": {
+ "NODE_1": [
+ {
+ "name": "Set_NODE_1",
+ "taskReferenceName": "Set_NODE_1",
+ "inputParameters": {
+ "node": "NODE_1"
+ },
+ "type": "SET_VARIABLE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false
+ }
+ ],
+ "NODE_2": [
+ {
+ "name": "Set_NODE_2",
+ "taskReferenceName": "Set_NODE_2",
+ "inputParameters": {
+ "node": "NODE_2"
+ },
+ "type": "SET_VARIABLE",
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false
+ }
+ ]
+ },
+ "startDelay": 0,
+ "optional": false,
+ "asyncComplete": false,
+ "evaluatorType": "value-param",
+ "expression": "switchCaseValue"
+ }
+ ]
}
],
- "input": {},
- "output": {},
- "taskToDomain": {},
- "failedReferenceTaskNames": [],
- "workflowDefinition": {
- "createTime": 1660244498873,
- "name": "LoopTestWithSwitch",
- "description": "Loop Test With Switch WF",
- "version": 1,
- "tasks": [
- {
- "name": "Loop Task",
- "taskReferenceName": "LoopTask",
- "inputParameters": {
- "value": "${workflow.input.value}"
- },
- "type": "DO_WHILE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false,
- "loopCondition": "false",
- "loopOver": [
- {
- "name": "inline_task_1",
- "taskReferenceName": "inline_task_1",
- "inputParameters": {
- "value": "${workflow.input.value}",
- "evaluatorType": "javascript",
- "expression": "function e() { if ($.value == 1){return {\"result\": 'NODE_1'}} else { return {\"result\": 'NODE_2'}}} e();"
- },
- "type": "INLINE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false
- },
- {
- "name": "switch_task",
- "taskReferenceName": "switch_task",
- "inputParameters": {
- "switchCaseValue": "${inline_task_1.output.result.result}"
- },
- "type": "SWITCH",
- "decisionCases": {
- "NODE_1": [
- {
- "name": "Set_NODE_1",
- "taskReferenceName": "Set_NODE_1",
- "inputParameters": {
- "node": "NODE_1"
- },
- "type": "SET_VARIABLE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false
- }
- ],
- "NODE_2": [
- {
- "name": "Set_NODE_2",
- "taskReferenceName": "Set_NODE_2",
- "inputParameters": {
- "node": "NODE_2"
- },
- "type": "SET_VARIABLE",
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false
- }
- ]
- },
- "startDelay": 0,
- "optional": false,
- "asyncComplete": false,
- "evaluatorType": "value-param",
- "expression": "switchCaseValue"
- }
- ]
- }
- ],
- "inputParameters": [],
- "outputParameters": {},
- "schemaVersion": 2,
- "restartable": true,
- "workflowStatusListenerEnabled": true,
- "ownerEmail": "abc@example.com",
- "timeoutPolicy": "ALERT_ONLY",
- "timeoutSeconds": 0,
- "variables": {},
- "inputTemplate": {}
- },
- "priority": 0,
- "variables": {
- "node": "NODE_2"
- },
- "lastRetriedTime": 0,
- "startTime": 1660244521990,
- "workflowName": "LoopTestWithSwitch",
- "workflowVersion": 1
- }
\ No newline at end of file
+ "inputParameters": [],
+ "outputParameters": {},
+ "schemaVersion": 2,
+ "restartable": true,
+ "workflowStatusListenerEnabled": true,
+ "ownerEmail": "abc@example.com",
+ "timeoutPolicy": "ALERT_ONLY",
+ "timeoutSeconds": 0,
+ "variables": {},
+ "inputTemplate": {}
+ },
+ "priority": 0,
+ "variables": {},
+ "lastRetriedTime": 0,
+ "startTime": 1660252744369,
+ "workflowName": "LoopTestWithSwitch",
+ "workflowVersion": 3
+}
diff --git a/ui/src/components/KeyValueTable.jsx b/ui/src/components/KeyValueTable.jsx
index cd26db2c4c..d8ea29175a 100644
--- a/ui/src/components/KeyValueTable.jsx
+++ b/ui/src/components/KeyValueTable.jsx
@@ -63,7 +63,6 @@ export default function KeyValueTable({ data }) {
}
return (
-
-
- {displayValue}
- }
+
+ {displayValue}
+
+ }
/>
-
);
})}
diff --git a/ui/src/components/ReactJson.jsx b/ui/src/components/ReactJson.jsx
index 5a396a1d8d..00f36aca01 100644
--- a/ui/src/components/ReactJson.jsx
+++ b/ui/src/components/ReactJson.jsx
@@ -35,7 +35,12 @@ const useStyles = makeStyles({
},
});
-export default function ReactJson({ className, label, src, lineNumbers=true }) {
+export default function ReactJson({
+ className,
+ label,
+ src,
+ lineNumbers = true,
+}) {
const classes = useStyles();
const editorRef = useRef(null);
@@ -98,7 +103,7 @@ export default function ReactJson({ className, label, src, lineNumbers=true }) {
scrollbar: { useShadows: false },
quickSuggestions: false,
showFoldingControls: "always",
- lineNumbers: lineNumbers ? "on": "off",
+ lineNumbers: lineNumbers ? "on" : "off",
// Undocumented see https://github.com/Microsoft/vscode/issues/30795#issuecomment-410998882
lineDecorationsWidth: 0,
diff --git a/ui/src/components/diagram/WorkflowDAG.js b/ui/src/components/diagram/WorkflowDAG.js
index 908503ac23..f7982950bb 100644
--- a/ui/src/components/diagram/WorkflowDAG.js
+++ b/ui/src/components/diagram/WorkflowDAG.js
@@ -143,16 +143,19 @@ export default class WorkflowDAG {
// Special case - When the antecedent of an executed node is a SWITCH, the edge may not necessarily be highlighted.
// E.g. the default edge not taken.
+ //
// SWITCH is the newer version of DECISION and DECISION is deprecated
- if (antecedent.type === "SWITCH" || antecedent.type === "DECISION") {
- // A switch inside a loop in execution won't
- // have a decisionCases key
- if (antecedent.decisionCases) {
- edgeParams.caseValue = getCaseValue(
- taskConfig.taskReferenceName,
- antecedent
- );
- }
+ //
+ // Skip this if current type is DO_WHILE_END - which means the SWITCH is one of the bundled
+ // loop tasks and the current task is not the result of a decision
+ if (
+ taskConfig.type !== "DO_WHILE_END" &&
+ (antecedent.type === "SWITCH" || antecedent.type === "DECISION")
+ ) {
+ edgeParams.caseValue = getCaseValue(
+ taskConfig.taskReferenceName,
+ antecedent
+ );
// Highlight edge as executed only after thorough test
const branchTaken = this.switchBranchTaken(
@@ -253,7 +256,6 @@ export default class WorkflowDAG {
processDoWhileTask(doWhileTask, antecedents) {
console.assert(Array.isArray(antecedents));
- console.log(this.taskResults);
const hasDoWhileExecuted = !!this.getExecutionStatus(
doWhileTask.taskReferenceName
@@ -262,6 +264,7 @@ export default class WorkflowDAG {
this.addVertex(doWhileTask, antecedents);
// Bottom bar
+ // aliasForRef indicates when the bottom bar is clicked one we should highlight the ref
let endDoWhileTask = {
type: "DO_WHILE_END",
name: doWhileTask.name,
@@ -283,12 +286,14 @@ export default class WorkflowDAG {
}
);
- const loopOverRefs = Array.from(this.taskResultsByRef.keys()).filter((key) => {
- for (let prefix of loopOverRefPrefixes) {
- if (key.startsWith(prefix)) return true;
+ const loopOverRefs = Array.from(this.taskResultsByRef.keys()).filter(
+ (key) => {
+ for (let prefix of loopOverRefPrefixes) {
+ if (key.startsWith(prefix + "__")) return true;
+ }
+ return false;
}
- return false
- });
+ );
const loopTaskResults = [];
for (let ref of loopOverRefs) {
@@ -308,7 +313,6 @@ export default class WorkflowDAG {
this.addVertex(endDoWhileTask, [...loopTasks]);
} else {
-
// Definition view (or not executed)
this.processTaskList(doWhileTask.loopOver, [doWhileTask]);
diff --git a/ui/src/components/diagram/WorkflowGraph.test.cy.js b/ui/src/components/diagram/WorkflowGraph.test.cy.js
index c7dee76192..30cd4236e0 100644
--- a/ui/src/components/diagram/WorkflowGraph.test.cy.js
+++ b/ui/src/components/diagram/WorkflowGraph.test.cy.js
@@ -66,7 +66,9 @@ describe("", () => {
cy.fixture("dynamicFork/noneSpawned").then((data) => {
const dag = new WorkflowDAG(data);
- mount();
+ mount(
+
+ );
cy.get("#dynamic_tasks_DF_EMPTY_PLACEHOLDER")
.should("contain", "No tasks spawned")
.click();
@@ -83,14 +85,15 @@ describe("", () => {
mount(
);
-
- cy.get('.edgePaths .edgePath.reverse').should('exist');
- cy.get('.edgePaths').find('.edgePath').should('have.length', 10);
- cy.get('.edgeLabels').should('contain', 'LOOP');
- });
- })
+ cy.get(".edgePaths .edgePath.reverse").should("exist");
+ cy.get(".edgePaths").find(".edgePath").should("have.length", 11);
+ cy.get(".edgeLabels").should("contain", "LOOP");
+ });
+ });
+ // Note: The addition of task 'inline_task_outside' tests prefix-based loop content detection.
+ // Will succeed only when filtering via 'prefix + "__"';
it("Do_while containing switch (execution)", () => {
const onClickSpy = cy.spy().as("onClickSpy");
@@ -99,15 +102,15 @@ describe("", () => {
mount(
);
-
+
cy.get("#LoopTask_DF_TASK_PLACEHOLDER")
.should("contain", "2 of 2 tasks succeeded")
.click();
- cy.get("@onClickSpy").should("be.calledWith", { ref: "inline_task_1__1" });
- cy.get('.edgePaths').find('.edgePath').should('have.length', 5);
- cy.get('.edgePaths .edgePath.reverse').should('exist');
- cy.get('.edgeLabels').should('contain', 'LOOP');
+ cy.get("@onClickSpy").should("be.calledWith", { ref: "inline_task__1" });
+ cy.get(".edgePaths").find(".edgePath").should("have.length", 6);
+ cy.get(".edgePaths .edgePath.reverse").should("exist");
+ cy.get(".edgeLabels").should("contain", "LOOP");
});
- })
+ });
});
diff --git a/ui/src/pages/execution/TaskSummary.jsx b/ui/src/pages/execution/TaskSummary.jsx
index a8b8f02f17..62647ac325 100644
--- a/ui/src/pages/execution/TaskSummary.jsx
+++ b/ui/src/pages/execution/TaskSummary.jsx
@@ -108,10 +108,7 @@ export default function TaskSummary({ taskResult }) {
data.push({
label: "Subworkflow ID",
value: (
-
+
{taskResult.subWorkflowId}
),