From ab74bade05cb30e7fa65a491789a3df3ab7bf8b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Milorad=20FIlipovi=C4=87?= Date: Fri, 22 Dec 2023 12:50:36 +0100 Subject: [PATCH] feat(editor): Add node execution status indicator to output panel (#8124) ## Summary Adding node execution status indicator to the output panel ([Figma HiFi](https://www.figma.com/file/iUduV3M4W5wZT7Gw5vgDn1/NDV-output-pane-success-state)). ## Related tickets and issues Fixes ADO-480 ## Review / Merge checklist - [x] PR title and summary are descriptive. **Remember, the title automatically goes into the changelog. Use `(no-changelog)` otherwise.** ([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md)) - [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up ticket created. - [x] Tests included. > A bug is not considered fixed, unless a test is added to prevent it from happening again. > A feature is not complete without tests. --- cypress/e2e/5-ndv.cy.ts | 23 +++++++ cypress/pages/ndv.ts | 2 + .../src/components/N8nInfoTip/InfoTip.vue | 69 +++++++++++++------ .../__snapshots__/InfoTip.spec.ts.snap | 4 +- .../src/components/N8nTooltip/Tooltip.vue | 2 +- .../editor-ui/src/components/OutputPanel.vue | 22 ++---- packages/editor-ui/src/components/RunInfo.vue | 41 ++++++++++- .../__snapshots__/RunDataSchema.test.ts.snap | 2 +- .../editor-ui/src/mixins/executionsHelpers.ts | 3 +- .../editor-ui/src/mixins/genericHelpers.ts | 9 --- .../src/plugins/i18n/locales/en.json | 2 + .../src/utils/formatters/dateFormatter.ts | 12 ++++ 12 files changed, 135 insertions(+), 56 deletions(-) create mode 100644 packages/editor-ui/src/utils/formatters/dateFormatter.ts diff --git a/cypress/e2e/5-ndv.cy.ts b/cypress/e2e/5-ndv.cy.ts index 8089a1240733a..4249018b89bbc 100644 --- a/cypress/e2e/5-ndv.cy.ts +++ b/cypress/e2e/5-ndv.cy.ts @@ -490,6 +490,29 @@ describe('NDV', () => { ndv.getters.nodeVersion().should('have.text', 'Function node version 1 (Deprecated)'); ndv.actions.close(); }); + it('should properly show node execution indicator', () => { + workflowPage.actions.addInitialNodeToCanvas('Code'); + workflowPage.actions.openNode('Code'); + // Should not show run info before execution + ndv.getters.nodeRunSuccessIndicator().should('not.exist'); + ndv.getters.nodeRunErrorIndicator().should('not.exist'); + ndv.getters.nodeExecuteButton().click(); + ndv.getters.nodeRunSuccessIndicator().should('exist'); + }); + it('should properly show node execution indicator for multiple nodes', () => { + workflowPage.actions.addInitialNodeToCanvas('Code'); + workflowPage.actions.openNode('Code'); + ndv.actions.typeIntoParameterInput('jsCode', 'testets'); + ndv.getters.backToCanvas().click(); + workflowPage.actions.executeWorkflow(); + // Manual tigger node should show success indicator + workflowPage.actions.openNode('When clicking "Execute Workflow"'); + ndv.getters.nodeRunSuccessIndicator().should('exist'); + // Code node should show error + ndv.getters.backToCanvas().click(); + workflowPage.actions.openNode('Code'); + ndv.getters.nodeRunErrorIndicator().should('exist'); + }); it('Should handle mismatched option attributes', () => { workflowPage.actions.addInitialNodeToCanvas('LDAP', { keepNdvOpen: true, action: 'Create a new entry' }); // Add some attributes in Create operation diff --git a/cypress/pages/ndv.ts b/cypress/pages/ndv.ts index 8d8f5297e9e81..66116b0fc4e09 100644 --- a/cypress/pages/ndv.ts +++ b/cypress/pages/ndv.ts @@ -98,6 +98,8 @@ export class NDV extends BasePage { pagination: () => cy.getByTestId('ndv-data-pagination'), nodeVersion: () => cy.getByTestId('node-version'), nodeSettingsTab: () => cy.getByTestId('tab-settings'), + nodeRunSuccessIndicator: () => cy.getByTestId('node-run-info-success'), + nodeRunErrorIndicator: () => cy.getByTestId('node-run-info-danger'), }; actions = { diff --git a/packages/design-system/src/components/N8nInfoTip/InfoTip.vue b/packages/design-system/src/components/N8nInfoTip/InfoTip.vue index 7a81cbb0fd003..394b994c8e7c8 100644 --- a/packages/design-system/src/components/N8nInfoTip/InfoTip.vue +++ b/packages/design-system/src/components/N8nInfoTip/InfoTip.vue @@ -2,6 +2,7 @@
- - + + - + @@ -48,7 +49,7 @@ export default defineComponent({ type: String, default: 'info', validator: (value: string): boolean => - ['info', 'info-light', 'warning', 'danger'].includes(value), + ['info', 'info-light', 'warning', 'danger', 'success'].includes(value), }, type: { type: String, @@ -64,10 +65,50 @@ export default defineComponent({ default: 'top', }, }, + computed: { + iconData(): { icon: string; color: string } { + switch (this.theme) { + case 'info': + return { + icon: 'info-circle', + color: '--color-text-light)', + }; + case 'info-light': + return { + icon: 'info-circle', + color: 'var(--color-foreground-dark)', + }; + case 'warning': + return { + icon: 'exclamation-triangle', + color: 'var(--color-warning)', + }; + case 'danger': + return { + icon: 'exclamation-triangle', + color: 'var(--color-danger)', + }; + case 'success': + return { + icon: 'check-circle', + color: 'var(--color-success)', + }; + default: + return { + icon: 'info-circle', + color: '--color-text-light)', + }; + } + }, + }, }); diff --git a/packages/design-system/src/components/N8nInfoTip/__tests__/__snapshots__/InfoTip.spec.ts.snap b/packages/design-system/src/components/N8nInfoTip/__tests__/__snapshots__/InfoTip.spec.ts.snap index dc755e961d5ee..3a49e215d5349 100644 --- a/packages/design-system/src/components/N8nInfoTip/__tests__/__snapshots__/InfoTip.spec.ts.snap +++ b/packages/design-system/src/components/N8nInfoTip/__tests__/__snapshots__/InfoTip.spec.ts.snap @@ -1,9 +1,9 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`N8nInfoTip > should render correctly as note 1`] = `"
Need help doing something?Open docs
"`; +exports[`N8nInfoTip > should render correctly as note 1`] = `"
Need help doing something?Open docs
"`; exports[`N8nInfoTip > should render correctly as tooltip 1`] = ` -"
+"
" `; diff --git a/packages/design-system/src/components/N8nTooltip/Tooltip.vue b/packages/design-system/src/components/N8nTooltip/Tooltip.vue index ee8c53683a4c6..c49df4118457b 100644 --- a/packages/design-system/src/components/N8nTooltip/Tooltip.vue +++ b/packages/design-system/src/components/N8nTooltip/Tooltip.vue @@ -1,5 +1,5 @@