n8n-editor-ui 1.41.0 → 1.41.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +61 -61
- package/dist/assets/{AuthView-E0Dwqa78.js → AuthView-CMX_-yPy.js} +2 -2
- package/dist/assets/{AuthView-E0Dwqa78.js.map → AuthView-CMX_-yPy.js.map} +1 -1
- package/dist/assets/{CanvasControls-yrXCY2V6.js → CanvasControls-9oKgZX9B.js} +2 -2
- package/dist/assets/{CanvasControls-yrXCY2V6.js.map → CanvasControls-9oKgZX9B.js.map} +1 -1
- package/dist/assets/{ChangePasswordView-kHBWSwn5.js → ChangePasswordView-GG3ESv5E.js} +2 -2
- package/dist/assets/{ChangePasswordView-kHBWSwn5.js.map → ChangePasswordView-GG3ESv5E.js.map} +1 -1
- package/dist/assets/{CollectionParameter-ZuNQUd29.js → CollectionParameter-1UnufhEZ.js} +2 -2
- package/dist/assets/CollectionParameter-1UnufhEZ.js.map +1 -0
- package/dist/assets/{CredentialsView-24rpr6nX.js → CredentialsView-TrGa_IpW.js} +2 -2
- package/dist/assets/{CredentialsView-24rpr6nX.js.map → CredentialsView-TrGa_IpW.js.map} +1 -1
- package/dist/assets/{ExecutionsFilter-RyBW2SgR.js → ExecutionsFilter-W0_jymTM.js} +2 -2
- package/dist/assets/{ExecutionsFilter-RyBW2SgR.js.map → ExecutionsFilter-W0_jymTM.js.map} +1 -1
- package/dist/assets/{ExecutionsView-NIusemYP.js → ExecutionsView-P-nSEBpq.js} +2 -2
- package/dist/assets/{ExecutionsView-NIusemYP.js.map → ExecutionsView-P-nSEBpq.js.map} +1 -1
- package/dist/assets/{ForgotMyPasswordView-ebrry8c_.js → ForgotMyPasswordView-_Ft-h_Xq.js} +2 -2
- package/dist/assets/{ForgotMyPasswordView-ebrry8c_.js.map → ForgotMyPasswordView-_Ft-h_Xq.js.map} +1 -1
- package/dist/assets/{MainHeader-JJIRXuyj.js → MainHeader-UFj-n8nH.js} +2 -2
- package/dist/assets/{MainHeader-JJIRXuyj.js.map → MainHeader-UFj-n8nH.js.map} +1 -1
- package/dist/assets/{MainSidebar-KnXGjnqU.js → MainSidebar-H7A2NfnT.js} +2 -2
- package/dist/assets/{MainSidebar-KnXGjnqU.js.map → MainSidebar-H7A2NfnT.js.map} +1 -1
- package/dist/assets/{NodeCreation-01VRbmJn.js → NodeCreation-MVULkw2n.js} +3 -3
- package/dist/assets/{NodeCreation-01VRbmJn.js.map → NodeCreation-MVULkw2n.js.map} +1 -1
- package/dist/assets/{NodeCreator-D_gQXSbT.js → NodeCreator-NjQetiNP.js} +2 -2
- package/dist/assets/{NodeCreator-D_gQXSbT.js.map → NodeCreator-NjQetiNP.js.map} +1 -1
- package/dist/assets/{NodeList-Ysq3Cjbn.js → NodeList-f4t5_e24.js} +2 -2
- package/dist/assets/{NodeList-Ysq3Cjbn.js.map → NodeList-f4t5_e24.js.map} +1 -1
- package/dist/assets/{NodeView-QjQV3eFX.js → NodeView-kA0j8oya.js} +4 -4
- package/dist/assets/{NodeView-QjQV3eFX.js.map → NodeView-kA0j8oya.js.map} +1 -1
- package/dist/assets/{RunDataAi-wbEK-oHX.js → RunDataAi-9Rk5nlrG.js} +2 -2
- package/dist/assets/{RunDataAi-wbEK-oHX.js.map → RunDataAi-9Rk5nlrG.js.map} +1 -1
- package/dist/assets/{RunDataJson-YtVT_k9o.js → RunDataJson-3HvvCXQv.js} +3 -3
- package/dist/assets/{RunDataJson-YtVT_k9o.js.map → RunDataJson-3HvvCXQv.js.map} +1 -1
- package/dist/assets/{RunDataJsonActions-dl7uUHxF.js → RunDataJsonActions-QVURaY0g.js} +2 -2
- package/dist/assets/{RunDataJsonActions-dl7uUHxF.js.map → RunDataJsonActions-QVURaY0g.js.map} +1 -1
- package/dist/assets/{RunDataSchema-zsup9Psk.js → RunDataSchema-8AcA4SSx.js} +2 -2
- package/dist/assets/{RunDataSchema-zsup9Psk.js.map → RunDataSchema-8AcA4SSx.js.map} +1 -1
- package/dist/assets/{RunDataTable-4PVwCliN.js → RunDataTable-aySP3LG2.js} +2 -2
- package/dist/assets/{RunDataTable-4PVwCliN.js.map → RunDataTable-aySP3LG2.js.map} +1 -1
- package/dist/assets/{SamlOnboarding-a7AOJSPY.js → SamlOnboarding-g5DOLc7y.js} +2 -2
- package/dist/assets/{SamlOnboarding-a7AOJSPY.js.map → SamlOnboarding-g5DOLc7y.js.map} +1 -1
- package/dist/assets/{SettingsApiView-MKVmxKrc.js → SettingsApiView-368bFhYh.js} +2 -2
- package/dist/assets/{SettingsApiView-MKVmxKrc.js.map → SettingsApiView-368bFhYh.js.map} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-JSEAJRmQ.js → SettingsCommunityNodesView-4ma9ZrA6.js} +2 -2
- package/dist/assets/{SettingsCommunityNodesView-JSEAJRmQ.js.map → SettingsCommunityNodesView-4ma9ZrA6.js.map} +1 -1
- package/dist/assets/{SettingsExternalSecrets-LATcSwCb.js → SettingsExternalSecrets-anO5H_X6.js} +2 -2
- package/dist/assets/{SettingsExternalSecrets-LATcSwCb.js.map → SettingsExternalSecrets-anO5H_X6.js.map} +1 -1
- package/dist/assets/{SettingsFakeDoorView-JXYglIiV.js → SettingsFakeDoorView-DP8hJH_b.js} +2 -2
- package/dist/assets/{SettingsFakeDoorView-JXYglIiV.js.map → SettingsFakeDoorView-DP8hJH_b.js.map} +1 -1
- package/dist/assets/{SettingsLdapView-2qYzfmuL.js → SettingsLdapView-TVoyUgkx.js} +2 -2
- package/dist/assets/{SettingsLdapView-2qYzfmuL.js.map → SettingsLdapView-TVoyUgkx.js.map} +1 -1
- package/dist/assets/{SettingsLogStreamingView-Xc6EScgx.js → SettingsLogStreamingView-IIFjEkjs.js} +2 -2
- package/dist/assets/{SettingsLogStreamingView-Xc6EScgx.js.map → SettingsLogStreamingView-IIFjEkjs.js.map} +1 -1
- package/dist/assets/{SettingsSourceControl-Mb0LqGSl.js → SettingsSourceControl-1zDUY0dl.js} +2 -2
- package/dist/assets/{SettingsSourceControl-Mb0LqGSl.js.map → SettingsSourceControl-1zDUY0dl.js.map} +1 -1
- package/dist/assets/{SettingsSso-2YEXaMhF.js → SettingsSso-7dAOqmaA.js} +2 -2
- package/dist/assets/{SettingsSso-2YEXaMhF.js.map → SettingsSso-7dAOqmaA.js.map} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-_C19BOT1.js → SettingsUsageAndPlan-0b_7OZCC.js} +2 -2
- package/dist/assets/{SettingsUsageAndPlan-_C19BOT1.js.map → SettingsUsageAndPlan-0b_7OZCC.js.map} +1 -1
- package/dist/assets/{SettingsUsersView-salH__qs.js → SettingsUsersView-0AZ_F16e.js} +2 -2
- package/dist/assets/{SettingsUsersView-salH__qs.js.map → SettingsUsersView-0AZ_F16e.js.map} +1 -1
- package/dist/assets/{SettingsView-EBt-ouA4.js → SettingsView-pF2qlNhK.js} +2 -2
- package/dist/assets/SettingsView-pF2qlNhK.js.map +1 -0
- package/dist/assets/{SetupView-T7JQiE1O.js → SetupView-IPdjd4om.js} +2 -2
- package/dist/assets/{SetupView-T7JQiE1O.js.map → SetupView-IPdjd4om.js.map} +1 -1
- package/dist/assets/{SetupWorkflowCredentialsButton-lDl1ksax.js → SetupWorkflowCredentialsButton-fL7BC8Hp.js} +2 -2
- package/dist/assets/{SetupWorkflowCredentialsButton-lDl1ksax.js.map → SetupWorkflowCredentialsButton-fL7BC8Hp.js.map} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-uEG55eR-.js → SetupWorkflowFromTemplateView-mDNSG38Q.js} +2 -2
- package/dist/assets/{SetupWorkflowFromTemplateView-uEG55eR-.js.map → SetupWorkflowFromTemplateView-mDNSG38Q.js.map} +1 -1
- package/dist/assets/{SigninView-tsJLDDbt.js → SigninView-4mpqXNHu.js} +2 -2
- package/dist/assets/{SigninView-tsJLDDbt.js.map → SigninView-4mpqXNHu.js.map} +1 -1
- package/dist/assets/{SignupView-ckdGMylG.js → SignupView-v6AVy0zJ.js} +2 -2
- package/dist/assets/{SignupView-ckdGMylG.js.map → SignupView-v6AVy0zJ.js.map} +1 -1
- package/dist/assets/{TemplateDetails-YEZlo0n4.js → TemplateDetails-WQVyxQi7.js} +2 -2
- package/dist/assets/{TemplateDetails-YEZlo0n4.js.map → TemplateDetails-WQVyxQi7.js.map} +1 -1
- package/dist/assets/{TemplateList-OGWLmWk_.js → TemplateList--WJ98ZVH.js} +2 -2
- package/dist/assets/{TemplateList-OGWLmWk_.js.map → TemplateList--WJ98ZVH.js.map} +1 -1
- package/dist/assets/{TemplatesCollectionView-Fx5qyXc6.js → TemplatesCollectionView-g59Pu268.js} +2 -2
- package/dist/assets/{TemplatesCollectionView-Fx5qyXc6.js.map → TemplatesCollectionView-g59Pu268.js.map} +1 -1
- package/dist/assets/{TemplatesInfoCarousel-oLwAv_o3.js → TemplatesInfoCarousel-Nq4oRyBi.js} +2 -2
- package/dist/assets/{TemplatesInfoCarousel-oLwAv_o3.js.map → TemplatesInfoCarousel-Nq4oRyBi.js.map} +1 -1
- package/dist/assets/{TemplatesSearchView-TtSL2qyI.js → TemplatesSearchView-Lv0e5mOk.js} +2 -2
- package/dist/assets/{TemplatesSearchView-TtSL2qyI.js.map → TemplatesSearchView-Lv0e5mOk.js.map} +1 -1
- package/dist/assets/{TemplatesWorkflowView-Ipt1HHPc.js → TemplatesWorkflowView-FoPXbc_4.js} +2 -2
- package/dist/assets/{TemplatesWorkflowView-Ipt1HHPc.js.map → TemplatesWorkflowView-FoPXbc_4.js.map} +1 -1
- package/dist/assets/{VariablesView-pLmlCm20.js → VariablesView-Sg4v_4Ai.js} +2 -2
- package/dist/assets/{VariablesView-pLmlCm20.js.map → VariablesView-Sg4v_4Ai.js.map} +1 -1
- package/dist/assets/{WorkerView-Du8mpTon.js → WorkerView-y-y5Q5E5.js} +2 -2
- package/dist/assets/{WorkerView-Du8mpTon.js.map → WorkerView-y-y5Q5E5.js.map} +1 -1
- package/dist/assets/{WorkflowActivator-MuCzpXdv.js → WorkflowActivator-vtOaSPI6.js} +2 -2
- package/dist/assets/{WorkflowActivator-MuCzpXdv.js.map → WorkflowActivator-vtOaSPI6.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsInfoAccordion-9gkfchSQ.js → WorkflowExecutionsInfoAccordion-Gm7eM0Un.js} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-9gkfchSQ.js.map → WorkflowExecutionsInfoAccordion-Gm7eM0Un.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-g4QNNuc4.js → WorkflowExecutionsLandingPage-C_oVBqy4.js} +2 -2
- package/dist/assets/{WorkflowExecutionsLandingPage-g4QNNuc4.js.map → WorkflowExecutionsLandingPage-C_oVBqy4.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsPreview-KNJgPBbn.js → WorkflowExecutionsPreview-Yw0HRwQz.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-KNJgPBbn.js.map → WorkflowExecutionsPreview-Yw0HRwQz.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsView-Iwwaw9Lt.js → WorkflowExecutionsView-dwh6ZDgY.js} +2 -2
- package/dist/assets/{WorkflowExecutionsView-Iwwaw9Lt.js.map → WorkflowExecutionsView-dwh6ZDgY.js.map} +1 -1
- package/dist/assets/{WorkflowHistory-HxH8_2Dt.js → WorkflowHistory-RGKALSm6.js} +2 -2
- package/dist/assets/{WorkflowHistory-HxH8_2Dt.js.map → WorkflowHistory-RGKALSm6.js.map} +1 -1
- package/dist/assets/{WorkflowOnboardingView-KirfsyFh.js → WorkflowOnboardingView-kAh_YIAL.js} +2 -2
- package/dist/assets/{WorkflowOnboardingView-KirfsyFh.js.map → WorkflowOnboardingView-kAh_YIAL.js.map} +1 -1
- package/dist/assets/{WorkflowsView-SJ6W5Ten.js → WorkflowsView-_nHq94Wq.js} +2 -2
- package/dist/assets/{WorkflowsView-SJ6W5Ten.js.map → WorkflowsView-_nHq94Wq.js.map} +1 -1
- package/dist/assets/{cloud-WKIHJYyR.js → cloud-jEANLTrV.js} +2 -2
- package/dist/assets/{cloud-WKIHJYyR.js.map → cloud-jEANLTrV.js.map} +1 -1
- package/dist/assets/{index-Qw68KAhz.js → index-6M_Mo9yq.js} +4 -4
- package/dist/assets/{index-Qw68KAhz.js.map → index-6M_Mo9yq.js.map} +1 -1
- package/dist/assets/{templateActions-5n_gDrp9.js → templateActions-l9fJr0Cu.js} +2 -2
- package/dist/assets/{templateActions-5n_gDrp9.js.map → templateActions-l9fJr0Cu.js.map} +1 -1
- package/dist/assets/{useExecutionDebugging-bM31shhY.js → useExecutionDebugging-ndesKh44.js} +2 -2
- package/dist/assets/{useExecutionDebugging-bM31shhY.js.map → useExecutionDebugging-ndesKh44.js.map} +1 -1
- package/dist/assets/{usePushConnection-YMVPmkf5.js → usePushConnection-vhkd7pw_.js} +2 -2
- package/dist/assets/{usePushConnection-YMVPmkf5.js.map → usePushConnection-vhkd7pw_.js.map} +1 -1
- package/dist/assets/{workflowActivate-L9KnNQBb.js → workflowActivate-dwxhdtFU.js} +2 -2
- package/dist/assets/{workflowActivate-L9KnNQBb.js.map → workflowActivate-dwxhdtFU.js.map} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-ZuNQUd29.js.map +0 -1
- package/dist/assets/SettingsView-EBt-ouA4.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutionsLandingPage-
|
|
1
|
+
{"version":3,"file":"WorkflowExecutionsLandingPage-C_oVBqy4.js","sources":["../../src/components/executions/workflow/WorkflowExecutionsLandingPage.vue"],"sourcesContent":["<template>\n\t<div :class=\"['workflow-executions-container', $style.container]\">\n\t\t<div v-if=\"executionCount === 0\" :class=\"[$style.messageContainer, $style.noExecutionsMessage]\">\n\t\t\t<div v-if=\"!containsTrigger\">\n\t\t\t\t<n8n-heading tag=\"h2\" size=\"xlarge\" color=\"text-dark\" class=\"mb-2xs\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.noTrigger.heading') }}\n\t\t\t\t</n8n-heading>\n\t\t\t\t<n8n-text size=\"medium\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.message') }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-button class=\"mt-l\" type=\"tertiary\" size=\"large\" @click=\"onSetupFirstStep\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.noTrigger.buttonText') }}\n\t\t\t\t</n8n-button>\n\t\t\t</div>\n\t\t\t<div v-else>\n\t\t\t\t<n8n-heading tag=\"h2\" size=\"xlarge\" color=\"text-dark\" class=\"mb-2xs\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.heading') }}\n\t\t\t\t</n8n-heading>\n\t\t\t\t<WorkflowExecutionsInfoAccordion />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { PLACEHOLDER_EMPTY_WORKFLOW_ID, VIEWS } from '@/constants';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport WorkflowExecutionsInfoAccordion from './WorkflowExecutionsInfoAccordion.vue';\n\nexport default defineComponent({\n\tname: 'ExecutionsLandingPage',\n\tcomponents: {\n\t\tWorkflowExecutionsInfoAccordion,\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore, useWorkflowsStore),\n\t\texecutionCount(): number {\n\t\t\treturn this.workflowsStore.currentWorkflowExecutions.length;\n\t\t},\n\t\tcontainsTrigger(): boolean {\n\t\t\treturn this.workflowsStore.workflowTriggerNodes.length > 0;\n\t\t},\n\t},\n\tmethods: {\n\t\tonSetupFirstStep(event: MouseEvent): void {\n\t\t\tthis.uiStore.addFirstStepOnLoad = true;\n\t\t\tconst workflowRoute = this.getWorkflowRoute();\n\t\t\tvoid this.$router.push(workflowRoute);\n\t\t},\n\t\tgetWorkflowRoute(): { name: string; params: {} } {\n\t\t\tconst workflowId = this.workflowsStore.workflowId || this.$route.params.name;\n\t\t\tif (workflowId === PLACEHOLDER_EMPTY_WORKFLOW_ID) {\n\t\t\t\treturn { name: VIEWS.NEW_WORKFLOW, params: {} };\n\t\t\t} else {\n\t\t\t\treturn { name: VIEWS.WORKFLOW, params: { name: workflowId } };\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.container {\n\twidth: 100%;\n\theight: 100%;\n\tflex: 1;\n\tbackground-color: var(--color-background-light);\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n\n.messageContainer {\n\tmargin-top: var(--spacing-4xl);\n\tcolor: var(--color-text-base);\n\n\tdiv {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t}\n}\n\n.icon {\n\tfont-size: 24px;\n\tcolor: var(--color-foreground-dark);\n}\n</style>\n"],"names":["_sfc_main","defineComponent","WorkflowExecutionsInfoAccordion","mapStores","useUIStore","useWorkflowsStore","event","workflowRoute","workflowId","PLACEHOLDER_EMPTY_WORKFLOW_ID","VIEWS","_component_WorkflowExecutionsInfoAccordion","_resolveComponent","executionCount","_ctx","_openBlock","_createElementBlock","$style","containsTrigger","_hoisted_2","_createVNode","_component_n8n_heading","_createTextVNode","_toDisplayString","_hoisted_1","_component_n8n_text","$locale","_withCtx","_component_n8n_button","_createCommentVNode"],"mappings":"uqCAgCA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,wBACN,WAAY,CACX,gCAAAC,CACD,EACA,SAAU,CACT,GAAGC,EAAUC,EAAYC,CAAiB,EAC1C,gBAAyB,CACjB,OAAA,KAAK,eAAe,0BAA0B,MACtD,EACA,iBAA2B,CACnB,OAAA,KAAK,eAAe,qBAAqB,OAAS,CAC1D,CACD,EACA,QAAS,CACR,iBAAiBC,EAAyB,CACzC,KAAK,QAAQ,mBAAqB,GAC5B,MAAAC,EAAgB,KAAK,mBACtB,KAAK,QAAQ,KAAKA,CAAa,CACrC,EACA,kBAAiD,CAChD,MAAMC,EAAa,KAAK,eAAe,YAAc,KAAK,OAAO,OAAO,KACxE,OAAIA,IAAeC,EACX,CAAE,KAAMC,EAAM,aAAc,OAAQ,CAAG,CAAA,EAEvC,CAAE,KAAMA,EAAM,SAAU,OAAQ,CAAE,KAAMF,GAEjD,CACD,CACD,CAAC,4NAxCMG,EAAAC,EAAA,iCAAA,4BAnBMC,EAAc,CAAA,gCAAAC,EAAA,OAAA,SAAA,CAAA,CAAA,EAAA,CAF3BA,EAAA,iBAAA,GAAAC,EAAA,EAAAC,EAE4CC,MAAO,CAAA,IAAA,QACpCC,EAAe,CAAAJ,EAAA,OAAA,iBAAAA,EAAA,OAAA,mBAAA,CAAA,CAAA,EAAA,CAC1BA,EAAA,iBAUDC,EACsB,EAAAC,EAAA,MAAAG,EAAA,CAAAC,EAAMC,EAAQ,CAAC,IAAK,KAAa,KAAK,SAAA,MAAA,YAf/D,MAAA,QAAA,EAAA,gBAAAC,EAAAC,EAAAT,EAAA,QAAA,SAAA,0CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAkBI,EAAA,CAAA,CAAA,MAlBJ,CAAA,IAIIC,EAAqB,EAAAC,EAAA,MAAAQ,EAAA,CAAAJ,EAAMC,EAAQ,CAAC,IAAK,KAAa,KAAK,SAAA,MAAA,YAJ/D,MAAA,QAAA,EAAA,gBAAAC,EAAAC,EAAAT,EAAA,QAAA,SAAA,oDAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAOI,EAAA,CAAA,CAAA,EAPJM,EAAAK,EAAA,CAAA,KAQQC,QAAQ,EAAA,CAAA,QAAAC,EAAA,IAAA,CARhBL,EAAAC,EAAAT,EAAA,QAAA,SAAA,0CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAUI,EAAA,CAAA,CAAA,IAA8Bc,EAAU,CAAC,MAAK,OAAS,KAAA,WAAA,KAAA,QAV3D,QAAAd,EAAA,gBAAA,EAAA,gBAAAQ,EAAAC,EAAAT,EAAA,QAAA,SAAA,uDAAA,CAAA,EAAA,CAAA,CAAA,CAAA,KAcG,EAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA,EAdH,EAAA,CAAA,GAAAe,EAAA,GAAA,EAAA"}
|
package/dist/assets/{WorkflowExecutionsPreview-KNJgPBbn.js → WorkflowExecutionsPreview-Yw0HRwQz.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as C}from"./useExecutionDebugging-
|
|
2
|
-
//# sourceMappingURL=WorkflowExecutionsPreview-
|
|
1
|
+
import{u as C}from"./useExecutionDebugging-ndesKh44.js";import{az as E,d as T}from"./index-6M_Mo9yq.js";import{fV as v,V as B,v as M,aa as U,_ as L}from"./n8n-0pza0mdA.js";import{u as W}from"./useExecutionHelpers-6MUmu_Xs.js";import{m as z}from"./pinia-28uZ5ZtB.js";import{G as R,l as r,m as f,p as c,T as o,I as a,O as t,S as i,R as n,M as d,Q as p,ag as l}from"./vendor-KLOX9vbo.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./lodash-es-wI9avrph.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./uuid-McvpxQtQ.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./luxon-ZRIU05qF.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./@vueuse/core-JpwZAlxf.js";import"./esprima-next-ulPLCZ1Z.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./dateFormatter-U0u3-5gZ.js";const q=R({name:"WorkflowExecutionsPreview",components:{ElDropdown:v,WorkflowPreview:E},props:{execution:{type:Object,required:!0}},setup(){const e=W();return{VIEWS:B,executionHelpers:e,...T(),...C()}},computed:{...z(M),executionId(){return this.$route.params.executionId},executionUIDetails(){return this.execution?this.executionHelpers.getUIDetails(this.execution):null},executionMode(){var e;return((e=this.execution)==null?void 0:e.mode)||""},debugButtonData(){var e;return((e=this.execution)==null?void 0:e.status)==="success"?{text:this.$locale.baseText("executionsList.debug.button.copyToEditor"),type:"secondary"}:{text:this.$locale.baseText("executionsList.debug.button.debugInEditor"),type:"primary"}},isRetriable(){return!!this.execution&&this.executionHelpers.isExecutionRetriable(this.execution)}},methods:{async onDeleteExecution(){await this.confirm(this.$locale.baseText("executionDetails.confirmMessage.message"),this.$locale.baseText("executionDetails.confirmMessage.headline"),{type:"warning",confirmButtonText:this.$locale.baseText("executionDetails.confirmMessage.confirmButtonText"),cancelButtonText:""})===U&&this.$emit("deleteCurrentExecution")},handleRetryClick(e){this.$emit("retryExecution",{execution:this.execution,command:e})},handleStopClick(){this.$emit("stopExecution")},onRetryButtonBlur(e){const m=this.$refs.retryDropdown;m&&e.relatedTarget===null&&m.handleClose()}}}),S="_previewContainer_1qf32_1",V="_executionDetails_1qf32_7",O="_spinner_1qf32_26",N="_running_1qf32_32",P="_waiting_1qf32_37",H="_success_1qf32_41",F="_error_1qf32_45",G="_runningInfo_1qf32_49",X="_runningMessage_1qf32_56",j="_debugLink_1qf32_62",A={previewContainer:S,executionDetails:V,spinner:O,running:N,waiting:P,success:H,error:F,runningInfo:G,runningMessage:X,debugLink:j},Q=["data-test-id"],J=c("br",null,null,-1),K=c("br",null,null,-1),Y={class:"retry-button"};function Z(e,m,te,ne,oe,ie){var k,D,_;const x=l("n8n-spinner"),u=l("n8n-text"),g=l("n8n-button"),y=l("router-link"),b=l("n8n-icon-button"),w=l("el-dropdown-item"),h=l("el-dropdown-menu"),I=l("ElDropdown"),$=l("WorkflowPreview");return((k=e.executionUIDetails)==null?void 0:k.name)==="running"?(r(),f("div",{key:0,class:a(e.$style.runningInfo)},[c("div",{class:a(e.$style.spinner)},[o(x,{type:"ring"})],2),o(u,{class:a(e.$style.runningMessage),color:"text-light"},{default:t(()=>[i(n(e.$locale.baseText("executionDetails.runningMessage")),1)]),_:1},8,["class"]),o(g,{class:"mt-l",type:"tertiary",onClick:e.handleStopClick},{default:t(()=>[i(n(e.$locale.baseText("executionsList.stopExecution")),1)]),_:1},8,["onClick"])],2)):(r(),f("div",{key:1,class:a(e.$style.previewContainer)},[e.execution?(r(),f("div",{key:0,class:a(e.$style.executionDetails),"data-test-id":`execution-preview-details-${e.executionId}`},[c("div",null,[o(u,{size:"large",color:"text-base",bold:!0,"data-test-id":"execution-time"},{default:t(()=>{var s;return[i(n((s=e.executionUIDetails)==null?void 0:s.startTime),1)]}),_:1}),J,((D=e.executionUIDetails)==null?void 0:D.name)==="running"?(r(),d(x,{key:0,size:"small",class:a([e.$style.spinner,"mr-4xs"])},null,8,["class"])):p("",!0),o(u,{size:"medium",class:a([e.$style.status,e.$style[e.executionUIDetails.name]]),"data-test-id":"execution-preview-label"},{default:t(()=>[i(n(e.executionUIDetails.label),1)]),_:1},8,["class"]),i(" "+n(" ")+" "),e.executionUIDetails.name==="running"?(r(),d(u,{key:1,color:"text-base",size:"medium"},{default:t(()=>{var s;return[i(n(e.$locale.baseText("executionDetails.runningTimeRunning",{interpolate:{time:(s=e.executionUIDetails)==null?void 0:s.runningTime}}))+" | ID#"+n(e.execution.id),1)]}),_:1})):e.executionUIDetails.name!=="waiting"?(r(),d(u,{key:2,color:"text-base",size:"medium","data-test-id":"execution-preview-id"},{default:t(()=>{var s;return[i(n(e.$locale.baseText("executionDetails.runningTimeFinished",{interpolate:{time:((s=e.executionUIDetails)==null?void 0:s.runningTime)??"unknown"}}))+" | ID#"+n(e.execution.id),1)]}),_:1})):((_=e.executionUIDetails)==null?void 0:_.name)==="waiting"?(r(),d(u,{key:3,color:"text-base",size:"medium"},{default:t(()=>[i(" | ID#"+n(e.execution.id),1)]),_:1})):p("",!0),K,e.execution.mode==="retry"?(r(),d(u,{key:4,color:"text-base",size:"medium"},{default:t(()=>[i(n(e.$locale.baseText("executionDetails.retry"))+" ",1),o(y,{class:a(e.$style.executionLink),to:{name:e.VIEWS.EXECUTION_PREVIEW,params:{workflowId:e.execution.workflowId,executionId:e.execution.retryOf}}},{default:t(()=>[i(" #"+n(e.execution.retryOf),1)]),_:1},8,["class","to"])]),_:1})):p("",!0)]),c("div",null,[o(g,{size:"medium",type:e.debugButtonData.type,class:a(e.$style.debugLink)},{default:t(()=>[o(y,{to:{name:e.VIEWS.EXECUTION_DEBUG,params:{name:e.execution.workflowId,executionId:e.execution.id}}},{default:t(()=>[c("span",{"data-test-id":"execution-debug-button",onClick:m[0]||(m[0]=(...s)=>e.handleDebugLinkClick&&e.handleDebugLinkClick(...s))},n(e.debugButtonData.text),1)]),_:1},8,["to"])]),_:1},8,["type","class"]),e.isRetriable?(r(),d(I,{key:0,ref:"retryDropdown",trigger:"click",class:"mr-xs",onCommand:e.handleRetryClick},{dropdown:t(()=>[o(h,null,{default:t(()=>[o(w,{command:"current-workflow"},{default:t(()=>[i(n(e.$locale.baseText("executionsList.retryWithCurrentlySavedWorkflow")),1)]),_:1}),o(w,{command:"original-workflow"},{default:t(()=>[i(n(e.$locale.baseText("executionsList.retryWithOriginalWorkflow")),1)]),_:1})]),_:1})]),default:t(()=>[c("span",Y,[o(b,{size:"medium",type:"tertiary",title:e.$locale.baseText("executionsList.retryExecution"),icon:"redo","data-test-id":"execution-preview-retry-button",onBlur:e.onRetryButtonBlur},null,8,["title","onBlur"])])]),_:1},8,["onCommand"])):p("",!0),o(b,{title:e.$locale.baseText("executionDetails.deleteExecution"),icon:"trash",size:"medium",type:"tertiary","data-test-id":"execution-preview-delete-button",onClick:e.onDeleteExecution},null,8,["title","onClick"])])],10,Q)):p("",!0),o($,{mode:"execution","loader-type":"spinner","execution-id":e.executionId,"execution-mode":e.executionMode},null,8,["execution-id","execution-mode"])],2))}const ee={$style:A},Re=L(q,[["render",Z],["__cssModules",ee]]);export{Re as default};
|
|
2
|
+
//# sourceMappingURL=WorkflowExecutionsPreview-Yw0HRwQz.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutionsPreview-KNJgPBbn.js","sources":["../../src/components/executions/workflow/WorkflowExecutionsPreview.vue"],"sourcesContent":["<template>\n\t<div v-if=\"executionUIDetails?.name === 'running'\" :class=\"$style.runningInfo\">\n\t\t<div :class=\"$style.spinner\">\n\t\t\t<n8n-spinner type=\"ring\" />\n\t\t</div>\n\t\t<n8n-text :class=\"$style.runningMessage\" color=\"text-light\">\n\t\t\t{{ $locale.baseText('executionDetails.runningMessage') }}\n\t\t</n8n-text>\n\t\t<n8n-button class=\"mt-l\" type=\"tertiary\" @click=\"handleStopClick\">\n\t\t\t{{ $locale.baseText('executionsList.stopExecution') }}\n\t\t</n8n-button>\n\t</div>\n\t<div v-else :class=\"$style.previewContainer\">\n\t\t<div\n\t\t\tv-if=\"execution\"\n\t\t\t:class=\"$style.executionDetails\"\n\t\t\t:data-test-id=\"`execution-preview-details-${executionId}`\"\n\t\t>\n\t\t\t<div>\n\t\t\t\t<n8n-text size=\"large\" color=\"text-base\" :bold=\"true\" data-test-id=\"execution-time\">{{\n\t\t\t\t\texecutionUIDetails?.startTime\n\t\t\t\t}}</n8n-text\n\t\t\t\t><br />\n\t\t\t\t<n8n-spinner\n\t\t\t\t\tv-if=\"executionUIDetails?.name === 'running'\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t:class=\"[$style.spinner, 'mr-4xs']\"\n\t\t\t\t/>\n\t\t\t\t<n8n-text\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t:class=\"[$style.status, $style[executionUIDetails.name]]\"\n\t\t\t\t\tdata-test-id=\"execution-preview-label\"\n\t\t\t\t>\n\t\t\t\t\t{{ executionUIDetails.label }}\n\t\t\t\t</n8n-text>\n\t\t\t\t{{ ' ' }}\n\t\t\t\t<n8n-text v-if=\"executionUIDetails.name === 'running'\" color=\"text-base\" size=\"medium\">\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText('executionDetails.runningTimeRunning', {\n\t\t\t\t\t\t\tinterpolate: { time: executionUIDetails?.runningTime },\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t\t| ID#{{ execution.id }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-text\n\t\t\t\t\tv-else-if=\"executionUIDetails.name !== 'waiting'\"\n\t\t\t\t\tcolor=\"text-base\"\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\tdata-test-id=\"execution-preview-id\"\n\t\t\t\t>\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText('executionDetails.runningTimeFinished', {\n\t\t\t\t\t\t\tinterpolate: { time: executionUIDetails?.runningTime ?? 'unknown' },\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t\t| ID#{{ execution.id }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-text\n\t\t\t\t\tv-else-if=\"executionUIDetails?.name === 'waiting'\"\n\t\t\t\t\tcolor=\"text-base\"\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t| ID#{{ execution.id }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<br /><n8n-text v-if=\"execution.mode === 'retry'\" color=\"text-base\" size=\"medium\">\n\t\t\t\t\t{{ $locale.baseText('executionDetails.retry') }}\n\t\t\t\t\t<router-link\n\t\t\t\t\t\t:class=\"$style.executionLink\"\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\tworkflowId: execution.workflowId,\n\t\t\t\t\t\t\t\texecutionId: execution.retryOf,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t#{{ execution.retryOf }}\n\t\t\t\t\t</router-link>\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<n8n-button size=\"medium\" :type=\"debugButtonData.type\" :class=\"$style.debugLink\">\n\t\t\t\t\t<router-link\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: VIEWS.EXECUTION_DEBUG,\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\tname: execution.workflowId,\n\t\t\t\t\t\t\t\texecutionId: execution.id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span data-test-id=\"execution-debug-button\" @click=\"handleDebugLinkClick\">{{\n\t\t\t\t\t\t\tdebugButtonData.text\n\t\t\t\t\t\t}}</span>\n\t\t\t\t\t</router-link>\n\t\t\t\t</n8n-button>\n\n\t\t\t\t<ElDropdown\n\t\t\t\t\tv-if=\"isRetriable\"\n\t\t\t\t\tref=\"retryDropdown\"\n\t\t\t\t\ttrigger=\"click\"\n\t\t\t\t\tclass=\"mr-xs\"\n\t\t\t\t\t@command=\"handleRetryClick\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"retry-button\">\n\t\t\t\t\t\t<n8n-icon-button\n\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t\t:title=\"$locale.baseText('executionsList.retryExecution')\"\n\t\t\t\t\t\t\ticon=\"redo\"\n\t\t\t\t\t\t\tdata-test-id=\"execution-preview-retry-button\"\n\t\t\t\t\t\t\t@blur=\"onRetryButtonBlur\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t\t<template #dropdown>\n\t\t\t\t\t\t<el-dropdown-menu>\n\t\t\t\t\t\t\t<el-dropdown-item command=\"current-workflow\">\n\t\t\t\t\t\t\t\t{{ $locale.baseText('executionsList.retryWithCurrentlySavedWorkflow') }}\n\t\t\t\t\t\t\t</el-dropdown-item>\n\t\t\t\t\t\t\t<el-dropdown-item command=\"original-workflow\">\n\t\t\t\t\t\t\t\t{{ $locale.baseText('executionsList.retryWithOriginalWorkflow') }}\n\t\t\t\t\t\t\t</el-dropdown-item>\n\t\t\t\t\t\t</el-dropdown-menu>\n\t\t\t\t\t</template>\n\t\t\t\t</ElDropdown>\n\t\t\t\t<n8n-icon-button\n\t\t\t\t\t:title=\"$locale.baseText('executionDetails.deleteExecution')\"\n\t\t\t\t\ticon=\"trash\"\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\tdata-test-id=\"execution-preview-delete-button\"\n\t\t\t\t\t@click=\"onDeleteExecution\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<WorkflowPreview\n\t\t\tmode=\"execution\"\n\t\t\tloader-type=\"spinner\"\n\t\t\t:execution-id=\"executionId\"\n\t\t\t:execution-mode=\"executionMode\"\n\t\t/>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { ElDropdown } from 'element-plus';\nimport { useExecutionDebugging } from '@/composables/useExecutionDebugging';\nimport { useMessage } from '@/composables/useMessage';\nimport WorkflowPreview from '@/components/WorkflowPreview.vue';\nimport { MODAL_CONFIRM, VIEWS } from '@/constants';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport type { IExecutionUIData } from '@/composables/useExecutionHelpers';\nimport { useExecutionHelpers } from '@/composables/useExecutionHelpers';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { mapStores } from 'pinia';\n\ntype RetryDropdownRef = InstanceType<typeof ElDropdown> & { hide: () => void };\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsPreview',\n\tcomponents: {\n\t\tElDropdown,\n\t\tWorkflowPreview,\n\t},\n\tprops: {\n\t\texecution: {\n\t\t\ttype: Object as () => ExecutionSummary | null,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tsetup() {\n\t\tconst executionHelpers = useExecutionHelpers();\n\n\t\treturn {\n\t\t\tVIEWS,\n\t\t\texecutionHelpers,\n\t\t\t...useMessage(),\n\t\t\t...useExecutionDebugging(),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useWorkflowsStore),\n\t\texecutionId(): string {\n\t\t\treturn this.$route.params.executionId as string;\n\t\t},\n\t\texecutionUIDetails(): IExecutionUIData | null {\n\t\t\treturn this.execution ? this.executionHelpers.getUIDetails(this.execution) : null;\n\t\t},\n\t\texecutionMode(): string {\n\t\t\treturn this.execution?.mode || '';\n\t\t},\n\t\tdebugButtonData(): Record<string, string> {\n\t\t\treturn this.execution?.status === 'success'\n\t\t\t\t? {\n\t\t\t\t\t\ttext: this.$locale.baseText('executionsList.debug.button.copyToEditor'),\n\t\t\t\t\t\ttype: 'secondary',\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\ttext: this.$locale.baseText('executionsList.debug.button.debugInEditor'),\n\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t};\n\t\t},\n\t\tisRetriable(): boolean {\n\t\t\treturn !!this.execution && this.executionHelpers.isExecutionRetriable(this.execution);\n\t\t},\n\t},\n\tmethods: {\n\t\tasync onDeleteExecution(): Promise<void> {\n\t\t\tconst deleteConfirmed = await this.confirm(\n\t\t\t\tthis.$locale.baseText('executionDetails.confirmMessage.message'),\n\t\t\t\tthis.$locale.baseText('executionDetails.confirmMessage.headline'),\n\t\t\t\t{\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t'executionDetails.confirmMessage.confirmButtonText',\n\t\t\t\t\t),\n\t\t\t\t\tcancelButtonText: '',\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (deleteConfirmed !== MODAL_CONFIRM) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$emit('deleteCurrentExecution');\n\t\t},\n\t\thandleRetryClick(command: string): void {\n\t\t\tthis.$emit('retryExecution', { execution: this.execution, command });\n\t\t},\n\t\thandleStopClick(): void {\n\t\t\tthis.$emit('stopExecution');\n\t\t},\n\t\tonRetryButtonBlur(event: FocusEvent): void {\n\t\t\t// Hide dropdown when clicking outside of current document\n\t\t\tconst retryDropdownRef = this.$refs.retryDropdown as RetryDropdownRef | undefined;\n\t\t\tif (retryDropdownRef && event.relatedTarget === null) {\n\t\t\t\tretryDropdownRef.handleClose();\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.previewContainer {\n\tposition: relative;\n\theight: 100%;\n\toverflow: hidden;\n}\n\n.executionDetails {\n\tposition: absolute;\n\tpadding: var(--spacing-m);\n\tpadding-right: var(--spacing-xl);\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\ttransition: all 150ms ease-in-out;\n\tpointer-events: none;\n\n\t> div:last-child {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t& * {\n\t\tpointer-events: all;\n\t}\n}\n\n.spinner {\n\tdiv div {\n\t\twidth: 30px;\n\t\theight: 30px;\n\t\tborder-width: 2px;\n\t}\n}\n\n.running,\n.spinner {\n\tcolor: var(--color-warning);\n}\n.waiting {\n\tcolor: var(--color-secondary);\n}\n.success {\n\tcolor: var(--color-success);\n}\n.error {\n\tcolor: var(--color-danger);\n}\n\n.runningInfo {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tmargin-top: var(--spacing-4xl);\n}\n\n.runningMessage {\n\twidth: 200px;\n\tmargin-top: var(--spacing-l);\n\ttext-align: center;\n}\n\n.debugLink {\n\tmargin-right: var(--spacing-xs);\n\tpadding: 0;\n\n\ta > span {\n\t\tdisplay: block;\n\t\tpadding: var(--button-padding-vertical, var(--spacing-xs))\n\t\t\tvar(--button-padding-horizontal, var(--spacing-m));\n\t}\n}\n</style>\n"],"names":["_sfc_main","defineComponent","ElDropdown","WorkflowPreview","executionHelpers","useExecutionHelpers","VIEWS","useMessage","useExecutionDebugging","mapStores","useWorkflowsStore","_a","MODAL_CONFIRM","command","event","retryDropdownRef","_hoisted_1","_createElementVNode","_resolveComponent","_ctx","_openBlock","_createElementBlock","$style","_normalizeClass","_createVNode","_component_n8n_spinner","_component_n8n_text","_createTextVNode","_toDisplayString","_component_n8n_button","execution","executionUIDetails","_b","_createBlock","_createCommentVNode","_hoisted_3","_withCtx","_component_router_link","debugButtonData","isRetriable","_component_ElDropdown","_component_el_dropdown_menu","_component_el_dropdown_item","$locale","_hoisted_4","_component_n8n_icon_button","_component_WorkflowPreview"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkflowExecutionsPreview-Yw0HRwQz.js","sources":["../../src/components/executions/workflow/WorkflowExecutionsPreview.vue"],"sourcesContent":["<template>\n\t<div v-if=\"executionUIDetails?.name === 'running'\" :class=\"$style.runningInfo\">\n\t\t<div :class=\"$style.spinner\">\n\t\t\t<n8n-spinner type=\"ring\" />\n\t\t</div>\n\t\t<n8n-text :class=\"$style.runningMessage\" color=\"text-light\">\n\t\t\t{{ $locale.baseText('executionDetails.runningMessage') }}\n\t\t</n8n-text>\n\t\t<n8n-button class=\"mt-l\" type=\"tertiary\" @click=\"handleStopClick\">\n\t\t\t{{ $locale.baseText('executionsList.stopExecution') }}\n\t\t</n8n-button>\n\t</div>\n\t<div v-else :class=\"$style.previewContainer\">\n\t\t<div\n\t\t\tv-if=\"execution\"\n\t\t\t:class=\"$style.executionDetails\"\n\t\t\t:data-test-id=\"`execution-preview-details-${executionId}`\"\n\t\t>\n\t\t\t<div>\n\t\t\t\t<n8n-text size=\"large\" color=\"text-base\" :bold=\"true\" data-test-id=\"execution-time\">{{\n\t\t\t\t\texecutionUIDetails?.startTime\n\t\t\t\t}}</n8n-text\n\t\t\t\t><br />\n\t\t\t\t<n8n-spinner\n\t\t\t\t\tv-if=\"executionUIDetails?.name === 'running'\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t:class=\"[$style.spinner, 'mr-4xs']\"\n\t\t\t\t/>\n\t\t\t\t<n8n-text\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t:class=\"[$style.status, $style[executionUIDetails.name]]\"\n\t\t\t\t\tdata-test-id=\"execution-preview-label\"\n\t\t\t\t>\n\t\t\t\t\t{{ executionUIDetails.label }}\n\t\t\t\t</n8n-text>\n\t\t\t\t{{ ' ' }}\n\t\t\t\t<n8n-text v-if=\"executionUIDetails.name === 'running'\" color=\"text-base\" size=\"medium\">\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText('executionDetails.runningTimeRunning', {\n\t\t\t\t\t\t\tinterpolate: { time: executionUIDetails?.runningTime },\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t\t| ID#{{ execution.id }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-text\n\t\t\t\t\tv-else-if=\"executionUIDetails.name !== 'waiting'\"\n\t\t\t\t\tcolor=\"text-base\"\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\tdata-test-id=\"execution-preview-id\"\n\t\t\t\t>\n\t\t\t\t\t{{\n\t\t\t\t\t\t$locale.baseText('executionDetails.runningTimeFinished', {\n\t\t\t\t\t\t\tinterpolate: { time: executionUIDetails?.runningTime ?? 'unknown' },\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t\t| ID#{{ execution.id }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-text\n\t\t\t\t\tv-else-if=\"executionUIDetails?.name === 'waiting'\"\n\t\t\t\t\tcolor=\"text-base\"\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t| ID#{{ execution.id }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<br /><n8n-text v-if=\"execution.mode === 'retry'\" color=\"text-base\" size=\"medium\">\n\t\t\t\t\t{{ $locale.baseText('executionDetails.retry') }}\n\t\t\t\t\t<router-link\n\t\t\t\t\t\t:class=\"$style.executionLink\"\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\tworkflowId: execution.workflowId,\n\t\t\t\t\t\t\t\texecutionId: execution.retryOf,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t#{{ execution.retryOf }}\n\t\t\t\t\t</router-link>\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<n8n-button size=\"medium\" :type=\"debugButtonData.type\" :class=\"$style.debugLink\">\n\t\t\t\t\t<router-link\n\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\tname: VIEWS.EXECUTION_DEBUG,\n\t\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t\tname: execution.workflowId,\n\t\t\t\t\t\t\t\texecutionId: execution.id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span data-test-id=\"execution-debug-button\" @click=\"handleDebugLinkClick\">{{\n\t\t\t\t\t\t\tdebugButtonData.text\n\t\t\t\t\t\t}}</span>\n\t\t\t\t\t</router-link>\n\t\t\t\t</n8n-button>\n\n\t\t\t\t<ElDropdown\n\t\t\t\t\tv-if=\"isRetriable\"\n\t\t\t\t\tref=\"retryDropdown\"\n\t\t\t\t\ttrigger=\"click\"\n\t\t\t\t\tclass=\"mr-xs\"\n\t\t\t\t\t@command=\"handleRetryClick\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"retry-button\">\n\t\t\t\t\t\t<n8n-icon-button\n\t\t\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t\t\t:title=\"$locale.baseText('executionsList.retryExecution')\"\n\t\t\t\t\t\t\ticon=\"redo\"\n\t\t\t\t\t\t\tdata-test-id=\"execution-preview-retry-button\"\n\t\t\t\t\t\t\t@blur=\"onRetryButtonBlur\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t\t<template #dropdown>\n\t\t\t\t\t\t<el-dropdown-menu>\n\t\t\t\t\t\t\t<el-dropdown-item command=\"current-workflow\">\n\t\t\t\t\t\t\t\t{{ $locale.baseText('executionsList.retryWithCurrentlySavedWorkflow') }}\n\t\t\t\t\t\t\t</el-dropdown-item>\n\t\t\t\t\t\t\t<el-dropdown-item command=\"original-workflow\">\n\t\t\t\t\t\t\t\t{{ $locale.baseText('executionsList.retryWithOriginalWorkflow') }}\n\t\t\t\t\t\t\t</el-dropdown-item>\n\t\t\t\t\t\t</el-dropdown-menu>\n\t\t\t\t\t</template>\n\t\t\t\t</ElDropdown>\n\t\t\t\t<n8n-icon-button\n\t\t\t\t\t:title=\"$locale.baseText('executionDetails.deleteExecution')\"\n\t\t\t\t\ticon=\"trash\"\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\tdata-test-id=\"execution-preview-delete-button\"\n\t\t\t\t\t@click=\"onDeleteExecution\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t\t<WorkflowPreview\n\t\t\tmode=\"execution\"\n\t\t\tloader-type=\"spinner\"\n\t\t\t:execution-id=\"executionId\"\n\t\t\t:execution-mode=\"executionMode\"\n\t\t/>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { ElDropdown } from 'element-plus';\nimport { useExecutionDebugging } from '@/composables/useExecutionDebugging';\nimport { useMessage } from '@/composables/useMessage';\nimport WorkflowPreview from '@/components/WorkflowPreview.vue';\nimport { MODAL_CONFIRM, VIEWS } from '@/constants';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport type { IExecutionUIData } from '@/composables/useExecutionHelpers';\nimport { useExecutionHelpers } from '@/composables/useExecutionHelpers';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { mapStores } from 'pinia';\n\ntype RetryDropdownRef = InstanceType<typeof ElDropdown> & { hide: () => void };\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsPreview',\n\tcomponents: {\n\t\tElDropdown,\n\t\tWorkflowPreview,\n\t},\n\tprops: {\n\t\texecution: {\n\t\t\ttype: Object as () => ExecutionSummary | null,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tsetup() {\n\t\tconst executionHelpers = useExecutionHelpers();\n\n\t\treturn {\n\t\t\tVIEWS,\n\t\t\texecutionHelpers,\n\t\t\t...useMessage(),\n\t\t\t...useExecutionDebugging(),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useWorkflowsStore),\n\t\texecutionId(): string {\n\t\t\treturn this.$route.params.executionId as string;\n\t\t},\n\t\texecutionUIDetails(): IExecutionUIData | null {\n\t\t\treturn this.execution ? this.executionHelpers.getUIDetails(this.execution) : null;\n\t\t},\n\t\texecutionMode(): string {\n\t\t\treturn this.execution?.mode || '';\n\t\t},\n\t\tdebugButtonData(): Record<string, string> {\n\t\t\treturn this.execution?.status === 'success'\n\t\t\t\t? {\n\t\t\t\t\t\ttext: this.$locale.baseText('executionsList.debug.button.copyToEditor'),\n\t\t\t\t\t\ttype: 'secondary',\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\ttext: this.$locale.baseText('executionsList.debug.button.debugInEditor'),\n\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t};\n\t\t},\n\t\tisRetriable(): boolean {\n\t\t\treturn !!this.execution && this.executionHelpers.isExecutionRetriable(this.execution);\n\t\t},\n\t},\n\tmethods: {\n\t\tasync onDeleteExecution(): Promise<void> {\n\t\t\tconst deleteConfirmed = await this.confirm(\n\t\t\t\tthis.$locale.baseText('executionDetails.confirmMessage.message'),\n\t\t\t\tthis.$locale.baseText('executionDetails.confirmMessage.headline'),\n\t\t\t\t{\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t'executionDetails.confirmMessage.confirmButtonText',\n\t\t\t\t\t),\n\t\t\t\t\tcancelButtonText: '',\n\t\t\t\t},\n\t\t\t);\n\t\t\tif (deleteConfirmed !== MODAL_CONFIRM) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.$emit('deleteCurrentExecution');\n\t\t},\n\t\thandleRetryClick(command: string): void {\n\t\t\tthis.$emit('retryExecution', { execution: this.execution, command });\n\t\t},\n\t\thandleStopClick(): void {\n\t\t\tthis.$emit('stopExecution');\n\t\t},\n\t\tonRetryButtonBlur(event: FocusEvent): void {\n\t\t\t// Hide dropdown when clicking outside of current document\n\t\t\tconst retryDropdownRef = this.$refs.retryDropdown as RetryDropdownRef | undefined;\n\t\t\tif (retryDropdownRef && event.relatedTarget === null) {\n\t\t\t\tretryDropdownRef.handleClose();\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.previewContainer {\n\tposition: relative;\n\theight: 100%;\n\toverflow: hidden;\n}\n\n.executionDetails {\n\tposition: absolute;\n\tpadding: var(--spacing-m);\n\tpadding-right: var(--spacing-xl);\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\ttransition: all 150ms ease-in-out;\n\tpointer-events: none;\n\n\t> div:last-child {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t& * {\n\t\tpointer-events: all;\n\t}\n}\n\n.spinner {\n\tdiv div {\n\t\twidth: 30px;\n\t\theight: 30px;\n\t\tborder-width: 2px;\n\t}\n}\n\n.running,\n.spinner {\n\tcolor: var(--color-warning);\n}\n.waiting {\n\tcolor: var(--color-secondary);\n}\n.success {\n\tcolor: var(--color-success);\n}\n.error {\n\tcolor: var(--color-danger);\n}\n\n.runningInfo {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tmargin-top: var(--spacing-4xl);\n}\n\n.runningMessage {\n\twidth: 200px;\n\tmargin-top: var(--spacing-l);\n\ttext-align: center;\n}\n\n.debugLink {\n\tmargin-right: var(--spacing-xs);\n\tpadding: 0;\n\n\ta > span {\n\t\tdisplay: block;\n\t\tpadding: var(--button-padding-vertical, var(--spacing-xs))\n\t\t\tvar(--button-padding-horizontal, var(--spacing-m));\n\t}\n}\n</style>\n"],"names":["_sfc_main","defineComponent","ElDropdown","WorkflowPreview","executionHelpers","useExecutionHelpers","VIEWS","useMessage","useExecutionDebugging","mapStores","useWorkflowsStore","_a","MODAL_CONFIRM","command","event","retryDropdownRef","_hoisted_1","_createElementVNode","_resolveComponent","_ctx","_openBlock","_createElementBlock","$style","_normalizeClass","_createVNode","_component_n8n_spinner","_component_n8n_text","_createTextVNode","_toDisplayString","_component_n8n_button","execution","executionUIDetails","_b","_createBlock","_createCommentVNode","_hoisted_3","_withCtx","_component_router_link","debugButtonData","isRetriable","_component_ElDropdown","_component_el_dropdown_menu","_component_el_dropdown_item","$locale","_hoisted_4","_component_n8n_icon_button","_component_WorkflowPreview"],"mappings":"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"}
|
package/dist/assets/{WorkflowExecutionsView-Iwwaw9Lt.js → WorkflowExecutionsView-dwh6ZDgY.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{m as z,s as re}from"./pinia-28uZ5ZtB.js";import{G as D,l as u,m as $,T as d,O as x,p as b,S as k,R as w,I as l,M as _,Q as y,ag as c,F as ae,a7 as ue,a0 as le,aG as P,az as ce,r as W,e as C,d as V,b as de,y as fe,u as me}from"./vendor-KLOX9vbo.js";import{V as T,v as U,_ as F,M as pe,aa as xe,fN as he,aB as q,e as G,u as we,l as ye,y as X,a4 as Ee,a9 as ge,x as ve,fU as ke,O as _e}from"./n8n-0pza0mdA.js";import{E as $e,a as Te}from"./ExecutionsFilter-RyBW2SgR.js";import{u as be}from"./useExecutionHelpers-6MUmu_Xs.js";import{W as Ie}from"./WorkflowExecutionsInfoAccordion-9gkfchSQ.js";import{e as j,H as Re,c as Se,d as Le,u as Me,ay as We}from"./index-Qw68KAhz.js";import"./lodash-es-wI9avrph.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-JpwZAlxf.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./dateFormatter-U0u3-5gZ.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const Ce=D({name:"WorkflowExecutionsCard",components:{ExecutionsTime:$e},props:{execution:{type:Object,required:!0},highlight:{type:Boolean,default:!1},showGap:{type:Boolean,default:!1}},setup(){return{executionHelpers:be(),VIEWS:T}},computed:{...z(U),currentWorkflow(){return this.$route.params.name||this.workflowsStore.workflowId},retryExecutionActions(){return[{id:"current-workflow",label:this.$locale.baseText("executionsList.retryWithCurrentlySavedWorkflow")},{id:"original-workflow",label:this.$locale.baseText("executionsList.retryWithOriginalWorkflow")}]},executionUIDetails(){return this.executionHelpers.getUIDetails(this.execution)},isActive(){return this.execution.id===this.$route.params.executionId},isRetriable(){return this.executionHelpers.isExecutionRetriable(this.execution)}},methods:{onRetryMenuItemSelect(e){this.$emit("retryExecution",{execution:this.execution,command:e})}}}),De="_WorkflowExecutionsCard_16ozu_1",Ae="_active_16ozu_8",Oe="_executionStatus_16ozu_11",ze="_executionLink_16ozu_14",Ue="_spinner_16ozu_17",Fe="_running_16ozu_17",Ne="_statusLabel_16ozu_24",He="_success_16ozu_29",Be="_waiting_16ozu_32",Ve="_error_16ozu_38",Pe="_unknown_16ozu_44",qe="_icon_16ozu_61",Ge="_icons_16ozu_66",Xe="_retry_16ozu_74",je="_manual_16ozu_77",Ke="_showGap_16ozu_85",Qe={WorkflowExecutionsCard:De,active:Ae,executionStatus:Oe,executionLink:ze,new:"_new_16ozu_17",spinner:Ue,running:Fe,statusLabel:Ne,success:He,waiting:Be,error:Ve,unknown:Pe,icon:qe,icons:Ge,retry:Xe,manual:je,showGap:Ke},Ye={key:0};function Je(e,t,s,f,n,I){const m=c("n8n-text"),E=c("n8n-spinner"),i=c("ExecutionsTime"),R=c("n8n-action-dropdown"),S=c("font-awesome-icon"),g=c("n8n-tooltip"),v=c("router-link");return u(),$("div",{class:l({"execution-card":!0,[e.$style.WorkflowExecutionsCard]:!0,[e.$style.active]:e.isActive,[e.$style[e.executionUIDetails.name]]:!0,[e.$style.highlight]:e.highlight,[e.$style.showGap]:e.showGap})},[d(v,{class:l(e.$style.executionLink),to:{name:e.VIEWS.EXECUTION_PREVIEW,params:{name:e.currentWorkflow,executionId:e.execution.id}},"data-test-execution-status":e.executionUIDetails.name},{default:x(()=>[b("div",{class:l(e.$style.description)},[d(m,{color:"text-dark",bold:!0,size:"medium","data-test-id":"execution-time"},{default:x(()=>[k(w(e.executionUIDetails.startTime),1)]),_:1}),b("div",{class:l(e.$style.executionStatus)},[e.executionUIDetails.name==="running"?(u(),_(E,{key:0,size:"small",class:l([e.$style.spinner,"mr-4xs"])},null,8,["class"])):y("",!0),d(m,{class:l(e.$style.statusLabel),size:"small"},{default:x(()=>[k(w(e.executionUIDetails.label),1)]),_:1},8,["class"]),k(" "+w(" ")+" "),e.executionUIDetails.name==="running"?(u(),_(m,{key:1,color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>[k(w(e.$locale.baseText("executionDetails.runningTimeRunning"))+" ",1),d(i,{"start-time":e.execution.startedAt},null,8,["start-time"])]),_:1},8,["color"])):e.executionUIDetails.runningTime!==""?(u(),_(m,{key:2,color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>{var r;return[k(w(e.$locale.baseText("executionDetails.runningTimeFinished",{interpolate:{time:(r=e.executionUIDetails)==null?void 0:r.runningTime}})),1)]}),_:1},8,["color"])):y("",!0)],2),e.execution.mode==="retry"?(u(),$("div",Ye,[d(m,{color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>[k(w(e.$locale.baseText("executionDetails.retry"))+" #"+w(e.execution.retryOf),1)]),_:1},8,["color"])])):y("",!0)],2),b("div",{class:l(e.$style.icons)},[e.isRetriable?(u(),_(R,{key:0,class:l([e.$style.icon,e.$style.retry]),items:e.retryExecutionActions,"activator-icon":"redo","data-test-id":"retry-execution-button",onSelect:e.onRetryMenuItemSelect},null,8,["class","items","onSelect"])):y("",!0),e.execution.mode==="manual"?(u(),_(g,{key:1,placement:"top"},{content:x(()=>[b("span",null,w(e.$locale.baseText("executionsList.test")),1)]),default:x(()=>[e.execution.mode==="manual"?(u(),_(S,{key:0,class:l([e.$style.icon,e.$style.manual]),icon:"flask"},null,8,["class"])):y("",!0)]),_:1})):y("",!0)],2)]),_:1},8,["class","to","data-test-execution-status"])],2)}const Ze={$style:Qe},et=F(Ce,[["render",Je],["__cssModules",Ze]]),tt=D({name:"WorkflowExecutionsSidebar",components:{WorkflowExecutionsCard:et,WorkflowExecutionsInfoAccordion:Ie,ExecutionsFilter:Te},props:{executions:{type:Array,required:!0},loading:{type:Boolean,default:!0},loadingMore:{type:Boolean,default:!1},temporaryExecution:{type:Object,default:null}},data(){return{VIEWS:T,filter:{}}},computed:{...z(j,U)},watch:{$route(e,t){t.name===T.EXECUTION_PREVIEW&&e.name===T.EXECUTION_HOME&&this.$router.go(-1)}},mounted(){this.checkListSize(),setTimeout(()=>{this.scrollToActiveCard()},1e3)},methods:{loadMore(e=20){if(!this.loading){const t=this.$refs.executionList;if(t){const s=t.offsetHeight-(t.scrollHeight-t.scrollTop);s>-10&&s<10&&this.$emit("loadMore",e)}}},onRetryExecution(e){this.$emit("retryExecution",e)},onRefresh(){this.$emit("refresh")},onFilterChanged(e){this.$emit("filterUpdated",e)},reloadExecutions(){this.$emit("reloadExecutions")},checkListSize(){var s;const e=this.$refs.container,t=this.$refs[`execution-${(s=this.executionsStore.activeExecution)==null?void 0:s.id}`];if(e&&(t!=null&&t.length)){const f=t[0].$el,n=Math.ceil(e.clientHeight/f.clientHeight);n>this.executions.length&&this.$emit("loadMore",n-this.executions.length)}},scrollToActiveCard(){var s;const e=this.$refs.executionList,t=this.$refs[`execution-${(s=this.executionsStore.activeExecution)==null?void 0:s.id}`];if(e&&(t!=null&&t.length)&&this.executionsStore.activeExecution){const n=t[0].$el.getBoundingClientRect(),I=200;n.top>e.offsetHeight&&e.scrollTo({top:n.top-I})}}}}),ot="_container_qg8we_1",nt="_heading_qg8we_12",st="_controls_qg8we_19",it="_executionList_qg8we_31",rt="_infoAccordion_qg8we_49",at="_noResultsContainer_qg8we_61",ut={container:ot,heading:nt,controls:st,executionList:it,infoAccordion:rt,noResultsContainer:at},lt={key:0,class:"mr-l"},ct={key:3,class:"mr-m"};function dt(e,t,s,f,n,I){const m=c("n8n-heading"),E=c("el-checkbox"),i=c("ExecutionsFilter"),R=c("n8n-loading"),S=c("n8n-text"),g=c("WorkflowExecutionsCard"),v=c("WorkflowExecutionsInfoAccordion");return u(),$("div",{ref:"container",class:l(["executions-sidebar",e.$style.container]),"data-test-id":"executions-sidebar"},[b("div",{class:l(e.$style.heading)},[d(m,{tag:"h2",size:"medium",color:"text-dark"},{default:x(()=>[k(w(e.$locale.baseText("generic.executions")),1)]),_:1})],2),b("div",{class:l(e.$style.controls)},[d(E,{modelValue:e.executionsStore.autoRefresh,"onUpdate:modelValue":[t[0]||(t[0]=r=>e.executionsStore.autoRefresh=r),t[1]||(t[1]=r=>e.$emit("update:autoRefresh",r))],"data-test-id":"auto-refresh-checkbox"},{default:x(()=>[k(w(e.$locale.baseText("executionsList.autoRefresh")),1)]),_:1},8,["modelValue"]),d(i,{"popover-placement":"left-start",onFilterChanged:e.onFilterChanged},null,8,["onFilterChanged"])],2),b("div",{ref:"executionList",class:l(e.$style.executionList),"data-test-id":"current-executions-list",onScroll:t[2]||(t[2]=r=>e.loadMore(20))},[e.loading?(u(),$("div",lt,[d(R,{variant:"rect"})])):y("",!0),!e.loading&&e.executions.length===0?(u(),$("div",{key:1,class:l(e.$style.noResultsContainer),"data-test-id":"execution-list-empty"},[d(S,{color:"text-base",size:"medium",align:"center"},{default:x(()=>[k(w(e.$locale.baseText("executionsLandingPage.noResults")),1)]),_:1})],2)):e.temporaryExecution?(u(),_(g,{key:2,ref:`execution-${e.temporaryExecution.id}`,execution:e.temporaryExecution,"data-test-id":`execution-details-${e.temporaryExecution.id}`,"show-gap":!0,onRetryExecution:e.onRetryExecution},null,8,["execution","data-test-id","onRetryExecution"])):y("",!0),d(le,{name:"executions-list"},{default:x(()=>[(u(!0),$(ae,null,ue(e.executions,r=>(u(),_(g,{key:r.id,ref_for:!0,ref:`execution-${r.id}`,execution:r,"data-test-id":`execution-details-${r.id}`,onRetryExecution:e.onRetryExecution},null,8,["execution","data-test-id","onRetryExecution"]))),128))]),_:1}),e.loadingMore?(u(),$("div",ct,[d(R,{variant:"p",rows:1})])):y("",!0)],34),b("div",{class:l(e.$style.infoAccordion)},[d(v,{"initially-expanded":!1})],2)],2)}const ft={$style:ut},mt=F(tt,[["render",dt],["__cssModules",ft],["__scopeId","data-v-96588486"]]),pt=D({name:"WorkflowExecutionsList",components:{WorkflowExecutionsSidebar:mt},async beforeRouteLeave(e,t,s){if(Re(e)===pe.WORKFLOW){s();return}if(this.uiStore.stateIsDirty){const f=await this.confirm(this.$locale.baseText("generic.unsavedWork.confirmMessage.message"),{title:this.$locale.baseText("generic.unsavedWork.confirmMessage.headline"),type:"warning",confirmButtonText:this.$locale.baseText("generic.unsavedWork.confirmMessage.confirmButtonText"),cancelButtonText:this.$locale.baseText("generic.unsavedWork.confirmMessage.cancelButtonText"),showClose:!0});f===xe?(await this.workflowHelpers.saveCurrentWorkflow({},!1)&&await this.settingsStore.fetchPromptsData(),this.uiStore.stateIsDirty=!1,s()):f===he&&(this.uiStore.stateIsDirty=!1,s())}else s()},props:{loading:{type:Boolean,default:!1},workflow:{type:Object,required:!0},executions:{type:Array,default:()=>[]},filters:{type:Object,default:()=>({})},execution:{type:Object,default:null},loadingMore:{type:Boolean,default:!1}},emits:["execution:delete","execution:stop","execution:retry","update:auto-refresh","update:filters","load-more","reload"],setup(){const e=ge(),t=P(),s=Se(t),{callDebounced:f}=q();return{externalHooks:e,workflowHelpers:s,callDebounced:f,...G(),...Le()}},computed:{...z(Me,X,ye,we),temporaryExecution(){return!this.executions.find(t=>{var s;return t.id===((s=this.execution)==null?void 0:s.id)})?this.execution:void 0},hidePreview(){return this.loading||!this.execution&&this.executions.length},filterApplied(){return this.filters.status!=="all"},workflowDataNotLoaded(){return this.workflow.id===Ee&&this.workflow.name===""},requestFilter(){return We({...this.filters,workflowId:this.workflow.id})}},watch:{execution(e){e&&this.$router.push({name:T.EXECUTION_PREVIEW,params:{name:this.workflow.id,executionId:e.id}}).catch(()=>{})}},methods:{async onDeleteCurrentExecution(){this.$emit("execution:delete",this.execution.id)},async onStopExecution(){this.$emit("execution:stop",this.execution.id)},async onRetryExecution(e){const t=e.command==="current-workflow";this.$emit("execution:retry",{id:e.execution.id,loadWorkflow:t})}}}),xt="_container_16o1g_1",ht="_content_16o1g_7",wt={container:xt,content:ht};function yt(e,t,s,f,n,I){const m=c("WorkflowExecutionsSidebar"),E=c("router-view");return u(),$("div",{class:l(e.$style.container)},[d(m,{executions:e.executions,loading:e.loading&&!e.executions.length,"loading-more":e.loadingMore,"temporary-execution":e.temporaryExecution,"onUpdate:autoRefresh":t[0]||(t[0]=i=>e.$emit("update:auto-refresh",i)),onReloadExecutions:t[1]||(t[1]=i=>e.$emit("reload")),onFilterUpdated:t[2]||(t[2]=i=>e.$emit("update:filters",i)),onLoadMore:t[3]||(t[3]=i=>e.$emit("load-more")),onRetryExecution:e.onRetryExecution},null,8,["executions","loading","loading-more","temporary-execution","onRetryExecution"]),e.hidePreview?y("",!0):(u(),$("div",{key:0,class:l(e.$style.content)},[d(E,{name:"executionPreview",execution:e.execution,onDeleteCurrentExecution:e.onDeleteCurrentExecution,onRetryExecution:e.onRetryExecution,onStopExecution:e.onStopExecution},null,8,["execution","onDeleteCurrentExecution","onRetryExecution","onStopExecution"])],2))],2)}const Et={$style:wt},gt=F(pt,[["render",yt],["__cssModules",Et]]),Zt=D({__name:"WorkflowExecutionsView",setup(e){const t=j(),s=U(),f=X(),n=ve(),I=_e(),m=ce(),E=P(),i=G(),{callDebounced:R}=q(),{filters:S}=re(t),g=W(!1),v=W(!1),r=W(),h=C(()=>m.params.name||s.workflowId),L=C(()=>m.params.executionId),p=C(()=>[...t.currentExecutionsByWorkflowId[h.value]??[],...t.executionsByWorkflowId[h.value]??[]]),K=C(()=>p.value.find(o=>o.id===L.value)??A.value),A=W();V(()=>h.value,async()=>{await B()}),V(()=>L.value,async()=>{await N()}),de(async()=>{await f.loadNodeTypesIfNotLoaded(),await Promise.all([f.loadNodeTypesIfNotLoaded(),B(),t.initialize(h.value)]),await N(),await Q(),document.addEventListener("visibilitychange",H)}),fe(()=>{t.reset(),document.removeEventListener("visibilitychange",H)});async function N(){if(L.value)try{A.value=await t.fetchExecution(L.value),t.activeExecution=A.value}catch(o){i.showError(o,n.baseText("nodeView.showError.openExecution.title"))}}function H(){document.visibilityState==="hidden"?t.stopAutoRefreshInterval():t.startAutoRefreshInterval(h.value)}async function Q(){m.name===T.EXECUTION_HOME&&p.value.length>0&&r.value&&await E.push({name:T.EXECUTION_PREVIEW,params:{name:r.value.id,executionId:p.value[0].id}}).catch(()=>{})}async function B(){let o;try{o=await s.fetchWorkflow(h.value)}catch(a){i.showError(a,n.baseText("nodeView.showError.openWorkflow.title"));return}if(!o)throw new Error(n.baseText("nodeView.workflowWithIdCouldNotBeFound",{interpolate:{workflowId:h.value}}));r.value=o}async function Y(o){o?await t.startAutoRefreshInterval(h.value):t.stopAutoRefreshInterval()}async function O(){if(h.value)try{await t.fetchExecutions({...t.executionsFilters,workflowId:h.value})}catch(o){o.errorCode===ke?i.showMessage({title:n.baseText("executionsList.showError.refreshData.title"),message:o.message,type:"error",duration:3500},!1):i.showError(o,n.baseText("executionsList.showError.refreshData.title"))}}async function J(o){t.reset(),t.setFilters(o),await t.initialize(h.value)}async function Z(o){try{await t.stopCurrentExecution(o),i.showMessage({title:n.baseText("executionsList.showMessage.stopExecution.title"),message:n.baseText("executionsList.showMessage.stopExecution.message",{interpolate:{activeExecutionId:o}}),type:"success"}),await O()}catch(a){i.showError(a,n.baseText("executionsList.showError.stopExecution.title"))}}async function ee(o){g.value=!0;try{const a=p.value.findIndex(ie=>ie.id===o),M=p.value[a+1]||p.value[a-1]||p.value[0];await t.deleteExecutions({ids:[o]}),r.value&&(p.value.length>0?await E.replace({name:T.EXECUTION_PREVIEW,params:{name:r.value.id,executionId:M.id}}).catch(()=>{}):await E.replace({name:T.EXECUTION_HOME,params:{name:r.value.id}}))}catch(a){g.value=!1,i.showError(a,n.baseText("executionsList.showError.handleDeleteSelected.title"));return}g.value=!1,i.showMessage({title:n.baseText("executionsList.showMessage.handleDeleteSelected.title"),type:"success"})}async function te(o){var a;i.showMessage({title:n.baseText("executionDetails.runningMessage"),type:"info",duration:2e3}),await oe(o),await O(),I.track("User clicked retry execution button",{workflow_id:(a=r.value)==null?void 0:a.id,execution_id:o.id,retry_type:o.loadWorkflow?"current":"original"})}async function oe(o){try{await t.retryExecution(o.id,o.loadWorkflow)?i.showMessage({title:n.baseText("executionsList.showMessage.retrySuccessfulTrue.title"),type:"success"}):i.showMessage({title:n.baseText("executionsList.showMessage.retrySuccessfulFalse.title"),type:"error"})}catch(a){i.showError(a,n.baseText("executionsList.showError.retryExecution.title"))}}async function ne(){v.value||await R(se,{debounceTime:1e3})}async function se(){var a;if((a=t.executionsFilters.status)!=null&&a.includes("running")||p.value.length>=t.executionsCount)return;v.value=!0;let o;p.value.length!==0&&(o=p.value.slice(-1)[0].id);try{await t.fetchExecutions(t.executionsFilters,o)}catch(M){v.value=!1,i.showError(M,n.baseText("executionsList.showError.loadMore.title"));return}v.value=!1}return(o,a)=>r.value?(u(),_(gt,{key:0,executions:p.value,execution:K.value,filters:me(S),workflow:r.value,loading:g.value,"loading-more":v.value,"onExecution:stop":Z,"onExecution:delete":ee,"onExecution:retry":te,"onUpdate:filters":J,"onUpdate:autoRefresh":Y,onLoadMore:ne,onReload:O},null,8,["executions","execution","filters","workflow","loading","loading-more"])):y("",!0)}});export{Zt as default};
|
|
2
|
-
//# sourceMappingURL=WorkflowExecutionsView-
|
|
1
|
+
import{m as z,s as re}from"./pinia-28uZ5ZtB.js";import{G as D,l as u,m as $,T as d,O as x,p as b,S as k,R as w,I as l,M as _,Q as y,ag as c,F as ae,a7 as ue,a0 as le,aG as P,az as ce,r as W,e as C,d as V,b as de,y as fe,u as me}from"./vendor-KLOX9vbo.js";import{V as T,v as U,_ as F,M as pe,aa as xe,fN as he,aB as q,e as G,u as we,l as ye,y as X,a4 as Ee,a9 as ge,x as ve,fU as ke,O as _e}from"./n8n-0pza0mdA.js";import{E as $e,a as Te}from"./ExecutionsFilter-W0_jymTM.js";import{u as be}from"./useExecutionHelpers-6MUmu_Xs.js";import{W as Ie}from"./WorkflowExecutionsInfoAccordion-Gm7eM0Un.js";import{e as j,H as Re,c as Se,d as Le,u as Me,ay as We}from"./index-6M_Mo9yq.js";import"./lodash-es-wI9avrph.js";import"./axios-s2RMMPhA.js";import"./flatted-jPn12Tq4.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-JpwZAlxf.js";import"./uuid-McvpxQtQ.js";import"./vue-i18n-Cb1fO4GA.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./dateFormatter-U0u3-5gZ.js";import"./@n8n/codemirror-lang-sql-_W1-z7Mc.js";import"./@lezer/common-1hBQ1gIF.js";import"./prettier-XiNuC5bg.js";import"./@jsplumb/util-DR0SB56A.js";import"./@jsplumb/core-MKwKlGip.js";import"./@jsplumb/common-Q5_tv_GT.js";import"./@jsplumb/connector-bezier-3dWY17R5.js";import"./@jsplumb/browser-ui-AlqFM-P6.js";import"./codemirror-lang-html-n8n-tmVw-mwA.js";import"./codemirror-lang-n8n-expression-71F4KZSz.js";import"./fast-json-stable-stringify-QF2cL2qw.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-ohcdYkQS.js";import"./vue3-touch-events-_RfbPMOD.js";import"./chart.js-JtqvIvkt.js";const Ce=D({name:"WorkflowExecutionsCard",components:{ExecutionsTime:$e},props:{execution:{type:Object,required:!0},highlight:{type:Boolean,default:!1},showGap:{type:Boolean,default:!1}},setup(){return{executionHelpers:be(),VIEWS:T}},computed:{...z(U),currentWorkflow(){return this.$route.params.name||this.workflowsStore.workflowId},retryExecutionActions(){return[{id:"current-workflow",label:this.$locale.baseText("executionsList.retryWithCurrentlySavedWorkflow")},{id:"original-workflow",label:this.$locale.baseText("executionsList.retryWithOriginalWorkflow")}]},executionUIDetails(){return this.executionHelpers.getUIDetails(this.execution)},isActive(){return this.execution.id===this.$route.params.executionId},isRetriable(){return this.executionHelpers.isExecutionRetriable(this.execution)}},methods:{onRetryMenuItemSelect(e){this.$emit("retryExecution",{execution:this.execution,command:e})}}}),De="_WorkflowExecutionsCard_16ozu_1",Ae="_active_16ozu_8",Oe="_executionStatus_16ozu_11",ze="_executionLink_16ozu_14",Ue="_spinner_16ozu_17",Fe="_running_16ozu_17",Ne="_statusLabel_16ozu_24",He="_success_16ozu_29",Be="_waiting_16ozu_32",Ve="_error_16ozu_38",Pe="_unknown_16ozu_44",qe="_icon_16ozu_61",Ge="_icons_16ozu_66",Xe="_retry_16ozu_74",je="_manual_16ozu_77",Ke="_showGap_16ozu_85",Qe={WorkflowExecutionsCard:De,active:Ae,executionStatus:Oe,executionLink:ze,new:"_new_16ozu_17",spinner:Ue,running:Fe,statusLabel:Ne,success:He,waiting:Be,error:Ve,unknown:Pe,icon:qe,icons:Ge,retry:Xe,manual:je,showGap:Ke},Ye={key:0};function Je(e,t,s,f,n,I){const m=c("n8n-text"),E=c("n8n-spinner"),i=c("ExecutionsTime"),R=c("n8n-action-dropdown"),S=c("font-awesome-icon"),g=c("n8n-tooltip"),v=c("router-link");return u(),$("div",{class:l({"execution-card":!0,[e.$style.WorkflowExecutionsCard]:!0,[e.$style.active]:e.isActive,[e.$style[e.executionUIDetails.name]]:!0,[e.$style.highlight]:e.highlight,[e.$style.showGap]:e.showGap})},[d(v,{class:l(e.$style.executionLink),to:{name:e.VIEWS.EXECUTION_PREVIEW,params:{name:e.currentWorkflow,executionId:e.execution.id}},"data-test-execution-status":e.executionUIDetails.name},{default:x(()=>[b("div",{class:l(e.$style.description)},[d(m,{color:"text-dark",bold:!0,size:"medium","data-test-id":"execution-time"},{default:x(()=>[k(w(e.executionUIDetails.startTime),1)]),_:1}),b("div",{class:l(e.$style.executionStatus)},[e.executionUIDetails.name==="running"?(u(),_(E,{key:0,size:"small",class:l([e.$style.spinner,"mr-4xs"])},null,8,["class"])):y("",!0),d(m,{class:l(e.$style.statusLabel),size:"small"},{default:x(()=>[k(w(e.executionUIDetails.label),1)]),_:1},8,["class"]),k(" "+w(" ")+" "),e.executionUIDetails.name==="running"?(u(),_(m,{key:1,color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>[k(w(e.$locale.baseText("executionDetails.runningTimeRunning"))+" ",1),d(i,{"start-time":e.execution.startedAt},null,8,["start-time"])]),_:1},8,["color"])):e.executionUIDetails.runningTime!==""?(u(),_(m,{key:2,color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>{var r;return[k(w(e.$locale.baseText("executionDetails.runningTimeFinished",{interpolate:{time:(r=e.executionUIDetails)==null?void 0:r.runningTime}})),1)]}),_:1},8,["color"])):y("",!0)],2),e.execution.mode==="retry"?(u(),$("div",Ye,[d(m,{color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>[k(w(e.$locale.baseText("executionDetails.retry"))+" #"+w(e.execution.retryOf),1)]),_:1},8,["color"])])):y("",!0)],2),b("div",{class:l(e.$style.icons)},[e.isRetriable?(u(),_(R,{key:0,class:l([e.$style.icon,e.$style.retry]),items:e.retryExecutionActions,"activator-icon":"redo","data-test-id":"retry-execution-button",onSelect:e.onRetryMenuItemSelect},null,8,["class","items","onSelect"])):y("",!0),e.execution.mode==="manual"?(u(),_(g,{key:1,placement:"top"},{content:x(()=>[b("span",null,w(e.$locale.baseText("executionsList.test")),1)]),default:x(()=>[e.execution.mode==="manual"?(u(),_(S,{key:0,class:l([e.$style.icon,e.$style.manual]),icon:"flask"},null,8,["class"])):y("",!0)]),_:1})):y("",!0)],2)]),_:1},8,["class","to","data-test-execution-status"])],2)}const Ze={$style:Qe},et=F(Ce,[["render",Je],["__cssModules",Ze]]),tt=D({name:"WorkflowExecutionsSidebar",components:{WorkflowExecutionsCard:et,WorkflowExecutionsInfoAccordion:Ie,ExecutionsFilter:Te},props:{executions:{type:Array,required:!0},loading:{type:Boolean,default:!0},loadingMore:{type:Boolean,default:!1},temporaryExecution:{type:Object,default:null}},data(){return{VIEWS:T,filter:{}}},computed:{...z(j,U)},watch:{$route(e,t){t.name===T.EXECUTION_PREVIEW&&e.name===T.EXECUTION_HOME&&this.$router.go(-1)}},mounted(){this.checkListSize(),setTimeout(()=>{this.scrollToActiveCard()},1e3)},methods:{loadMore(e=20){if(!this.loading){const t=this.$refs.executionList;if(t){const s=t.offsetHeight-(t.scrollHeight-t.scrollTop);s>-10&&s<10&&this.$emit("loadMore",e)}}},onRetryExecution(e){this.$emit("retryExecution",e)},onRefresh(){this.$emit("refresh")},onFilterChanged(e){this.$emit("filterUpdated",e)},reloadExecutions(){this.$emit("reloadExecutions")},checkListSize(){var s;const e=this.$refs.container,t=this.$refs[`execution-${(s=this.executionsStore.activeExecution)==null?void 0:s.id}`];if(e&&(t!=null&&t.length)){const f=t[0].$el,n=Math.ceil(e.clientHeight/f.clientHeight);n>this.executions.length&&this.$emit("loadMore",n-this.executions.length)}},scrollToActiveCard(){var s;const e=this.$refs.executionList,t=this.$refs[`execution-${(s=this.executionsStore.activeExecution)==null?void 0:s.id}`];if(e&&(t!=null&&t.length)&&this.executionsStore.activeExecution){const n=t[0].$el.getBoundingClientRect(),I=200;n.top>e.offsetHeight&&e.scrollTo({top:n.top-I})}}}}),ot="_container_qg8we_1",nt="_heading_qg8we_12",st="_controls_qg8we_19",it="_executionList_qg8we_31",rt="_infoAccordion_qg8we_49",at="_noResultsContainer_qg8we_61",ut={container:ot,heading:nt,controls:st,executionList:it,infoAccordion:rt,noResultsContainer:at},lt={key:0,class:"mr-l"},ct={key:3,class:"mr-m"};function dt(e,t,s,f,n,I){const m=c("n8n-heading"),E=c("el-checkbox"),i=c("ExecutionsFilter"),R=c("n8n-loading"),S=c("n8n-text"),g=c("WorkflowExecutionsCard"),v=c("WorkflowExecutionsInfoAccordion");return u(),$("div",{ref:"container",class:l(["executions-sidebar",e.$style.container]),"data-test-id":"executions-sidebar"},[b("div",{class:l(e.$style.heading)},[d(m,{tag:"h2",size:"medium",color:"text-dark"},{default:x(()=>[k(w(e.$locale.baseText("generic.executions")),1)]),_:1})],2),b("div",{class:l(e.$style.controls)},[d(E,{modelValue:e.executionsStore.autoRefresh,"onUpdate:modelValue":[t[0]||(t[0]=r=>e.executionsStore.autoRefresh=r),t[1]||(t[1]=r=>e.$emit("update:autoRefresh",r))],"data-test-id":"auto-refresh-checkbox"},{default:x(()=>[k(w(e.$locale.baseText("executionsList.autoRefresh")),1)]),_:1},8,["modelValue"]),d(i,{"popover-placement":"left-start",onFilterChanged:e.onFilterChanged},null,8,["onFilterChanged"])],2),b("div",{ref:"executionList",class:l(e.$style.executionList),"data-test-id":"current-executions-list",onScroll:t[2]||(t[2]=r=>e.loadMore(20))},[e.loading?(u(),$("div",lt,[d(R,{variant:"rect"})])):y("",!0),!e.loading&&e.executions.length===0?(u(),$("div",{key:1,class:l(e.$style.noResultsContainer),"data-test-id":"execution-list-empty"},[d(S,{color:"text-base",size:"medium",align:"center"},{default:x(()=>[k(w(e.$locale.baseText("executionsLandingPage.noResults")),1)]),_:1})],2)):e.temporaryExecution?(u(),_(g,{key:2,ref:`execution-${e.temporaryExecution.id}`,execution:e.temporaryExecution,"data-test-id":`execution-details-${e.temporaryExecution.id}`,"show-gap":!0,onRetryExecution:e.onRetryExecution},null,8,["execution","data-test-id","onRetryExecution"])):y("",!0),d(le,{name:"executions-list"},{default:x(()=>[(u(!0),$(ae,null,ue(e.executions,r=>(u(),_(g,{key:r.id,ref_for:!0,ref:`execution-${r.id}`,execution:r,"data-test-id":`execution-details-${r.id}`,onRetryExecution:e.onRetryExecution},null,8,["execution","data-test-id","onRetryExecution"]))),128))]),_:1}),e.loadingMore?(u(),$("div",ct,[d(R,{variant:"p",rows:1})])):y("",!0)],34),b("div",{class:l(e.$style.infoAccordion)},[d(v,{"initially-expanded":!1})],2)],2)}const ft={$style:ut},mt=F(tt,[["render",dt],["__cssModules",ft],["__scopeId","data-v-96588486"]]),pt=D({name:"WorkflowExecutionsList",components:{WorkflowExecutionsSidebar:mt},async beforeRouteLeave(e,t,s){if(Re(e)===pe.WORKFLOW){s();return}if(this.uiStore.stateIsDirty){const f=await this.confirm(this.$locale.baseText("generic.unsavedWork.confirmMessage.message"),{title:this.$locale.baseText("generic.unsavedWork.confirmMessage.headline"),type:"warning",confirmButtonText:this.$locale.baseText("generic.unsavedWork.confirmMessage.confirmButtonText"),cancelButtonText:this.$locale.baseText("generic.unsavedWork.confirmMessage.cancelButtonText"),showClose:!0});f===xe?(await this.workflowHelpers.saveCurrentWorkflow({},!1)&&await this.settingsStore.fetchPromptsData(),this.uiStore.stateIsDirty=!1,s()):f===he&&(this.uiStore.stateIsDirty=!1,s())}else s()},props:{loading:{type:Boolean,default:!1},workflow:{type:Object,required:!0},executions:{type:Array,default:()=>[]},filters:{type:Object,default:()=>({})},execution:{type:Object,default:null},loadingMore:{type:Boolean,default:!1}},emits:["execution:delete","execution:stop","execution:retry","update:auto-refresh","update:filters","load-more","reload"],setup(){const e=ge(),t=P(),s=Se(t),{callDebounced:f}=q();return{externalHooks:e,workflowHelpers:s,callDebounced:f,...G(),...Le()}},computed:{...z(Me,X,ye,we),temporaryExecution(){return!this.executions.find(t=>{var s;return t.id===((s=this.execution)==null?void 0:s.id)})?this.execution:void 0},hidePreview(){return this.loading||!this.execution&&this.executions.length},filterApplied(){return this.filters.status!=="all"},workflowDataNotLoaded(){return this.workflow.id===Ee&&this.workflow.name===""},requestFilter(){return We({...this.filters,workflowId:this.workflow.id})}},watch:{execution(e){e&&this.$router.push({name:T.EXECUTION_PREVIEW,params:{name:this.workflow.id,executionId:e.id}}).catch(()=>{})}},methods:{async onDeleteCurrentExecution(){this.$emit("execution:delete",this.execution.id)},async onStopExecution(){this.$emit("execution:stop",this.execution.id)},async onRetryExecution(e){const t=e.command==="current-workflow";this.$emit("execution:retry",{id:e.execution.id,loadWorkflow:t})}}}),xt="_container_16o1g_1",ht="_content_16o1g_7",wt={container:xt,content:ht};function yt(e,t,s,f,n,I){const m=c("WorkflowExecutionsSidebar"),E=c("router-view");return u(),$("div",{class:l(e.$style.container)},[d(m,{executions:e.executions,loading:e.loading&&!e.executions.length,"loading-more":e.loadingMore,"temporary-execution":e.temporaryExecution,"onUpdate:autoRefresh":t[0]||(t[0]=i=>e.$emit("update:auto-refresh",i)),onReloadExecutions:t[1]||(t[1]=i=>e.$emit("reload")),onFilterUpdated:t[2]||(t[2]=i=>e.$emit("update:filters",i)),onLoadMore:t[3]||(t[3]=i=>e.$emit("load-more")),onRetryExecution:e.onRetryExecution},null,8,["executions","loading","loading-more","temporary-execution","onRetryExecution"]),e.hidePreview?y("",!0):(u(),$("div",{key:0,class:l(e.$style.content)},[d(E,{name:"executionPreview",execution:e.execution,onDeleteCurrentExecution:e.onDeleteCurrentExecution,onRetryExecution:e.onRetryExecution,onStopExecution:e.onStopExecution},null,8,["execution","onDeleteCurrentExecution","onRetryExecution","onStopExecution"])],2))],2)}const Et={$style:wt},gt=F(pt,[["render",yt],["__cssModules",Et]]),Zt=D({__name:"WorkflowExecutionsView",setup(e){const t=j(),s=U(),f=X(),n=ve(),I=_e(),m=ce(),E=P(),i=G(),{callDebounced:R}=q(),{filters:S}=re(t),g=W(!1),v=W(!1),r=W(),h=C(()=>m.params.name||s.workflowId),L=C(()=>m.params.executionId),p=C(()=>[...t.currentExecutionsByWorkflowId[h.value]??[],...t.executionsByWorkflowId[h.value]??[]]),K=C(()=>p.value.find(o=>o.id===L.value)??A.value),A=W();V(()=>h.value,async()=>{await B()}),V(()=>L.value,async()=>{await N()}),de(async()=>{await f.loadNodeTypesIfNotLoaded(),await Promise.all([f.loadNodeTypesIfNotLoaded(),B(),t.initialize(h.value)]),await N(),await Q(),document.addEventListener("visibilitychange",H)}),fe(()=>{t.reset(),document.removeEventListener("visibilitychange",H)});async function N(){if(L.value)try{A.value=await t.fetchExecution(L.value),t.activeExecution=A.value}catch(o){i.showError(o,n.baseText("nodeView.showError.openExecution.title"))}}function H(){document.visibilityState==="hidden"?t.stopAutoRefreshInterval():t.startAutoRefreshInterval(h.value)}async function Q(){m.name===T.EXECUTION_HOME&&p.value.length>0&&r.value&&await E.push({name:T.EXECUTION_PREVIEW,params:{name:r.value.id,executionId:p.value[0].id}}).catch(()=>{})}async function B(){let o;try{o=await s.fetchWorkflow(h.value)}catch(a){i.showError(a,n.baseText("nodeView.showError.openWorkflow.title"));return}if(!o)throw new Error(n.baseText("nodeView.workflowWithIdCouldNotBeFound",{interpolate:{workflowId:h.value}}));r.value=o}async function Y(o){o?await t.startAutoRefreshInterval(h.value):t.stopAutoRefreshInterval()}async function O(){if(h.value)try{await t.fetchExecutions({...t.executionsFilters,workflowId:h.value})}catch(o){o.errorCode===ke?i.showMessage({title:n.baseText("executionsList.showError.refreshData.title"),message:o.message,type:"error",duration:3500},!1):i.showError(o,n.baseText("executionsList.showError.refreshData.title"))}}async function J(o){t.reset(),t.setFilters(o),await t.initialize(h.value)}async function Z(o){try{await t.stopCurrentExecution(o),i.showMessage({title:n.baseText("executionsList.showMessage.stopExecution.title"),message:n.baseText("executionsList.showMessage.stopExecution.message",{interpolate:{activeExecutionId:o}}),type:"success"}),await O()}catch(a){i.showError(a,n.baseText("executionsList.showError.stopExecution.title"))}}async function ee(o){g.value=!0;try{const a=p.value.findIndex(ie=>ie.id===o),M=p.value[a+1]||p.value[a-1]||p.value[0];await t.deleteExecutions({ids:[o]}),r.value&&(p.value.length>0?await E.replace({name:T.EXECUTION_PREVIEW,params:{name:r.value.id,executionId:M.id}}).catch(()=>{}):await E.replace({name:T.EXECUTION_HOME,params:{name:r.value.id}}))}catch(a){g.value=!1,i.showError(a,n.baseText("executionsList.showError.handleDeleteSelected.title"));return}g.value=!1,i.showMessage({title:n.baseText("executionsList.showMessage.handleDeleteSelected.title"),type:"success"})}async function te(o){var a;i.showMessage({title:n.baseText("executionDetails.runningMessage"),type:"info",duration:2e3}),await oe(o),await O(),I.track("User clicked retry execution button",{workflow_id:(a=r.value)==null?void 0:a.id,execution_id:o.id,retry_type:o.loadWorkflow?"current":"original"})}async function oe(o){try{await t.retryExecution(o.id,o.loadWorkflow)?i.showMessage({title:n.baseText("executionsList.showMessage.retrySuccessfulTrue.title"),type:"success"}):i.showMessage({title:n.baseText("executionsList.showMessage.retrySuccessfulFalse.title"),type:"error"})}catch(a){i.showError(a,n.baseText("executionsList.showError.retryExecution.title"))}}async function ne(){v.value||await R(se,{debounceTime:1e3})}async function se(){var a;if((a=t.executionsFilters.status)!=null&&a.includes("running")||p.value.length>=t.executionsCount)return;v.value=!0;let o;p.value.length!==0&&(o=p.value.slice(-1)[0].id);try{await t.fetchExecutions(t.executionsFilters,o)}catch(M){v.value=!1,i.showError(M,n.baseText("executionsList.showError.loadMore.title"));return}v.value=!1}return(o,a)=>r.value?(u(),_(gt,{key:0,executions:p.value,execution:K.value,filters:me(S),workflow:r.value,loading:g.value,"loading-more":v.value,"onExecution:stop":Z,"onExecution:delete":ee,"onExecution:retry":te,"onUpdate:filters":J,"onUpdate:autoRefresh":Y,onLoadMore:ne,onReload:O},null,8,["executions","execution","filters","workflow","loading","loading-more"])):y("",!0)}});export{Zt as default};
|
|
2
|
+
//# sourceMappingURL=WorkflowExecutionsView-dwh6ZDgY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutionsView-Iwwaw9Lt.js","sources":["../../src/components/executions/workflow/WorkflowExecutionsCard.vue","../../src/components/executions/workflow/WorkflowExecutionsSidebar.vue","../../src/components/executions/workflow/WorkflowExecutionsList.vue","../../src/views/WorkflowExecutionsView.vue"],"sourcesContent":["<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['execution-card']: true,\n\t\t\t[$style.WorkflowExecutionsCard]: true,\n\t\t\t[$style.active]: isActive,\n\t\t\t[$style[executionUIDetails.name]]: true,\n\t\t\t[$style.highlight]: highlight,\n\t\t\t[$style.showGap]: showGap,\n\t\t}\"\n\t>\n\t\t<router-link\n\t\t\t:class=\"$style.executionLink\"\n\t\t\t:to=\"{\n\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\tparams: { name: currentWorkflow, executionId: execution.id },\n\t\t\t}\"\n\t\t\t:data-test-execution-status=\"executionUIDetails.name\"\n\t\t>\n\t\t\t<div :class=\"$style.description\">\n\t\t\t\t<n8n-text color=\"text-dark\" :bold=\"true\" size=\"medium\" data-test-id=\"execution-time\">\n\t\t\t\t\t{{ executionUIDetails.startTime }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<div :class=\"$style.executionStatus\">\n\t\t\t\t\t<n8n-spinner\n\t\t\t\t\t\tv-if=\"executionUIDetails.name === 'running'\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t:class=\"[$style.spinner, 'mr-4xs']\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-text :class=\"$style.statusLabel\" size=\"small\">{{\n\t\t\t\t\t\texecutionUIDetails.label\n\t\t\t\t\t}}</n8n-text>\n\t\t\t\t\t{{ ' ' }}\n\t\t\t\t\t<n8n-text\n\t\t\t\t\t\tv-if=\"executionUIDetails.name === 'running'\"\n\t\t\t\t\t\t:color=\"isActive ? 'text-dark' : 'text-base'\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ $locale.baseText('executionDetails.runningTimeRunning') }}\n\t\t\t\t\t\t<ExecutionsTime :start-time=\"execution.startedAt\" />\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text\n\t\t\t\t\t\tv-else-if=\"executionUIDetails.runningTime !== ''\"\n\t\t\t\t\t\t:color=\"isActive ? 'text-dark' : 'text-base'\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$locale.baseText('executionDetails.runningTimeFinished', {\n\t\t\t\t\t\t\t\tinterpolate: { time: executionUIDetails?.runningTime },\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"execution.mode === 'retry'\">\n\t\t\t\t\t<n8n-text :color=\"isActive ? 'text-dark' : 'text-base'\" size=\"small\">\n\t\t\t\t\t\t{{ $locale.baseText('executionDetails.retry') }} #{{ execution.retryOf }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.icons\">\n\t\t\t\t<n8n-action-dropdown\n\t\t\t\t\tv-if=\"isRetriable\"\n\t\t\t\t\t:class=\"[$style.icon, $style.retry]\"\n\t\t\t\t\t:items=\"retryExecutionActions\"\n\t\t\t\t\tactivator-icon=\"redo\"\n\t\t\t\t\tdata-test-id=\"retry-execution-button\"\n\t\t\t\t\t@select=\"onRetryMenuItemSelect\"\n\t\t\t\t/>\n\t\t\t\t<n8n-tooltip v-if=\"execution.mode === 'manual'\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<span>{{ $locale.baseText('executionsList.test') }}</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\tv-if=\"execution.mode === 'manual'\"\n\t\t\t\t\t\t:class=\"[$style.icon, $style.manual]\"\n\t\t\t\t\t\ticon=\"flask\"\n\t\t\t\t\t/>\n\t\t\t\t</n8n-tooltip>\n\t\t\t</div>\n\t\t</router-link>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { IExecutionUIData } from '@/composables/useExecutionHelpers';\nimport { VIEWS } from '@/constants';\nimport ExecutionsTime from '@/components/executions/ExecutionsTime.vue';\nimport { useExecutionHelpers } from '@/composables/useExecutionHelpers';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport { mapStores } from 'pinia';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsCard',\n\tcomponents: {\n\t\tExecutionsTime,\n\t},\n\tprops: {\n\t\texecution: {\n\t\t\ttype: Object as () => ExecutionSummary,\n\t\t\trequired: true,\n\t\t},\n\t\thighlight: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tshowGap: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tsetup() {\n\t\tconst executionHelpers = useExecutionHelpers();\n\n\t\treturn {\n\t\t\texecutionHelpers,\n\t\t\tVIEWS,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useWorkflowsStore),\n\t\tcurrentWorkflow(): string {\n\t\t\treturn (this.$route.params.name as string) || this.workflowsStore.workflowId;\n\t\t},\n\t\tretryExecutionActions(): object[] {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'current-workflow',\n\t\t\t\t\tlabel: this.$locale.baseText('executionsList.retryWithCurrentlySavedWorkflow'),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'original-workflow',\n\t\t\t\t\tlabel: this.$locale.baseText('executionsList.retryWithOriginalWorkflow'),\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t\texecutionUIDetails(): IExecutionUIData {\n\t\t\treturn this.executionHelpers.getUIDetails(this.execution);\n\t\t},\n\t\tisActive(): boolean {\n\t\t\treturn this.execution.id === this.$route.params.executionId;\n\t\t},\n\t\tisRetriable(): boolean {\n\t\t\treturn this.executionHelpers.isExecutionRetriable(this.execution);\n\t\t},\n\t},\n\tmethods: {\n\t\tonRetryMenuItemSelect(action: string): void {\n\t\t\tthis.$emit('retryExecution', { execution: this.execution, command: action });\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n@import '@/styles/variables';\n\n.WorkflowExecutionsCard {\n\t--execution-list-item-background: var(--color-foreground-xlight);\n\t--execution-list-item-highlight-background: var(--color-warning-tint-1);\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding-right: var(--spacing-m);\n\n\t&.active {\n\t\tborder-left: var(--spacing-4xs) var(--border-style-base) transparent !important;\n\n\t\t.executionStatus {\n\t\t\tcolor: var(--color-text-dark) !important;\n\t\t}\n\t}\n\n\t&:hover,\n\t&.active {\n\t\t.executionLink {\n\t\t\t--execution-list-item-background: var(--color-foreground-light);\n\t\t}\n\t}\n\n\t&.new,\n\t&.running {\n\t\t.spinner {\n\t\t\tposition: relative;\n\t\t\ttop: 1px;\n\t\t}\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-running);\n\t\t}\n\t\t.statusLabel,\n\t\t.spinner {\n\t\t\tcolor: var(--color-warning);\n\t\t}\n\t}\n\n\t&.success {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-success);\n\t\t}\n\t}\n\n\t&.waiting {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-waiting);\n\t\t}\n\t\t.statusLabel {\n\t\t\tcolor: var(--color-secondary);\n\t\t}\n\t}\n\n\t&.error {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-error);\n\t\t}\n\t\t.statusLabel {\n\t\t\tcolor: var(--color-danger);\n\t\t}\n\t}\n\n\t&.unknown {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-unknown);\n\t\t}\n\t}\n}\n\n.executionLink {\n\tbackground: var(--execution-list-item-background);\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: center;\n\tjustify-content: space-between;\n\tcolor: var(--color-text-base);\n\tfont-size: var(--font-size-xs);\n\tpadding: var(--spacing-xs);\n\tpadding-right: var(--spacing-s);\n\tposition: relative;\n\tleft: calc(\n\t\t-1 * var(--spacing-4xs)\n\t); // Hide link border under card border so it's not visible when not hovered\n\n\t&:active {\n\t\t.icon,\n\t\t.statusLabel {\n\t\t\tcolor: var(--color-text-base);\n\t\t}\n\t}\n}\n\n.icons {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.icon {\n\tfont-size: var(--font-size-s);\n\n\t&.retry {\n\t\tsvg {\n\t\t\tcolor: var(--color-primary);\n\t\t}\n\t}\n\n\t&.manual {\n\t\tposition: relative;\n\t\ttop: 1px;\n\t}\n\n\t& + & {\n\t\tmargin-left: var(--spacing-2xs);\n\t}\n}\n.showGap {\n\tmargin-bottom: var(--spacing-2xs);\n\t.executionLink {\n\t\tborder-bottom: 1px solid var(--color-foreground-dark);\n\t}\n}\n</style>\n","<template>\n\t<div\n\t\tref=\"container\"\n\t\t:class=\"['executions-sidebar', $style.container]\"\n\t\tdata-test-id=\"executions-sidebar\"\n\t>\n\t\t<div :class=\"$style.heading\">\n\t\t\t<n8n-heading tag=\"h2\" size=\"medium\" color=\"text-dark\">\n\t\t\t\t{{ $locale.baseText('generic.executions') }}\n\t\t\t</n8n-heading>\n\t\t</div>\n\t\t<div :class=\"$style.controls\">\n\t\t\t<el-checkbox\n\t\t\t\tv-model=\"executionsStore.autoRefresh\"\n\t\t\t\tdata-test-id=\"auto-refresh-checkbox\"\n\t\t\t\t@update:model-value=\"$emit('update:autoRefresh', $event)\"\n\t\t\t>\n\t\t\t\t{{ $locale.baseText('executionsList.autoRefresh') }}\n\t\t\t</el-checkbox>\n\t\t\t<ExecutionsFilter popover-placement=\"left-start\" @filter-changed=\"onFilterChanged\" />\n\t\t</div>\n\t\t<div\n\t\t\tref=\"executionList\"\n\t\t\t:class=\"$style.executionList\"\n\t\t\tdata-test-id=\"current-executions-list\"\n\t\t\t@scroll=\"loadMore(20)\"\n\t\t>\n\t\t\t<div v-if=\"loading\" class=\"mr-l\">\n\t\t\t\t<n8n-loading variant=\"rect\" />\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-if=\"!loading && executions.length === 0\"\n\t\t\t\t:class=\"$style.noResultsContainer\"\n\t\t\t\tdata-test-id=\"execution-list-empty\"\n\t\t\t>\n\t\t\t\t<n8n-text color=\"text-base\" size=\"medium\" align=\"center\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.noResults') }}\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<WorkflowExecutionsCard\n\t\t\t\tv-else-if=\"temporaryExecution\"\n\t\t\t\t:ref=\"`execution-${temporaryExecution.id}`\"\n\t\t\t\t:execution=\"temporaryExecution\"\n\t\t\t\t:data-test-id=\"`execution-details-${temporaryExecution.id}`\"\n\t\t\t\t:show-gap=\"true\"\n\t\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t\t/>\n\t\t\t<TransitionGroup name=\"executions-list\">\n\t\t\t\t<WorkflowExecutionsCard\n\t\t\t\t\tv-for=\"execution in executions\"\n\t\t\t\t\t:key=\"execution.id\"\n\t\t\t\t\t:ref=\"`execution-${execution.id}`\"\n\t\t\t\t\t:execution=\"execution\"\n\t\t\t\t\t:data-test-id=\"`execution-details-${execution.id}`\"\n\t\t\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t\t\t/>\n\t\t\t</TransitionGroup>\n\t\t\t<div v-if=\"loadingMore\" class=\"mr-m\">\n\t\t\t\t<n8n-loading variant=\"p\" :rows=\"1\" />\n\t\t\t</div>\n\t\t</div>\n\t\t<div :class=\"$style.infoAccordion\">\n\t\t\t<WorkflowExecutionsInfoAccordion :initially-expanded=\"false\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport WorkflowExecutionsCard from '@/components/executions/workflow/WorkflowExecutionsCard.vue';\nimport WorkflowExecutionsInfoAccordion from '@/components/executions/workflow/WorkflowExecutionsInfoAccordion.vue';\nimport ExecutionsFilter from '@/components/executions/ExecutionsFilter.vue';\nimport { VIEWS } from '@/constants';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport type { Route } from 'vue-router';\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport { mapStores } from 'pinia';\nimport { useExecutionsStore } from '@/stores/executions.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport type { ExecutionFilterType } from '@/Interface';\n\ntype WorkflowExecutionsCardRef = InstanceType<typeof WorkflowExecutionsCard>;\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsSidebar',\n\tcomponents: {\n\t\tWorkflowExecutionsCard,\n\t\tWorkflowExecutionsInfoAccordion,\n\t\tExecutionsFilter,\n\t},\n\tprops: {\n\t\texecutions: {\n\t\t\ttype: Array as PropType<ExecutionSummary[]>,\n\t\t\trequired: true,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tloadingMore: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttemporaryExecution: {\n\t\t\ttype: Object as PropType<ExecutionSummary>,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tVIEWS,\n\t\t\tfilter: {} as ExecutionFilterType,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useExecutionsStore, useWorkflowsStore),\n\t},\n\twatch: {\n\t\t$route(to: Route, from: Route) {\n\t\t\tif (from.name === VIEWS.EXECUTION_PREVIEW && to.name === VIEWS.EXECUTION_HOME) {\n\t\t\t\t// Skip parent route when navigating through executions with back button\n\t\t\t\tthis.$router.go(-1);\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\t// On larger screens, we need to load more then first page of executions\n\t\t// for the scroll bar to appear and infinite scrolling is enabled\n\t\tthis.checkListSize();\n\t\tsetTimeout(() => {\n\t\t\tthis.scrollToActiveCard();\n\t\t}, 1000);\n\t},\n\tmethods: {\n\t\tloadMore(limit = 20): void {\n\t\t\tif (!this.loading) {\n\t\t\t\tconst executionsListRef = this.$refs.executionList as HTMLElement | undefined;\n\t\t\t\tif (executionsListRef) {\n\t\t\t\t\tconst diff =\n\t\t\t\t\t\texecutionsListRef.offsetHeight -\n\t\t\t\t\t\t(executionsListRef.scrollHeight - executionsListRef.scrollTop);\n\t\t\t\t\tif (diff > -10 && diff < 10) {\n\t\t\t\t\t\tthis.$emit('loadMore', limit);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonRetryExecution(payload: object) {\n\t\t\tthis.$emit('retryExecution', payload);\n\t\t},\n\t\tonRefresh(): void {\n\t\t\tthis.$emit('refresh');\n\t\t},\n\t\tonFilterChanged(filter: ExecutionFilterType) {\n\t\t\tthis.$emit('filterUpdated', filter);\n\t\t},\n\t\treloadExecutions(): void {\n\t\t\tthis.$emit('reloadExecutions');\n\t\t},\n\t\tcheckListSize(): void {\n\t\t\tconst sidebarContainerRef = this.$refs.container as HTMLElement | undefined;\n\t\t\tconst currentWorkflowExecutionsCardRefs = this.$refs[\n\t\t\t\t`execution-${this.executionsStore.activeExecution?.id}`\n\t\t\t] as WorkflowExecutionsCardRef[] | undefined;\n\n\t\t\t// Find out how many execution card can fit into list\n\t\t\t// and load more if needed\n\t\t\tif (sidebarContainerRef && currentWorkflowExecutionsCardRefs?.length) {\n\t\t\t\tconst cardElement = currentWorkflowExecutionsCardRefs[0].$el as HTMLElement;\n\t\t\t\tconst listCapacity = Math.ceil(sidebarContainerRef.clientHeight / cardElement.clientHeight);\n\n\t\t\t\tif (listCapacity > this.executions.length) {\n\t\t\t\t\tthis.$emit('loadMore', listCapacity - this.executions.length);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tscrollToActiveCard(): void {\n\t\t\tconst executionsListRef = this.$refs.executionList as HTMLElement | undefined;\n\t\t\tconst currentWorkflowExecutionsCardRefs = this.$refs[\n\t\t\t\t`execution-${this.executionsStore.activeExecution?.id}`\n\t\t\t] as WorkflowExecutionsCardRef[] | undefined;\n\n\t\t\tif (\n\t\t\t\texecutionsListRef &&\n\t\t\t\tcurrentWorkflowExecutionsCardRefs?.length &&\n\t\t\t\tthis.executionsStore.activeExecution\n\t\t\t) {\n\t\t\t\tconst cardElement = currentWorkflowExecutionsCardRefs[0].$el as HTMLElement;\n\t\t\t\tconst cardRect = cardElement.getBoundingClientRect();\n\t\t\t\tconst LIST_HEADER_OFFSET = 200;\n\t\t\t\tif (cardRect.top > executionsListRef.offsetHeight) {\n\t\t\t\t\texecutionsListRef.scrollTo({ top: cardRect.top - LIST_HEADER_OFFSET });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.container {\n\tflex: 310px 0 0;\n\tbackground-color: var(--color-background-xlight);\n\tborder-right: var(--border-base);\n\tpadding: var(--spacing-l) 0 var(--spacing-l) var(--spacing-l);\n\tz-index: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n\n.heading {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: baseline;\n\tpadding-right: var(--spacing-l);\n}\n\n.controls {\n\tpadding: var(--spacing-s) 0 var(--spacing-xs);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding-right: var(--spacing-m);\n\n\tbutton {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n}\n\n.executionList {\n\tflex: 1;\n\toverflow: auto;\n\tmargin-bottom: var(--spacing-m);\n\tbackground-color: var(--color-background-xlight) !important;\n\n\t// Scrolling fader\n\t&::before {\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\twidth: 270px;\n\t\theight: 6px;\n\t\tbackground: linear-gradient(to bottom, rgba(251, 251, 251, 1) 0%, rgba(251, 251, 251, 0) 100%);\n\t\tz-index: 999;\n\t}\n\n\t// Lower first execution card so fader is not visible when not scrolled\n\t& > div:first-child {\n\t\tmargin-top: 3px;\n\t}\n}\n\n.infoAccordion {\n\tposition: absolute;\n\tbottom: 0;\n\tmargin-left: calc(-1 * var(--spacing-l));\n\tborder-top: var(--border-base);\n\n\t& > div {\n\t\twidth: 309px;\n\t\tbackground-color: var(--color-background-light);\n\t\tmargin-top: 0 !important;\n\t}\n}\n\n.noResultsContainer {\n\twidth: 100%;\n\tmargin-top: var(--spacing-2xl);\n\ttext-align: center;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.executions-sidebar {\n\t:deep(.el-skeleton__item) {\n\t\theight: 60px;\n\t\tborder-radius: 0;\n\t}\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<WorkflowExecutionsSidebar\n\t\t\t:executions=\"executions\"\n\t\t\t:loading=\"loading && !executions.length\"\n\t\t\t:loading-more=\"loadingMore\"\n\t\t\t:temporary-execution=\"temporaryExecution\"\n\t\t\t@update:auto-refresh=\"$emit('update:auto-refresh', $event)\"\n\t\t\t@reload-executions=\"$emit('reload')\"\n\t\t\t@filter-updated=\"$emit('update:filters', $event)\"\n\t\t\t@load-more=\"$emit('load-more')\"\n\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t/>\n\t\t<div v-if=\"!hidePreview\" :class=\"$style.content\">\n\t\t\t<router-view\n\t\t\t\tname=\"executionPreview\"\n\t\t\t\t:execution=\"execution\"\n\t\t\t\t@delete-current-execution=\"onDeleteCurrentExecution\"\n\t\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t\t\t@stop-execution=\"onStopExecution\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue';\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport { useRouter } from 'vue-router';\nimport WorkflowExecutionsSidebar from '@/components/executions/workflow/WorkflowExecutionsSidebar.vue';\nimport {\n\tMAIN_HEADER_TABS,\n\tMODAL_CANCEL,\n\tMODAL_CONFIRM,\n\tPLACEHOLDER_EMPTY_WORKFLOW_ID,\n\tVIEWS,\n} from '@/constants';\nimport type { ExecutionFilterType, IWorkflowDb } from '@/Interface';\nimport type { ExecutionSummary, IDataObject } from 'n8n-workflow';\nimport { useMessage } from '@/composables/useMessage';\nimport { useToast } from '@/composables/useToast';\nimport { getNodeViewTab } from '@/utils/canvasUtils';\nimport { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport { useTagsStore } from '@/stores/tags.store';\nimport { executionFilterToQueryFilter } from '@/utils/executionUtils';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useDebounce } from '@/composables/useDebounce';\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsList',\n\tcomponents: {\n\t\tWorkflowExecutionsSidebar,\n\t},\n\tasync beforeRouteLeave(to, _, next) {\n\t\tif (getNodeViewTab(to) === MAIN_HEADER_TABS.WORKFLOW) {\n\t\t\tnext();\n\t\t\treturn;\n\t\t}\n\t\tif (this.uiStore.stateIsDirty) {\n\t\t\tconst confirmModal = await this.confirm(\n\t\t\t\tthis.$locale.baseText('generic.unsavedWork.confirmMessage.message'),\n\t\t\t\t{\n\t\t\t\t\ttitle: this.$locale.baseText('generic.unsavedWork.confirmMessage.headline'),\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t'generic.unsavedWork.confirmMessage.confirmButtonText',\n\t\t\t\t\t),\n\t\t\t\t\tcancelButtonText: this.$locale.baseText(\n\t\t\t\t\t\t'generic.unsavedWork.confirmMessage.cancelButtonText',\n\t\t\t\t\t),\n\t\t\t\t\tshowClose: true,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tif (confirmModal === MODAL_CONFIRM) {\n\t\t\t\tconst saved = await this.workflowHelpers.saveCurrentWorkflow({}, false);\n\t\t\t\tif (saved) {\n\t\t\t\t\tawait this.settingsStore.fetchPromptsData();\n\t\t\t\t}\n\t\t\t\tthis.uiStore.stateIsDirty = false;\n\t\t\t\tnext();\n\t\t\t} else if (confirmModal === MODAL_CANCEL) {\n\t\t\t\tthis.uiStore.stateIsDirty = false;\n\t\t\t\tnext();\n\t\t\t}\n\t\t} else {\n\t\t\tnext();\n\t\t}\n\t},\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflow: {\n\t\t\ttype: Object as PropType<IWorkflowDb>,\n\t\t\trequired: true,\n\t\t},\n\t\texecutions: {\n\t\t\ttype: Array as PropType<ExecutionSummary[]>,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tfilters: {\n\t\t\ttype: Object as PropType<ExecutionFilterType>,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\texecution: {\n\t\t\ttype: Object as PropType<ExecutionSummary>,\n\t\t\tdefault: null,\n\t\t},\n\t\tloadingMore: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: [\n\t\t'execution:delete',\n\t\t'execution:stop',\n\t\t'execution:retry',\n\t\t'update:auto-refresh',\n\t\t'update:filters',\n\t\t'load-more',\n\t\t'reload',\n\t],\n\tsetup() {\n\t\tconst externalHooks = useExternalHooks();\n\t\tconst router = useRouter();\n\t\tconst workflowHelpers = useWorkflowHelpers(router);\n\t\tconst { callDebounced } = useDebounce();\n\n\t\treturn {\n\t\t\texternalHooks,\n\t\t\tworkflowHelpers,\n\t\t\tcallDebounced,\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useTagsStore, useNodeTypesStore, useSettingsStore, useUIStore),\n\t\ttemporaryExecution(): ExecutionSummary | undefined {\n\t\t\tconst isTemporary = !this.executions.find((execution) => execution.id === this.execution?.id);\n\t\t\treturn isTemporary ? this.execution : undefined;\n\t\t},\n\t\thidePreview(): boolean {\n\t\t\treturn this.loading || (!this.execution && this.executions.length);\n\t\t},\n\t\tfilterApplied(): boolean {\n\t\t\treturn this.filters.status !== 'all';\n\t\t},\n\t\tworkflowDataNotLoaded(): boolean {\n\t\t\treturn this.workflow.id === PLACEHOLDER_EMPTY_WORKFLOW_ID && this.workflow.name === '';\n\t\t},\n\t\trequestFilter(): IDataObject {\n\t\t\treturn executionFilterToQueryFilter({\n\t\t\t\t...this.filters,\n\t\t\t\tworkflowId: this.workflow.id,\n\t\t\t});\n\t\t},\n\t},\n\twatch: {\n\t\texecution(value: ExecutionSummary) {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$router\n\t\t\t\t.push({\n\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\tparams: { name: this.workflow.id, executionId: value.id },\n\t\t\t\t})\n\t\t\t\t.catch(() => {});\n\t\t},\n\t},\n\tmethods: {\n\t\tasync onDeleteCurrentExecution(): Promise<void> {\n\t\t\tthis.$emit('execution:delete', this.execution.id);\n\t\t},\n\t\tasync onStopExecution(): Promise<void> {\n\t\t\tthis.$emit('execution:stop', this.execution.id);\n\t\t},\n\t\tasync onRetryExecution(payload: { execution: ExecutionSummary; command: string }) {\n\t\t\tconst loadWorkflow = payload.command === 'current-workflow';\n\n\t\t\tthis.$emit('execution:retry', {\n\t\t\t\tid: payload.execution.id,\n\t\t\t\tloadWorkflow,\n\t\t\t});\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.container {\n\tdisplay: flex;\n\theight: 100%;\n\twidth: 100%;\n}\n\n.content {\n\tflex: 1;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';\nimport WorkflowExecutionsList from '@/components/executions/workflow/WorkflowExecutionsList.vue';\nimport { useExecutionsStore } from '@/stores/executions.store';\nimport { useI18n } from '@/composables/useI18n';\nimport type { ExecutionFilterType, IWorkflowDb } from '@/Interface';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport { NO_NETWORK_ERROR_CODE } from '@/utils/apiUtils';\nimport { useToast } from '@/composables/useToast';\nimport { VIEWS } from '@/constants';\nimport { useRoute, useRouter } from 'vue-router';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport { useDebounce } from '@/composables/useDebounce';\nimport { storeToRefs } from 'pinia';\nimport { useTelemetry } from '@/composables/useTelemetry';\n\nconst executionsStore = useExecutionsStore();\nconst workflowsStore = useWorkflowsStore();\nconst nodeTypesStore = useNodeTypesStore();\nconst i18n = useI18n();\nconst telemetry = useTelemetry();\nconst route = useRoute();\nconst router = useRouter();\nconst toast = useToast();\nconst { callDebounced } = useDebounce();\n\nconst { filters } = storeToRefs(executionsStore);\n\nconst loading = ref(false);\nconst loadingMore = ref(false);\n\nconst workflow = ref<IWorkflowDb | undefined>();\n\nconst workflowId = computed(() => {\n\treturn (route.params.name as string) || workflowsStore.workflowId;\n});\n\nconst executionId = computed(() => route.params.executionId as string);\n\nconst executions = computed(() => [\n\t...(executionsStore.currentExecutionsByWorkflowId[workflowId.value] ?? []),\n\t...(executionsStore.executionsByWorkflowId[workflowId.value] ?? []),\n]);\n\nconst execution = computed(() => {\n\treturn executions.value.find((e) => e.id === executionId.value) ?? currentExecution.value;\n});\n\nconst currentExecution = ref<ExecutionSummary | undefined>();\n\nwatch(\n\t() => workflowId.value,\n\tasync () => {\n\t\tawait fetchWorkflow();\n\t},\n);\n\nwatch(\n\t() => executionId.value,\n\tasync () => {\n\t\tawait fetchExecution();\n\t},\n);\n\nonMounted(async () => {\n\tawait nodeTypesStore.loadNodeTypesIfNotLoaded();\n\tawait Promise.all([\n\t\tnodeTypesStore.loadNodeTypesIfNotLoaded(),\n\t\tfetchWorkflow(),\n\t\texecutionsStore.initialize(workflowId.value),\n\t]);\n\tawait fetchExecution();\n\tawait initializeRoute();\n\tdocument.addEventListener('visibilitychange', onDocumentVisibilityChange);\n});\n\nonBeforeUnmount(() => {\n\texecutionsStore.reset();\n\tdocument.removeEventListener('visibilitychange', onDocumentVisibilityChange);\n});\n\nasync function fetchExecution() {\n\tif (!executionId.value) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tcurrentExecution.value = (await executionsStore.fetchExecution(\n\t\t\texecutionId.value,\n\t\t)) as ExecutionSummary;\n\t\texecutionsStore.activeExecution = currentExecution.value;\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('nodeView.showError.openExecution.title'));\n\t}\n}\n\nfunction onDocumentVisibilityChange() {\n\tif (document.visibilityState === 'hidden') {\n\t\texecutionsStore.stopAutoRefreshInterval();\n\t} else {\n\t\tvoid executionsStore.startAutoRefreshInterval(workflowId.value);\n\t}\n}\n\nasync function initializeRoute() {\n\tif (route.name === VIEWS.EXECUTION_HOME && executions.value.length > 0 && workflow.value) {\n\t\tawait router\n\t\t\t.push({\n\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\tparams: { name: workflow.value.id, executionId: executions.value[0].id },\n\t\t\t})\n\t\t\t.catch(() => {});\n\t}\n}\n\nasync function fetchWorkflow() {\n\tlet data: IWorkflowDb | undefined;\n\ttry {\n\t\t// @TODO Retrieve from store if exists\n\t\tdata = await workflowsStore.fetchWorkflow(workflowId.value);\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('nodeView.showError.openWorkflow.title'));\n\t\treturn;\n\t}\n\n\tif (!data) {\n\t\tthrow new Error(\n\t\t\ti18n.baseText('nodeView.workflowWithIdCouldNotBeFound', {\n\t\t\t\tinterpolate: { workflowId: workflowId.value },\n\t\t\t}),\n\t\t);\n\t}\n\n\tworkflow.value = data;\n}\n\nasync function onAutoRefreshToggle(value: boolean) {\n\tif (value) {\n\t\tawait executionsStore.startAutoRefreshInterval(workflowId.value);\n\t} else {\n\t\texecutionsStore.stopAutoRefreshInterval();\n\t}\n}\n\nasync function onRefreshData() {\n\tif (!workflowId.value) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait executionsStore.fetchExecutions({\n\t\t\t...executionsStore.executionsFilters,\n\t\t\tworkflowId: workflowId.value,\n\t\t});\n\t} catch (error) {\n\t\tif (error.errorCode === NO_NETWORK_ERROR_CODE) {\n\t\t\ttoast.showMessage(\n\t\t\t\t{\n\t\t\t\t\ttitle: i18n.baseText('executionsList.showError.refreshData.title'),\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tduration: 3500,\n\t\t\t\t},\n\t\t\t\tfalse,\n\t\t\t);\n\t\t} else {\n\t\t\ttoast.showError(error, i18n.baseText('executionsList.showError.refreshData.title'));\n\t\t}\n\t}\n}\n\nasync function onUpdateFilters(newFilters: ExecutionFilterType) {\n\texecutionsStore.reset();\n\texecutionsStore.setFilters(newFilters);\n\tawait executionsStore.initialize(workflowId.value);\n}\n\nasync function onExecutionStop(id: string) {\n\ttry {\n\t\tawait executionsStore.stopCurrentExecution(id);\n\n\t\ttoast.showMessage({\n\t\t\ttitle: i18n.baseText('executionsList.showMessage.stopExecution.title'),\n\t\t\tmessage: i18n.baseText('executionsList.showMessage.stopExecution.message', {\n\t\t\t\tinterpolate: { activeExecutionId: id },\n\t\t\t}),\n\t\t\ttype: 'success',\n\t\t});\n\n\t\tawait onRefreshData();\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.stopExecution.title'));\n\t}\n}\n\nasync function onExecutionDelete(id: string) {\n\tloading.value = true;\n\ttry {\n\t\tconst executionIndex = executions.value.findIndex((e: ExecutionSummary) => e.id === id);\n\n\t\tconst nextExecution =\n\t\t\texecutions.value[executionIndex + 1] ||\n\t\t\texecutions.value[executionIndex - 1] ||\n\t\t\texecutions.value[0];\n\n\t\tawait executionsStore.deleteExecutions({\n\t\t\tids: [id],\n\t\t});\n\n\t\tif (workflow.value) {\n\t\t\tif (executions.value.length > 0) {\n\t\t\t\tawait router\n\t\t\t\t\t.replace({\n\t\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\t\tparams: { name: workflow.value.id, executionId: nextExecution.id },\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => {});\n\t\t\t} else {\n\t\t\t\t// If there are no executions left, show empty state\n\t\t\t\tawait router.replace({\n\t\t\t\t\tname: VIEWS.EXECUTION_HOME,\n\t\t\t\t\tparams: { name: workflow.value.id },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tloading.value = false;\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.handleDeleteSelected.title'));\n\t\treturn;\n\t}\n\tloading.value = false;\n\n\ttoast.showMessage({\n\t\ttitle: i18n.baseText('executionsList.showMessage.handleDeleteSelected.title'),\n\t\ttype: 'success',\n\t});\n}\n\nasync function onExecutionRetry(payload: { id: string; loadWorkflow: boolean }) {\n\ttoast.showMessage({\n\t\ttitle: i18n.baseText('executionDetails.runningMessage'),\n\t\ttype: 'info',\n\t\tduration: 2000,\n\t});\n\n\tawait retryExecution(payload);\n\tawait onRefreshData();\n\n\ttelemetry.track('User clicked retry execution button', {\n\t\tworkflow_id: workflow.value?.id,\n\t\texecution_id: payload.id,\n\t\tretry_type: payload.loadWorkflow ? 'current' : 'original',\n\t});\n}\n\nasync function retryExecution(payload: { id: string; loadWorkflow: boolean }) {\n\ttry {\n\t\tconst retrySuccessful = await executionsStore.retryExecution(payload.id, payload.loadWorkflow);\n\n\t\tif (retrySuccessful) {\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: i18n.baseText('executionsList.showMessage.retrySuccessfulTrue.title'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t} else {\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: i18n.baseText('executionsList.showMessage.retrySuccessfulFalse.title'),\n\t\t\t\ttype: 'error',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.retryExecution.title'));\n\t}\n}\n\nasync function onLoadMore(): Promise<void> {\n\tif (!loadingMore.value) {\n\t\tawait callDebounced(loadMore, { debounceTime: 1000 });\n\t}\n}\n\nasync function loadMore(): Promise<void> {\n\tif (\n\t\t!!executionsStore.executionsFilters.status?.includes('running') ||\n\t\texecutions.value.length >= executionsStore.executionsCount\n\t) {\n\t\treturn;\n\t}\n\n\tloadingMore.value = true;\n\n\tlet lastId: string | undefined;\n\tif (executions.value.length !== 0) {\n\t\tconst lastItem = executions.value.slice(-1)[0];\n\t\tlastId = lastItem.id;\n\t}\n\n\ttry {\n\t\tawait executionsStore.fetchExecutions(executionsStore.executionsFilters, lastId);\n\t} catch (error) {\n\t\tloadingMore.value = false;\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.loadMore.title'));\n\t\treturn;\n\t}\n\n\tloadingMore.value = false;\n}\n</script>\n<template>\n\t<WorkflowExecutionsList\n\t\tv-if=\"workflow\"\n\t\t:executions=\"executions\"\n\t\t:execution=\"execution\"\n\t\t:filters=\"filters\"\n\t\t:workflow=\"workflow\"\n\t\t:loading=\"loading\"\n\t\t:loading-more=\"loadingMore\"\n\t\t@execution:stop=\"onExecutionStop\"\n\t\t@execution:delete=\"onExecutionDelete\"\n\t\t@execution:retry=\"onExecutionRetry\"\n\t\t@update:filters=\"onUpdateFilters\"\n\t\t@update:auto-refresh=\"onAutoRefreshToggle\"\n\t\t@load-more=\"onLoadMore\"\n\t\t@reload=\"onRefreshData\"\n\t/>\n</template>\n"],"names":["_sfc_main$3","defineComponent","ExecutionsTime","useExecutionHelpers","VIEWS","mapStores","useWorkflowsStore","action","_resolveComponent","$style","_normalizeClass","executionUIDetails","_ctx","highlight","_createVNode","_component_router_link","_withCtx","_createElementVNode","_component_n8n_text","_createTextVNode","_toDisplayString","_openBlock","_createBlock","_component_n8n_spinner","_createCommentVNode","execution","_component_ExecutionsTime","_createElementBlock","_hoisted_1","isRetriable","onRetryMenuItemSelect","_component_n8n_tooltip","_sfc_main$2","WorkflowExecutionsCard","WorkflowExecutionsInfoAccordion","ExecutionsFilter","useExecutionsStore","to","from","limit","executionsListRef","diff","payload","filter","sidebarContainerRef","currentWorkflowExecutionsCardRefs","_a","cardElement","listCapacity","cardRect","LIST_HEADER_OFFSET","_hoisted_2","_component_WorkflowExecutionsInfoAccordion","_component_n8n_heading","_component_el_checkbox","_cache","$event","_component_ExecutionsFilter","loadMore","loading","_component_n8n_loading","temporaryExecution","onRetryExecution","_TransitionGroup","_Fragment","_renderList","_component_WorkflowExecutionsCard","loadingMore","_sfc_main$1","WorkflowExecutionsSidebar","_","next","getNodeViewTab","MAIN_HEADER_TABS","confirmModal","MODAL_CONFIRM","MODAL_CANCEL","externalHooks","useExternalHooks","router","useRouter","workflowHelpers","useWorkflowHelpers","callDebounced","useDebounce","useToast","useMessage","useTagsStore","useNodeTypesStore","useSettingsStore","useUIStore","PLACEHOLDER_EMPTY_WORKFLOW_ID","executionFilterToQueryFilter","value","loadWorkflow","$emit","hidePreview","onStopExecution","executionsStore","workflowsStore","nodeTypesStore","i18n","useI18n","telemetry","useTelemetry","route","useRoute","toast","filters","storeToRefs","ref","workflow","workflowId","computed","executionId","executions","e","currentExecution","watch","fetchWorkflow","fetchExecution","onMounted","initializeRoute","onDocumentVisibilityChange","onBeforeUnmount","error","data","onAutoRefreshToggle","onRefreshData","NO_NETWORK_ERROR_CODE","onUpdateFilters","newFilters","onExecutionStop","id","onExecutionDelete","executionIndex","nextExecution","onExecutionRetry","retryExecution","onLoadMore","lastId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkflowExecutionsView-dwh6ZDgY.js","sources":["../../src/components/executions/workflow/WorkflowExecutionsCard.vue","../../src/components/executions/workflow/WorkflowExecutionsSidebar.vue","../../src/components/executions/workflow/WorkflowExecutionsList.vue","../../src/views/WorkflowExecutionsView.vue"],"sourcesContent":["<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['execution-card']: true,\n\t\t\t[$style.WorkflowExecutionsCard]: true,\n\t\t\t[$style.active]: isActive,\n\t\t\t[$style[executionUIDetails.name]]: true,\n\t\t\t[$style.highlight]: highlight,\n\t\t\t[$style.showGap]: showGap,\n\t\t}\"\n\t>\n\t\t<router-link\n\t\t\t:class=\"$style.executionLink\"\n\t\t\t:to=\"{\n\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\tparams: { name: currentWorkflow, executionId: execution.id },\n\t\t\t}\"\n\t\t\t:data-test-execution-status=\"executionUIDetails.name\"\n\t\t>\n\t\t\t<div :class=\"$style.description\">\n\t\t\t\t<n8n-text color=\"text-dark\" :bold=\"true\" size=\"medium\" data-test-id=\"execution-time\">\n\t\t\t\t\t{{ executionUIDetails.startTime }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<div :class=\"$style.executionStatus\">\n\t\t\t\t\t<n8n-spinner\n\t\t\t\t\t\tv-if=\"executionUIDetails.name === 'running'\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t:class=\"[$style.spinner, 'mr-4xs']\"\n\t\t\t\t\t/>\n\t\t\t\t\t<n8n-text :class=\"$style.statusLabel\" size=\"small\">{{\n\t\t\t\t\t\texecutionUIDetails.label\n\t\t\t\t\t}}</n8n-text>\n\t\t\t\t\t{{ ' ' }}\n\t\t\t\t\t<n8n-text\n\t\t\t\t\t\tv-if=\"executionUIDetails.name === 'running'\"\n\t\t\t\t\t\t:color=\"isActive ? 'text-dark' : 'text-base'\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ $locale.baseText('executionDetails.runningTimeRunning') }}\n\t\t\t\t\t\t<ExecutionsTime :start-time=\"execution.startedAt\" />\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<n8n-text\n\t\t\t\t\t\tv-else-if=\"executionUIDetails.runningTime !== ''\"\n\t\t\t\t\t\t:color=\"isActive ? 'text-dark' : 'text-base'\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t$locale.baseText('executionDetails.runningTimeFinished', {\n\t\t\t\t\t\t\t\tinterpolate: { time: executionUIDetails?.runningTime },\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"execution.mode === 'retry'\">\n\t\t\t\t\t<n8n-text :color=\"isActive ? 'text-dark' : 'text-base'\" size=\"small\">\n\t\t\t\t\t\t{{ $locale.baseText('executionDetails.retry') }} #{{ execution.retryOf }}\n\t\t\t\t\t</n8n-text>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div :class=\"$style.icons\">\n\t\t\t\t<n8n-action-dropdown\n\t\t\t\t\tv-if=\"isRetriable\"\n\t\t\t\t\t:class=\"[$style.icon, $style.retry]\"\n\t\t\t\t\t:items=\"retryExecutionActions\"\n\t\t\t\t\tactivator-icon=\"redo\"\n\t\t\t\t\tdata-test-id=\"retry-execution-button\"\n\t\t\t\t\t@select=\"onRetryMenuItemSelect\"\n\t\t\t\t/>\n\t\t\t\t<n8n-tooltip v-if=\"execution.mode === 'manual'\" placement=\"top\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<span>{{ $locale.baseText('executionsList.test') }}</span>\n\t\t\t\t\t</template>\n\t\t\t\t\t<font-awesome-icon\n\t\t\t\t\t\tv-if=\"execution.mode === 'manual'\"\n\t\t\t\t\t\t:class=\"[$style.icon, $style.manual]\"\n\t\t\t\t\t\ticon=\"flask\"\n\t\t\t\t\t/>\n\t\t\t\t</n8n-tooltip>\n\t\t\t</div>\n\t\t</router-link>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport type { IExecutionUIData } from '@/composables/useExecutionHelpers';\nimport { VIEWS } from '@/constants';\nimport ExecutionsTime from '@/components/executions/ExecutionsTime.vue';\nimport { useExecutionHelpers } from '@/composables/useExecutionHelpers';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport { mapStores } from 'pinia';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsCard',\n\tcomponents: {\n\t\tExecutionsTime,\n\t},\n\tprops: {\n\t\texecution: {\n\t\t\ttype: Object as () => ExecutionSummary,\n\t\t\trequired: true,\n\t\t},\n\t\thighlight: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tshowGap: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tsetup() {\n\t\tconst executionHelpers = useExecutionHelpers();\n\n\t\treturn {\n\t\t\texecutionHelpers,\n\t\t\tVIEWS,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useWorkflowsStore),\n\t\tcurrentWorkflow(): string {\n\t\t\treturn (this.$route.params.name as string) || this.workflowsStore.workflowId;\n\t\t},\n\t\tretryExecutionActions(): object[] {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'current-workflow',\n\t\t\t\t\tlabel: this.$locale.baseText('executionsList.retryWithCurrentlySavedWorkflow'),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'original-workflow',\n\t\t\t\t\tlabel: this.$locale.baseText('executionsList.retryWithOriginalWorkflow'),\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t\texecutionUIDetails(): IExecutionUIData {\n\t\t\treturn this.executionHelpers.getUIDetails(this.execution);\n\t\t},\n\t\tisActive(): boolean {\n\t\t\treturn this.execution.id === this.$route.params.executionId;\n\t\t},\n\t\tisRetriable(): boolean {\n\t\t\treturn this.executionHelpers.isExecutionRetriable(this.execution);\n\t\t},\n\t},\n\tmethods: {\n\t\tonRetryMenuItemSelect(action: string): void {\n\t\t\tthis.$emit('retryExecution', { execution: this.execution, command: action });\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n@import '@/styles/variables';\n\n.WorkflowExecutionsCard {\n\t--execution-list-item-background: var(--color-foreground-xlight);\n\t--execution-list-item-highlight-background: var(--color-warning-tint-1);\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding-right: var(--spacing-m);\n\n\t&.active {\n\t\tborder-left: var(--spacing-4xs) var(--border-style-base) transparent !important;\n\n\t\t.executionStatus {\n\t\t\tcolor: var(--color-text-dark) !important;\n\t\t}\n\t}\n\n\t&:hover,\n\t&.active {\n\t\t.executionLink {\n\t\t\t--execution-list-item-background: var(--color-foreground-light);\n\t\t}\n\t}\n\n\t&.new,\n\t&.running {\n\t\t.spinner {\n\t\t\tposition: relative;\n\t\t\ttop: 1px;\n\t\t}\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-running);\n\t\t}\n\t\t.statusLabel,\n\t\t.spinner {\n\t\t\tcolor: var(--color-warning);\n\t\t}\n\t}\n\n\t&.success {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-success);\n\t\t}\n\t}\n\n\t&.waiting {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-waiting);\n\t\t}\n\t\t.statusLabel {\n\t\t\tcolor: var(--color-secondary);\n\t\t}\n\t}\n\n\t&.error {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-error);\n\t\t}\n\t\t.statusLabel {\n\t\t\tcolor: var(--color-danger);\n\t\t}\n\t}\n\n\t&.unknown {\n\t\t&,\n\t\t& .executionLink {\n\t\t\tborder-left: var(--spacing-4xs) var(--border-style-base) var(--execution-card-border-unknown);\n\t\t}\n\t}\n}\n\n.executionLink {\n\tbackground: var(--execution-list-item-background);\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: center;\n\tjustify-content: space-between;\n\tcolor: var(--color-text-base);\n\tfont-size: var(--font-size-xs);\n\tpadding: var(--spacing-xs);\n\tpadding-right: var(--spacing-s);\n\tposition: relative;\n\tleft: calc(\n\t\t-1 * var(--spacing-4xs)\n\t); // Hide link border under card border so it's not visible when not hovered\n\n\t&:active {\n\t\t.icon,\n\t\t.statusLabel {\n\t\t\tcolor: var(--color-text-base);\n\t\t}\n\t}\n}\n\n.icons {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.icon {\n\tfont-size: var(--font-size-s);\n\n\t&.retry {\n\t\tsvg {\n\t\t\tcolor: var(--color-primary);\n\t\t}\n\t}\n\n\t&.manual {\n\t\tposition: relative;\n\t\ttop: 1px;\n\t}\n\n\t& + & {\n\t\tmargin-left: var(--spacing-2xs);\n\t}\n}\n.showGap {\n\tmargin-bottom: var(--spacing-2xs);\n\t.executionLink {\n\t\tborder-bottom: 1px solid var(--color-foreground-dark);\n\t}\n}\n</style>\n","<template>\n\t<div\n\t\tref=\"container\"\n\t\t:class=\"['executions-sidebar', $style.container]\"\n\t\tdata-test-id=\"executions-sidebar\"\n\t>\n\t\t<div :class=\"$style.heading\">\n\t\t\t<n8n-heading tag=\"h2\" size=\"medium\" color=\"text-dark\">\n\t\t\t\t{{ $locale.baseText('generic.executions') }}\n\t\t\t</n8n-heading>\n\t\t</div>\n\t\t<div :class=\"$style.controls\">\n\t\t\t<el-checkbox\n\t\t\t\tv-model=\"executionsStore.autoRefresh\"\n\t\t\t\tdata-test-id=\"auto-refresh-checkbox\"\n\t\t\t\t@update:model-value=\"$emit('update:autoRefresh', $event)\"\n\t\t\t>\n\t\t\t\t{{ $locale.baseText('executionsList.autoRefresh') }}\n\t\t\t</el-checkbox>\n\t\t\t<ExecutionsFilter popover-placement=\"left-start\" @filter-changed=\"onFilterChanged\" />\n\t\t</div>\n\t\t<div\n\t\t\tref=\"executionList\"\n\t\t\t:class=\"$style.executionList\"\n\t\t\tdata-test-id=\"current-executions-list\"\n\t\t\t@scroll=\"loadMore(20)\"\n\t\t>\n\t\t\t<div v-if=\"loading\" class=\"mr-l\">\n\t\t\t\t<n8n-loading variant=\"rect\" />\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-if=\"!loading && executions.length === 0\"\n\t\t\t\t:class=\"$style.noResultsContainer\"\n\t\t\t\tdata-test-id=\"execution-list-empty\"\n\t\t\t>\n\t\t\t\t<n8n-text color=\"text-base\" size=\"medium\" align=\"center\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.noResults') }}\n\t\t\t\t</n8n-text>\n\t\t\t</div>\n\t\t\t<WorkflowExecutionsCard\n\t\t\t\tv-else-if=\"temporaryExecution\"\n\t\t\t\t:ref=\"`execution-${temporaryExecution.id}`\"\n\t\t\t\t:execution=\"temporaryExecution\"\n\t\t\t\t:data-test-id=\"`execution-details-${temporaryExecution.id}`\"\n\t\t\t\t:show-gap=\"true\"\n\t\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t\t/>\n\t\t\t<TransitionGroup name=\"executions-list\">\n\t\t\t\t<WorkflowExecutionsCard\n\t\t\t\t\tv-for=\"execution in executions\"\n\t\t\t\t\t:key=\"execution.id\"\n\t\t\t\t\t:ref=\"`execution-${execution.id}`\"\n\t\t\t\t\t:execution=\"execution\"\n\t\t\t\t\t:data-test-id=\"`execution-details-${execution.id}`\"\n\t\t\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t\t\t/>\n\t\t\t</TransitionGroup>\n\t\t\t<div v-if=\"loadingMore\" class=\"mr-m\">\n\t\t\t\t<n8n-loading variant=\"p\" :rows=\"1\" />\n\t\t\t</div>\n\t\t</div>\n\t\t<div :class=\"$style.infoAccordion\">\n\t\t\t<WorkflowExecutionsInfoAccordion :initially-expanded=\"false\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport WorkflowExecutionsCard from '@/components/executions/workflow/WorkflowExecutionsCard.vue';\nimport WorkflowExecutionsInfoAccordion from '@/components/executions/workflow/WorkflowExecutionsInfoAccordion.vue';\nimport ExecutionsFilter from '@/components/executions/ExecutionsFilter.vue';\nimport { VIEWS } from '@/constants';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport type { Route } from 'vue-router';\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport { mapStores } from 'pinia';\nimport { useExecutionsStore } from '@/stores/executions.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport type { ExecutionFilterType } from '@/Interface';\n\ntype WorkflowExecutionsCardRef = InstanceType<typeof WorkflowExecutionsCard>;\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsSidebar',\n\tcomponents: {\n\t\tWorkflowExecutionsCard,\n\t\tWorkflowExecutionsInfoAccordion,\n\t\tExecutionsFilter,\n\t},\n\tprops: {\n\t\texecutions: {\n\t\t\ttype: Array as PropType<ExecutionSummary[]>,\n\t\t\trequired: true,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tloadingMore: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttemporaryExecution: {\n\t\t\ttype: Object as PropType<ExecutionSummary>,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tVIEWS,\n\t\t\tfilter: {} as ExecutionFilterType,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useExecutionsStore, useWorkflowsStore),\n\t},\n\twatch: {\n\t\t$route(to: Route, from: Route) {\n\t\t\tif (from.name === VIEWS.EXECUTION_PREVIEW && to.name === VIEWS.EXECUTION_HOME) {\n\t\t\t\t// Skip parent route when navigating through executions with back button\n\t\t\t\tthis.$router.go(-1);\n\t\t\t}\n\t\t},\n\t},\n\tmounted() {\n\t\t// On larger screens, we need to load more then first page of executions\n\t\t// for the scroll bar to appear and infinite scrolling is enabled\n\t\tthis.checkListSize();\n\t\tsetTimeout(() => {\n\t\t\tthis.scrollToActiveCard();\n\t\t}, 1000);\n\t},\n\tmethods: {\n\t\tloadMore(limit = 20): void {\n\t\t\tif (!this.loading) {\n\t\t\t\tconst executionsListRef = this.$refs.executionList as HTMLElement | undefined;\n\t\t\t\tif (executionsListRef) {\n\t\t\t\t\tconst diff =\n\t\t\t\t\t\texecutionsListRef.offsetHeight -\n\t\t\t\t\t\t(executionsListRef.scrollHeight - executionsListRef.scrollTop);\n\t\t\t\t\tif (diff > -10 && diff < 10) {\n\t\t\t\t\t\tthis.$emit('loadMore', limit);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonRetryExecution(payload: object) {\n\t\t\tthis.$emit('retryExecution', payload);\n\t\t},\n\t\tonRefresh(): void {\n\t\t\tthis.$emit('refresh');\n\t\t},\n\t\tonFilterChanged(filter: ExecutionFilterType) {\n\t\t\tthis.$emit('filterUpdated', filter);\n\t\t},\n\t\treloadExecutions(): void {\n\t\t\tthis.$emit('reloadExecutions');\n\t\t},\n\t\tcheckListSize(): void {\n\t\t\tconst sidebarContainerRef = this.$refs.container as HTMLElement | undefined;\n\t\t\tconst currentWorkflowExecutionsCardRefs = this.$refs[\n\t\t\t\t`execution-${this.executionsStore.activeExecution?.id}`\n\t\t\t] as WorkflowExecutionsCardRef[] | undefined;\n\n\t\t\t// Find out how many execution card can fit into list\n\t\t\t// and load more if needed\n\t\t\tif (sidebarContainerRef && currentWorkflowExecutionsCardRefs?.length) {\n\t\t\t\tconst cardElement = currentWorkflowExecutionsCardRefs[0].$el as HTMLElement;\n\t\t\t\tconst listCapacity = Math.ceil(sidebarContainerRef.clientHeight / cardElement.clientHeight);\n\n\t\t\t\tif (listCapacity > this.executions.length) {\n\t\t\t\t\tthis.$emit('loadMore', listCapacity - this.executions.length);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tscrollToActiveCard(): void {\n\t\t\tconst executionsListRef = this.$refs.executionList as HTMLElement | undefined;\n\t\t\tconst currentWorkflowExecutionsCardRefs = this.$refs[\n\t\t\t\t`execution-${this.executionsStore.activeExecution?.id}`\n\t\t\t] as WorkflowExecutionsCardRef[] | undefined;\n\n\t\t\tif (\n\t\t\t\texecutionsListRef &&\n\t\t\t\tcurrentWorkflowExecutionsCardRefs?.length &&\n\t\t\t\tthis.executionsStore.activeExecution\n\t\t\t) {\n\t\t\t\tconst cardElement = currentWorkflowExecutionsCardRefs[0].$el as HTMLElement;\n\t\t\t\tconst cardRect = cardElement.getBoundingClientRect();\n\t\t\t\tconst LIST_HEADER_OFFSET = 200;\n\t\t\t\tif (cardRect.top > executionsListRef.offsetHeight) {\n\t\t\t\t\texecutionsListRef.scrollTo({ top: cardRect.top - LIST_HEADER_OFFSET });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.container {\n\tflex: 310px 0 0;\n\tbackground-color: var(--color-background-xlight);\n\tborder-right: var(--border-base);\n\tpadding: var(--spacing-l) 0 var(--spacing-l) var(--spacing-l);\n\tz-index: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n}\n\n.heading {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: baseline;\n\tpadding-right: var(--spacing-l);\n}\n\n.controls {\n\tpadding: var(--spacing-s) 0 var(--spacing-xs);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding-right: var(--spacing-m);\n\n\tbutton {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n}\n\n.executionList {\n\tflex: 1;\n\toverflow: auto;\n\tmargin-bottom: var(--spacing-m);\n\tbackground-color: var(--color-background-xlight) !important;\n\n\t// Scrolling fader\n\t&::before {\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\twidth: 270px;\n\t\theight: 6px;\n\t\tbackground: linear-gradient(to bottom, rgba(251, 251, 251, 1) 0%, rgba(251, 251, 251, 0) 100%);\n\t\tz-index: 999;\n\t}\n\n\t// Lower first execution card so fader is not visible when not scrolled\n\t& > div:first-child {\n\t\tmargin-top: 3px;\n\t}\n}\n\n.infoAccordion {\n\tposition: absolute;\n\tbottom: 0;\n\tmargin-left: calc(-1 * var(--spacing-l));\n\tborder-top: var(--border-base);\n\n\t& > div {\n\t\twidth: 309px;\n\t\tbackground-color: var(--color-background-light);\n\t\tmargin-top: 0 !important;\n\t}\n}\n\n.noResultsContainer {\n\twidth: 100%;\n\tmargin-top: var(--spacing-2xl);\n\ttext-align: center;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.executions-sidebar {\n\t:deep(.el-skeleton__item) {\n\t\theight: 60px;\n\t\tborder-radius: 0;\n\t}\n}\n</style>\n","<template>\n\t<div :class=\"$style.container\">\n\t\t<WorkflowExecutionsSidebar\n\t\t\t:executions=\"executions\"\n\t\t\t:loading=\"loading && !executions.length\"\n\t\t\t:loading-more=\"loadingMore\"\n\t\t\t:temporary-execution=\"temporaryExecution\"\n\t\t\t@update:auto-refresh=\"$emit('update:auto-refresh', $event)\"\n\t\t\t@reload-executions=\"$emit('reload')\"\n\t\t\t@filter-updated=\"$emit('update:filters', $event)\"\n\t\t\t@load-more=\"$emit('load-more')\"\n\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t/>\n\t\t<div v-if=\"!hidePreview\" :class=\"$style.content\">\n\t\t\t<router-view\n\t\t\t\tname=\"executionPreview\"\n\t\t\t\t:execution=\"execution\"\n\t\t\t\t@delete-current-execution=\"onDeleteCurrentExecution\"\n\t\t\t\t@retry-execution=\"onRetryExecution\"\n\t\t\t\t@stop-execution=\"onStopExecution\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport type { PropType } from 'vue';\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport { useRouter } from 'vue-router';\nimport WorkflowExecutionsSidebar from '@/components/executions/workflow/WorkflowExecutionsSidebar.vue';\nimport {\n\tMAIN_HEADER_TABS,\n\tMODAL_CANCEL,\n\tMODAL_CONFIRM,\n\tPLACEHOLDER_EMPTY_WORKFLOW_ID,\n\tVIEWS,\n} from '@/constants';\nimport type { ExecutionFilterType, IWorkflowDb } from '@/Interface';\nimport type { ExecutionSummary, IDataObject } from 'n8n-workflow';\nimport { useMessage } from '@/composables/useMessage';\nimport { useToast } from '@/composables/useToast';\nimport { getNodeViewTab } from '@/utils/canvasUtils';\nimport { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport { useTagsStore } from '@/stores/tags.store';\nimport { executionFilterToQueryFilter } from '@/utils/executionUtils';\nimport { useExternalHooks } from '@/composables/useExternalHooks';\nimport { useDebounce } from '@/composables/useDebounce';\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsList',\n\tcomponents: {\n\t\tWorkflowExecutionsSidebar,\n\t},\n\tasync beforeRouteLeave(to, _, next) {\n\t\tif (getNodeViewTab(to) === MAIN_HEADER_TABS.WORKFLOW) {\n\t\t\tnext();\n\t\t\treturn;\n\t\t}\n\t\tif (this.uiStore.stateIsDirty) {\n\t\t\tconst confirmModal = await this.confirm(\n\t\t\t\tthis.$locale.baseText('generic.unsavedWork.confirmMessage.message'),\n\t\t\t\t{\n\t\t\t\t\ttitle: this.$locale.baseText('generic.unsavedWork.confirmMessage.headline'),\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\tconfirmButtonText: this.$locale.baseText(\n\t\t\t\t\t\t'generic.unsavedWork.confirmMessage.confirmButtonText',\n\t\t\t\t\t),\n\t\t\t\t\tcancelButtonText: this.$locale.baseText(\n\t\t\t\t\t\t'generic.unsavedWork.confirmMessage.cancelButtonText',\n\t\t\t\t\t),\n\t\t\t\t\tshowClose: true,\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tif (confirmModal === MODAL_CONFIRM) {\n\t\t\t\tconst saved = await this.workflowHelpers.saveCurrentWorkflow({}, false);\n\t\t\t\tif (saved) {\n\t\t\t\t\tawait this.settingsStore.fetchPromptsData();\n\t\t\t\t}\n\t\t\t\tthis.uiStore.stateIsDirty = false;\n\t\t\t\tnext();\n\t\t\t} else if (confirmModal === MODAL_CANCEL) {\n\t\t\t\tthis.uiStore.stateIsDirty = false;\n\t\t\t\tnext();\n\t\t\t}\n\t\t} else {\n\t\t\tnext();\n\t\t}\n\t},\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tworkflow: {\n\t\t\ttype: Object as PropType<IWorkflowDb>,\n\t\t\trequired: true,\n\t\t},\n\t\texecutions: {\n\t\t\ttype: Array as PropType<ExecutionSummary[]>,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tfilters: {\n\t\t\ttype: Object as PropType<ExecutionFilterType>,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\texecution: {\n\t\t\ttype: Object as PropType<ExecutionSummary>,\n\t\t\tdefault: null,\n\t\t},\n\t\tloadingMore: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: [\n\t\t'execution:delete',\n\t\t'execution:stop',\n\t\t'execution:retry',\n\t\t'update:auto-refresh',\n\t\t'update:filters',\n\t\t'load-more',\n\t\t'reload',\n\t],\n\tsetup() {\n\t\tconst externalHooks = useExternalHooks();\n\t\tconst router = useRouter();\n\t\tconst workflowHelpers = useWorkflowHelpers(router);\n\t\tconst { callDebounced } = useDebounce();\n\n\t\treturn {\n\t\t\texternalHooks,\n\t\t\tworkflowHelpers,\n\t\t\tcallDebounced,\n\t\t\t...useToast(),\n\t\t\t...useMessage(),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useTagsStore, useNodeTypesStore, useSettingsStore, useUIStore),\n\t\ttemporaryExecution(): ExecutionSummary | undefined {\n\t\t\tconst isTemporary = !this.executions.find((execution) => execution.id === this.execution?.id);\n\t\t\treturn isTemporary ? this.execution : undefined;\n\t\t},\n\t\thidePreview(): boolean {\n\t\t\treturn this.loading || (!this.execution && this.executions.length);\n\t\t},\n\t\tfilterApplied(): boolean {\n\t\t\treturn this.filters.status !== 'all';\n\t\t},\n\t\tworkflowDataNotLoaded(): boolean {\n\t\t\treturn this.workflow.id === PLACEHOLDER_EMPTY_WORKFLOW_ID && this.workflow.name === '';\n\t\t},\n\t\trequestFilter(): IDataObject {\n\t\t\treturn executionFilterToQueryFilter({\n\t\t\t\t...this.filters,\n\t\t\t\tworkflowId: this.workflow.id,\n\t\t\t});\n\t\t},\n\t},\n\twatch: {\n\t\texecution(value: ExecutionSummary) {\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.$router\n\t\t\t\t.push({\n\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\tparams: { name: this.workflow.id, executionId: value.id },\n\t\t\t\t})\n\t\t\t\t.catch(() => {});\n\t\t},\n\t},\n\tmethods: {\n\t\tasync onDeleteCurrentExecution(): Promise<void> {\n\t\t\tthis.$emit('execution:delete', this.execution.id);\n\t\t},\n\t\tasync onStopExecution(): Promise<void> {\n\t\t\tthis.$emit('execution:stop', this.execution.id);\n\t\t},\n\t\tasync onRetryExecution(payload: { execution: ExecutionSummary; command: string }) {\n\t\t\tconst loadWorkflow = payload.command === 'current-workflow';\n\n\t\t\tthis.$emit('execution:retry', {\n\t\t\t\tid: payload.execution.id,\n\t\t\t\tloadWorkflow,\n\t\t\t});\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.container {\n\tdisplay: flex;\n\theight: 100%;\n\twidth: 100%;\n}\n\n.content {\n\tflex: 1;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';\nimport WorkflowExecutionsList from '@/components/executions/workflow/WorkflowExecutionsList.vue';\nimport { useExecutionsStore } from '@/stores/executions.store';\nimport { useI18n } from '@/composables/useI18n';\nimport type { ExecutionFilterType, IWorkflowDb } from '@/Interface';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { useNodeTypesStore } from '@/stores/nodeTypes.store';\nimport { NO_NETWORK_ERROR_CODE } from '@/utils/apiUtils';\nimport { useToast } from '@/composables/useToast';\nimport { VIEWS } from '@/constants';\nimport { useRoute, useRouter } from 'vue-router';\nimport type { ExecutionSummary } from 'n8n-workflow';\nimport { useDebounce } from '@/composables/useDebounce';\nimport { storeToRefs } from 'pinia';\nimport { useTelemetry } from '@/composables/useTelemetry';\n\nconst executionsStore = useExecutionsStore();\nconst workflowsStore = useWorkflowsStore();\nconst nodeTypesStore = useNodeTypesStore();\nconst i18n = useI18n();\nconst telemetry = useTelemetry();\nconst route = useRoute();\nconst router = useRouter();\nconst toast = useToast();\nconst { callDebounced } = useDebounce();\n\nconst { filters } = storeToRefs(executionsStore);\n\nconst loading = ref(false);\nconst loadingMore = ref(false);\n\nconst workflow = ref<IWorkflowDb | undefined>();\n\nconst workflowId = computed(() => {\n\treturn (route.params.name as string) || workflowsStore.workflowId;\n});\n\nconst executionId = computed(() => route.params.executionId as string);\n\nconst executions = computed(() => [\n\t...(executionsStore.currentExecutionsByWorkflowId[workflowId.value] ?? []),\n\t...(executionsStore.executionsByWorkflowId[workflowId.value] ?? []),\n]);\n\nconst execution = computed(() => {\n\treturn executions.value.find((e) => e.id === executionId.value) ?? currentExecution.value;\n});\n\nconst currentExecution = ref<ExecutionSummary | undefined>();\n\nwatch(\n\t() => workflowId.value,\n\tasync () => {\n\t\tawait fetchWorkflow();\n\t},\n);\n\nwatch(\n\t() => executionId.value,\n\tasync () => {\n\t\tawait fetchExecution();\n\t},\n);\n\nonMounted(async () => {\n\tawait nodeTypesStore.loadNodeTypesIfNotLoaded();\n\tawait Promise.all([\n\t\tnodeTypesStore.loadNodeTypesIfNotLoaded(),\n\t\tfetchWorkflow(),\n\t\texecutionsStore.initialize(workflowId.value),\n\t]);\n\tawait fetchExecution();\n\tawait initializeRoute();\n\tdocument.addEventListener('visibilitychange', onDocumentVisibilityChange);\n});\n\nonBeforeUnmount(() => {\n\texecutionsStore.reset();\n\tdocument.removeEventListener('visibilitychange', onDocumentVisibilityChange);\n});\n\nasync function fetchExecution() {\n\tif (!executionId.value) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tcurrentExecution.value = (await executionsStore.fetchExecution(\n\t\t\texecutionId.value,\n\t\t)) as ExecutionSummary;\n\t\texecutionsStore.activeExecution = currentExecution.value;\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('nodeView.showError.openExecution.title'));\n\t}\n}\n\nfunction onDocumentVisibilityChange() {\n\tif (document.visibilityState === 'hidden') {\n\t\texecutionsStore.stopAutoRefreshInterval();\n\t} else {\n\t\tvoid executionsStore.startAutoRefreshInterval(workflowId.value);\n\t}\n}\n\nasync function initializeRoute() {\n\tif (route.name === VIEWS.EXECUTION_HOME && executions.value.length > 0 && workflow.value) {\n\t\tawait router\n\t\t\t.push({\n\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\tparams: { name: workflow.value.id, executionId: executions.value[0].id },\n\t\t\t})\n\t\t\t.catch(() => {});\n\t}\n}\n\nasync function fetchWorkflow() {\n\tlet data: IWorkflowDb | undefined;\n\ttry {\n\t\t// @TODO Retrieve from store if exists\n\t\tdata = await workflowsStore.fetchWorkflow(workflowId.value);\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('nodeView.showError.openWorkflow.title'));\n\t\treturn;\n\t}\n\n\tif (!data) {\n\t\tthrow new Error(\n\t\t\ti18n.baseText('nodeView.workflowWithIdCouldNotBeFound', {\n\t\t\t\tinterpolate: { workflowId: workflowId.value },\n\t\t\t}),\n\t\t);\n\t}\n\n\tworkflow.value = data;\n}\n\nasync function onAutoRefreshToggle(value: boolean) {\n\tif (value) {\n\t\tawait executionsStore.startAutoRefreshInterval(workflowId.value);\n\t} else {\n\t\texecutionsStore.stopAutoRefreshInterval();\n\t}\n}\n\nasync function onRefreshData() {\n\tif (!workflowId.value) {\n\t\treturn;\n\t}\n\n\ttry {\n\t\tawait executionsStore.fetchExecutions({\n\t\t\t...executionsStore.executionsFilters,\n\t\t\tworkflowId: workflowId.value,\n\t\t});\n\t} catch (error) {\n\t\tif (error.errorCode === NO_NETWORK_ERROR_CODE) {\n\t\t\ttoast.showMessage(\n\t\t\t\t{\n\t\t\t\t\ttitle: i18n.baseText('executionsList.showError.refreshData.title'),\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\ttype: 'error',\n\t\t\t\t\tduration: 3500,\n\t\t\t\t},\n\t\t\t\tfalse,\n\t\t\t);\n\t\t} else {\n\t\t\ttoast.showError(error, i18n.baseText('executionsList.showError.refreshData.title'));\n\t\t}\n\t}\n}\n\nasync function onUpdateFilters(newFilters: ExecutionFilterType) {\n\texecutionsStore.reset();\n\texecutionsStore.setFilters(newFilters);\n\tawait executionsStore.initialize(workflowId.value);\n}\n\nasync function onExecutionStop(id: string) {\n\ttry {\n\t\tawait executionsStore.stopCurrentExecution(id);\n\n\t\ttoast.showMessage({\n\t\t\ttitle: i18n.baseText('executionsList.showMessage.stopExecution.title'),\n\t\t\tmessage: i18n.baseText('executionsList.showMessage.stopExecution.message', {\n\t\t\t\tinterpolate: { activeExecutionId: id },\n\t\t\t}),\n\t\t\ttype: 'success',\n\t\t});\n\n\t\tawait onRefreshData();\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.stopExecution.title'));\n\t}\n}\n\nasync function onExecutionDelete(id: string) {\n\tloading.value = true;\n\ttry {\n\t\tconst executionIndex = executions.value.findIndex((e: ExecutionSummary) => e.id === id);\n\n\t\tconst nextExecution =\n\t\t\texecutions.value[executionIndex + 1] ||\n\t\t\texecutions.value[executionIndex - 1] ||\n\t\t\texecutions.value[0];\n\n\t\tawait executionsStore.deleteExecutions({\n\t\t\tids: [id],\n\t\t});\n\n\t\tif (workflow.value) {\n\t\t\tif (executions.value.length > 0) {\n\t\t\t\tawait router\n\t\t\t\t\t.replace({\n\t\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\t\tparams: { name: workflow.value.id, executionId: nextExecution.id },\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => {});\n\t\t\t} else {\n\t\t\t\t// If there are no executions left, show empty state\n\t\t\t\tawait router.replace({\n\t\t\t\t\tname: VIEWS.EXECUTION_HOME,\n\t\t\t\t\tparams: { name: workflow.value.id },\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tloading.value = false;\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.handleDeleteSelected.title'));\n\t\treturn;\n\t}\n\tloading.value = false;\n\n\ttoast.showMessage({\n\t\ttitle: i18n.baseText('executionsList.showMessage.handleDeleteSelected.title'),\n\t\ttype: 'success',\n\t});\n}\n\nasync function onExecutionRetry(payload: { id: string; loadWorkflow: boolean }) {\n\ttoast.showMessage({\n\t\ttitle: i18n.baseText('executionDetails.runningMessage'),\n\t\ttype: 'info',\n\t\tduration: 2000,\n\t});\n\n\tawait retryExecution(payload);\n\tawait onRefreshData();\n\n\ttelemetry.track('User clicked retry execution button', {\n\t\tworkflow_id: workflow.value?.id,\n\t\texecution_id: payload.id,\n\t\tretry_type: payload.loadWorkflow ? 'current' : 'original',\n\t});\n}\n\nasync function retryExecution(payload: { id: string; loadWorkflow: boolean }) {\n\ttry {\n\t\tconst retrySuccessful = await executionsStore.retryExecution(payload.id, payload.loadWorkflow);\n\n\t\tif (retrySuccessful) {\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: i18n.baseText('executionsList.showMessage.retrySuccessfulTrue.title'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t} else {\n\t\t\ttoast.showMessage({\n\t\t\t\ttitle: i18n.baseText('executionsList.showMessage.retrySuccessfulFalse.title'),\n\t\t\t\ttype: 'error',\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.retryExecution.title'));\n\t}\n}\n\nasync function onLoadMore(): Promise<void> {\n\tif (!loadingMore.value) {\n\t\tawait callDebounced(loadMore, { debounceTime: 1000 });\n\t}\n}\n\nasync function loadMore(): Promise<void> {\n\tif (\n\t\t!!executionsStore.executionsFilters.status?.includes('running') ||\n\t\texecutions.value.length >= executionsStore.executionsCount\n\t) {\n\t\treturn;\n\t}\n\n\tloadingMore.value = true;\n\n\tlet lastId: string | undefined;\n\tif (executions.value.length !== 0) {\n\t\tconst lastItem = executions.value.slice(-1)[0];\n\t\tlastId = lastItem.id;\n\t}\n\n\ttry {\n\t\tawait executionsStore.fetchExecutions(executionsStore.executionsFilters, lastId);\n\t} catch (error) {\n\t\tloadingMore.value = false;\n\t\ttoast.showError(error, i18n.baseText('executionsList.showError.loadMore.title'));\n\t\treturn;\n\t}\n\n\tloadingMore.value = false;\n}\n</script>\n<template>\n\t<WorkflowExecutionsList\n\t\tv-if=\"workflow\"\n\t\t:executions=\"executions\"\n\t\t:execution=\"execution\"\n\t\t:filters=\"filters\"\n\t\t:workflow=\"workflow\"\n\t\t:loading=\"loading\"\n\t\t:loading-more=\"loadingMore\"\n\t\t@execution:stop=\"onExecutionStop\"\n\t\t@execution:delete=\"onExecutionDelete\"\n\t\t@execution:retry=\"onExecutionRetry\"\n\t\t@update:filters=\"onUpdateFilters\"\n\t\t@update:auto-refresh=\"onAutoRefreshToggle\"\n\t\t@load-more=\"onLoadMore\"\n\t\t@reload=\"onRefreshData\"\n\t/>\n</template>\n"],"names":["_sfc_main$3","defineComponent","ExecutionsTime","useExecutionHelpers","VIEWS","mapStores","useWorkflowsStore","action","_resolveComponent","$style","_normalizeClass","executionUIDetails","_ctx","highlight","_createVNode","_component_router_link","_withCtx","_createElementVNode","_component_n8n_text","_createTextVNode","_toDisplayString","_openBlock","_createBlock","_component_n8n_spinner","_createCommentVNode","execution","_component_ExecutionsTime","_createElementBlock","_hoisted_1","isRetriable","onRetryMenuItemSelect","_component_n8n_tooltip","_sfc_main$2","WorkflowExecutionsCard","WorkflowExecutionsInfoAccordion","ExecutionsFilter","useExecutionsStore","to","from","limit","executionsListRef","diff","payload","filter","sidebarContainerRef","currentWorkflowExecutionsCardRefs","_a","cardElement","listCapacity","cardRect","LIST_HEADER_OFFSET","_hoisted_2","_component_WorkflowExecutionsInfoAccordion","_component_n8n_heading","_component_el_checkbox","_cache","$event","_component_ExecutionsFilter","loadMore","loading","_component_n8n_loading","temporaryExecution","onRetryExecution","_TransitionGroup","_Fragment","_renderList","_component_WorkflowExecutionsCard","loadingMore","_sfc_main$1","WorkflowExecutionsSidebar","_","next","getNodeViewTab","MAIN_HEADER_TABS","confirmModal","MODAL_CONFIRM","MODAL_CANCEL","externalHooks","useExternalHooks","router","useRouter","workflowHelpers","useWorkflowHelpers","callDebounced","useDebounce","useToast","useMessage","useTagsStore","useNodeTypesStore","useSettingsStore","useUIStore","PLACEHOLDER_EMPTY_WORKFLOW_ID","executionFilterToQueryFilter","value","loadWorkflow","$emit","hidePreview","onStopExecution","executionsStore","workflowsStore","nodeTypesStore","i18n","useI18n","telemetry","useTelemetry","route","useRoute","toast","filters","storeToRefs","ref","workflow","workflowId","computed","executionId","executions","e","currentExecution","watch","fetchWorkflow","fetchExecution","onMounted","initializeRoute","onDocumentVisibilityChange","onBeforeUnmount","error","data","onAutoRefreshToggle","onRefreshData","NO_NETWORK_ERROR_CODE","onUpdateFilters","newFilters","onExecutionStop","id","onExecutionDelete","executionIndex","nextExecution","onExecutionRetry","retryExecution","onLoadMore","lastId"],"mappings":"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"}
|