diff --git a/packages/editor-ui/src/components/ExecutionFilter.vue b/packages/editor-ui/src/components/ExecutionFilter.vue index 5cc12449548270..2b0e0dd87bfb85 100644 --- a/packages/editor-ui/src/components/ExecutionFilter.vue +++ b/packages/editor-ui/src/components/ExecutionFilter.vue @@ -74,6 +74,7 @@ const vModel = reactive( const statuses = computed(() => [ { id: 'all', name: locale.baseText('executionsList.anyStatus') }, { id: 'error', name: locale.baseText('executionsList.error') }, + { id: 'canceled', name: locale.baseText('executionsList.canceled') }, { id: 'running', name: locale.baseText('executionsList.running') }, { id: 'success', name: locale.baseText('executionsList.success') }, { id: 'waiting', name: locale.baseText('executionsList.waiting') }, diff --git a/packages/editor-ui/src/components/ExecutionsList.vue b/packages/editor-ui/src/components/ExecutionsList.vue index b29b7a3abfe1c2..992a0f16b9f358 100644 --- a/packages/editor-ui/src/components/ExecutionsList.vue +++ b/packages/editor-ui/src/components/ExecutionsList.vue @@ -779,6 +779,8 @@ export default mixins(externalHooks, genericHelpers, executionHelpers, restApi, if (status === 'waiting') { text = this.$locale.baseText('executionsList.waiting'); + } else if (status === 'canceled') { + text = this.$locale.baseText('executionsList.canceled'); } else if (status === 'crashed') { text = this.$locale.baseText('executionsList.error'); } else if (status === 'new') { @@ -801,6 +803,8 @@ export default mixins(externalHooks, genericHelpers, executionHelpers, restApi, if (status === 'waiting') { path = 'executionsList.statusWaiting'; + } else if (status === 'canceled') { + path = 'executionsList.statusCanceled'; } else if (status === 'crashed') { path = 'executionsList.statusText'; } else if (status === 'new') { diff --git a/packages/editor-ui/src/mixins/executionsHelpers.ts b/packages/editor-ui/src/mixins/executionsHelpers.ts index 2f178330782e65..e79359847fea83 100644 --- a/packages/editor-ui/src/mixins/executionsHelpers.ts +++ b/packages/editor-ui/src/mixins/executionsHelpers.ts @@ -50,34 +50,24 @@ export const executionHelpers = mixins(genericHelpers).extend({ ) { status.name = 'running'; status.label = this.$locale.baseText('executionsList.running'); - if (execution.startedAt) { - status.runningTime = this.displayTimer( - new Date().getTime() - new Date(execution.startedAt).getTime(), - true, - ); - } } else if (execution.status === 'success' || execution.finished) { status.name = 'success'; status.label = this.$locale.baseText('executionsList.succeeded'); - if (execution.stoppedAt) { - status.runningTime = this.displayTimer( - new Date(execution.stoppedAt).getTime() - new Date(execution.startedAt).getTime(), - true, - ); - } - } else if ( - execution.status === 'failed' || - execution.status === 'crashed' || - execution.stoppedAt !== null - ) { + } else if (execution.status === 'failed' || execution.status === 'crashed') { status.name = 'error'; status.label = this.$locale.baseText('executionsList.error'); - if (execution.stoppedAt) { - status.runningTime = this.displayTimer( - new Date(execution.stoppedAt).getTime() - new Date(execution.startedAt).getTime(), - true, - ); - } + } else if (execution.status === 'canceled') { + status.label = this.$locale.baseText('executionsList.canceled'); + } + + if (!execution.status) execution.status = 'unknown'; + + if (execution.startedAt) { + status.runningTime = this.displayTimer( + new Date(execution.stoppedAt ?? Date.now()).getTime() - + new Date(execution.startedAt).getTime(), + true, + ); } return status; diff --git a/packages/editor-ui/src/plugins/i18n/locales/en.json b/packages/editor-ui/src/plugins/i18n/locales/en.json index 88b59b0a0cff73..f1262bf647316f 100644 --- a/packages/editor-ui/src/plugins/i18n/locales/en.json +++ b/packages/editor-ui/src/plugins/i18n/locales/en.json @@ -451,6 +451,7 @@ "executionsList.allWorkflows": "All Workflows", "executionsList.anyStatus": "Any Status", "executionsList.autoRefresh": "Auto refresh", + "executionsList.canceled": "Canceled", "executionsList.confirmMessage.cancelButtonText": "", "executionsList.confirmMessage.confirmButtonText": "Yes, delete", "executionsList.confirmMessage.headline": "Delete Executions?", @@ -496,6 +497,7 @@ "executionsList.started": "{date} at {time}", "executionsList.id": "Execution ID", "executionsList.status": "Status", + "executionsList.statusCanceled": "Canceled", "executionsList.statusText": "{status} in {time}", "executionsList.statusRunning": "{status} for {time}", "executionsList.statusWaiting": "{status} until {time}",