n8n-editor-ui 1.19.1 → 1.19.3
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 +60 -60
- package/dist/assets/{AuthView-pnWQAK0S.js → AuthView-KzKyZSHz.js} +2 -2
- package/dist/assets/{AuthView-pnWQAK0S.js.map → AuthView-KzKyZSHz.js.map} +1 -1
- package/dist/assets/{CanvasControls-kb3__O2G.js → CanvasControls-6jR1_mnm.js} +2 -2
- package/dist/assets/{CanvasControls-kb3__O2G.js.map → CanvasControls-6jR1_mnm.js.map} +1 -1
- package/dist/assets/{ChangePasswordView-w8ZDdsHs.js → ChangePasswordView-TW8EQPS0.js} +2 -2
- package/dist/assets/{ChangePasswordView-w8ZDdsHs.js.map → ChangePasswordView-TW8EQPS0.js.map} +1 -1
- package/dist/assets/{CredentialsView-9EPVLguD.js → CredentialsView-AVQZL_tm.js} +2 -2
- package/dist/assets/{CredentialsView-9EPVLguD.js.map → CredentialsView-AVQZL_tm.js.map} +1 -1
- package/dist/assets/{ExecutionFilter-xWjqUjz0.js → ExecutionFilter-tcX3bN8y.js} +2 -2
- package/dist/assets/{ExecutionFilter-xWjqUjz0.js.map → ExecutionFilter-tcX3bN8y.js.map} +1 -1
- package/dist/assets/{ExecutionPreview-IQ7v5u01.js → ExecutionPreview-OuL-2qRR.js} +2 -2
- package/dist/assets/{ExecutionPreview-IQ7v5u01.js.map → ExecutionPreview-OuL-2qRR.js.map} +1 -1
- package/dist/assets/{ExecutionsInfoAccordion-GNoSEKPt.js → ExecutionsInfoAccordion-J0VUGzOg.js} +2 -2
- package/dist/assets/{ExecutionsInfoAccordion-GNoSEKPt.js.map → ExecutionsInfoAccordion-J0VUGzOg.js.map} +1 -1
- package/dist/assets/{ExecutionsLandingPage-bMbJUz4X.js → ExecutionsLandingPage-LNx1ct-F.js} +2 -2
- package/dist/assets/{ExecutionsLandingPage-bMbJUz4X.js.map → ExecutionsLandingPage-LNx1ct-F.js.map} +1 -1
- package/dist/assets/{ExecutionsList-VqMNpnno.js → ExecutionsList-1jr8ziaw.js} +2 -2
- package/dist/assets/ExecutionsList-1jr8ziaw.js.map +1 -0
- package/dist/assets/{ExecutionsView-cib3hepc.js → ExecutionsView-vfalxf-N.js} +2 -2
- package/dist/assets/{ExecutionsView-cib3hepc.js.map → ExecutionsView-vfalxf-N.js.map} +1 -1
- package/dist/assets/{FixedCollectionParameter-2NZhE0YP.js → FixedCollectionParameter-i4v0_RBC.js} +3 -3
- package/dist/assets/{FixedCollectionParameter-2NZhE0YP.js.map → FixedCollectionParameter-i4v0_RBC.js.map} +1 -1
- package/dist/assets/{ForgotMyPasswordView-JpQD0IzR.js → ForgotMyPasswordView-n-WXfUXB.js} +2 -2
- package/dist/assets/{ForgotMyPasswordView-JpQD0IzR.js.map → ForgotMyPasswordView-n-WXfUXB.js.map} +1 -1
- package/dist/assets/{MainHeader-_EB1A67D.js → MainHeader-it41_mme.js} +2 -2
- package/dist/assets/{MainHeader-_EB1A67D.js.map → MainHeader-it41_mme.js.map} +1 -1
- package/dist/assets/{MainSidebar-QaJ5uvnW.js → MainSidebar-K22ttpb5.js} +2 -2
- package/dist/assets/{MainSidebar-QaJ5uvnW.js.map → MainSidebar-K22ttpb5.js.map} +1 -1
- package/dist/assets/{NodeCreation-OxTpBRfP.js → NodeCreation-3pcb_BwC.js} +3 -3
- package/dist/assets/{NodeCreation-OxTpBRfP.js.map → NodeCreation-3pcb_BwC.js.map} +1 -1
- package/dist/assets/{NodeCreator-_GxUysbY.js → NodeCreator-r6gxY14d.js} +2 -2
- package/dist/assets/{NodeCreator-_GxUysbY.js.map → NodeCreator-r6gxY14d.js.map} +1 -1
- package/dist/assets/{NodeView-CdR2fi_x.js → NodeView-LzPrYfwG.js} +3 -3
- package/dist/assets/{NodeView-CdR2fi_x.js.map → NodeView-LzPrYfwG.js.map} +1 -1
- package/dist/assets/{ResourcesListLayout-XUIQQpyB.js → ResourcesListLayout-XbNZXU-j.js} +2 -2
- package/dist/assets/{ResourcesListLayout-XUIQQpyB.js.map → ResourcesListLayout-XbNZXU-j.js.map} +1 -1
- package/dist/assets/{RunDataAi-4m1wWDUf.js → RunDataAi-ueFTZBht.js} +2 -2
- package/dist/assets/{RunDataAi-4m1wWDUf.js.map → RunDataAi-ueFTZBht.js.map} +1 -1
- package/dist/assets/{RunDataJson-FZZoF8ao.js → RunDataJson-VFzb6R4m.js} +3 -3
- package/dist/assets/{RunDataJson-FZZoF8ao.js.map → RunDataJson-VFzb6R4m.js.map} +1 -1
- package/dist/assets/{RunDataJsonActions-LZGsgNyW.js → RunDataJsonActions-LDR8SlAW.js} +2 -2
- package/dist/assets/{RunDataJsonActions-LZGsgNyW.js.map → RunDataJsonActions-LDR8SlAW.js.map} +1 -1
- package/dist/assets/{RunDataSchema-wjyR7MiY.js → RunDataSchema-BB0j0bVA.js} +2 -2
- package/dist/assets/{RunDataSchema-wjyR7MiY.js.map → RunDataSchema-BB0j0bVA.js.map} +1 -1
- package/dist/assets/{RunDataTable-690SZ7_1.js → RunDataTable-Qas85Wnj.js} +2 -2
- package/dist/assets/{RunDataTable-690SZ7_1.js.map → RunDataTable-Qas85Wnj.js.map} +1 -1
- package/dist/assets/{SamlOnboarding-9tSVzIi2.js → SamlOnboarding-4D4QjACf.js} +2 -2
- package/dist/assets/{SamlOnboarding-9tSVzIi2.js.map → SamlOnboarding-4D4QjACf.js.map} +1 -1
- package/dist/assets/{SettingsApiView-95Wb-oA5.js → SettingsApiView-0Ne2kemN.js} +2 -2
- package/dist/assets/{SettingsApiView-95Wb-oA5.js.map → SettingsApiView-0Ne2kemN.js.map} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-WW65T1Gl.js → SettingsCommunityNodesView-zzzz0aj6.js} +2 -2
- package/dist/assets/{SettingsCommunityNodesView-WW65T1Gl.js.map → SettingsCommunityNodesView-zzzz0aj6.js.map} +1 -1
- package/dist/assets/{SettingsExternalSecrets-6YJbQ8LH.js → SettingsExternalSecrets-bsdr9nMJ.js} +2 -2
- package/dist/assets/{SettingsExternalSecrets-6YJbQ8LH.js.map → SettingsExternalSecrets-bsdr9nMJ.js.map} +1 -1
- package/dist/assets/{SettingsFakeDoorView-6ZiGYnHw.js → SettingsFakeDoorView-0ioWE56l.js} +2 -2
- package/dist/assets/{SettingsFakeDoorView-6ZiGYnHw.js.map → SettingsFakeDoorView-0ioWE56l.js.map} +1 -1
- package/dist/assets/{SettingsLdapView-G9lNDLq4.js → SettingsLdapView-nV_D5CDp.js} +2 -2
- package/dist/assets/{SettingsLdapView-G9lNDLq4.js.map → SettingsLdapView-nV_D5CDp.js.map} +1 -1
- package/dist/assets/{SettingsLogStreamingView-hOxp5upg.js → SettingsLogStreamingView-GPC6oqoB.js} +2 -2
- package/dist/assets/{SettingsLogStreamingView-hOxp5upg.js.map → SettingsLogStreamingView-GPC6oqoB.js.map} +1 -1
- package/dist/assets/{SettingsSourceControl-A4p6uSTm.js → SettingsSourceControl-YlWPbedb.js} +2 -2
- package/dist/assets/{SettingsSourceControl-A4p6uSTm.js.map → SettingsSourceControl-YlWPbedb.js.map} +1 -1
- package/dist/assets/{SettingsSso-kXl38iOM.js → SettingsSso-o3FTQjpW.js} +2 -2
- package/dist/assets/{SettingsSso-kXl38iOM.js.map → SettingsSso-o3FTQjpW.js.map} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-E00t5N2Z.js → SettingsUsageAndPlan-lypv7X6a.js} +2 -2
- package/dist/assets/{SettingsUsageAndPlan-E00t5N2Z.js.map → SettingsUsageAndPlan-lypv7X6a.js.map} +1 -1
- package/dist/assets/{SettingsUsersView-4PoSbZc_.js → SettingsUsersView-BP40GKuA.js} +2 -2
- package/dist/assets/{SettingsUsersView-4PoSbZc_.js.map → SettingsUsersView-BP40GKuA.js.map} +1 -1
- package/dist/assets/{SettingsView-ITSZzUOy.js → SettingsView-UI5wnO8B.js} +2 -2
- package/dist/assets/{SettingsView-ITSZzUOy.js.map → SettingsView-UI5wnO8B.js.map} +1 -1
- package/dist/assets/{SetupView-iFHyYLKM.js → SetupView-jUHcBldc.js} +2 -2
- package/dist/assets/{SetupView-iFHyYLKM.js.map → SetupView-jUHcBldc.js.map} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-1mq-ZIl2.js → SetupWorkflowFromTemplateView-xZok8Ro-.js} +2 -2
- package/dist/assets/{SetupWorkflowFromTemplateView-1mq-ZIl2.js.map → SetupWorkflowFromTemplateView-xZok8Ro-.js.map} +1 -1
- package/dist/assets/{SigninView-eqdMLCtk.js → SigninView-jH2VFMFu.js} +2 -2
- package/dist/assets/{SigninView-eqdMLCtk.js.map → SigninView-jH2VFMFu.js.map} +1 -1
- package/dist/assets/{SignupView-a26ywVgy.js → SignupView-cQJowW7M.js} +2 -2
- package/dist/assets/{SignupView-a26ywVgy.js.map → SignupView-cQJowW7M.js.map} +1 -1
- package/dist/assets/{TemplateDetails-neZvQLcE.js → TemplateDetails-FXwRGgg3.js} +2 -2
- package/dist/assets/{TemplateDetails-neZvQLcE.js.map → TemplateDetails-FXwRGgg3.js.map} +1 -1
- package/dist/assets/{TemplateList-apw79EVp.js → TemplateList-ygiFPwW5.js} +2 -2
- package/dist/assets/{TemplateList-apw79EVp.js.map → TemplateList-ygiFPwW5.js.map} +1 -1
- package/dist/assets/{TemplatesCollectionView-2NGTxXTg.js → TemplatesCollectionView-iJK5C7dQ.js} +2 -2
- package/dist/assets/{TemplatesCollectionView-2NGTxXTg.js.map → TemplatesCollectionView-iJK5C7dQ.js.map} +1 -1
- package/dist/assets/{TemplatesSearchView-0FL2pP83.js → TemplatesSearchView-HA2xad9U.js} +2 -2
- package/dist/assets/{TemplatesSearchView-0FL2pP83.js.map → TemplatesSearchView-HA2xad9U.js.map} +1 -1
- package/dist/assets/{TemplatesWorkflowView-D4Lnmnhg.js → TemplatesWorkflowView-KdHMuTUs.js} +2 -2
- package/dist/assets/{TemplatesWorkflowView-D4Lnmnhg.js.map → TemplatesWorkflowView-KdHMuTUs.js.map} +1 -1
- package/dist/assets/{VariablesView-tzHYYMLV.js → VariablesView-BGFOVdr1.js} +2 -2
- package/dist/assets/{VariablesView-tzHYYMLV.js.map → VariablesView-BGFOVdr1.js.map} +1 -1
- package/dist/assets/{WorkerView-AmUPKGBk.js → WorkerView-FnskutaO.js} +2 -2
- package/dist/assets/{WorkerView-AmUPKGBk.js.map → WorkerView-FnskutaO.js.map} +1 -1
- package/dist/assets/{WorkflowActivator-haTVfR4g.js → WorkflowActivator-B2Cg8gE_.js} +2 -2
- package/dist/assets/{WorkflowActivator-haTVfR4g.js.map → WorkflowActivator-B2Cg8gE_.js.map} +1 -1
- package/dist/assets/{WorkflowOnboardingView-azyuxv8R.js → WorkflowOnboardingView-ZBFcAyXB.js} +2 -2
- package/dist/assets/{WorkflowOnboardingView-azyuxv8R.js.map → WorkflowOnboardingView-ZBFcAyXB.js.map} +1 -1
- package/dist/assets/{WorkflowsView-oE-PnjgI.js → WorkflowsView-ZCzM_7eW.js} +2 -2
- package/dist/assets/{WorkflowsView-oE-PnjgI.js.map → WorkflowsView-ZCzM_7eW.js.map} +1 -1
- package/dist/assets/{cloud-TMu3mk45.js → cloud-B6sgy7jV.js} +2 -2
- package/dist/assets/{cloud-TMu3mk45.js.map → cloud-B6sgy7jV.js.map} +1 -1
- package/dist/assets/{executionsHelpers-jpam7Sff.js → executionsHelpers-8_uqSfWi.js} +2 -2
- package/dist/assets/{executionsHelpers-jpam7Sff.js.map → executionsHelpers-8_uqSfWi.js.map} +1 -1
- package/dist/assets/{index-hMVAffQ3.js → index-sMRiWGJS.js} +4 -4
- package/dist/assets/{index-hMVAffQ3.js.map → index-sMRiWGJS.js.map} +1 -1
- package/dist/assets/{pushConnection-NKwmlD0l.js → pushConnection-SP3wVlD4.js} +2 -2
- package/dist/assets/{pushConnection-NKwmlD0l.js.map → pushConnection-SP3wVlD4.js.map} +1 -1
- package/dist/assets/{useExecutionDebugging-WpRAbEhr.js → useExecutionDebugging-vYjc-e7j.js} +2 -2
- package/dist/assets/{useExecutionDebugging-WpRAbEhr.js.map → useExecutionDebugging-vYjc-e7j.js.map} +1 -1
- package/dist/assets/{workflowActivate-UB1_xc5U.js → workflowActivate-FonyQsS3.js} +2 -2
- package/dist/assets/{workflowActivate-UB1_xc5U.js.map → workflowActivate-FonyQsS3.js.map} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/ExecutionsList-VqMNpnno.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{m as b}from"./pinia-IhuTtYiV.js";import{e as W}from"./executionsHelpers-jpam7Sff.js";import{B as y,_ as I,O as A,l as M,u as D,t as N,Q as O,a4 as R,dB as F,aa as U,eT as V,eY as P,a8 as B,a3 as z}from"./n8n-NE7NqrvB.js";import{E as H,a as X}from"./ExecutionFilter-xWjqUjz0.js";import{G as T,ag as h,l as u,m as v,T as d,O as x,I as c,p as _,S as g,R as E,M as $,Q as k,F as G,a7 as q}from"./vendor-2CfOYFi2.js";import{E as j}from"./ExecutionsInfoAccordion-GNoSEKPt.js";import{d as K,w as Q,a as Y,u as Z,aM as J,a6 as ee}from"./index-hMVAffQ3.js";import{v as te}from"./uuid-McvpxQtQ.js";import{_ as oe}from"./lodash-es-s_m9YyW7.js";import"./@fortawesome/vue-fontawesome-GVmvJ_gj.js";import"./@fortawesome/fontawesome-svg-core-xYGjsix9.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-viEZCtbZ.js";import"./flatted-jPn12Tq4.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./vue-i18n-eiX0lGiQ.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.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-QL7QI0sV.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-gO4u4slB.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./@fortawesome/free-solid-svg-icons-KH5RR_hW.js";import"./@fortawesome/free-regular-svg-icons-ipmEYOws.js";import"./chart.js-JtqvIvkt.js";const ie=T({name:"execution-card",mixins:[W],components:{ExecutionTime:H},data(){return{VIEWS:y}},props:{execution:{type:Object,required:!0},highlight:{type:Boolean,default:!1},showGap:{type:Boolean,default:!1}},computed:{retryExecutionActions(){return[{id:"current-workflow",label:this.$locale.baseText("executionsList.retryWithCurrentlySavedWorkflow")},{id:"original-workflow",label:this.$locale.baseText("executionsList.retryWithOriginalWorkflow")}]},executionUIDetails(){return this.getExecutionUIDetails(this.execution)},isActive(){return this.execution.id===this.$route.params.executionId}},methods:{onRetryMenuItemSelect(e){this.$emit("retryExecution",{execution:this.execution,command:e})}}}),se="_executionCard_12y8i_5",ne="_active_12y8i_10",re="_executionStatus_12y8i_13",ae="_executionLink_12y8i_16",le="_running_12y8i_19",ce="_spinner_12y8i_19",ue="_statusLabel_12y8i_26",he="_success_12y8i_30",de="_waiting_12y8i_33",fe="_error_12y8i_39",we="_unknown_12y8i_45",me="_icon_12y8i_61",pe="_icons_12y8i_66",xe="_retry_12y8i_74",Ee="_manual_12y8i_77",ye="_showGap_12y8i_85",ke={executionCard:se,active:ne,executionStatus:re,executionLink:ae,running:le,spinner:ce,statusLabel:ue,success:he,waiting:de,error:fe,unknown:we,icon:me,icons:pe,retry:xe,manual:Ee,showGap:ye},ge={key:0};function ve(e,t,i,o,s,n){const a=h("n8n-text"),l=h("n8n-spinner"),r=h("execution-time"),f=h("n8n-action-dropdown"),S=h("font-awesome-icon"),m=h("n8n-tooltip"),p=h("router-link");return u(),v("div",{class:c({"execution-card":!0,[e.$style.executionCard]:!0,[e.$style.active]:e.isActive,[e.$style[e.executionUIDetails.name]]:!0,[e.$style.highlight]:e.highlight,[e.$style.showGap]:e.showGap})},[d(p,{class:c(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(()=>[_("div",{class:c(e.$style.description)},[d(a,{color:"text-dark",bold:!0,size:"medium","data-test-id":"execution-time"},{default:x(()=>[g(E(e.executionUIDetails.startTime),1)]),_:1}),_("div",{class:c(e.$style.executionStatus)},[e.executionUIDetails.name==="running"?(u(),$(l,{key:0,size:"small",class:c([e.$style.spinner,"mr-4xs"])},null,8,["class"])):k("",!0),d(a,{class:c(e.$style.statusLabel),size:"small"},{default:x(()=>[g(E(e.executionUIDetails.label),1)]),_:1},8,["class"]),g(" "+E(" ")+" "),e.executionUIDetails.name==="running"?(u(),$(a,{key:1,color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>[g(E(e.$locale.baseText("executionDetails.runningTimeRunning"))+" ",1),d(r,{"start-time":e.execution.startedAt},null,8,["start-time"])]),_:1},8,["color"])):e.executionUIDetails.runningTime!==""?(u(),$(a,{key:2,color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>{var w;return[g(E(e.$locale.baseText("executionDetails.runningTimeFinished",{interpolate:{time:(w=e.executionUIDetails)==null?void 0:w.runningTime}})),1)]}),_:1},8,["color"])):k("",!0)],2),e.execution.mode==="retry"?(u(),v("div",ge,[d(a,{color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>[g(E(e.$locale.baseText("executionDetails.retry"))+" #"+E(e.execution.retryOf),1)]),_:1},8,["color"])])):k("",!0)],2),_("div",{class:c(e.$style.icons)},[e.executionUIDetails.name==="error"?(u(),$(f,{key:0,class:c([e.$style.icon,e.$style.retry]),items:e.retryExecutionActions,activatorIcon:"redo","data-test-id":"retry-execution-button",onSelect:e.onRetryMenuItemSelect},null,8,["class","items","onSelect"])):k("",!0),e.execution.mode==="manual"?(u(),$(m,{key:1,placement:"top"},{content:x(()=>[_("span",null,E(e.$locale.baseText("executionsList.test")),1)]),default:x(()=>[e.execution.mode==="manual"?(u(),$(S,{key:0,class:c([e.$style.icon,e.$style.manual]),icon:"flask"},null,8,["class"])):k("",!0)]),_:1})):k("",!0)],2)]),_:1},8,["class","to","data-test-execution-status"])],2)}const $e={$style:ke},_e=I(ie,[["render",ve],["__cssModules",$e]]),Se=T({name:"executions-sidebar",components:{ExecutionCard:_e,ExecutionsInfoAccordion:j,ExecutionFilter:X},props:{autoRefresh:{type:Boolean,default:!1},executions:{type:Array,required:!0},loading:{type:Boolean,default:!0},loadingMore:{type:Boolean,default:!1},temporaryExecution:{type:Object,default:null}},data(){return{VIEWS:y,filter:{}}},computed:{...b(M,A)},watch:{$route(e,t){t.name===y.EXECUTION_PREVIEW&&e.name===y.EXECUTION_HOME&&this.$router.go(-1)},"workflowsStore.activeWorkflowExecution"(){this.checkListSize(),this.scrollToActiveCard()}},mounted(){this.checkListSize(),this.scrollToActiveCard()},methods:{loadMore(e=20){if(!this.loading){const t=this.$refs.executionList;if(t){const i=t.offsetHeight-(t.scrollHeight-t.scrollTop);i>-10&&i<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 i;const e=this.$refs.container,t=this.$refs[`execution-${(i=this.workflowsStore.activeWorkflowExecution)==null?void 0:i.id}`];if(e&&(t!=null&&t.length)){const o=t[0].$el,s=Math.ceil(e.clientHeight/o.clientHeight);s>this.executions.length&&this.$emit("loadMore",s-this.executions.length)}},scrollToActiveCard(){var i;const e=this.$refs.executionList,t=this.$refs[`execution-${(i=this.workflowsStore.activeWorkflowExecution)==null?void 0:i.id}`];if(e&&(t!=null&&t.length)&&this.workflowsStore.activeWorkflowExecution){const s=t[0].$el.getBoundingClientRect(),n=200;s.top>e.offsetHeight&&e.scrollTo({top:s.top-n})}}}}),Ie="_container_iuzt7_5",Te="_heading_iuzt7_16",Re="_controls_iuzt7_23",be="_executionList_iuzt7_35",We="_infoAccordion_iuzt7_53",Ae="_noResultsContainer_iuzt7_65",Me={container:Ie,heading:Te,controls:Re,executionList:be,infoAccordion:We,noResultsContainer:Ae},Le={key:0,class:"mr-l"},Ce={key:3,class:"mr-m"};function De(e,t,i,o,s,n){const a=h("n8n-heading"),l=h("el-checkbox"),r=h("execution-filter"),f=h("n8n-loading"),S=h("n8n-text"),m=h("execution-card"),p=h("executions-info-accordion");return u(),v("div",{class:c(["executions-sidebar",e.$style.container]),ref:"container","data-test-id":"executions-sidebar"},[_("div",{class:c(e.$style.heading)},[d(a,{tag:"h2",size:"medium",color:"text-dark"},{default:x(()=>[g(E(e.$locale.baseText("generic.executions")),1)]),_:1})],2),_("div",{class:c(e.$style.controls)},[d(l,{modelValue:e.autoRefresh,"onUpdate:modelValue":t[0]||(t[0]=w=>e.$emit("update:autoRefresh",w)),"data-test-id":"auto-refresh-checkbox"},{default:x(()=>[g(E(e.$locale.baseText("executionsList.autoRefresh")),1)]),_:1},8,["modelValue"]),d(r,{"popover-placement":"left-start",onFilterChanged:e.onFilterChanged},null,8,["onFilterChanged"])],2),_("div",{class:c(e.$style.executionList),ref:"executionList","data-test-id":"current-executions-list",onScroll:t[1]||(t[1]=w=>e.loadMore(20))},[e.loading?(u(),v("div",Le,[d(f,{variant:"rect"})])):k("",!0),!e.loading&&e.executions.length===0?(u(),v("div",{key:1,class:c(e.$style.noResultsContainer)},[d(S,{color:"text-base",size:"medium",align:"center"},{default:x(()=>[g(E(e.$locale.baseText("executionsLandingPage.noResults")),1)]),_:1})],2)):e.temporaryExecution?(u(),$(m,{key:2,execution:e.temporaryExecution,ref:`execution-${e.temporaryExecution.id}`,"data-test-id":`execution-details-${e.temporaryExecution.id}`,showGap:!0,onRetryExecution:e.onRetryExecution},null,8,["execution","data-test-id","onRetryExecution"])):k("",!0),(u(!0),v(G,null,q(e.executions,w=>(u(),$(m,{key:w.id,execution:w,ref_for:!0,ref:`execution-${w.id}`,"data-test-id":`execution-details-${w.id}`,onRetryExecution:e.onRetryExecution},null,8,["execution","data-test-id","onRetryExecution"]))),128)),e.loadingMore?(u(),v("div",Ce,[d(f,{variant:"p",rows:1})])):k("",!0)],34),_("div",{class:c(e.$style.infoAccordion)},[d(p,{initiallyExpanded:!1})],2)],2)}const Ne={$style:Me},Oe=I(Se,[["render",De],["__cssModules",Ne],["__scopeId","data-v-2a9b4e57"]]),Fe=5,Ue=100,Ve=T({name:"executions-list",mixins:[W,K,Q],components:{ExecutionsSidebar:Oe},data(){return{loading:!1,loadingMore:!1,filter:{},temporaryExecution:null,autoRefresh:!1,autoRefreshTimeout:void 0}},setup(){return{...D(),...Y()}},computed:{...b(Z,O,N,M,A),hidePreview(){const e=this.filterApplied&&!this.executions.find(t=>{var i;return t.id===((i=this.activeExecution)==null?void 0:i.id)});return this.loading||!this.executions.length||e},filterApplied(){return this.filter.status!=="all"},workflowDataNotLoaded(){return this.workflowsStore.workflowId===R&&this.workflowsStore.workflowName===""},loadedFinishedExecutionsCount(){return this.workflowsStore.getAllLoadedFinishedExecutions.length},totalFinishedExecutionsCount(){return this.workflowsStore.getTotalFinishedExecutionsCount},requestFilter(){return J({...this.filter,workflowId:this.currentWorkflow})}},watch:{$route(e,t){if(e.params.name){const i=t.params.name!==e.params.name;this.initView(i)}if(e.params.executionId){const i=this.workflowsStore.getExecutionDataById(e.params.executionId);i&&(this.workflowsStore.activeWorkflowExecution=i)}}},async beforeRouteLeave(e,t,i){if(this.stopAutoRefreshInterval(),ee(e)===F.WORKFLOW){i();return}if(this.uiStore.stateIsDirty){const o=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});o===U?(await this.saveCurrentWorkflow({},!1)&&await this.settingsStore.fetchPromptsData(),this.uiStore.stateIsDirty=!1,i()):o===V&&(this.uiStore.stateIsDirty=!1,i())}else i()},async mounted(){this.loading=!0;const e=this.$route.params.name!==this.workflowsStore.workflowId,t=this.$route.params.name==="new"&&this.workflowsStore.workflowId===R,i=e&&!t;if(await this.initView(i),!i)if(this.workflowsStore.currentWorkflowExecutions.length>0){const o=await this.loadExecutions();this.workflowsStore.addToCurrentExecutions(o),await this.setActiveExecution()}else await this.setExecutions();this.autoRefresh=this.uiStore.executionSidebarAutoRefresh,this.startAutoRefreshInterval(),document.addEventListener("visibilitychange",this.onDocumentVisibilityChange),this.loading=!1},beforeUnmount(){this.stopAutoRefreshInterval(),document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange)},methods:{async initView(e){e&&(await this.nodeTypesStore.loadNodeTypesIfNotLoaded(),await this.openWorkflow(this.$route.params.name),this.uiStore.nodeViewInitialized=!1,this.workflowsStore.currentWorkflowExecutions.length===0&&await this.setExecutions(),this.activeExecution&&this.$router.push({name:y.EXECUTION_PREVIEW,params:{name:this.currentWorkflow,executionId:this.activeExecution.id}}).catch(()=>{}))},async onLoadMore(){this.loadingMore||await this.callDebounced("loadMore",{debounceTime:1e3})},async loadMore(e=20){var s;if(this.filter.status==="running"||this.loadedFinishedExecutionsCount>=this.totalFinishedExecutionsCount)return;this.loadingMore=!0;let t;this.executions.length!==0&&(t=this.executions.slice(-1)[0].id);let i;try{i=await this.workflowsStore.getPastExecutions(this.requestFilter,e,t)}catch(n){this.loadingMore=!1,this.showError(n,this.$locale.baseText("executionsList.showError.loadMore.title"));return}i.results=i.results.map(n=>({...n,mode:n.mode}));const o=[...this.executions];for(const n of i.results)o.find(a=>a.id===n.id)===void 0&&o.push(n),n.id===((s=this.temporaryExecution)==null?void 0:s.id)&&(this.temporaryExecution=null);this.workflowsStore.currentWorkflowExecutions=o,this.loadingMore=!1},async onDeleteCurrentExecution(){var e;this.loading=!0;try{const t=this.executions.findIndex(o=>o.id===this.$route.params.executionId),i=this.executions[t+1]||this.executions[t-1]||this.executions[0];await this.workflowsStore.deleteExecutions({ids:[this.$route.params.executionId]}),((e=this.temporaryExecution)==null?void 0:e.id)===this.$route.params.executionId&&(this.temporaryExecution=null),this.executions.length>0?(await this.$router.push({name:y.EXECUTION_PREVIEW,params:{name:this.currentWorkflow,executionId:i.id}}).catch(()=>{}),this.workflowsStore.activeWorkflowExecution=i):(this.workflowsStore.activeWorkflowExecution=null,await this.$router.push({name:y.EXECUTION_HOME,params:{name:this.currentWorkflow}})),await this.setExecutions()}catch(t){this.loading=!1,this.showError(t,this.$locale.baseText("executionsList.showError.handleDeleteSelected.title"));return}this.loading=!1,this.showMessage({title:this.$locale.baseText("executionsList.showMessage.handleDeleteSelected.title"),type:"success"})},async onStopExecution(){const e=this.$route.params.executionId;try{await this.workflowsStore.stopCurrentExecution(e),this.showMessage({title:this.$locale.baseText("executionsList.showMessage.stopExecution.title"),message:this.$locale.baseText("executionsList.showMessage.stopExecution.message",{interpolate:{activeExecutionId:e}}),type:"success"}),await this.loadAutoRefresh()}catch(t){this.showError(t,this.$locale.baseText("executionsList.showError.stopExecution.title"))}},async onFilterUpdated(e){this.filter=e,await this.setExecutions()},async setExecutions(){this.workflowsStore.currentWorkflowExecutions=await this.loadExecutions(),await this.setActiveExecution()},async startAutoRefreshInterval(){this.autoRefresh&&(await this.loadAutoRefresh(),this.stopAutoRefreshInterval(),this.autoRefreshTimeout=setTimeout(()=>{this.startAutoRefreshInterval()},4e3))},stopAutoRefreshInterval(){this.autoRefreshTimeout&&(clearTimeout(this.autoRefreshTimeout),this.autoRefreshTimeout=void 0)},onAutoRefreshToggle(e){this.autoRefresh=e,this.uiStore.executionSidebarAutoRefresh=this.autoRefresh,this.stopAutoRefreshInterval(),this.startAutoRefreshInterval()},onDocumentVisibilityChange(){document.visibilityState==="hidden"?this.stopAutoRefreshInterval():this.startAutoRefreshInterval()},async loadAutoRefresh(){var a;const e=await this.loadExecutions();let t=[...this.executions];const i=t.map(l=>parseInt(l.id,10));let o=0;const s=[];let n=null;for(let l=e.length-1;l>=0;l--){const r=e[l],f=parseInt(r.id,10);if(o!==0&&!isNaN(f)&&f-o>1){const p=oe(o+1,f);s.push(...p)}o=parseInt(r.id,10)||0;const S=i.indexOf(f);if(S!==-1){const p=t.find(C=>C.id===r.id),w=p&&p.finished===!1||(p==null?void 0:p.stoppedAt)===void 0,L=r.finished===!0||r.stoppedAt!==void 0;w&&L&&(t[S]=r,r.id===((a=this.activeExecution)==null?void 0:a.id)&&(n=r));continue}let m;for(m=t.length-1;m>=0;m--)if(f<parseInt(t[m].id,10)){t.splice(m+1,0,r);break}m===-1&&t.unshift(r)}t=t.filter(l=>!s.includes(parseInt(l.id,10))&&o>=parseInt(l.id,10)),this.workflowsStore.currentWorkflowExecutions=t,n!==null?this.workflowsStore.activeWorkflowExecution=n:!t.some(r=>{var f;return r.id===((f=this.activeExecution)==null?void 0:f.id)})&&this.executions.length>0&&!this.temporaryExecution?this.$router.push({name:y.EXECUTION_PREVIEW,params:{name:this.currentWorkflow,executionId:this.executions[0].id}}).catch(()=>{}):this.executions.length===0&&(this.$router.push({name:y.EXECUTION_HOME}).catch(()=>{}),this.workflowsStore.activeWorkflowExecution=null)},async loadExecutions(){if(!this.currentWorkflow)return[];try{return await this.workflowsStore.loadCurrentWorkflowExecutions(this.requestFilter)}catch(e){return e.errorCode===P?this.showMessage({title:this.$locale.baseText("executionsList.showError.refreshData.title"),message:e.message,type:"error",duration:3500},!1):this.showError(e,this.$locale.baseText("executionsList.showError.refreshData.title")),[]}},async setActiveExecution(){const e=this.$route.params.executionId;if(e){const t=this.workflowsStore.getExecutionDataById(e);t?this.workflowsStore.activeWorkflowExecution=t:await this.tryToFindExecution(e)}this.workflowsStore.activeWorkflowExecution===null&&this.executions.length>0&&!this.temporaryExecution&&(this.workflowsStore.activeWorkflowExecution=this.executions[0],this.$route.name===y.EXECUTION_HOME&&this.$router.push({name:y.EXECUTION_PREVIEW,params:{name:this.currentWorkflow,executionId:this.executions[0].id}}).catch(()=>{}))},async tryToFindExecution(e,t=0){if(t===0){const o=await this.workflowsStore.fetchExecutionDataById(e);if(o)this.temporaryExecution=o;else{this.workflowsStore.activeWorkflowExecution=null,this.showError(new Error(this.$locale.baseText("executionView.notFound.message",{interpolate:{executionId:e}})),this.$locale.baseText("nodeView.showError.openExecution.title"));return}}if(t>=Fe){if(this.temporaryExecution){this.workflowsStore.activeWorkflowExecution=this.temporaryExecution;return}this.workflowsStore.activeWorkflowExecution=null;return}await this.loadMore(Ue);const i=this.workflowsStore.getExecutionDataById(e);if(!i)await this.$nextTick(),await this.tryToFindExecution(e,t+1);else{this.workflowsStore.activeWorkflowExecution=i,this.temporaryExecution=null;return}},async openWorkflow(e){await this.loadActiveWorkflows();let t;try{t=await this.workflowsStore.fetchWorkflow(e)}catch(s){this.showError(s,this.$locale.baseText("nodeView.showError.openWorkflow.title"));return}if(t===void 0)throw new Error(this.$locale.baseText("nodeView.workflowWithIdCouldNotBeFound",{interpolate:{workflowId:e}}));await this.addNodes(t.nodes,t.connections),this.workflowsStore.setActive(t.active||!1),this.workflowsStore.setWorkflowId(e),this.workflowsStore.setWorkflowName({newName:t.name,setStateDirty:!1}),this.workflowsStore.setWorkflowSettings(t.settings||{}),this.workflowsStore.setWorkflowPinData(t.pinData||{});const i=t.tags||[],o=i.map(s=>s.id);this.workflowsStore.setWorkflowTagIds(o||[]),this.workflowsStore.setWorkflowVersionId(t.versionId),this.tagsStore.upsertTags(i),this.$externalHooks().run("workflow.open",{workflowId:e,workflowName:t.name}),this.uiStore.stateIsDirty=!1},async addNodes(e,t){if(!(e!=null&&e.length))return;await this.loadNodesProperties(e.map(o=>({name:o.type,version:o.typeVersion})));let i;if(e.forEach(o=>{if(o.id||(o.id=te()),i=this.nodeTypesStore.getNodeType(o.type,o.typeVersion),o.hasOwnProperty("disabled")||(o.disabled=!1),o.hasOwnProperty("parameters")||(o.parameters={}),i!==null){let s=null;try{s=B(i.properties,o.parameters,!0,!1,o)}catch(n){console.error(this.$locale.baseText("nodeView.thereWasAProblemLoadingTheNodeParametersOfNode")+`: "${o.name}"`),console.error(n)}o.parameters=s!==null?s:{},o.type===z&&o.parameters.path===""&&(o.parameters.path=o.webhookId)}this.workflowsStore.addNode(o)}),t!==void 0){let o;for(const s of Object.keys(t))for(const n of Object.keys(t[s]))for(let a=0;a<t[s][n].length;a++){const l=t[s][n][a];l&&l.forEach(r=>{o=[{node:s,type:n,index:a},{node:r.node,type:r.type,index:r.index}],this.workflowsStore.addConnection({connection:o,setStateDirty:!1})})}}},async loadNodesProperties(e){const t=this.nodeTypesStore.allNodeTypes,i=[];t.forEach(o=>{const s=Array.isArray(o.version)?o.version:[o.version];e.find(n=>n.name===o.name&&s.includes(n.version))&&!o.hasOwnProperty("properties")&&i.push({name:o.name,version:Array.isArray(o.version)?o.version.slice(-1)[0]:o.version})}),i.length>0&&await this.nodeTypesStore.getNodesInformation(i)},async loadActiveWorkflows(){await this.workflowsStore.fetchActiveWorkflows()},async onRetryExecution(e){const t=e.command==="current-workflow";this.showMessage({title:this.$locale.baseText("executionDetails.runningMessage"),type:"info",duration:2e3}),await this.retryExecution(e.execution,t),await this.loadAutoRefresh(),this.$telemetry.track("User clicked retry execution button",{workflow_id:this.workflowsStore.workflowId,execution_id:e.execution.id,retry_type:t?"current":"original"})},async retryExecution(e,t){try{await this.workflowsStore.retryExecution(e.id,t)?this.showMessage({title:this.$locale.baseText("executionsList.showMessage.retrySuccessfulTrue.title"),type:"success"}):this.showMessage({title:this.$locale.baseText("executionsList.showMessage.retrySuccessfulFalse.title"),type:"error"})}catch(i){this.showError(i,this.$locale.baseText("executionsList.showError.retryExecution.title"))}}}}),Pe="_container_1e18q_5",Be="_content_1e18q_11",ze={container:Pe,content:Be};function He(e,t,i,o,s,n){const a=h("executions-sidebar"),l=h("router-view");return u(),v("div",{class:c(e.$style.container)},[d(a,{executions:e.executions,loading:e.loading&&!e.executions.length,loadingMore:e.loadingMore,temporaryExecution:e.temporaryExecution,"auto-refresh":e.autoRefresh,"onUpdate:autoRefresh":e.onAutoRefreshToggle,onReloadExecutions:e.setExecutions,onFilterUpdated:e.onFilterUpdated,onLoadMore:e.onLoadMore,onRetryExecution:e.onRetryExecution},null,8,["executions","loading","loadingMore","temporaryExecution","auto-refresh","onUpdate:autoRefresh","onReloadExecutions","onFilterUpdated","onLoadMore","onRetryExecution"]),e.hidePreview?k("",!0):(u(),v("div",{key:0,class:c(e.$style.content)},[d(l,{name:"executionPreview",onDeleteCurrentExecution:e.onDeleteCurrentExecution,onRetryExecution:e.onRetryExecution,onStopExecution:e.onStopExecution},null,8,["onDeleteCurrentExecution","onRetryExecution","onStopExecution"])],2))],2)}const Xe={$style:ze},It=I(Ve,[["render",He],["__cssModules",Xe]]);export{It as default};
|
|
2
|
-
//# sourceMappingURL=ExecutionsList-
|
|
1
|
+
import{m as b}from"./pinia-IhuTtYiV.js";import{e as W}from"./executionsHelpers-8_uqSfWi.js";import{B as y,_ as I,O as A,l as M,u as D,t as N,Q as O,a4 as R,dB as F,aa as U,eT as V,eY as P,a8 as B,a3 as z}from"./n8n-NE7NqrvB.js";import{E as H,a as X}from"./ExecutionFilter-tcX3bN8y.js";import{G as T,ag as h,l as u,m as v,T as d,O as x,I as c,p as _,S as g,R as E,M as $,Q as k,F as G,a7 as q}from"./vendor-2CfOYFi2.js";import{E as j}from"./ExecutionsInfoAccordion-J0VUGzOg.js";import{d as K,w as Q,a as Y,u as Z,aM as J,a6 as ee}from"./index-sMRiWGJS.js";import{v as te}from"./uuid-McvpxQtQ.js";import{_ as oe}from"./lodash-es-s_m9YyW7.js";import"./@fortawesome/vue-fontawesome-GVmvJ_gj.js";import"./@fortawesome/fontawesome-svg-core-xYGjsix9.js";import"./esprima-next-ulPLCZ1Z.js";import"./luxon-ZRIU05qF.js";import"./@vueuse/core-viEZCtbZ.js";import"./flatted-jPn12Tq4.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./vue-i18n-eiX0lGiQ.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.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-QL7QI0sV.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-gO4u4slB.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./@fortawesome/free-solid-svg-icons-KH5RR_hW.js";import"./@fortawesome/free-regular-svg-icons-ipmEYOws.js";import"./chart.js-JtqvIvkt.js";const ie=T({name:"execution-card",mixins:[W],components:{ExecutionTime:H},data(){return{VIEWS:y}},props:{execution:{type:Object,required:!0},highlight:{type:Boolean,default:!1},showGap:{type:Boolean,default:!1}},computed:{retryExecutionActions(){return[{id:"current-workflow",label:this.$locale.baseText("executionsList.retryWithCurrentlySavedWorkflow")},{id:"original-workflow",label:this.$locale.baseText("executionsList.retryWithOriginalWorkflow")}]},executionUIDetails(){return this.getExecutionUIDetails(this.execution)},isActive(){return this.execution.id===this.$route.params.executionId}},methods:{onRetryMenuItemSelect(e){this.$emit("retryExecution",{execution:this.execution,command:e})}}}),se="_executionCard_12y8i_5",ne="_active_12y8i_10",re="_executionStatus_12y8i_13",ae="_executionLink_12y8i_16",le="_running_12y8i_19",ce="_spinner_12y8i_19",ue="_statusLabel_12y8i_26",he="_success_12y8i_30",de="_waiting_12y8i_33",fe="_error_12y8i_39",we="_unknown_12y8i_45",me="_icon_12y8i_61",pe="_icons_12y8i_66",xe="_retry_12y8i_74",Ee="_manual_12y8i_77",ye="_showGap_12y8i_85",ke={executionCard:se,active:ne,executionStatus:re,executionLink:ae,running:le,spinner:ce,statusLabel:ue,success:he,waiting:de,error:fe,unknown:we,icon:me,icons:pe,retry:xe,manual:Ee,showGap:ye},ge={key:0};function ve(e,t,i,o,s,n){const a=h("n8n-text"),l=h("n8n-spinner"),r=h("execution-time"),f=h("n8n-action-dropdown"),S=h("font-awesome-icon"),m=h("n8n-tooltip"),p=h("router-link");return u(),v("div",{class:c({"execution-card":!0,[e.$style.executionCard]:!0,[e.$style.active]:e.isActive,[e.$style[e.executionUIDetails.name]]:!0,[e.$style.highlight]:e.highlight,[e.$style.showGap]:e.showGap})},[d(p,{class:c(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(()=>[_("div",{class:c(e.$style.description)},[d(a,{color:"text-dark",bold:!0,size:"medium","data-test-id":"execution-time"},{default:x(()=>[g(E(e.executionUIDetails.startTime),1)]),_:1}),_("div",{class:c(e.$style.executionStatus)},[e.executionUIDetails.name==="running"?(u(),$(l,{key:0,size:"small",class:c([e.$style.spinner,"mr-4xs"])},null,8,["class"])):k("",!0),d(a,{class:c(e.$style.statusLabel),size:"small"},{default:x(()=>[g(E(e.executionUIDetails.label),1)]),_:1},8,["class"]),g(" "+E(" ")+" "),e.executionUIDetails.name==="running"?(u(),$(a,{key:1,color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>[g(E(e.$locale.baseText("executionDetails.runningTimeRunning"))+" ",1),d(r,{"start-time":e.execution.startedAt},null,8,["start-time"])]),_:1},8,["color"])):e.executionUIDetails.runningTime!==""?(u(),$(a,{key:2,color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>{var w;return[g(E(e.$locale.baseText("executionDetails.runningTimeFinished",{interpolate:{time:(w=e.executionUIDetails)==null?void 0:w.runningTime}})),1)]}),_:1},8,["color"])):k("",!0)],2),e.execution.mode==="retry"?(u(),v("div",ge,[d(a,{color:e.isActive?"text-dark":"text-base",size:"small"},{default:x(()=>[g(E(e.$locale.baseText("executionDetails.retry"))+" #"+E(e.execution.retryOf),1)]),_:1},8,["color"])])):k("",!0)],2),_("div",{class:c(e.$style.icons)},[e.executionUIDetails.name==="error"?(u(),$(f,{key:0,class:c([e.$style.icon,e.$style.retry]),items:e.retryExecutionActions,activatorIcon:"redo","data-test-id":"retry-execution-button",onSelect:e.onRetryMenuItemSelect},null,8,["class","items","onSelect"])):k("",!0),e.execution.mode==="manual"?(u(),$(m,{key:1,placement:"top"},{content:x(()=>[_("span",null,E(e.$locale.baseText("executionsList.test")),1)]),default:x(()=>[e.execution.mode==="manual"?(u(),$(S,{key:0,class:c([e.$style.icon,e.$style.manual]),icon:"flask"},null,8,["class"])):k("",!0)]),_:1})):k("",!0)],2)]),_:1},8,["class","to","data-test-execution-status"])],2)}const $e={$style:ke},_e=I(ie,[["render",ve],["__cssModules",$e]]),Se=T({name:"executions-sidebar",components:{ExecutionCard:_e,ExecutionsInfoAccordion:j,ExecutionFilter:X},props:{autoRefresh:{type:Boolean,default:!1},executions:{type:Array,required:!0},loading:{type:Boolean,default:!0},loadingMore:{type:Boolean,default:!1},temporaryExecution:{type:Object,default:null}},data(){return{VIEWS:y,filter:{}}},computed:{...b(M,A)},watch:{$route(e,t){t.name===y.EXECUTION_PREVIEW&&e.name===y.EXECUTION_HOME&&this.$router.go(-1)},"workflowsStore.activeWorkflowExecution"(){this.checkListSize(),this.scrollToActiveCard()}},mounted(){this.checkListSize(),this.scrollToActiveCard()},methods:{loadMore(e=20){if(!this.loading){const t=this.$refs.executionList;if(t){const i=t.offsetHeight-(t.scrollHeight-t.scrollTop);i>-10&&i<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 i;const e=this.$refs.container,t=this.$refs[`execution-${(i=this.workflowsStore.activeWorkflowExecution)==null?void 0:i.id}`];if(e&&(t!=null&&t.length)){const o=t[0].$el,s=Math.ceil(e.clientHeight/o.clientHeight);s>this.executions.length&&this.$emit("loadMore",s-this.executions.length)}},scrollToActiveCard(){var i;const e=this.$refs.executionList,t=this.$refs[`execution-${(i=this.workflowsStore.activeWorkflowExecution)==null?void 0:i.id}`];if(e&&(t!=null&&t.length)&&this.workflowsStore.activeWorkflowExecution){const s=t[0].$el.getBoundingClientRect(),n=200;s.top>e.offsetHeight&&e.scrollTo({top:s.top-n})}}}}),Ie="_container_iuzt7_5",Te="_heading_iuzt7_16",Re="_controls_iuzt7_23",be="_executionList_iuzt7_35",We="_infoAccordion_iuzt7_53",Ae="_noResultsContainer_iuzt7_65",Me={container:Ie,heading:Te,controls:Re,executionList:be,infoAccordion:We,noResultsContainer:Ae},Le={key:0,class:"mr-l"},Ce={key:3,class:"mr-m"};function De(e,t,i,o,s,n){const a=h("n8n-heading"),l=h("el-checkbox"),r=h("execution-filter"),f=h("n8n-loading"),S=h("n8n-text"),m=h("execution-card"),p=h("executions-info-accordion");return u(),v("div",{class:c(["executions-sidebar",e.$style.container]),ref:"container","data-test-id":"executions-sidebar"},[_("div",{class:c(e.$style.heading)},[d(a,{tag:"h2",size:"medium",color:"text-dark"},{default:x(()=>[g(E(e.$locale.baseText("generic.executions")),1)]),_:1})],2),_("div",{class:c(e.$style.controls)},[d(l,{modelValue:e.autoRefresh,"onUpdate:modelValue":t[0]||(t[0]=w=>e.$emit("update:autoRefresh",w)),"data-test-id":"auto-refresh-checkbox"},{default:x(()=>[g(E(e.$locale.baseText("executionsList.autoRefresh")),1)]),_:1},8,["modelValue"]),d(r,{"popover-placement":"left-start",onFilterChanged:e.onFilterChanged},null,8,["onFilterChanged"])],2),_("div",{class:c(e.$style.executionList),ref:"executionList","data-test-id":"current-executions-list",onScroll:t[1]||(t[1]=w=>e.loadMore(20))},[e.loading?(u(),v("div",Le,[d(f,{variant:"rect"})])):k("",!0),!e.loading&&e.executions.length===0?(u(),v("div",{key:1,class:c(e.$style.noResultsContainer)},[d(S,{color:"text-base",size:"medium",align:"center"},{default:x(()=>[g(E(e.$locale.baseText("executionsLandingPage.noResults")),1)]),_:1})],2)):e.temporaryExecution?(u(),$(m,{key:2,execution:e.temporaryExecution,ref:`execution-${e.temporaryExecution.id}`,"data-test-id":`execution-details-${e.temporaryExecution.id}`,showGap:!0,onRetryExecution:e.onRetryExecution},null,8,["execution","data-test-id","onRetryExecution"])):k("",!0),(u(!0),v(G,null,q(e.executions,w=>(u(),$(m,{key:w.id,execution:w,ref_for:!0,ref:`execution-${w.id}`,"data-test-id":`execution-details-${w.id}`,onRetryExecution:e.onRetryExecution},null,8,["execution","data-test-id","onRetryExecution"]))),128)),e.loadingMore?(u(),v("div",Ce,[d(f,{variant:"p",rows:1})])):k("",!0)],34),_("div",{class:c(e.$style.infoAccordion)},[d(p,{initiallyExpanded:!1})],2)],2)}const Ne={$style:Me},Oe=I(Se,[["render",De],["__cssModules",Ne],["__scopeId","data-v-2a9b4e57"]]),Fe=5,Ue=100,Ve=T({name:"executions-list",mixins:[W,K,Q],components:{ExecutionsSidebar:Oe},data(){return{loading:!1,loadingMore:!1,filter:{},temporaryExecution:null,autoRefresh:!1,autoRefreshTimeout:void 0}},setup(){return{...D(),...Y()}},computed:{...b(Z,O,N,M,A),hidePreview(){const e=this.filterApplied&&!this.executions.find(t=>{var i;return t.id===((i=this.activeExecution)==null?void 0:i.id)});return this.loading||!this.executions.length||e},filterApplied(){return this.filter.status!=="all"},workflowDataNotLoaded(){return this.workflowsStore.workflowId===R&&this.workflowsStore.workflowName===""},loadedFinishedExecutionsCount(){return this.workflowsStore.getAllLoadedFinishedExecutions.length},totalFinishedExecutionsCount(){return this.workflowsStore.getTotalFinishedExecutionsCount},requestFilter(){return J({...this.filter,workflowId:this.currentWorkflow})}},watch:{$route(e,t){if(e.params.name){const i=t.params.name!==e.params.name;this.initView(i)}if(e.params.executionId){const i=this.workflowsStore.getExecutionDataById(e.params.executionId);i&&(this.workflowsStore.activeWorkflowExecution=i)}}},async beforeRouteLeave(e,t,i){if(this.stopAutoRefreshInterval(),ee(e)===F.WORKFLOW){i();return}if(this.uiStore.stateIsDirty){const o=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});o===U?(await this.saveCurrentWorkflow({},!1)&&await this.settingsStore.fetchPromptsData(),this.uiStore.stateIsDirty=!1,i()):o===V&&(this.uiStore.stateIsDirty=!1,i())}else i()},async mounted(){this.loading=!0;const e=this.$route.params.name!==this.workflowsStore.workflowId,t=this.$route.params.name==="new"&&this.workflowsStore.workflowId===R,i=e&&!t;if(await this.initView(i),!i)if(this.workflowsStore.currentWorkflowExecutions.length>0){const o=await this.loadExecutions();this.workflowsStore.addToCurrentExecutions(o),await this.setActiveExecution()}else await this.setExecutions();this.autoRefresh=this.uiStore.executionSidebarAutoRefresh,this.startAutoRefreshInterval(),document.addEventListener("visibilitychange",this.onDocumentVisibilityChange),this.loading=!1},beforeUnmount(){this.stopAutoRefreshInterval(),document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange)},methods:{async initView(e){e&&(await this.nodeTypesStore.loadNodeTypesIfNotLoaded(),await this.openWorkflow(this.$route.params.name),this.uiStore.nodeViewInitialized=!1,this.workflowsStore.currentWorkflowExecutions.length===0&&await this.setExecutions(),this.activeExecution&&this.$router.push({name:y.EXECUTION_PREVIEW,params:{name:this.currentWorkflow,executionId:this.activeExecution.id}}).catch(()=>{}))},async onLoadMore(){this.loadingMore||await this.callDebounced("loadMore",{debounceTime:1e3})},async loadMore(e=20){var s;if(this.filter.status==="running"||this.loadedFinishedExecutionsCount>=this.totalFinishedExecutionsCount)return;this.loadingMore=!0;let t;this.executions.length!==0&&(t=this.executions.slice(-1)[0].id);let i;try{i=await this.workflowsStore.getPastExecutions(this.requestFilter,e,t)}catch(n){this.loadingMore=!1,this.showError(n,this.$locale.baseText("executionsList.showError.loadMore.title"));return}i.results=i.results.map(n=>({...n,mode:n.mode}));const o=[...this.executions];for(const n of i.results)o.find(a=>a.id===n.id)===void 0&&o.push(n),n.id===((s=this.temporaryExecution)==null?void 0:s.id)&&(this.temporaryExecution=null);this.workflowsStore.currentWorkflowExecutions=o,this.loadingMore=!1},async onDeleteCurrentExecution(){var e;this.loading=!0;try{const t=this.executions.findIndex(o=>o.id===this.$route.params.executionId),i=this.executions[t+1]||this.executions[t-1]||this.executions[0];await this.workflowsStore.deleteExecutions({ids:[this.$route.params.executionId]}),this.workflowsStore.deleteExecution(this.executions[t]),((e=this.temporaryExecution)==null?void 0:e.id)===this.$route.params.executionId&&(this.temporaryExecution=null),this.executions.length>0?(await this.$router.push({name:y.EXECUTION_PREVIEW,params:{name:this.currentWorkflow,executionId:i.id}}).catch(()=>{}),this.workflowsStore.activeWorkflowExecution=i,await this.setExecutions()):(this.workflowsStore.activeWorkflowExecution=null,await this.$router.push({name:y.EXECUTION_HOME,params:{name:this.currentWorkflow}}))}catch(t){this.loading=!1,this.showError(t,this.$locale.baseText("executionsList.showError.handleDeleteSelected.title"));return}this.loading=!1,this.showMessage({title:this.$locale.baseText("executionsList.showMessage.handleDeleteSelected.title"),type:"success"})},async onStopExecution(){const e=this.$route.params.executionId;try{await this.workflowsStore.stopCurrentExecution(e),this.showMessage({title:this.$locale.baseText("executionsList.showMessage.stopExecution.title"),message:this.$locale.baseText("executionsList.showMessage.stopExecution.message",{interpolate:{activeExecutionId:e}}),type:"success"}),await this.loadAutoRefresh()}catch(t){this.showError(t,this.$locale.baseText("executionsList.showError.stopExecution.title"))}},async onFilterUpdated(e){this.filter=e,await this.setExecutions()},async setExecutions(){this.workflowsStore.currentWorkflowExecutions=await this.loadExecutions(),await this.setActiveExecution()},async startAutoRefreshInterval(){this.autoRefresh&&(await this.loadAutoRefresh(),this.stopAutoRefreshInterval(),this.autoRefreshTimeout=setTimeout(()=>{this.startAutoRefreshInterval()},4e3))},stopAutoRefreshInterval(){this.autoRefreshTimeout&&(clearTimeout(this.autoRefreshTimeout),this.autoRefreshTimeout=void 0)},onAutoRefreshToggle(e){this.autoRefresh=e,this.uiStore.executionSidebarAutoRefresh=this.autoRefresh,this.stopAutoRefreshInterval(),this.startAutoRefreshInterval()},onDocumentVisibilityChange(){document.visibilityState==="hidden"?this.stopAutoRefreshInterval():this.startAutoRefreshInterval()},async loadAutoRefresh(){var a;const e=await this.loadExecutions();let t=[...this.executions];const i=t.map(l=>parseInt(l.id,10));let o=0;const s=[];let n=null;for(let l=e.length-1;l>=0;l--){const r=e[l],f=parseInt(r.id,10);if(o!==0&&!isNaN(f)&&f-o>1){const p=oe(o+1,f);s.push(...p)}o=parseInt(r.id,10)||0;const S=i.indexOf(f);if(S!==-1){const p=t.find(C=>C.id===r.id),w=p&&p.finished===!1||(p==null?void 0:p.stoppedAt)===void 0,L=r.finished===!0||r.stoppedAt!==void 0;w&&L&&(t[S]=r,r.id===((a=this.activeExecution)==null?void 0:a.id)&&(n=r));continue}let m;for(m=t.length-1;m>=0;m--)if(f<parseInt(t[m].id,10)){t.splice(m+1,0,r);break}m===-1&&t.unshift(r)}t=t.filter(l=>!s.includes(parseInt(l.id,10))&&o>=parseInt(l.id,10)),this.workflowsStore.currentWorkflowExecutions=t,n!==null?this.workflowsStore.activeWorkflowExecution=n:!t.some(r=>{var f;return r.id===((f=this.activeExecution)==null?void 0:f.id)})&&this.executions.length>0&&!this.temporaryExecution?this.$router.push({name:y.EXECUTION_PREVIEW,params:{name:this.currentWorkflow,executionId:this.executions[0].id}}).catch(()=>{}):this.executions.length===0&&(this.$router.push({name:y.EXECUTION_HOME}).catch(()=>{}),this.workflowsStore.activeWorkflowExecution=null)},async loadExecutions(){if(!this.currentWorkflow)return[];try{return await this.workflowsStore.loadCurrentWorkflowExecutions(this.requestFilter)}catch(e){return e.errorCode===P?this.showMessage({title:this.$locale.baseText("executionsList.showError.refreshData.title"),message:e.message,type:"error",duration:3500},!1):this.showError(e,this.$locale.baseText("executionsList.showError.refreshData.title")),[]}},async setActiveExecution(){const e=this.$route.params.executionId;if(e){const t=this.workflowsStore.getExecutionDataById(e);t?this.workflowsStore.activeWorkflowExecution=t:await this.tryToFindExecution(e)}this.workflowsStore.activeWorkflowExecution===null&&this.executions.length>0&&!this.temporaryExecution&&(this.workflowsStore.activeWorkflowExecution=this.executions[0],this.$route.name===y.EXECUTION_HOME&&this.$router.push({name:y.EXECUTION_PREVIEW,params:{name:this.currentWorkflow,executionId:this.executions[0].id}}).catch(()=>{}))},async tryToFindExecution(e,t=0){if(t===0){const o=await this.workflowsStore.fetchExecutionDataById(e);if(o)this.temporaryExecution=o;else{this.workflowsStore.activeWorkflowExecution=null,this.showError(new Error(this.$locale.baseText("executionView.notFound.message",{interpolate:{executionId:e}})),this.$locale.baseText("nodeView.showError.openExecution.title"));return}}if(t>=Fe){if(this.temporaryExecution){this.workflowsStore.activeWorkflowExecution=this.temporaryExecution;return}this.workflowsStore.activeWorkflowExecution=null;return}await this.loadMore(Ue);const i=this.workflowsStore.getExecutionDataById(e);if(!i)await this.$nextTick(),await this.tryToFindExecution(e,t+1);else{this.workflowsStore.activeWorkflowExecution=i,this.temporaryExecution=null;return}},async openWorkflow(e){await this.loadActiveWorkflows();let t;try{t=await this.workflowsStore.fetchWorkflow(e)}catch(s){this.showError(s,this.$locale.baseText("nodeView.showError.openWorkflow.title"));return}if(t===void 0)throw new Error(this.$locale.baseText("nodeView.workflowWithIdCouldNotBeFound",{interpolate:{workflowId:e}}));await this.addNodes(t.nodes,t.connections),this.workflowsStore.setActive(t.active||!1),this.workflowsStore.setWorkflowId(e),this.workflowsStore.setWorkflowName({newName:t.name,setStateDirty:!1}),this.workflowsStore.setWorkflowSettings(t.settings||{}),this.workflowsStore.setWorkflowPinData(t.pinData||{});const i=t.tags||[],o=i.map(s=>s.id);this.workflowsStore.setWorkflowTagIds(o||[]),this.workflowsStore.setWorkflowVersionId(t.versionId),this.tagsStore.upsertTags(i),this.$externalHooks().run("workflow.open",{workflowId:e,workflowName:t.name}),this.uiStore.stateIsDirty=!1},async addNodes(e,t){if(!(e!=null&&e.length))return;await this.loadNodesProperties(e.map(o=>({name:o.type,version:o.typeVersion})));let i;if(e.forEach(o=>{if(o.id||(o.id=te()),i=this.nodeTypesStore.getNodeType(o.type,o.typeVersion),o.hasOwnProperty("disabled")||(o.disabled=!1),o.hasOwnProperty("parameters")||(o.parameters={}),i!==null){let s=null;try{s=B(i.properties,o.parameters,!0,!1,o)}catch(n){console.error(this.$locale.baseText("nodeView.thereWasAProblemLoadingTheNodeParametersOfNode")+`: "${o.name}"`),console.error(n)}o.parameters=s!==null?s:{},o.type===z&&o.parameters.path===""&&(o.parameters.path=o.webhookId)}this.workflowsStore.addNode(o)}),t!==void 0){let o;for(const s of Object.keys(t))for(const n of Object.keys(t[s]))for(let a=0;a<t[s][n].length;a++){const l=t[s][n][a];l&&l.forEach(r=>{o=[{node:s,type:n,index:a},{node:r.node,type:r.type,index:r.index}],this.workflowsStore.addConnection({connection:o,setStateDirty:!1})})}}},async loadNodesProperties(e){const t=this.nodeTypesStore.allNodeTypes,i=[];t.forEach(o=>{const s=Array.isArray(o.version)?o.version:[o.version];e.find(n=>n.name===o.name&&s.includes(n.version))&&!o.hasOwnProperty("properties")&&i.push({name:o.name,version:Array.isArray(o.version)?o.version.slice(-1)[0]:o.version})}),i.length>0&&await this.nodeTypesStore.getNodesInformation(i)},async loadActiveWorkflows(){await this.workflowsStore.fetchActiveWorkflows()},async onRetryExecution(e){const t=e.command==="current-workflow";this.showMessage({title:this.$locale.baseText("executionDetails.runningMessage"),type:"info",duration:2e3}),await this.retryExecution(e.execution,t),await this.loadAutoRefresh(),this.$telemetry.track("User clicked retry execution button",{workflow_id:this.workflowsStore.workflowId,execution_id:e.execution.id,retry_type:t?"current":"original"})},async retryExecution(e,t){try{await this.workflowsStore.retryExecution(e.id,t)?this.showMessage({title:this.$locale.baseText("executionsList.showMessage.retrySuccessfulTrue.title"),type:"success"}):this.showMessage({title:this.$locale.baseText("executionsList.showMessage.retrySuccessfulFalse.title"),type:"error"})}catch(i){this.showError(i,this.$locale.baseText("executionsList.showError.retryExecution.title"))}}}}),Pe="_container_1e18q_5",Be="_content_1e18q_11",ze={container:Pe,content:Be};function He(e,t,i,o,s,n){const a=h("executions-sidebar"),l=h("router-view");return u(),v("div",{class:c(e.$style.container)},[d(a,{executions:e.executions,loading:e.loading&&!e.executions.length,loadingMore:e.loadingMore,temporaryExecution:e.temporaryExecution,"auto-refresh":e.autoRefresh,"onUpdate:autoRefresh":e.onAutoRefreshToggle,onReloadExecutions:e.setExecutions,onFilterUpdated:e.onFilterUpdated,onLoadMore:e.onLoadMore,onRetryExecution:e.onRetryExecution},null,8,["executions","loading","loadingMore","temporaryExecution","auto-refresh","onUpdate:autoRefresh","onReloadExecutions","onFilterUpdated","onLoadMore","onRetryExecution"]),e.hidePreview?k("",!0):(u(),v("div",{key:0,class:c(e.$style.content)},[d(l,{name:"executionPreview",onDeleteCurrentExecution:e.onDeleteCurrentExecution,onRetryExecution:e.onRetryExecution,onStopExecution:e.onStopExecution},null,8,["onDeleteCurrentExecution","onRetryExecution","onStopExecution"])],2))],2)}const Xe={$style:ze},It=I(Ve,[["render",He],["__cssModules",Xe]]);export{It as default};
|
|
2
|
+
//# sourceMappingURL=ExecutionsList-1jr8ziaw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExecutionsList-1jr8ziaw.js","sources":["../../src/components/ExecutionsView/ExecutionCard.vue","../../src/components/ExecutionsView/ExecutionsSidebar.vue","../../src/components/ExecutionsView/ExecutionsList.vue"],"sourcesContent":["<template>\n\t<div\n\t\t:class=\"{\n\t\t\t['execution-card']: true,\n\t\t\t[$style.executionCard]: 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<execution-time :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=\"executionUIDetails.name === 'error'\"\n\t\t\t\t\t:class=\"[$style.icon, $style.retry]\"\n\t\t\t\t\t:items=\"retryExecutionActions\"\n\t\t\t\t\tactivatorIcon=\"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 { IExecutionsSummary } from '@/Interface';\nimport type { IExecutionUIData } from '@/mixins/executionsHelpers';\nimport { executionHelpers } from '@/mixins/executionsHelpers';\nimport { VIEWS } from '@/constants';\nimport ExecutionTime from '@/components/ExecutionTime.vue';\n\nexport default defineComponent({\n\tname: 'execution-card',\n\tmixins: [executionHelpers],\n\tcomponents: {\n\t\tExecutionTime,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tVIEWS,\n\t\t};\n\t},\n\tprops: {\n\t\texecution: {\n\t\t\ttype: Object as () => IExecutionsSummary,\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\tcomputed: {\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.getExecutionUIDetails(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},\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.executionCard {\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\tbackground-color: var(--color-foreground-light);\n\t\t}\n\t}\n\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\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\t:class=\"['executions-sidebar', $style.container]\"\n\t\tref=\"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\t:modelValue=\"autoRefresh\"\n\t\t\t\t@update:modelValue=\"$emit('update:autoRefresh', $event)\"\n\t\t\t\tdata-test-id=\"auto-refresh-checkbox\"\n\t\t\t>\n\t\t\t\t{{ $locale.baseText('executionsList.autoRefresh') }}\n\t\t\t</el-checkbox>\n\t\t\t<execution-filter popover-placement=\"left-start\" @filterChanged=\"onFilterChanged\" />\n\t\t</div>\n\t\t<div\n\t\t\t:class=\"$style.executionList\"\n\t\t\tref=\"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 v-if=\"!loading && executions.length === 0\" :class=\"$style.noResultsContainer\">\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<execution-card\n\t\t\t\tv-else-if=\"temporaryExecution\"\n\t\t\t\t:execution=\"temporaryExecution\"\n\t\t\t\t:ref=\"`execution-${temporaryExecution.id}`\"\n\t\t\t\t:data-test-id=\"`execution-details-${temporaryExecution.id}`\"\n\t\t\t\t:showGap=\"true\"\n\t\t\t\t@retryExecution=\"onRetryExecution\"\n\t\t\t/>\n\t\t\t<execution-card\n\t\t\t\tv-for=\"execution in executions\"\n\t\t\t\t:key=\"execution.id\"\n\t\t\t\t:execution=\"execution\"\n\t\t\t\t:ref=\"`execution-${execution.id}`\"\n\t\t\t\t:data-test-id=\"`execution-details-${execution.id}`\"\n\t\t\t\t@retryExecution=\"onRetryExecution\"\n\t\t\t/>\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<executions-info-accordion :initiallyExpanded=\"false\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport ExecutionCard from '@/components/ExecutionsView/ExecutionCard.vue';\nimport ExecutionsInfoAccordion from '@/components/ExecutionsView/ExecutionsInfoAccordion.vue';\nimport ExecutionFilter from '@/components/ExecutionFilter.vue';\nimport { VIEWS } from '@/constants';\nimport type { IExecutionsSummary } from 'n8n-workflow';\nimport type { Route } from 'vue-router';\nimport { defineComponent } from 'vue';\nimport type { PropType } from 'vue';\nimport { mapStores } from 'pinia';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport type { ExecutionFilterType } from '@/Interface';\n\ntype ExecutionCardRef = InstanceType<typeof ExecutionCard>;\n\nexport default defineComponent({\n\tname: 'executions-sidebar',\n\tcomponents: {\n\t\tExecutionCard,\n\t\tExecutionsInfoAccordion,\n\t\tExecutionFilter,\n\t},\n\tprops: {\n\t\tautoRefresh: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\texecutions: {\n\t\t\ttype: Array as PropType<IExecutionsSummary[]>,\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<IExecutionsSummary>,\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(useUIStore, 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\t'workflowsStore.activeWorkflowExecution'() {\n\t\t\tthis.checkListSize();\n\t\t\tthis.scrollToActiveCard();\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\tthis.scrollToActiveCard();\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 currentExecutionCardRefs = this.$refs[\n\t\t\t\t`execution-${this.workflowsStore.activeWorkflowExecution?.id}`\n\t\t\t] as ExecutionCardRef[] | 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 && currentExecutionCardRefs?.length) {\n\t\t\t\tconst cardElement = currentExecutionCardRefs[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 currentExecutionCardRefs = this.$refs[\n\t\t\t\t`execution-${this.workflowsStore.activeWorkflowExecution?.id}`\n\t\t\t] as ExecutionCardRef[] | undefined;\n\n\t\t\tif (\n\t\t\t\texecutionsListRef &&\n\t\t\t\tcurrentExecutionCardRefs?.length &&\n\t\t\t\tthis.workflowsStore.activeWorkflowExecution\n\t\t\t) {\n\t\t\t\tconst cardElement = currentExecutionCardRefs[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<executions-sidebar\n\t\t\t:executions=\"executions\"\n\t\t\t:loading=\"loading && !executions.length\"\n\t\t\t:loadingMore=\"loadingMore\"\n\t\t\t:temporaryExecution=\"temporaryExecution\"\n\t\t\t:auto-refresh=\"autoRefresh\"\n\t\t\t@update:autoRefresh=\"onAutoRefreshToggle\"\n\t\t\t@reloadExecutions=\"setExecutions\"\n\t\t\t@filterUpdated=\"onFilterUpdated\"\n\t\t\t@loadMore=\"onLoadMore\"\n\t\t\t@retryExecution=\"onRetryExecution\"\n\t\t/>\n\t\t<div :class=\"$style.content\" v-if=\"!hidePreview\">\n\t\t\t<router-view\n\t\t\t\tname=\"executionPreview\"\n\t\t\t\t@deleteCurrentExecution=\"onDeleteCurrentExecution\"\n\t\t\t\t@retryExecution=\"onRetryExecution\"\n\t\t\t\t@stopExecution=\"onStopExecution\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\n\nimport ExecutionsSidebar from '@/components/ExecutionsView/ExecutionsSidebar.vue';\nimport {\n\tMAIN_HEADER_TABS,\n\tMODAL_CANCEL,\n\tMODAL_CONFIRM,\n\tPLACEHOLDER_EMPTY_WORKFLOW_ID,\n\tVIEWS,\n\tWEBHOOK_NODE_TYPE,\n} from '@/constants';\nimport type {\n\tExecutionFilterType,\n\tIExecutionsListResponse,\n\tINodeUi,\n\tITag,\n\tIWorkflowDb,\n} from '@/Interface';\nimport type {\n\tIExecutionsSummary,\n\tIConnection,\n\tIConnections,\n\tIDataObject,\n\tINodeTypeDescription,\n\tINodeTypeNameVersion,\n} from 'n8n-workflow';\nimport { NodeHelpers } from 'n8n-workflow';\nimport { useMessage } from '@/composables/useMessage';\nimport { useToast } from '@/composables/useToast';\nimport { v4 as uuid } from 'uuid';\nimport type { Route } from 'vue-router';\nimport { executionHelpers } from '@/mixins/executionsHelpers';\nimport { range as _range } from 'lodash-es';\nimport { debounceHelper } from '@/mixins/debounce';\nimport { NO_NETWORK_ERROR_CODE } from '@/utils/apiUtils';\nimport { getNodeViewTab } from '@/utils/canvasUtils';\nimport { workflowHelpers } from '@/mixins/workflowHelpers';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\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';\n\n// Number of execution pages that are fetched before temporary execution card is shown\nconst MAX_LOADING_ATTEMPTS = 5;\n// Number of executions fetched on each page\nconst LOAD_MORE_PAGE_SIZE = 100;\n\nexport default defineComponent({\n\tname: 'executions-list',\n\tmixins: [executionHelpers, debounceHelper, workflowHelpers],\n\tcomponents: {\n\t\tExecutionsSidebar,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tloadingMore: false,\n\t\t\tfilter: {} as ExecutionFilterType,\n\t\t\ttemporaryExecution: null as IExecutionsSummary | null,\n\t\t\tautoRefresh: false,\n\t\t\tautoRefreshTimeout: undefined as undefined | NodeJS.Timer,\n\t\t};\n\t},\n\tsetup() {\n\t\treturn {\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, useWorkflowsStore),\n\t\thidePreview(): boolean {\n\t\t\tconst activeNotPresent =\n\t\t\t\tthis.filterApplied && !this.executions.find((ex) => ex.id === this.activeExecution?.id);\n\t\t\treturn this.loading || !this.executions.length || activeNotPresent;\n\t\t},\n\t\tfilterApplied(): boolean {\n\t\t\treturn this.filter.status !== 'all';\n\t\t},\n\t\tworkflowDataNotLoaded(): boolean {\n\t\t\treturn (\n\t\t\t\tthis.workflowsStore.workflowId === PLACEHOLDER_EMPTY_WORKFLOW_ID &&\n\t\t\t\tthis.workflowsStore.workflowName === ''\n\t\t\t);\n\t\t},\n\t\tloadedFinishedExecutionsCount(): number {\n\t\t\treturn this.workflowsStore.getAllLoadedFinishedExecutions.length;\n\t\t},\n\t\ttotalFinishedExecutionsCount(): number {\n\t\t\treturn this.workflowsStore.getTotalFinishedExecutionsCount;\n\t\t},\n\t\trequestFilter(): IDataObject {\n\t\t\treturn executionFilterToQueryFilter({\n\t\t\t\t...this.filter,\n\t\t\t\tworkflowId: this.currentWorkflow,\n\t\t\t});\n\t\t},\n\t},\n\twatch: {\n\t\t$route(to: Route, from: Route) {\n\t\t\tif (to.params.name) {\n\t\t\t\tconst workflowChanged = from.params.name !== to.params.name;\n\t\t\t\tvoid this.initView(workflowChanged);\n\t\t\t}\n\n\t\t\tif (to.params.executionId) {\n\t\t\t\tconst execution = this.workflowsStore.getExecutionDataById(to.params.executionId);\n\t\t\t\tif (execution) {\n\t\t\t\t\tthis.workflowsStore.activeWorkflowExecution = execution;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\tasync beforeRouteLeave(to, from, next) {\n\t\tthis.stopAutoRefreshInterval();\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.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\tasync mounted() {\n\t\tthis.loading = true;\n\t\tconst workflowUpdated = this.$route.params.name !== this.workflowsStore.workflowId;\n\t\tconst onNewWorkflow =\n\t\t\tthis.$route.params.name === 'new' &&\n\t\t\tthis.workflowsStore.workflowId === PLACEHOLDER_EMPTY_WORKFLOW_ID;\n\t\tconst shouldUpdate = workflowUpdated && !onNewWorkflow;\n\t\tawait this.initView(shouldUpdate);\n\t\tif (!shouldUpdate) {\n\t\t\tif (this.workflowsStore.currentWorkflowExecutions.length > 0) {\n\t\t\t\tconst workflowExecutions = await this.loadExecutions();\n\t\t\t\tthis.workflowsStore.addToCurrentExecutions(workflowExecutions);\n\t\t\t\tawait this.setActiveExecution();\n\t\t\t} else {\n\t\t\t\tawait this.setExecutions();\n\t\t\t}\n\t\t}\n\n\t\tthis.autoRefresh = this.uiStore.executionSidebarAutoRefresh;\n\t\tvoid this.startAutoRefreshInterval();\n\t\tdocument.addEventListener('visibilitychange', this.onDocumentVisibilityChange);\n\n\t\tthis.loading = false;\n\t},\n\tbeforeUnmount() {\n\t\tthis.stopAutoRefreshInterval();\n\t\tdocument.removeEventListener('visibilitychange', this.onDocumentVisibilityChange);\n\t},\n\tmethods: {\n\t\tasync initView(loadWorkflow: boolean): Promise<void> {\n\t\t\tif (loadWorkflow) {\n\t\t\t\tawait this.nodeTypesStore.loadNodeTypesIfNotLoaded();\n\t\t\t\tawait this.openWorkflow(this.$route.params.name);\n\t\t\t\tthis.uiStore.nodeViewInitialized = false;\n\t\t\t\tif (this.workflowsStore.currentWorkflowExecutions.length === 0) {\n\t\t\t\t\tawait this.setExecutions();\n\t\t\t\t}\n\t\t\t\tif (this.activeExecution) {\n\t\t\t\t\tthis.$router\n\t\t\t\t\t\t.push({\n\t\t\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\t\t\tparams: { name: this.currentWorkflow, executionId: this.activeExecution.id },\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync onLoadMore(): Promise<void> {\n\t\t\tif (!this.loadingMore) {\n\t\t\t\tawait this.callDebounced('loadMore', { debounceTime: 1000 });\n\t\t\t}\n\t\t},\n\t\tasync loadMore(limit = 20): Promise<void> {\n\t\t\tif (\n\t\t\t\tthis.filter.status === 'running' ||\n\t\t\t\tthis.loadedFinishedExecutionsCount >= this.totalFinishedExecutionsCount\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.loadingMore = true;\n\n\t\t\tlet lastId: string | undefined;\n\t\t\tif (this.executions.length !== 0) {\n\t\t\t\tconst lastItem = this.executions.slice(-1)[0];\n\t\t\t\tlastId = lastItem.id;\n\t\t\t}\n\n\t\t\tlet data: IExecutionsListResponse;\n\t\t\ttry {\n\t\t\t\tdata = await this.workflowsStore.getPastExecutions(this.requestFilter, limit, lastId);\n\t\t\t} catch (error) {\n\t\t\t\tthis.loadingMore = false;\n\t\t\t\tthis.showError(error, this.$locale.baseText('executionsList.showError.loadMore.title'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdata.results = data.results.map((execution) => {\n\t\t\t\t// @ts-ignore\n\t\t\t\treturn { ...execution, mode: execution.mode };\n\t\t\t});\n\t\t\tconst currentExecutions = [...this.executions];\n\t\t\tfor (const newExecution of data.results) {\n\t\t\t\tif (currentExecutions.find((ex) => ex.id === newExecution.id) === undefined) {\n\t\t\t\t\tcurrentExecutions.push(newExecution);\n\t\t\t\t}\n\t\t\t\t// If we loaded temp execution, put it into it's place and remove from top of the list\n\t\t\t\tif (newExecution.id === this.temporaryExecution?.id) {\n\t\t\t\t\tthis.temporaryExecution = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.workflowsStore.currentWorkflowExecutions = currentExecutions;\n\t\t\tthis.loadingMore = false;\n\t\t},\n\t\tasync onDeleteCurrentExecution(): Promise<void> {\n\t\t\tthis.loading = true;\n\t\t\ttry {\n\t\t\t\tconst executionIndex = this.executions.findIndex(\n\t\t\t\t\t(execution: IExecutionsSummary) => execution.id === this.$route.params.executionId,\n\t\t\t\t);\n\t\t\t\tconst nextExecution =\n\t\t\t\t\tthis.executions[executionIndex + 1] ||\n\t\t\t\t\tthis.executions[executionIndex - 1] ||\n\t\t\t\t\tthis.executions[0];\n\n\t\t\t\tawait this.workflowsStore.deleteExecutions({ ids: [this.$route.params.executionId] });\n\t\t\t\tthis.workflowsStore.deleteExecution(this.executions[executionIndex]);\n\t\t\t\tif (this.temporaryExecution?.id === this.$route.params.executionId) {\n\t\t\t\t\tthis.temporaryExecution = null;\n\t\t\t\t}\n\t\t\t\tif (this.executions.length > 0) {\n\t\t\t\t\tawait this.$router\n\t\t\t\t\t\t.push({\n\t\t\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\t\t\tparams: { name: this.currentWorkflow, executionId: nextExecution.id },\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {});\n\t\t\t\t\tthis.workflowsStore.activeWorkflowExecution = nextExecution;\n\t\t\t\t\tawait this.setExecutions();\n\t\t\t\t} else {\n\t\t\t\t\t// If there are no executions left, show empty state and clear active execution from the store\n\t\t\t\t\tthis.workflowsStore.activeWorkflowExecution = null;\n\t\t\t\t\tawait this.$router.push({\n\t\t\t\t\t\tname: VIEWS.EXECUTION_HOME,\n\t\t\t\t\t\tparams: { name: this.currentWorkflow },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.loading = false;\n\t\t\t\tthis.showError(\n\t\t\t\t\terror,\n\t\t\t\t\tthis.$locale.baseText('executionsList.showError.handleDeleteSelected.title'),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.loading = false;\n\n\t\t\tthis.showMessage({\n\t\t\t\ttitle: this.$locale.baseText('executionsList.showMessage.handleDeleteSelected.title'),\n\t\t\t\ttype: 'success',\n\t\t\t});\n\t\t},\n\t\tasync onStopExecution(): Promise<void> {\n\t\t\tconst activeExecutionId = this.$route.params.executionId;\n\n\t\t\ttry {\n\t\t\t\tawait this.workflowsStore.stopCurrentExecution(activeExecutionId);\n\n\t\t\t\tthis.showMessage({\n\t\t\t\t\ttitle: this.$locale.baseText('executionsList.showMessage.stopExecution.title'),\n\t\t\t\t\tmessage: this.$locale.baseText('executionsList.showMessage.stopExecution.message', {\n\t\t\t\t\t\tinterpolate: { activeExecutionId },\n\t\t\t\t\t}),\n\t\t\t\t\ttype: 'success',\n\t\t\t\t});\n\n\t\t\t\tawait this.loadAutoRefresh();\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(\n\t\t\t\t\terror,\n\t\t\t\t\tthis.$locale.baseText('executionsList.showError.stopExecution.title'),\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\tasync onFilterUpdated(filter: ExecutionFilterType) {\n\t\t\tthis.filter = filter;\n\t\t\tawait this.setExecutions();\n\t\t},\n\t\tasync setExecutions(): Promise<void> {\n\t\t\tthis.workflowsStore.currentWorkflowExecutions = await this.loadExecutions();\n\t\t\tawait this.setActiveExecution();\n\t\t},\n\n\t\tasync startAutoRefreshInterval() {\n\t\t\tif (this.autoRefresh) {\n\t\t\t\tawait this.loadAutoRefresh();\n\t\t\t\tthis.stopAutoRefreshInterval();\n\t\t\t\tthis.autoRefreshTimeout = setTimeout(() => {\n\t\t\t\t\tvoid this.startAutoRefreshInterval();\n\t\t\t\t}, 4000);\n\t\t\t}\n\t\t},\n\t\tstopAutoRefreshInterval() {\n\t\t\tif (this.autoRefreshTimeout) {\n\t\t\t\tclearTimeout(this.autoRefreshTimeout);\n\t\t\t\tthis.autoRefreshTimeout = undefined;\n\t\t\t}\n\t\t},\n\t\tonAutoRefreshToggle(value: boolean): void {\n\t\t\tthis.autoRefresh = value;\n\t\t\tthis.uiStore.executionSidebarAutoRefresh = this.autoRefresh;\n\n\t\t\tthis.stopAutoRefreshInterval(); // Clear any previously existing intervals (if any - there shouldn't)\n\t\t\tvoid this.startAutoRefreshInterval();\n\t\t},\n\t\tonDocumentVisibilityChange() {\n\t\t\tif (document.visibilityState === 'hidden') {\n\t\t\t\tvoid this.stopAutoRefreshInterval();\n\t\t\t} else {\n\t\t\t\tvoid this.startAutoRefreshInterval();\n\t\t\t}\n\t\t},\n\t\tasync loadAutoRefresh(): Promise<void> {\n\t\t\t// Most of the auto-refresh logic is taken from the `ExecutionsList` component\n\t\t\tconst fetchedExecutions: IExecutionsSummary[] = await this.loadExecutions();\n\t\t\tlet existingExecutions: IExecutionsSummary[] = [...this.executions];\n\t\t\tconst alreadyPresentExecutionIds = existingExecutions.map((exec) => parseInt(exec.id, 10));\n\t\t\tlet lastId = 0;\n\t\t\tconst gaps = [] as number[];\n\t\t\tlet updatedActiveExecution = null;\n\n\t\t\tfor (let i = fetchedExecutions.length - 1; i >= 0; i--) {\n\t\t\t\tconst currentItem = fetchedExecutions[i];\n\t\t\t\tconst currentId = parseInt(currentItem.id, 10);\n\t\t\t\tif (lastId !== 0 && !isNaN(currentId)) {\n\t\t\t\t\tif (currentId - lastId > 1) {\n\t\t\t\t\t\tconst range = _range(lastId + 1, currentId);\n\t\t\t\t\t\tgaps.push(...range);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastId = parseInt(currentItem.id, 10) || 0;\n\n\t\t\t\tconst executionIndex = alreadyPresentExecutionIds.indexOf(currentId);\n\t\t\t\tif (executionIndex !== -1) {\n\t\t\t\t\tconst existingExecution = existingExecutions.find((ex) => ex.id === currentItem.id);\n\t\t\t\t\tconst existingStillRunning =\n\t\t\t\t\t\t(existingExecution && existingExecution.finished === false) ||\n\t\t\t\t\t\texistingExecution?.stoppedAt === undefined;\n\t\t\t\t\tconst currentFinished =\n\t\t\t\t\t\tcurrentItem.finished === true || currentItem.stoppedAt !== undefined;\n\n\t\t\t\t\tif (existingStillRunning && currentFinished) {\n\t\t\t\t\t\texistingExecutions[executionIndex] = currentItem;\n\t\t\t\t\t\tif (currentItem.id === this.activeExecution?.id) {\n\t\t\t\t\t\t\tupdatedActiveExecution = currentItem;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlet j;\n\t\t\t\tfor (j = existingExecutions.length - 1; j >= 0; j--) {\n\t\t\t\t\tif (currentId < parseInt(existingExecutions[j].id, 10)) {\n\t\t\t\t\t\texistingExecutions.splice(j + 1, 0, currentItem);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (j === -1) {\n\t\t\t\t\texistingExecutions.unshift(currentItem);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\texistingExecutions = existingExecutions.filter(\n\t\t\t\t(execution) =>\n\t\t\t\t\t!gaps.includes(parseInt(execution.id, 10)) && lastId >= parseInt(execution.id, 10),\n\t\t\t);\n\t\t\tthis.workflowsStore.currentWorkflowExecutions = existingExecutions;\n\t\t\tif (updatedActiveExecution !== null) {\n\t\t\t\tthis.workflowsStore.activeWorkflowExecution = updatedActiveExecution;\n\t\t\t} else {\n\t\t\t\tconst activeInList = existingExecutions.some((ex) => ex.id === this.activeExecution?.id);\n\t\t\t\tif (!activeInList && this.executions.length > 0 && !this.temporaryExecution) {\n\t\t\t\t\tthis.$router\n\t\t\t\t\t\t.push({\n\t\t\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\t\t\tparams: { name: this.currentWorkflow, executionId: this.executions[0].id },\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {});\n\t\t\t\t} else if (this.executions.length === 0) {\n\t\t\t\t\tthis.$router.push({ name: VIEWS.EXECUTION_HOME }).catch(() => {});\n\t\t\t\t\tthis.workflowsStore.activeWorkflowExecution = null;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync loadExecutions(): Promise<IExecutionsSummary[]> {\n\t\t\tif (!this.currentWorkflow) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\ttry {\n\t\t\t\treturn await this.workflowsStore.loadCurrentWorkflowExecutions(this.requestFilter);\n\t\t\t} catch (error) {\n\t\t\t\tif (error.errorCode === NO_NETWORK_ERROR_CODE) {\n\t\t\t\t\tthis.showMessage(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttitle: this.$locale.baseText('executionsList.showError.refreshData.title'),\n\t\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t\t\tduration: 3500,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.showError(\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tthis.$locale.baseText('executionsList.showError.refreshData.title'),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\tasync setActiveExecution(): Promise<void> {\n\t\t\tconst activeExecutionId = this.$route.params.executionId;\n\t\t\tif (activeExecutionId) {\n\t\t\t\tconst execution = this.workflowsStore.getExecutionDataById(activeExecutionId);\n\t\t\t\tif (execution) {\n\t\t\t\t\tthis.workflowsStore.activeWorkflowExecution = execution;\n\t\t\t\t} else {\n\t\t\t\t\tawait this.tryToFindExecution(activeExecutionId);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If there is no execution in the route, select the first one\n\t\t\tif (\n\t\t\t\tthis.workflowsStore.activeWorkflowExecution === null &&\n\t\t\t\tthis.executions.length > 0 &&\n\t\t\t\t!this.temporaryExecution\n\t\t\t) {\n\t\t\t\tthis.workflowsStore.activeWorkflowExecution = this.executions[0];\n\n\t\t\t\tif (this.$route.name === VIEWS.EXECUTION_HOME) {\n\t\t\t\t\tthis.$router\n\t\t\t\t\t\t.push({\n\t\t\t\t\t\t\tname: VIEWS.EXECUTION_PREVIEW,\n\t\t\t\t\t\t\tparams: { name: this.currentWorkflow, executionId: this.executions[0].id },\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync tryToFindExecution(executionId: string, attemptCount = 0): Promise<void> {\n\t\t\t// First check if executions exists in the DB at all\n\t\t\tif (attemptCount === 0) {\n\t\t\t\tconst existingExecution = await this.workflowsStore.fetchExecutionDataById(executionId);\n\t\t\t\tif (!existingExecution) {\n\t\t\t\t\tthis.workflowsStore.activeWorkflowExecution = null;\n\t\t\t\t\tthis.showError(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\tthis.$locale.baseText('executionView.notFound.message', {\n\t\t\t\t\t\t\t\tinterpolate: { executionId },\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tthis.$locale.baseText('nodeView.showError.openExecution.title'),\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tthis.temporaryExecution = existingExecution as IExecutionsSummary;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// stop if the execution wasn't found in the first 1000 lookups\n\t\t\tif (attemptCount >= MAX_LOADING_ATTEMPTS) {\n\t\t\t\tif (this.temporaryExecution) {\n\t\t\t\t\tthis.workflowsStore.activeWorkflowExecution = this.temporaryExecution;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.workflowsStore.activeWorkflowExecution = null;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Fetch next batch of executions\n\t\t\tawait this.loadMore(LOAD_MORE_PAGE_SIZE);\n\t\t\tconst execution = this.workflowsStore.getExecutionDataById(executionId);\n\t\t\tif (!execution) {\n\t\t\t\t// If it's not there load next until found\n\t\t\t\tawait this.$nextTick();\n\t\t\t\t// But skip fetching execution data since we at this point know it exists\n\t\t\t\tawait this.tryToFindExecution(executionId, attemptCount + 1);\n\t\t\t} else {\n\t\t\t\t// When found set execution as active\n\t\t\t\tthis.workflowsStore.activeWorkflowExecution = execution;\n\t\t\t\tthis.temporaryExecution = null;\n\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\tasync openWorkflow(workflowId: string): Promise<void> {\n\t\t\tawait this.loadActiveWorkflows();\n\n\t\t\tlet data: IWorkflowDb | undefined;\n\t\t\ttry {\n\t\t\t\tdata = await this.workflowsStore.fetchWorkflow(workflowId);\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(error, this.$locale.baseText('nodeView.showError.openWorkflow.title'));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (data === undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tthis.$locale.baseText('nodeView.workflowWithIdCouldNotBeFound', {\n\t\t\t\t\t\tinterpolate: { workflowId },\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait this.addNodes(data.nodes, data.connections);\n\n\t\t\tthis.workflowsStore.setActive(data.active || false);\n\t\t\tthis.workflowsStore.setWorkflowId(workflowId);\n\t\t\tthis.workflowsStore.setWorkflowName({ newName: data.name, setStateDirty: false });\n\t\t\tthis.workflowsStore.setWorkflowSettings(data.settings || {});\n\t\t\tthis.workflowsStore.setWorkflowPinData(data.pinData || {});\n\t\t\tconst tags = (data.tags || []) as ITag[];\n\t\t\tconst tagIds = tags.map((tag) => tag.id);\n\t\t\tthis.workflowsStore.setWorkflowTagIds(tagIds || []);\n\t\t\tthis.workflowsStore.setWorkflowVersionId(data.versionId);\n\n\t\t\tthis.tagsStore.upsertTags(tags);\n\n\t\t\tvoid this.$externalHooks().run('workflow.open', { workflowId, workflowName: data.name });\n\t\t\tthis.uiStore.stateIsDirty = false;\n\t\t},\n\t\tasync addNodes(nodes: INodeUi[], connections?: IConnections) {\n\t\t\tif (!nodes?.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait this.loadNodesProperties(\n\t\t\t\tnodes.map((node) => ({ name: node.type, version: node.typeVersion })),\n\t\t\t);\n\n\t\t\tlet nodeType: INodeTypeDescription | null;\n\t\t\tnodes.forEach((node) => {\n\t\t\t\tif (!node.id) {\n\t\t\t\t\tnode.id = uuid();\n\t\t\t\t}\n\n\t\t\t\tnodeType = this.nodeTypesStore.getNodeType(node.type, node.typeVersion);\n\n\t\t\t\t// Make sure that some properties always exist\n\t\t\t\tif (!node.hasOwnProperty('disabled')) {\n\t\t\t\t\tnode.disabled = false;\n\t\t\t\t}\n\n\t\t\t\tif (!node.hasOwnProperty('parameters')) {\n\t\t\t\t\tnode.parameters = {};\n\t\t\t\t}\n\n\t\t\t\t// Load the defaul parameter values because only values which differ\n\t\t\t\t// from the defaults get saved\n\t\t\t\tif (nodeType !== null) {\n\t\t\t\t\tlet nodeParameters = null;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tnodeParameters = NodeHelpers.getNodeParameters(\n\t\t\t\t\t\t\tnodeType.properties,\n\t\t\t\t\t\t\tnode.parameters,\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\tthis.$locale.baseText('nodeView.thereWasAProblemLoadingTheNodeParametersOfNode') +\n\t\t\t\t\t\t\t\t`: \"${node.name}\"`,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t}\n\t\t\t\t\tnode.parameters = nodeParameters !== null ? nodeParameters : {};\n\n\t\t\t\t\t// if it's a webhook and the path is empty set the UUID as the default path\n\t\t\t\t\tif (node.type === WEBHOOK_NODE_TYPE && node.parameters.path === '') {\n\t\t\t\t\t\tnode.parameters.path = node.webhookId as string;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.workflowsStore.addNode(node);\n\t\t\t});\n\n\t\t\t// Load the connections\n\t\t\tif (connections !== undefined) {\n\t\t\t\tlet connectionData;\n\t\t\t\tfor (const sourceNode of Object.keys(connections)) {\n\t\t\t\t\tfor (const type of Object.keys(connections[sourceNode])) {\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tlet sourceIndex = 0;\n\t\t\t\t\t\t\tsourceIndex < connections[sourceNode][type].length;\n\t\t\t\t\t\t\tsourceIndex++\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst outwardConnections = connections[sourceNode][type][sourceIndex];\n\t\t\t\t\t\t\tif (!outwardConnections) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toutwardConnections.forEach((targetData) => {\n\t\t\t\t\t\t\t\tconnectionData = [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tnode: sourceNode,\n\t\t\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\t\t\tindex: sourceIndex,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tnode: targetData.node,\n\t\t\t\t\t\t\t\t\t\ttype: targetData.type,\n\t\t\t\t\t\t\t\t\t\tindex: targetData.index,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t] as [IConnection, IConnection];\n\n\t\t\t\t\t\t\t\tthis.workflowsStore.addConnection({\n\t\t\t\t\t\t\t\t\tconnection: connectionData,\n\t\t\t\t\t\t\t\t\tsetStateDirty: false,\n\t\t\t\t\t\t\t\t});\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}\n\t\t\t}\n\t\t},\n\t\tasync loadNodesProperties(nodeInfos: INodeTypeNameVersion[]): Promise<void> {\n\t\t\tconst allNodes: INodeTypeDescription[] = this.nodeTypesStore.allNodeTypes;\n\n\t\t\tconst nodesToBeFetched: INodeTypeNameVersion[] = [];\n\t\t\tallNodes.forEach((node) => {\n\t\t\t\tconst nodeVersions = Array.isArray(node.version) ? node.version : [node.version];\n\t\t\t\tif (\n\t\t\t\t\t!!nodeInfos.find((n) => n.name === node.name && nodeVersions.includes(n.version)) &&\n\t\t\t\t\t!node.hasOwnProperty('properties')\n\t\t\t\t) {\n\t\t\t\t\tnodesToBeFetched.push({\n\t\t\t\t\t\tname: node.name,\n\t\t\t\t\t\tversion: Array.isArray(node.version) ? node.version.slice(-1)[0] : node.version,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (nodesToBeFetched.length > 0) {\n\t\t\t\t// Only call API if node information is actually missing\n\t\t\t\tawait this.nodeTypesStore.getNodesInformation(nodesToBeFetched);\n\t\t\t}\n\t\t},\n\t\tasync loadActiveWorkflows(): Promise<void> {\n\t\t\tawait this.workflowsStore.fetchActiveWorkflows();\n\t\t},\n\t\tasync onRetryExecution(payload: { execution: IExecutionsSummary; command: string }) {\n\t\t\tconst loadWorkflow = payload.command === 'current-workflow';\n\n\t\t\tthis.showMessage({\n\t\t\t\ttitle: this.$locale.baseText('executionDetails.runningMessage'),\n\t\t\t\ttype: 'info',\n\t\t\t\tduration: 2000,\n\t\t\t});\n\t\t\tawait this.retryExecution(payload.execution, loadWorkflow);\n\t\t\tawait this.loadAutoRefresh();\n\n\t\t\tthis.$telemetry.track('User clicked retry execution button', {\n\t\t\t\tworkflow_id: this.workflowsStore.workflowId,\n\t\t\t\texecution_id: payload.execution.id,\n\t\t\t\tretry_type: loadWorkflow ? 'current' : 'original',\n\t\t\t});\n\t\t},\n\t\tasync retryExecution(execution: IExecutionsSummary, loadWorkflow?: boolean) {\n\t\t\ttry {\n\t\t\t\tconst retrySuccessful = await this.workflowsStore.retryExecution(\n\t\t\t\t\texecution.id,\n\t\t\t\t\tloadWorkflow,\n\t\t\t\t);\n\n\t\t\t\tif (retrySuccessful) {\n\t\t\t\t\tthis.showMessage({\n\t\t\t\t\t\ttitle: this.$locale.baseText('executionsList.showMessage.retrySuccessfulTrue.title'),\n\t\t\t\t\t\ttype: 'success',\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.showMessage({\n\t\t\t\t\t\ttitle: this.$locale.baseText('executionsList.showMessage.retrySuccessfulFalse.title'),\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.showError(\n\t\t\t\t\terror,\n\t\t\t\t\tthis.$locale.baseText('executionsList.showError.retryExecution.title'),\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\tdisplay: flex;\n\theight: 100%;\n\twidth: 100%;\n}\n\n.content {\n\tflex: 1;\n}\n</style>\n"],"names":["_sfc_main$2","defineComponent","executionHelpers","ExecutionTime","VIEWS","action","_resolveComponent","_normalizeClass","_ctx","_createVNode","_component_router_link","_withCtx","_createElementVNode","_component_n8n_text","_createBlock","_component_n8n_spinner","_createCommentVNode","_createTextVNode","_toDisplayString","_openBlock","_component_execution_time","_createElementBlock","_hoisted_1","_component_n8n_action_dropdown","_component_n8n_tooltip","_component_font_awesome_icon","_sfc_main$1","ExecutionCard","ExecutionsInfoAccordion","ExecutionFilter","mapStores","useUIStore","useWorkflowsStore","to","from","limit","executionsListRef","diff","payload","filter","sidebarContainerRef","currentExecutionCardRefs","_a","cardElement","listCapacity","cardRect","LIST_HEADER_OFFSET","_hoisted_2","_component_executions_info_accordion","_component_n8n_heading","_component_el_checkbox","_cache","$event","_component_execution_filter","_component_execution_card","_Fragment","_renderList","execution","_component_n8n_loading","MAX_LOADING_ATTEMPTS","LOAD_MORE_PAGE_SIZE","_sfc_main","debounceHelper","workflowHelpers","ExecutionsSidebar","useToast","useMessage","useTagsStore","useNodeTypesStore","useSettingsStore","activeNotPresent","ex","PLACEHOLDER_EMPTY_WORKFLOW_ID","executionFilterToQueryFilter","workflowChanged","next","getNodeViewTab","MAIN_HEADER_TABS","confirmModal","MODAL_CONFIRM","MODAL_CANCEL","workflowUpdated","onNewWorkflow","shouldUpdate","workflowExecutions","loadWorkflow","lastId","data","error","currentExecutions","newExecution","executionIndex","nextExecution","activeExecutionId","value","fetchedExecutions","existingExecutions","alreadyPresentExecutionIds","exec","gaps","updatedActiveExecution","i","currentItem","currentId","range","_range","existingExecution","existingStillRunning","currentFinished","j","NO_NETWORK_ERROR_CODE","executionId","attemptCount","workflowId","tags","tagIds","tag","nodes","connections","node","nodeType","uuid","nodeParameters","NodeHelpers.getNodeParameters","e","WEBHOOK_NODE_TYPE","connectionData","sourceNode","type","sourceIndex","outwardConnections","targetData","nodeInfos","allNodes","nodesToBeFetched","nodeVersions","_component_executions_sidebar","_component_router_view"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{m as W}from"./pinia-IhuTtYiV.js";import{E as O,a as F}from"./ExecutionFilter-xWjqUjz0.js";import{H as P,g as N,a as U,aM as H}from"./index-hMVAffQ3.js";import{u as j,f7 as B,O as q,l as z,B as Q,aa as G,cP as A,et as X,as as J,aw as K,_ as R}from"./n8n-NE7NqrvB.js";import{e as Y}from"./executionsHelpers-jpam7Sff.js";import{_ as Z}from"./lodash-es-s_m9YyW7.js";import{G as $,ag as f,l as o,m as d,p as n,I as l,T as c,O as h,M as m,V as ee,U as te,Q as w,R as a,F as se,a7 as ie,S,a2 as v}from"./vendor-2CfOYFi2.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.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-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./@fortawesome/vue-fontawesome-GVmvJ_gj.js";import"./@fortawesome/fontawesome-svg-core-xYGjsix9.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-gO4u4slB.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./@fortawesome/free-solid-svg-icons-KH5RR_hW.js";import"./@fortawesome/free-regular-svg-icons-ipmEYOws.js";import"./chart.js-JtqvIvkt.js";import"./flatted-jPn12Tq4.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./vue-i18n-eiX0lGiQ.js";const ne=$({name:"ExecutionsList",mixins:[P,N,Y],components:{ExecutionTime:O,ExecutionFilter:F},props:{autoRefreshEnabled:{type:Boolean,default:!0}},setup(){const e=J(),t=K();return{i18n:e,telemetry:t,...j(),...U()}},data(){return{isMounting:!0,finishedExecutions:[],finishedExecutionsCount:0,finishedExecutionsCountEstimated:!1,allVisibleSelected:!1,allExistingSelected:!1,autoRefresh:this.autoRefreshEnabled,autoRefreshTimeout:void 0,filter:{},isDataLoading:!1,requestItemsPerRequest:10,selectedItems:{},stoppingExecutions:[],workflows:[]}},mounted(){B(`n8n - ${this.pageTitle}`),this.handleAutoRefreshToggle(),document.addEventListener("visibilitychange",this.onDocumentVisibilityChange)},async created(){await this.loadWorkflows(),this.$externalHooks().run("executionsList.openDialog"),this.telemetry.track("User opened Executions log",{workflow_id:this.workflowsStore.workflowId})},beforeUnmount(){this.stopAutoRefreshInterval(),document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange)},computed:{...W(z,q),activeExecutions(){return this.workflowsStore.activeExecutions},combinedExecutions(){const e=[];return["all","running"].includes(this.filter.status)&&e.push(...this.activeExecutions),["all","error","success","waiting"].includes(this.filter.status)&&e.push(...this.finishedExecutions),e.filter(t=>this.filter.workflowId==="all"||t.workflowId===this.filter.workflowId)},numSelected(){return this.allExistingSelected?this.finishedExecutionsCount:Object.keys(this.selectedItems).length},workflowFilterCurrent(){const e={};return this.filter.workflowId!=="all"&&(e.workflowId=this.filter.workflowId),e},workflowFilterPast(){return H(this.filter)},pageTitle(){return this.i18n.baseText("executionsList.workflowExecutions")}},methods:{closeDialog(){this.$emit("closeModal")},displayExecution(e){const t=this.$router.resolve({name:Q.EXECUTION_PREVIEW,params:{name:e.workflowId,executionId:e.id}});window.open(t.href,"_blank")},async handleAutoRefreshToggle(){this.stopAutoRefreshInterval(),this.startAutoRefreshInterval()},handleCheckAllExistingChange(){this.allExistingSelected=!this.allExistingSelected,this.allVisibleSelected=!this.allExistingSelected,this.handleCheckAllVisibleChange()},handleCheckAllVisibleChange(){this.allVisibleSelected=!this.allVisibleSelected,this.allVisibleSelected?this.selectAllVisibleExecutions():(this.allExistingSelected=!1,this.selectedItems={})},handleCheckboxChanged(e){if(this.selectedItems[e]){const{[e]:t,...s}=this.selectedItems;this.selectedItems=s}else this.selectedItems={...this.selectedItems,[e]:!0};this.allVisibleSelected=Object.keys(this.selectedItems).length===this.combinedExecutions.length,this.allExistingSelected=Object.keys(this.selectedItems).length===this.finishedExecutionsCount},async handleDeleteSelected(){if(await this.confirm(this.i18n.baseText("executionsList.confirmMessage.message",{interpolate:{numSelected:this.numSelected.toString()}}),this.i18n.baseText("executionsList.confirmMessage.headline"),{type:"warning",confirmButtonText:this.i18n.baseText("executionsList.confirmMessage.confirmButtonText"),cancelButtonText:this.i18n.baseText("executionsList.confirmMessage.cancelButtonText")})!==G)return;this.isDataLoading=!0;const t={};this.allExistingSelected?t.deleteBefore=this.finishedExecutions[0].startedAt:t.ids=Object.keys(this.selectedItems),t.filters=this.workflowFilterPast;try{await this.workflowsStore.deleteExecutions(t)}catch(s){this.isDataLoading=!1,this.showError(s,this.i18n.baseText("executionsList.showError.handleDeleteSelected.title"));return}this.isDataLoading=!1,this.showMessage({title:this.i18n.baseText("executionsList.showMessage.handleDeleteSelected.title"),type:"success"}),this.handleClearSelection(),await this.refreshData()},handleClearSelection(){this.allVisibleSelected=!1,this.allExistingSelected=!1,this.selectedItems={}},async onFilterChanged(e){this.filter=e,await this.refreshData(),this.handleClearSelection(),this.isMounting=!1},async handleActionItemClick(e){if(["currentlySaved","original"].includes(e.command)){let t=!1;e.command==="currentlySaved"&&(t=!0),await this.retryExecution(e.execution,t),this.telemetry.track("User clicked retry execution button",{workflow_id:this.workflowsStore.workflowId,execution_id:e.execution.id,retry_type:t?"current":"original"})}e.command==="delete"&&await this.deleteExecution(e.execution)},getWorkflowName(e){var t;return(t=this.workflows.find(s=>s.id===e))==null?void 0:t.name},async loadActiveExecutions(){const e=A(this.workflowFilterCurrent.metadata)?await this.workflowsStore.getCurrentExecutions(this.workflowFilterCurrent):[];for(const t of e)t.workflowId&&!t.workflowName&&(t.workflowName=this.getWorkflowName(t.workflowId));this.workflowsStore.activeExecutions=e,this.workflowsStore.addToCurrentExecutions(e)},async loadAutoRefresh(){const e=this.workflowFilterPast,t=[this.workflowsStore.getPastExecutions(e,this.requestItemsPerRequest)];A(e.metadata)&&t.push(this.workflowsStore.getCurrentExecutions({}));const s=await Promise.all(t);for(const u of s[1])u.workflowId!==void 0&&u.workflowName===void 0&&(u.workflowName=this.getWorkflowName(u.workflowId));this.workflowsStore.activeExecutions=s[1];const r=[...this.finishedExecutions],C=r.map(u=>parseInt(u.id,10));let k=0;const T=[],p=s[0]||{results:[],count:0,estimated:!1};for(let u=p.results.length-1;u>=0;u--){const g=p.results[u],b=parseInt(g.id,10);if(k!==0&&!isNaN(b)&&b-k>1){const x=Z(k+1,b);T.push(...x)}k=parseInt(g.id,10)||0;const L=C.indexOf(b);if(L!==-1){r[L].finished===!1&&g.finished===!0&&(r[L]=g);continue}let y;for(y=r.length-1;y>=0;y--)if(b<parseInt(r[y].id,10)){r.splice(y+1,0,g);break}y===-1&&r.unshift(g)}const E=r.filter(u=>!T.includes(parseInt(u.id,10))&&k>=parseInt(u.id,10));this.finishedExecutionsCount=p.count,this.finishedExecutionsCountEstimated=p.estimated,this.finishedExecutions=E,this.workflowsStore.addToCurrentExecutions(E),this.adjustSelectionAfterMoreItemsLoaded()},async loadFinishedExecutions(){if(this.filter.status==="running"){this.finishedExecutions=[],this.finishedExecutionsCount=0,this.finishedExecutionsCountEstimated=!1;return}const e=await this.workflowsStore.getPastExecutions(this.workflowFilterPast,this.requestItemsPerRequest);this.finishedExecutions=e.results,this.finishedExecutionsCount=e.count,this.finishedExecutionsCountEstimated=e.estimated,this.workflowsStore.addToCurrentExecutions(e.results),this.finishedExecutions.length===0&&this.handleClearSelection()},async loadMore(){if(this.filter.status==="running")return;this.isDataLoading=!0;const e=this.workflowFilterPast;let t;this.finishedExecutions.length!==0&&(t=this.finishedExecutions.slice(-1)[0].id);let s;try{s=await this.workflowsStore.getPastExecutions(e,this.requestItemsPerRequest,t)}catch(r){this.isDataLoading=!1,this.showError(r,this.i18n.baseText("executionsList.showError.loadMore.title"));return}s.results=s.results.map(r=>({...r,mode:r.mode})),this.finishedExecutions.push(...s.results),this.finishedExecutionsCount=s.count,this.finishedExecutionsCountEstimated=s.estimated,this.isDataLoading=!1,this.workflowsStore.addToCurrentExecutions(s.results),this.adjustSelectionAfterMoreItemsLoaded()},async loadWorkflows(){try{const e=await this.workflowsStore.fetchAllWorkflows();e.sort((t,s)=>t.name.toLowerCase()<s.name.toLowerCase()?-1:t.name.toLowerCase()>s.name.toLowerCase()?1:0),e.unshift({id:"all",name:this.i18n.baseText("executionsList.allWorkflows")}),this.workflows=e}catch(e){this.showError(e,this.i18n.baseText("executionsList.showError.loadWorkflows.title"))}},async retryExecution(e,t){this.isDataLoading=!0;try{await this.workflowsStore.retryExecution(e.id,t)?this.showMessage({title:this.i18n.baseText("executionsList.showMessage.retrySuccessfulTrue.title"),type:"success"}):this.showMessage({title:this.i18n.baseText("executionsList.showMessage.retrySuccessfulFalse.title"),type:"error"}),this.isDataLoading=!1}catch(s){this.showError(s,this.i18n.baseText("executionsList.showError.retryExecution.title")),this.isDataLoading=!1}},async refreshData(){this.isDataLoading=!0;try{await Promise.all([this.loadActiveExecutions(),this.loadFinishedExecutions()])}catch(e){this.showError(e,this.i18n.baseText("executionsList.showError.refreshData.title"))}this.isDataLoading=!1},getStatus(e){if(e.status)return e.status;{let t="unknown";return e.waitTill?t="waiting":e.stoppedAt===void 0?t="running":e.finished?t="success":e.stoppedAt!==null?t="failed":t="unknown",t}},getRowClass(e){return[this.$style.execRow,this.$style[this.getStatus(e)]].join(" ")},getStatusText(e){const t=this.getStatus(e);let s="";return t==="waiting"?s=this.i18n.baseText("executionsList.waiting"):t==="canceled"?s=this.i18n.baseText("executionsList.canceled"):t==="crashed"?s=this.i18n.baseText("executionsList.error"):t==="new"?s=this.i18n.baseText("executionsList.running"):t==="running"?s=this.i18n.baseText("executionsList.running"):t==="success"?s=this.i18n.baseText("executionsList.succeeded"):t==="failed"?s=this.i18n.baseText("executionsList.error"):s=this.i18n.baseText("executionsList.unknown"),s},getStatusTextTranslationPath(e){const t=this.getStatus(e);let s="";return t==="waiting"?s="executionsList.statusWaiting":t==="canceled"?s="executionsList.statusCanceled":["crashed","failed","success"].includes(t)?e.stoppedAt?s="executionsList.statusText":s="executionsList.statusTextWithoutTime":t==="new"||t==="running"?s="executionsList.statusRunning":s="executionsList.statusUnknown",s},getStatusTooltipText(e){const t=this.getStatus(e);let s="";return t==="waiting"&&this.isWaitTillIndefinite(e)&&(s=this.i18n.baseText("executionsList.statusTooltipText.theWorkflowIsWaitingIndefinitely")),s},async stopExecution(e){try{this.stoppingExecutions.push(e),await this.workflowsStore.stopCurrentExecution(e);const t=this.stoppingExecutions.indexOf(e);this.stoppingExecutions.splice(t,1),this.showMessage({title:this.i18n.baseText("executionsList.showMessage.stopExecution.title"),message:this.i18n.baseText("executionsList.showMessage.stopExecution.message",{interpolate:{activeExecutionId:e}}),type:"success"}),await this.refreshData()}catch(t){this.showError(t,this.i18n.baseText("executionsList.showError.stopExecution.title"))}},isExecutionRetriable(e){return e.stoppedAt!==void 0&&!e.finished&&e.retryOf===void 0&&e.retrySuccessId===void 0&&!e.waitTill},async deleteExecution(e){this.isDataLoading=!0;try{await this.workflowsStore.deleteExecutions({ids:[e.id]}),await this.refreshData(),this.allVisibleSelected&&(this.selectedItems={},this.selectAllVisibleExecutions())}catch(t){this.showError(t,this.i18n.baseText("executionsList.showError.handleDeleteSelected.title"))}this.isDataLoading=!0},isWaitTillIndefinite(e){return e.waitTill?new Date(e.waitTill).toISOString()===X:!1},isRunning(e){return this.getStatus(e)==="running"},selectAllVisibleExecutions(){this.combinedExecutions.forEach(e=>{this.selectedItems={...this.selectedItems,[e.id]:!0}})},adjustSelectionAfterMoreItemsLoaded(){this.allExistingSelected&&(this.allVisibleSelected=!0,this.selectAllVisibleExecutions())},async startAutoRefreshInterval(){this.autoRefresh&&(await this.loadAutoRefresh(),this.autoRefreshTimeout=setTimeout(()=>{this.startAutoRefreshInterval()},4*1e3))},stopAutoRefreshInterval(){this.autoRefreshTimeout&&(clearTimeout(this.autoRefreshTimeout),this.autoRefreshTimeout=void 0)},onDocumentVisibilityChange(){document.visibilityState==="hidden"?this.stopAutoRefreshInterval():this.startAutoRefreshInterval()}}}),oe="_execListWrapper_1h4m6_5",le="_execList_1h4m6_5",ae="_execListHeader_1h4m6_26",re="_execListHeaderControls_1h4m6_33",ue="_selectionOptions_1h4m6_39",de="_statusColumn_1h4m6_57",ce="_spinner_1h4m6_62",he="_status_1h4m6_57",fe="_crashed_1h4m6_72",me="_failed_1h4m6_72",we="_waiting_1h4m6_75",pe="_success_1h4m6_78",ge="_running_1h4m6_81",ye="_unknown_1h4m6_84",ke="_buttonCell_1h4m6_88",Ee="_execRow_1h4m6_95",be="_execTable_1h4m6_99",xe="_loadMore_1h4m6_182",Te="_loadedAll_1h4m6_188",Le="_actions_1h4m6_195",Se="_deleteOnly_1h4m6_195",Ce="_retryAction_1h4m6_199",_e="_deleteAction_1h4m6_199",Ie="_selectAll_1h4m6_203",ve="_filterLoader_1h4m6_209",Ae="_tableLoader_1h4m6_214",Re="_link_1h4m6_220",$e={execListWrapper:oe,execList:le,execListHeader:ae,execListHeaderControls:re,selectionOptions:ue,statusColumn:de,spinner:ce,status:he,crashed:fe,failed:me,waiting:we,success:pe,new:"_new_1h4m6_81",running:ge,unknown:ye,buttonCell:ke,execRow:Ee,execTable:be,loadMore:xe,loadedAll:Te,actions:Le,deleteOnly:Se,retryAction:Ce,deleteAction:_e,selectAll:Ie,filterLoader:ve,tableLoader:Ae,link:Re},Ve={key:1},Me=n("th",null,null,-1),De=n("th",null,null,-1),We=n("th",null,null,-1),Oe=n("th",null,null,-1),Fe=["onClick"],Pe={key:0},Ne={key:1},Ue={key:0},He={key:1},je=n("br",null,null,-1),Be={key:2},qe=n("br",null,null,-1),ze={class:"retry-button"};function Qe(e,t,s,r,C,k){const T=f("n8n-heading"),p=f("n8n-loading"),E=f("el-checkbox"),u=f("execution-filter"),g=f("font-awesome-icon"),b=f("execution-time"),L=f("i18n-t"),y=f("n8n-tooltip"),x=f("n8n-button"),V=f("n8n-icon-button"),_=f("el-dropdown-item"),M=f("el-dropdown-menu"),D=f("el-dropdown");return o(),d("div",{class:l(e.$style.execListWrapper)},[n("div",{class:l(e.$style.execList)},[n("div",{class:l(e.$style.execListHeader)},[c(T,{tag:"h1",size:"2xlarge"},{default:h(()=>[S(a(this.pageTitle),1)]),_:1}),n("div",{class:l(e.$style.execListHeaderControls)},[e.isMounting?(o(),m(p,{key:0,class:l(e.$style.filterLoader),variant:"custom"},null,8,["class"])):(o(),m(E,{key:1,class:"mr-xl",modelValue:e.autoRefresh,"onUpdate:modelValue":[t[0]||(t[0]=i=>e.autoRefresh=i),e.handleAutoRefreshToggle],"data-test-id":"execution-auto-refresh-checkbox"},{default:h(()=>[S(a(e.i18n.baseText("executionsList.autoRefresh")),1)]),_:1},8,["modelValue","onUpdate:modelValue"])),ee(c(u,{workflows:e.workflows,onFilterChanged:e.onFilterChanged},null,8,["workflows","onFilterChanged"]),[[te,!e.isMounting]])],2)],2),e.allVisibleSelected&&e.finishedExecutionsCount>0?(o(),m(E,{key:0,class:l(e.$style.selectAll),label:e.i18n.baseText("executionsList.selectAll",{adjustToNumber:e.finishedExecutionsCount,interpolate:{executionNum:e.finishedExecutionsCount}}),modelValue:e.allExistingSelected,"onUpdate:modelValue":e.handleCheckAllExistingChange,"data-test-id":"select-all-executions-checkbox"},null,8,["class","label","modelValue","onUpdate:modelValue"])):w("",!0),e.isMounting?(o(),d("div",Ve,[c(p,{class:l(e.$style.tableLoader),variant:"custom"},null,8,["class"]),c(p,{class:l(e.$style.tableLoader),variant:"custom"},null,8,["class"]),c(p,{class:l(e.$style.tableLoader),variant:"custom"},null,8,["class"])])):(o(),d("table",{key:2,class:l(e.$style.execTable)},[n("thead",null,[n("tr",null,[n("th",null,[c(E,{modelValue:e.allVisibleSelected,"onUpdate:modelValue":e.handleCheckAllVisibleChange,disabled:e.finishedExecutionsCount<1,label:"","data-test-id":"select-visible-executions-checkbox"},null,8,["modelValue","onUpdate:modelValue","disabled"])]),n("th",null,a(e.i18n.baseText("executionsList.name")),1),n("th",null,a(e.i18n.baseText("executionsList.startedAt")),1),n("th",null,a(e.i18n.baseText("executionsList.status")),1),n("th",null,a(e.i18n.baseText("executionsList.id")),1),Me,De,We,Oe])]),n("tbody",null,[(o(!0),d(se,null,ie(e.combinedExecutions,i=>(o(),d("tr",{key:i.id,class:l(e.getRowClass(i))},[n("td",null,[i.stoppedAt!==void 0&&i.id?(o(),m(E,{key:0,modelValue:e.selectedItems[i.id]||e.allExistingSelected,"onUpdate:modelValue":I=>e.handleCheckboxChanged(i.id),label:"","data-test-id":"select-execution-checkbox"},null,8,["modelValue","onUpdate:modelValue"])):w("",!0)]),n("td",null,[n("span",{onClick:v(I=>e.displayExecution(i),["stop"])},[n("a",{href:"#",class:l(e.$style.link)},a(i.workflowName||e.i18n.baseText("executionsList.unsavedWorkflow")),3)],8,Fe)]),n("td",null,[n("span",null,a(e.formatDate(i.startedAt)),1)]),n("td",null,[n("div",{class:l(e.$style.statusColumn)},[e.isRunning(i)?(o(),d("span",{key:0,class:l(e.$style.spinner)},[c(g,{icon:"spinner",spin:""})],2)):w("",!0),e.isWaitTillIndefinite(i)?(o(),m(y,{key:2,placement:"top"},{content:h(()=>[n("span",null,a(e.getStatusTooltipText(i)),1)]),default:h(()=>[n("span",{class:l(e.$style.status)},a(e.getStatusText(i)),3)]),_:2},1024)):(o(),m(L,{key:1,tag:"span",keypath:e.getStatusTextTranslationPath(i)},{status:h(()=>[n("span",{class:l(e.$style.status)},a(e.getStatusText(i)),3)]),time:h(()=>[i.waitTill?(o(),d("span",Pe,a(e.formatDate(i.waitTill)),1)):i.stoppedAt!==null&&i.stoppedAt!==void 0?(o(),d("span",Ne,a(e.displayTimer(new Date(i.stoppedAt).getTime()-new Date(i.startedAt).getTime(),!0)),1)):(o(),m(b,{key:2,"start-time":i.startedAt},null,8,["start-time"]))]),_:2},1032,["keypath"]))],2)]),n("td",null,[i.id?(o(),d("span",Ue,"#"+a(i.id),1)):w("",!0),i.retryOf?(o(),d("span",He,[je,n("small",null," ("+a(e.i18n.baseText("executionsList.retryOf"))+" #"+a(i.retryOf)+") ",1)])):i.retrySuccessId?(o(),d("span",Be,[qe,n("small",null," ("+a(e.i18n.baseText("executionsList.successRetry"))+" #"+a(i.retrySuccessId)+") ",1)])):w("",!0)]),n("td",null,[i.mode==="manual"?(o(),m(y,{key:0,placement:"top"},{content:h(()=>[n("span",null,a(e.i18n.baseText("executionsList.test")),1)]),default:h(()=>[c(g,{icon:"flask"})]),_:1})):w("",!0)]),n("td",null,[n("div",{class:l(e.$style.buttonCell)},[i.stoppedAt!==void 0&&i.id?(o(),m(x,{key:0,size:"small",outline:"",label:e.i18n.baseText("executionsList.view"),onClick:v(I=>e.displayExecution(i),["stop"])},null,8,["label","onClick"])):w("",!0)],2)]),n("td",null,[n("div",{class:l(e.$style.buttonCell)},[i.stoppedAt===void 0||i.waitTill?(o(),m(x,{key:0,size:"small",outline:"",label:e.i18n.baseText("executionsList.stop"),onClick:v(I=>e.stopExecution(i.id),["stop"]),loading:e.stoppingExecutions.includes(i.id)},null,8,["label","onClick","loading"])):w("",!0)],2)]),n("td",null,[e.isRunning(i)?w("",!0):(o(),m(D,{key:0,trigger:"click",onCommand:e.handleActionItemClick},{dropdown:h(()=>[c(M,{class:l({[e.$style.actions]:!0,[e.$style.deleteOnly]:!e.isExecutionRetriable(i)})},{default:h(()=>[e.isExecutionRetriable(i)?(o(),m(_,{key:0,class:l(e.$style.retryAction),command:{command:"currentlySaved",execution:i}},{default:h(()=>[S(a(e.i18n.baseText("executionsList.retryWithCurrentlySavedWorkflow")),1)]),_:2},1032,["class","command"])):w("",!0),e.isExecutionRetriable(i)?(o(),m(_,{key:1,class:l(e.$style.retryAction),command:{command:"original",execution:i}},{default:h(()=>[S(a(e.i18n.baseText("executionsList.retryWithOriginalWorkflow")),1)]),_:2},1032,["class","command"])):w("",!0),c(_,{class:l(e.$style.deleteAction),command:{command:"delete",execution:i}},{default:h(()=>[S(a(e.i18n.baseText("generic.delete")),1)]),_:2},1032,["class","command"])]),_:2},1032,["class"])]),default:h(()=>[n("span",ze,[c(V,{text:"",type:"tertiary",size:"mini",title:e.i18n.baseText("executionsList.retryExecution"),icon:"ellipsis-v"},null,8,["title"])])]),_:2},1032,["onCommand"]))])],2))),128))])],2)),!e.combinedExecutions.length&&!e.isMounting&&!e.isDataLoading?(o(),d("div",{key:3,class:l(e.$style.loadedAll),"data-test-id":"execution-list-empty"},a(e.i18n.baseText("executionsList.empty")),3)):e.finishedExecutionsCount>e.finishedExecutions.length||e.finishedExecutionsCountEstimated?(o(),d("div",{key:4,class:l(e.$style.loadMore)},[c(x,{icon:"sync",title:e.i18n.baseText("executionsList.loadMore"),label:e.i18n.baseText("executionsList.loadMore"),onClick:t[1]||(t[1]=i=>e.loadMore()),loading:e.isDataLoading,"data-test-id":"load-more-button"},null,8,["title","label","loading"])],2)):!e.isMounting&&!e.isDataLoading?(o(),d("div",{key:5,class:l(e.$style.loadedAll),"data-test-id":"execution-all-loaded"},a(e.i18n.baseText("executionsList.loadedAll")),3)):w("",!0)],2),e.numSelected>0?(o(),d("div",{key:0,class:l(e.$style.selectionOptions),"data-test-id":"selected-executions-info"},[n("span",null,a(e.i18n.baseText("executionsList.selected",{adjustToNumber:e.numSelected,interpolate:{numSelected:e.numSelected}})),1),c(x,{label:e.i18n.baseText("generic.delete"),type:"tertiary",onClick:e.handleDeleteSelected,"data-test-id":"delete-selected-button"},null,8,["label","onClick"]),c(x,{label:e.i18n.baseText("executionsList.clearSelection"),type:"tertiary",onClick:e.handleClearSelection,"data-test-id":"clear-selection-button"},null,8,["label","onClick"])],2)):w("",!0)],2)}const Ge={$style:$e},Xe=R(ne,[["render",Qe],["__cssModules",Ge]]),Je=$({name:"ExecutionsView",components:{ExecutionsList:Xe}});function Ke(e,t,s,r,C,k){const T=f("ExecutionsList");return o(),m(T)}const Rt=R(Je,[["render",Ke]]);export{Rt as default};
|
|
2
|
-
//# sourceMappingURL=ExecutionsView-
|
|
1
|
+
import{m as W}from"./pinia-IhuTtYiV.js";import{E as O,a as F}from"./ExecutionFilter-tcX3bN8y.js";import{H as P,g as N,a as U,aM as H}from"./index-sMRiWGJS.js";import{u as j,f7 as B,O as q,l as z,B as Q,aa as G,cP as A,et as X,as as J,aw as K,_ as R}from"./n8n-NE7NqrvB.js";import{e as Y}from"./executionsHelpers-8_uqSfWi.js";import{_ as Z}from"./lodash-es-s_m9YyW7.js";import{G as $,ag as f,l as o,m as d,p as n,I as l,T as c,O as h,M as m,V as ee,U as te,Q as w,R as a,F as se,a7 as ie,S,a2 as v}from"./vendor-2CfOYFi2.js";import"./prettier-s3fE3Qyr.js";import"./codemirror-lang-html-n8n-qoVuUIQR.js";import"./@n8n/codemirror-lang-sql-zd5sOTQ9.js";import"./@lezer/common-aP6EPErF.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-QL7QI0sV.js";import"./uuid-McvpxQtQ.js";import"./luxon-ZRIU05qF.js";import"./esprima-next-ulPLCZ1Z.js";import"./@vueuse/core-viEZCtbZ.js";import"./@fortawesome/vue-fontawesome-GVmvJ_gj.js";import"./@fortawesome/fontawesome-svg-core-xYGjsix9.js";import"./codemirror-lang-n8n-expression-qGXLqLTr.js";import"./fast-json-stable-stringify-gO4u4slB.js";import"./timeago.js--Bumj2r9.js";import"./qrcode.vue-f7Vn5Pkq.js";import"./vue3-touch-events-_RfbPMOD.js";import"./@fortawesome/free-solid-svg-icons-KH5RR_hW.js";import"./@fortawesome/free-regular-svg-icons-ipmEYOws.js";import"./chart.js-JtqvIvkt.js";import"./flatted-jPn12Tq4.js";import"./@n8n/permissions-8yMqUF1Y.js";import"./vue-i18n-eiX0lGiQ.js";const ne=$({name:"ExecutionsList",mixins:[P,N,Y],components:{ExecutionTime:O,ExecutionFilter:F},props:{autoRefreshEnabled:{type:Boolean,default:!0}},setup(){const e=J(),t=K();return{i18n:e,telemetry:t,...j(),...U()}},data(){return{isMounting:!0,finishedExecutions:[],finishedExecutionsCount:0,finishedExecutionsCountEstimated:!1,allVisibleSelected:!1,allExistingSelected:!1,autoRefresh:this.autoRefreshEnabled,autoRefreshTimeout:void 0,filter:{},isDataLoading:!1,requestItemsPerRequest:10,selectedItems:{},stoppingExecutions:[],workflows:[]}},mounted(){B(`n8n - ${this.pageTitle}`),this.handleAutoRefreshToggle(),document.addEventListener("visibilitychange",this.onDocumentVisibilityChange)},async created(){await this.loadWorkflows(),this.$externalHooks().run("executionsList.openDialog"),this.telemetry.track("User opened Executions log",{workflow_id:this.workflowsStore.workflowId})},beforeUnmount(){this.stopAutoRefreshInterval(),document.removeEventListener("visibilitychange",this.onDocumentVisibilityChange)},computed:{...W(z,q),activeExecutions(){return this.workflowsStore.activeExecutions},combinedExecutions(){const e=[];return["all","running"].includes(this.filter.status)&&e.push(...this.activeExecutions),["all","error","success","waiting"].includes(this.filter.status)&&e.push(...this.finishedExecutions),e.filter(t=>this.filter.workflowId==="all"||t.workflowId===this.filter.workflowId)},numSelected(){return this.allExistingSelected?this.finishedExecutionsCount:Object.keys(this.selectedItems).length},workflowFilterCurrent(){const e={};return this.filter.workflowId!=="all"&&(e.workflowId=this.filter.workflowId),e},workflowFilterPast(){return H(this.filter)},pageTitle(){return this.i18n.baseText("executionsList.workflowExecutions")}},methods:{closeDialog(){this.$emit("closeModal")},displayExecution(e){const t=this.$router.resolve({name:Q.EXECUTION_PREVIEW,params:{name:e.workflowId,executionId:e.id}});window.open(t.href,"_blank")},async handleAutoRefreshToggle(){this.stopAutoRefreshInterval(),this.startAutoRefreshInterval()},handleCheckAllExistingChange(){this.allExistingSelected=!this.allExistingSelected,this.allVisibleSelected=!this.allExistingSelected,this.handleCheckAllVisibleChange()},handleCheckAllVisibleChange(){this.allVisibleSelected=!this.allVisibleSelected,this.allVisibleSelected?this.selectAllVisibleExecutions():(this.allExistingSelected=!1,this.selectedItems={})},handleCheckboxChanged(e){if(this.selectedItems[e]){const{[e]:t,...s}=this.selectedItems;this.selectedItems=s}else this.selectedItems={...this.selectedItems,[e]:!0};this.allVisibleSelected=Object.keys(this.selectedItems).length===this.combinedExecutions.length,this.allExistingSelected=Object.keys(this.selectedItems).length===this.finishedExecutionsCount},async handleDeleteSelected(){if(await this.confirm(this.i18n.baseText("executionsList.confirmMessage.message",{interpolate:{numSelected:this.numSelected.toString()}}),this.i18n.baseText("executionsList.confirmMessage.headline"),{type:"warning",confirmButtonText:this.i18n.baseText("executionsList.confirmMessage.confirmButtonText"),cancelButtonText:this.i18n.baseText("executionsList.confirmMessage.cancelButtonText")})!==G)return;this.isDataLoading=!0;const t={};this.allExistingSelected?t.deleteBefore=this.finishedExecutions[0].startedAt:t.ids=Object.keys(this.selectedItems),t.filters=this.workflowFilterPast;try{await this.workflowsStore.deleteExecutions(t)}catch(s){this.isDataLoading=!1,this.showError(s,this.i18n.baseText("executionsList.showError.handleDeleteSelected.title"));return}this.isDataLoading=!1,this.showMessage({title:this.i18n.baseText("executionsList.showMessage.handleDeleteSelected.title"),type:"success"}),this.handleClearSelection(),await this.refreshData()},handleClearSelection(){this.allVisibleSelected=!1,this.allExistingSelected=!1,this.selectedItems={}},async onFilterChanged(e){this.filter=e,await this.refreshData(),this.handleClearSelection(),this.isMounting=!1},async handleActionItemClick(e){if(["currentlySaved","original"].includes(e.command)){let t=!1;e.command==="currentlySaved"&&(t=!0),await this.retryExecution(e.execution,t),this.telemetry.track("User clicked retry execution button",{workflow_id:this.workflowsStore.workflowId,execution_id:e.execution.id,retry_type:t?"current":"original"})}e.command==="delete"&&await this.deleteExecution(e.execution)},getWorkflowName(e){var t;return(t=this.workflows.find(s=>s.id===e))==null?void 0:t.name},async loadActiveExecutions(){const e=A(this.workflowFilterCurrent.metadata)?await this.workflowsStore.getCurrentExecutions(this.workflowFilterCurrent):[];for(const t of e)t.workflowId&&!t.workflowName&&(t.workflowName=this.getWorkflowName(t.workflowId));this.workflowsStore.activeExecutions=e,this.workflowsStore.addToCurrentExecutions(e)},async loadAutoRefresh(){const e=this.workflowFilterPast,t=[this.workflowsStore.getPastExecutions(e,this.requestItemsPerRequest)];A(e.metadata)&&t.push(this.workflowsStore.getCurrentExecutions({}));const s=await Promise.all(t);for(const u of s[1])u.workflowId!==void 0&&u.workflowName===void 0&&(u.workflowName=this.getWorkflowName(u.workflowId));this.workflowsStore.activeExecutions=s[1];const r=[...this.finishedExecutions],C=r.map(u=>parseInt(u.id,10));let k=0;const T=[],p=s[0]||{results:[],count:0,estimated:!1};for(let u=p.results.length-1;u>=0;u--){const g=p.results[u],b=parseInt(g.id,10);if(k!==0&&!isNaN(b)&&b-k>1){const x=Z(k+1,b);T.push(...x)}k=parseInt(g.id,10)||0;const L=C.indexOf(b);if(L!==-1){r[L].finished===!1&&g.finished===!0&&(r[L]=g);continue}let y;for(y=r.length-1;y>=0;y--)if(b<parseInt(r[y].id,10)){r.splice(y+1,0,g);break}y===-1&&r.unshift(g)}const E=r.filter(u=>!T.includes(parseInt(u.id,10))&&k>=parseInt(u.id,10));this.finishedExecutionsCount=p.count,this.finishedExecutionsCountEstimated=p.estimated,this.finishedExecutions=E,this.workflowsStore.addToCurrentExecutions(E),this.adjustSelectionAfterMoreItemsLoaded()},async loadFinishedExecutions(){if(this.filter.status==="running"){this.finishedExecutions=[],this.finishedExecutionsCount=0,this.finishedExecutionsCountEstimated=!1;return}const e=await this.workflowsStore.getPastExecutions(this.workflowFilterPast,this.requestItemsPerRequest);this.finishedExecutions=e.results,this.finishedExecutionsCount=e.count,this.finishedExecutionsCountEstimated=e.estimated,this.workflowsStore.addToCurrentExecutions(e.results),this.finishedExecutions.length===0&&this.handleClearSelection()},async loadMore(){if(this.filter.status==="running")return;this.isDataLoading=!0;const e=this.workflowFilterPast;let t;this.finishedExecutions.length!==0&&(t=this.finishedExecutions.slice(-1)[0].id);let s;try{s=await this.workflowsStore.getPastExecutions(e,this.requestItemsPerRequest,t)}catch(r){this.isDataLoading=!1,this.showError(r,this.i18n.baseText("executionsList.showError.loadMore.title"));return}s.results=s.results.map(r=>({...r,mode:r.mode})),this.finishedExecutions.push(...s.results),this.finishedExecutionsCount=s.count,this.finishedExecutionsCountEstimated=s.estimated,this.isDataLoading=!1,this.workflowsStore.addToCurrentExecutions(s.results),this.adjustSelectionAfterMoreItemsLoaded()},async loadWorkflows(){try{const e=await this.workflowsStore.fetchAllWorkflows();e.sort((t,s)=>t.name.toLowerCase()<s.name.toLowerCase()?-1:t.name.toLowerCase()>s.name.toLowerCase()?1:0),e.unshift({id:"all",name:this.i18n.baseText("executionsList.allWorkflows")}),this.workflows=e}catch(e){this.showError(e,this.i18n.baseText("executionsList.showError.loadWorkflows.title"))}},async retryExecution(e,t){this.isDataLoading=!0;try{await this.workflowsStore.retryExecution(e.id,t)?this.showMessage({title:this.i18n.baseText("executionsList.showMessage.retrySuccessfulTrue.title"),type:"success"}):this.showMessage({title:this.i18n.baseText("executionsList.showMessage.retrySuccessfulFalse.title"),type:"error"}),this.isDataLoading=!1}catch(s){this.showError(s,this.i18n.baseText("executionsList.showError.retryExecution.title")),this.isDataLoading=!1}},async refreshData(){this.isDataLoading=!0;try{await Promise.all([this.loadActiveExecutions(),this.loadFinishedExecutions()])}catch(e){this.showError(e,this.i18n.baseText("executionsList.showError.refreshData.title"))}this.isDataLoading=!1},getStatus(e){if(e.status)return e.status;{let t="unknown";return e.waitTill?t="waiting":e.stoppedAt===void 0?t="running":e.finished?t="success":e.stoppedAt!==null?t="failed":t="unknown",t}},getRowClass(e){return[this.$style.execRow,this.$style[this.getStatus(e)]].join(" ")},getStatusText(e){const t=this.getStatus(e);let s="";return t==="waiting"?s=this.i18n.baseText("executionsList.waiting"):t==="canceled"?s=this.i18n.baseText("executionsList.canceled"):t==="crashed"?s=this.i18n.baseText("executionsList.error"):t==="new"?s=this.i18n.baseText("executionsList.running"):t==="running"?s=this.i18n.baseText("executionsList.running"):t==="success"?s=this.i18n.baseText("executionsList.succeeded"):t==="failed"?s=this.i18n.baseText("executionsList.error"):s=this.i18n.baseText("executionsList.unknown"),s},getStatusTextTranslationPath(e){const t=this.getStatus(e);let s="";return t==="waiting"?s="executionsList.statusWaiting":t==="canceled"?s="executionsList.statusCanceled":["crashed","failed","success"].includes(t)?e.stoppedAt?s="executionsList.statusText":s="executionsList.statusTextWithoutTime":t==="new"||t==="running"?s="executionsList.statusRunning":s="executionsList.statusUnknown",s},getStatusTooltipText(e){const t=this.getStatus(e);let s="";return t==="waiting"&&this.isWaitTillIndefinite(e)&&(s=this.i18n.baseText("executionsList.statusTooltipText.theWorkflowIsWaitingIndefinitely")),s},async stopExecution(e){try{this.stoppingExecutions.push(e),await this.workflowsStore.stopCurrentExecution(e);const t=this.stoppingExecutions.indexOf(e);this.stoppingExecutions.splice(t,1),this.showMessage({title:this.i18n.baseText("executionsList.showMessage.stopExecution.title"),message:this.i18n.baseText("executionsList.showMessage.stopExecution.message",{interpolate:{activeExecutionId:e}}),type:"success"}),await this.refreshData()}catch(t){this.showError(t,this.i18n.baseText("executionsList.showError.stopExecution.title"))}},isExecutionRetriable(e){return e.stoppedAt!==void 0&&!e.finished&&e.retryOf===void 0&&e.retrySuccessId===void 0&&!e.waitTill},async deleteExecution(e){this.isDataLoading=!0;try{await this.workflowsStore.deleteExecutions({ids:[e.id]}),await this.refreshData(),this.allVisibleSelected&&(this.selectedItems={},this.selectAllVisibleExecutions())}catch(t){this.showError(t,this.i18n.baseText("executionsList.showError.handleDeleteSelected.title"))}this.isDataLoading=!0},isWaitTillIndefinite(e){return e.waitTill?new Date(e.waitTill).toISOString()===X:!1},isRunning(e){return this.getStatus(e)==="running"},selectAllVisibleExecutions(){this.combinedExecutions.forEach(e=>{this.selectedItems={...this.selectedItems,[e.id]:!0}})},adjustSelectionAfterMoreItemsLoaded(){this.allExistingSelected&&(this.allVisibleSelected=!0,this.selectAllVisibleExecutions())},async startAutoRefreshInterval(){this.autoRefresh&&(await this.loadAutoRefresh(),this.autoRefreshTimeout=setTimeout(()=>{this.startAutoRefreshInterval()},4*1e3))},stopAutoRefreshInterval(){this.autoRefreshTimeout&&(clearTimeout(this.autoRefreshTimeout),this.autoRefreshTimeout=void 0)},onDocumentVisibilityChange(){document.visibilityState==="hidden"?this.stopAutoRefreshInterval():this.startAutoRefreshInterval()}}}),oe="_execListWrapper_1h4m6_5",le="_execList_1h4m6_5",ae="_execListHeader_1h4m6_26",re="_execListHeaderControls_1h4m6_33",ue="_selectionOptions_1h4m6_39",de="_statusColumn_1h4m6_57",ce="_spinner_1h4m6_62",he="_status_1h4m6_57",fe="_crashed_1h4m6_72",me="_failed_1h4m6_72",we="_waiting_1h4m6_75",pe="_success_1h4m6_78",ge="_running_1h4m6_81",ye="_unknown_1h4m6_84",ke="_buttonCell_1h4m6_88",Ee="_execRow_1h4m6_95",be="_execTable_1h4m6_99",xe="_loadMore_1h4m6_182",Te="_loadedAll_1h4m6_188",Le="_actions_1h4m6_195",Se="_deleteOnly_1h4m6_195",Ce="_retryAction_1h4m6_199",_e="_deleteAction_1h4m6_199",Ie="_selectAll_1h4m6_203",ve="_filterLoader_1h4m6_209",Ae="_tableLoader_1h4m6_214",Re="_link_1h4m6_220",$e={execListWrapper:oe,execList:le,execListHeader:ae,execListHeaderControls:re,selectionOptions:ue,statusColumn:de,spinner:ce,status:he,crashed:fe,failed:me,waiting:we,success:pe,new:"_new_1h4m6_81",running:ge,unknown:ye,buttonCell:ke,execRow:Ee,execTable:be,loadMore:xe,loadedAll:Te,actions:Le,deleteOnly:Se,retryAction:Ce,deleteAction:_e,selectAll:Ie,filterLoader:ve,tableLoader:Ae,link:Re},Ve={key:1},Me=n("th",null,null,-1),De=n("th",null,null,-1),We=n("th",null,null,-1),Oe=n("th",null,null,-1),Fe=["onClick"],Pe={key:0},Ne={key:1},Ue={key:0},He={key:1},je=n("br",null,null,-1),Be={key:2},qe=n("br",null,null,-1),ze={class:"retry-button"};function Qe(e,t,s,r,C,k){const T=f("n8n-heading"),p=f("n8n-loading"),E=f("el-checkbox"),u=f("execution-filter"),g=f("font-awesome-icon"),b=f("execution-time"),L=f("i18n-t"),y=f("n8n-tooltip"),x=f("n8n-button"),V=f("n8n-icon-button"),_=f("el-dropdown-item"),M=f("el-dropdown-menu"),D=f("el-dropdown");return o(),d("div",{class:l(e.$style.execListWrapper)},[n("div",{class:l(e.$style.execList)},[n("div",{class:l(e.$style.execListHeader)},[c(T,{tag:"h1",size:"2xlarge"},{default:h(()=>[S(a(this.pageTitle),1)]),_:1}),n("div",{class:l(e.$style.execListHeaderControls)},[e.isMounting?(o(),m(p,{key:0,class:l(e.$style.filterLoader),variant:"custom"},null,8,["class"])):(o(),m(E,{key:1,class:"mr-xl",modelValue:e.autoRefresh,"onUpdate:modelValue":[t[0]||(t[0]=i=>e.autoRefresh=i),e.handleAutoRefreshToggle],"data-test-id":"execution-auto-refresh-checkbox"},{default:h(()=>[S(a(e.i18n.baseText("executionsList.autoRefresh")),1)]),_:1},8,["modelValue","onUpdate:modelValue"])),ee(c(u,{workflows:e.workflows,onFilterChanged:e.onFilterChanged},null,8,["workflows","onFilterChanged"]),[[te,!e.isMounting]])],2)],2),e.allVisibleSelected&&e.finishedExecutionsCount>0?(o(),m(E,{key:0,class:l(e.$style.selectAll),label:e.i18n.baseText("executionsList.selectAll",{adjustToNumber:e.finishedExecutionsCount,interpolate:{executionNum:e.finishedExecutionsCount}}),modelValue:e.allExistingSelected,"onUpdate:modelValue":e.handleCheckAllExistingChange,"data-test-id":"select-all-executions-checkbox"},null,8,["class","label","modelValue","onUpdate:modelValue"])):w("",!0),e.isMounting?(o(),d("div",Ve,[c(p,{class:l(e.$style.tableLoader),variant:"custom"},null,8,["class"]),c(p,{class:l(e.$style.tableLoader),variant:"custom"},null,8,["class"]),c(p,{class:l(e.$style.tableLoader),variant:"custom"},null,8,["class"])])):(o(),d("table",{key:2,class:l(e.$style.execTable)},[n("thead",null,[n("tr",null,[n("th",null,[c(E,{modelValue:e.allVisibleSelected,"onUpdate:modelValue":e.handleCheckAllVisibleChange,disabled:e.finishedExecutionsCount<1,label:"","data-test-id":"select-visible-executions-checkbox"},null,8,["modelValue","onUpdate:modelValue","disabled"])]),n("th",null,a(e.i18n.baseText("executionsList.name")),1),n("th",null,a(e.i18n.baseText("executionsList.startedAt")),1),n("th",null,a(e.i18n.baseText("executionsList.status")),1),n("th",null,a(e.i18n.baseText("executionsList.id")),1),Me,De,We,Oe])]),n("tbody",null,[(o(!0),d(se,null,ie(e.combinedExecutions,i=>(o(),d("tr",{key:i.id,class:l(e.getRowClass(i))},[n("td",null,[i.stoppedAt!==void 0&&i.id?(o(),m(E,{key:0,modelValue:e.selectedItems[i.id]||e.allExistingSelected,"onUpdate:modelValue":I=>e.handleCheckboxChanged(i.id),label:"","data-test-id":"select-execution-checkbox"},null,8,["modelValue","onUpdate:modelValue"])):w("",!0)]),n("td",null,[n("span",{onClick:v(I=>e.displayExecution(i),["stop"])},[n("a",{href:"#",class:l(e.$style.link)},a(i.workflowName||e.i18n.baseText("executionsList.unsavedWorkflow")),3)],8,Fe)]),n("td",null,[n("span",null,a(e.formatDate(i.startedAt)),1)]),n("td",null,[n("div",{class:l(e.$style.statusColumn)},[e.isRunning(i)?(o(),d("span",{key:0,class:l(e.$style.spinner)},[c(g,{icon:"spinner",spin:""})],2)):w("",!0),e.isWaitTillIndefinite(i)?(o(),m(y,{key:2,placement:"top"},{content:h(()=>[n("span",null,a(e.getStatusTooltipText(i)),1)]),default:h(()=>[n("span",{class:l(e.$style.status)},a(e.getStatusText(i)),3)]),_:2},1024)):(o(),m(L,{key:1,tag:"span",keypath:e.getStatusTextTranslationPath(i)},{status:h(()=>[n("span",{class:l(e.$style.status)},a(e.getStatusText(i)),3)]),time:h(()=>[i.waitTill?(o(),d("span",Pe,a(e.formatDate(i.waitTill)),1)):i.stoppedAt!==null&&i.stoppedAt!==void 0?(o(),d("span",Ne,a(e.displayTimer(new Date(i.stoppedAt).getTime()-new Date(i.startedAt).getTime(),!0)),1)):(o(),m(b,{key:2,"start-time":i.startedAt},null,8,["start-time"]))]),_:2},1032,["keypath"]))],2)]),n("td",null,[i.id?(o(),d("span",Ue,"#"+a(i.id),1)):w("",!0),i.retryOf?(o(),d("span",He,[je,n("small",null," ("+a(e.i18n.baseText("executionsList.retryOf"))+" #"+a(i.retryOf)+") ",1)])):i.retrySuccessId?(o(),d("span",Be,[qe,n("small",null," ("+a(e.i18n.baseText("executionsList.successRetry"))+" #"+a(i.retrySuccessId)+") ",1)])):w("",!0)]),n("td",null,[i.mode==="manual"?(o(),m(y,{key:0,placement:"top"},{content:h(()=>[n("span",null,a(e.i18n.baseText("executionsList.test")),1)]),default:h(()=>[c(g,{icon:"flask"})]),_:1})):w("",!0)]),n("td",null,[n("div",{class:l(e.$style.buttonCell)},[i.stoppedAt!==void 0&&i.id?(o(),m(x,{key:0,size:"small",outline:"",label:e.i18n.baseText("executionsList.view"),onClick:v(I=>e.displayExecution(i),["stop"])},null,8,["label","onClick"])):w("",!0)],2)]),n("td",null,[n("div",{class:l(e.$style.buttonCell)},[i.stoppedAt===void 0||i.waitTill?(o(),m(x,{key:0,size:"small",outline:"",label:e.i18n.baseText("executionsList.stop"),onClick:v(I=>e.stopExecution(i.id),["stop"]),loading:e.stoppingExecutions.includes(i.id)},null,8,["label","onClick","loading"])):w("",!0)],2)]),n("td",null,[e.isRunning(i)?w("",!0):(o(),m(D,{key:0,trigger:"click",onCommand:e.handleActionItemClick},{dropdown:h(()=>[c(M,{class:l({[e.$style.actions]:!0,[e.$style.deleteOnly]:!e.isExecutionRetriable(i)})},{default:h(()=>[e.isExecutionRetriable(i)?(o(),m(_,{key:0,class:l(e.$style.retryAction),command:{command:"currentlySaved",execution:i}},{default:h(()=>[S(a(e.i18n.baseText("executionsList.retryWithCurrentlySavedWorkflow")),1)]),_:2},1032,["class","command"])):w("",!0),e.isExecutionRetriable(i)?(o(),m(_,{key:1,class:l(e.$style.retryAction),command:{command:"original",execution:i}},{default:h(()=>[S(a(e.i18n.baseText("executionsList.retryWithOriginalWorkflow")),1)]),_:2},1032,["class","command"])):w("",!0),c(_,{class:l(e.$style.deleteAction),command:{command:"delete",execution:i}},{default:h(()=>[S(a(e.i18n.baseText("generic.delete")),1)]),_:2},1032,["class","command"])]),_:2},1032,["class"])]),default:h(()=>[n("span",ze,[c(V,{text:"",type:"tertiary",size:"mini",title:e.i18n.baseText("executionsList.retryExecution"),icon:"ellipsis-v"},null,8,["title"])])]),_:2},1032,["onCommand"]))])],2))),128))])],2)),!e.combinedExecutions.length&&!e.isMounting&&!e.isDataLoading?(o(),d("div",{key:3,class:l(e.$style.loadedAll),"data-test-id":"execution-list-empty"},a(e.i18n.baseText("executionsList.empty")),3)):e.finishedExecutionsCount>e.finishedExecutions.length||e.finishedExecutionsCountEstimated?(o(),d("div",{key:4,class:l(e.$style.loadMore)},[c(x,{icon:"sync",title:e.i18n.baseText("executionsList.loadMore"),label:e.i18n.baseText("executionsList.loadMore"),onClick:t[1]||(t[1]=i=>e.loadMore()),loading:e.isDataLoading,"data-test-id":"load-more-button"},null,8,["title","label","loading"])],2)):!e.isMounting&&!e.isDataLoading?(o(),d("div",{key:5,class:l(e.$style.loadedAll),"data-test-id":"execution-all-loaded"},a(e.i18n.baseText("executionsList.loadedAll")),3)):w("",!0)],2),e.numSelected>0?(o(),d("div",{key:0,class:l(e.$style.selectionOptions),"data-test-id":"selected-executions-info"},[n("span",null,a(e.i18n.baseText("executionsList.selected",{adjustToNumber:e.numSelected,interpolate:{numSelected:e.numSelected}})),1),c(x,{label:e.i18n.baseText("generic.delete"),type:"tertiary",onClick:e.handleDeleteSelected,"data-test-id":"delete-selected-button"},null,8,["label","onClick"]),c(x,{label:e.i18n.baseText("executionsList.clearSelection"),type:"tertiary",onClick:e.handleClearSelection,"data-test-id":"clear-selection-button"},null,8,["label","onClick"])],2)):w("",!0)],2)}const Ge={$style:$e},Xe=R(ne,[["render",Qe],["__cssModules",Ge]]),Je=$({name:"ExecutionsView",components:{ExecutionsList:Xe}});function Ke(e,t,s,r,C,k){const T=f("ExecutionsList");return o(),m(T)}const Rt=R(Je,[["render",Ke]]);export{Rt as default};
|
|
2
|
+
//# sourceMappingURL=ExecutionsView-vfalxf-N.js.map
|