n8n-editor-ui 1.47.1 → 1.47.2
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 +76 -76
- package/dist/assets/{AuthView-CMxdNKZJ.js → AuthView-B_jZMnGj.js} +2 -2
- package/dist/assets/{AuthView-CMxdNKZJ.js.map → AuthView-B_jZMnGj.js.map} +1 -1
- package/dist/assets/{CanvasControls-3FMjwMqA.js → CanvasControls-ns1B0A0j.js} +2 -2
- package/dist/assets/{CanvasControls-3FMjwMqA.js.map → CanvasControls-ns1B0A0j.js.map} +1 -1
- package/dist/assets/{ChangePasswordView-_NkkcUVb.js → ChangePasswordView-BDsuHv0B.js} +2 -2
- package/dist/assets/{ChangePasswordView-_NkkcUVb.js.map → ChangePasswordView-BDsuHv0B.js.map} +1 -1
- package/dist/assets/{CollectionParameter-BXMOfisf.js → CollectionParameter-Br-xtutZ.js} +2 -2
- package/dist/assets/CollectionParameter-Br-xtutZ.js.map +1 -0
- package/dist/assets/{CredentialsView-B2UF3tK_.js → CredentialsView-DnJ_jhDo.js} +2 -2
- package/dist/assets/{CredentialsView-B2UF3tK_.js.map → CredentialsView-DnJ_jhDo.js.map} +1 -1
- package/dist/assets/{ErrorView-B_lpOlen.js → ErrorView-BfV5e5ko.js} +2 -2
- package/dist/assets/{ErrorView-B_lpOlen.js.map → ErrorView-BfV5e5ko.js.map} +1 -1
- package/dist/assets/{ExecutionsFilter-dNFZor7l.js → ExecutionsFilter-0XcXH83H.js} +2 -2
- package/dist/assets/{ExecutionsFilter-dNFZor7l.js.map → ExecutionsFilter-0XcXH83H.js.map} +1 -1
- package/dist/assets/{ExecutionsView-BYe-KERG.js → ExecutionsView-aFiZuLVt.js} +2 -2
- package/dist/assets/{ExecutionsView-BYe-KERG.js.map → ExecutionsView-aFiZuLVt.js.map} +1 -1
- package/dist/assets/{ForgotMyPasswordView-D97J06wc.js → ForgotMyPasswordView-64X9tXq4.js} +2 -2
- package/dist/assets/{ForgotMyPasswordView-D97J06wc.js.map → ForgotMyPasswordView-64X9tXq4.js.map} +1 -1
- package/dist/assets/{MainHeader-CT4nF2mY.js → MainHeader-Ch0Iz_7s.js} +2 -2
- package/dist/assets/{MainHeader-CT4nF2mY.js.map → MainHeader-Ch0Iz_7s.js.map} +1 -1
- package/dist/assets/{MainSidebar-CTg5wPzP.js → MainSidebar-3ee-tTgz.js} +2 -2
- package/dist/assets/{MainSidebar-CTg5wPzP.js.map → MainSidebar-3ee-tTgz.js.map} +1 -1
- package/dist/assets/{NodeCreation-BF_L2-99.js → NodeCreation-PrQGENrl.js} +3 -3
- package/dist/assets/{NodeCreation-BF_L2-99.js.map → NodeCreation-PrQGENrl.js.map} +1 -1
- package/dist/assets/{NodeCreator-B_yCtSu6.js → NodeCreator-DlK1669m.js} +2 -2
- package/dist/assets/{NodeCreator-B_yCtSu6.js.map → NodeCreator-DlK1669m.js.map} +1 -1
- package/dist/assets/{NodeDetailsView-ggolOsHM.js → NodeDetailsView-DcV7LI-g.js} +4 -4
- package/dist/assets/{NodeDetailsView-ggolOsHM.js.map → NodeDetailsView-DcV7LI-g.js.map} +1 -1
- package/dist/assets/{NodeView-B2MlTl6g.js → NodeView-D_kbUfVN.js} +3 -3
- package/dist/assets/{NodeView-B2MlTl6g.js.map → NodeView-D_kbUfVN.js.map} +1 -1
- package/dist/assets/{NodeView.v2-D_CKj9CS.js → NodeView.v2-D_Wbnl01.js} +3 -3
- package/dist/assets/{NodeView.v2-D_CKj9CS.js.map → NodeView.v2-D_Wbnl01.js.map} +1 -1
- package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-DdHOM703.js → ProjectCardBadge.vue_vue_type_script_setup_true_lang-6oVL0vKx.js} +2 -2
- package/dist/assets/{ProjectCardBadge.vue_vue_type_script_setup_true_lang-DdHOM703.js.map → ProjectCardBadge.vue_vue_type_script_setup_true_lang-6oVL0vKx.js.map} +1 -1
- package/dist/assets/{ProjectSettings-DpJesEZX.js → ProjectSettings-CfcplqBX.js} +2 -2
- package/dist/assets/{ProjectSettings-DpJesEZX.js.map → ProjectSettings-CfcplqBX.js.map} +1 -1
- package/dist/assets/{ProjectTabs-D7nNxtFO.js → ProjectTabs-5ZO9YR8J.js} +2 -2
- package/dist/assets/{ProjectTabs-D7nNxtFO.js.map → ProjectTabs-5ZO9YR8J.js.map} +1 -1
- package/dist/assets/{PushConnectionTracker-YJuy57g2.js → PushConnectionTracker-Bp-RjnYr.js} +2 -2
- package/dist/assets/{PushConnectionTracker-YJuy57g2.js.map → PushConnectionTracker-Bp-RjnYr.js.map} +1 -1
- package/dist/assets/{ResourcesListLayout-mZ4ijKRB.js → ResourcesListLayout-B4W1PSHT.js} +2 -2
- package/dist/assets/{ResourcesListLayout-mZ4ijKRB.js.map → ResourcesListLayout-B4W1PSHT.js.map} +1 -1
- package/dist/assets/{RunDataAi-D0m0Vg_p.js → RunDataAi-C3XiqNZa.js} +2 -2
- package/dist/assets/{RunDataAi-D0m0Vg_p.js.map → RunDataAi-C3XiqNZa.js.map} +1 -1
- package/dist/assets/{RunDataJson-DkHNIqVj.js → RunDataJson-CMcOD-78.js} +3 -3
- package/dist/assets/{RunDataJson-DkHNIqVj.js.map → RunDataJson-CMcOD-78.js.map} +1 -1
- package/dist/assets/{RunDataJsonActions-Cgxcpw8t.js → RunDataJsonActions-BQBpmtOi.js} +2 -2
- package/dist/assets/{RunDataJsonActions-Cgxcpw8t.js.map → RunDataJsonActions-BQBpmtOi.js.map} +1 -1
- package/dist/assets/{RunDataSchema-C6aZoC0a.js → RunDataSchema-CF4YH-8y.js} +2 -2
- package/dist/assets/{RunDataSchema-C6aZoC0a.js.map → RunDataSchema-CF4YH-8y.js.map} +1 -1
- package/dist/assets/{RunDataSearch-D2CDg21N.js → RunDataSearch-DwB8g_cE.js} +2 -2
- package/dist/assets/{RunDataSearch-D2CDg21N.js.map → RunDataSearch-DwB8g_cE.js.map} +1 -1
- package/dist/assets/{RunDataTable-D597NRFD.js → RunDataTable-BVAuNDP9.js} +2 -2
- package/dist/assets/{RunDataTable-D597NRFD.js.map → RunDataTable-BVAuNDP9.js.map} +1 -1
- package/dist/assets/{SamlOnboarding-Me669myi.js → SamlOnboarding-Csd8l-7T.js} +2 -2
- package/dist/assets/{SamlOnboarding-Me669myi.js.map → SamlOnboarding-Csd8l-7T.js.map} +1 -1
- package/dist/assets/{SettingsApiView-DV8pIHDw.js → SettingsApiView-DnvdV7dx.js} +2 -2
- package/dist/assets/{SettingsApiView-DV8pIHDw.js.map → SettingsApiView-DnvdV7dx.js.map} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-D_gtSdk3.js → SettingsCommunityNodesView-C11a_Ybs.js} +2 -2
- package/dist/assets/{SettingsCommunityNodesView-D_gtSdk3.js.map → SettingsCommunityNodesView-C11a_Ybs.js.map} +1 -1
- package/dist/assets/{SettingsExternalSecrets-xprYKjAW.js → SettingsExternalSecrets-IIReUcRG.js} +2 -2
- package/dist/assets/{SettingsExternalSecrets-xprYKjAW.js.map → SettingsExternalSecrets-IIReUcRG.js.map} +1 -1
- package/dist/assets/{SettingsFakeDoorView-CKaSOYh5.js → SettingsFakeDoorView-BOUfBJS8.js} +2 -2
- package/dist/assets/{SettingsFakeDoorView-CKaSOYh5.js.map → SettingsFakeDoorView-BOUfBJS8.js.map} +1 -1
- package/dist/assets/{SettingsLdapView-BBCv2tmk.js → SettingsLdapView-BaSjQ4cy.js} +2 -2
- package/dist/assets/{SettingsLdapView-BBCv2tmk.js.map → SettingsLdapView-BaSjQ4cy.js.map} +1 -1
- package/dist/assets/{SettingsLogStreamingView-HRIp8kyL.js → SettingsLogStreamingView-COGhA1hN.js} +2 -2
- package/dist/assets/{SettingsLogStreamingView-HRIp8kyL.js.map → SettingsLogStreamingView-COGhA1hN.js.map} +1 -1
- package/dist/assets/{SettingsPersonalView-CsUb3SvK.js → SettingsPersonalView-BJGgPTwa.js} +2 -2
- package/dist/assets/{SettingsPersonalView-CsUb3SvK.js.map → SettingsPersonalView-BJGgPTwa.js.map} +1 -1
- package/dist/assets/{SettingsSourceControl-BkPpVGsk.js → SettingsSourceControl-DkdSLuvp.js} +2 -2
- package/dist/assets/{SettingsSourceControl-BkPpVGsk.js.map → SettingsSourceControl-DkdSLuvp.js.map} +1 -1
- package/dist/assets/{SettingsSso-BueUV3RH.js → SettingsSso-DA9AOKH5.js} +2 -2
- package/dist/assets/{SettingsSso-BueUV3RH.js.map → SettingsSso-DA9AOKH5.js.map} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-DzDC9m54.js → SettingsUsageAndPlan-BVPtlthH.js} +2 -2
- package/dist/assets/{SettingsUsageAndPlan-DzDC9m54.js.map → SettingsUsageAndPlan-BVPtlthH.js.map} +1 -1
- package/dist/assets/{SettingsUsersView-CTd5MQLw.js → SettingsUsersView-BuKt4ZDO.js} +2 -2
- package/dist/assets/{SettingsUsersView-CTd5MQLw.js.map → SettingsUsersView-BuKt4ZDO.js.map} +1 -1
- package/dist/assets/{SettingsView-DMxqsNh0.js → SettingsView-DJ78VuiY.js} +2 -2
- package/dist/assets/{SettingsView-DMxqsNh0.js.map → SettingsView-DJ78VuiY.js.map} +1 -1
- package/dist/assets/{SetupView-tkyttChl.js → SetupView-C70Dkfed.js} +2 -2
- package/dist/assets/{SetupView-tkyttChl.js.map → SetupView-C70Dkfed.js.map} +1 -1
- package/dist/assets/{SetupWorkflowCredentialsButton-B3HZvKQp.js → SetupWorkflowCredentialsButton-CEQ1LrFl.js} +2 -2
- package/dist/assets/{SetupWorkflowCredentialsButton-B3HZvKQp.js.map → SetupWorkflowCredentialsButton-CEQ1LrFl.js.map} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-DL3b-TZS.js → SetupWorkflowFromTemplateView-BUzzXtBr.js} +2 -2
- package/dist/assets/{SetupWorkflowFromTemplateView-DL3b-TZS.js.map → SetupWorkflowFromTemplateView-BUzzXtBr.js.map} +1 -1
- package/dist/assets/{SigninView-BPLGsvzz.js → SigninView-B3CNL-yp.js} +2 -2
- package/dist/assets/{SigninView-BPLGsvzz.js.map → SigninView-B3CNL-yp.js.map} +1 -1
- package/dist/assets/{SignoutView-BySf9D7k.js → SignoutView-svcLavkC.js} +2 -2
- package/dist/assets/{SignoutView-BySf9D7k.js.map → SignoutView-svcLavkC.js.map} +1 -1
- package/dist/assets/{SignupView-EU3JWt4T.js → SignupView-DJWRTPKF.js} +2 -2
- package/dist/assets/{SignupView-EU3JWt4T.js.map → SignupView-DJWRTPKF.js.map} +1 -1
- package/dist/assets/{TemplateDetails-Cemx-ozB.js → TemplateDetails-BnbiWxo-.js} +2 -2
- package/dist/assets/{TemplateDetails-Cemx-ozB.js.map → TemplateDetails-BnbiWxo-.js.map} +1 -1
- package/dist/assets/{TemplateList-h3b91b7e.js → TemplateList-By-t2s0M.js} +2 -2
- package/dist/assets/{TemplateList-h3b91b7e.js.map → TemplateList-By-t2s0M.js.map} +1 -1
- package/dist/assets/{TemplatesCollectionView-aBX3f7Pp.js → TemplatesCollectionView-D2L1fmSc.js} +2 -2
- package/dist/assets/{TemplatesCollectionView-aBX3f7Pp.js.map → TemplatesCollectionView-D2L1fmSc.js.map} +1 -1
- package/dist/assets/{TemplatesSearchView-DyoC9WUR.js → TemplatesSearchView-Bmr6Nd6g.js} +2 -2
- package/dist/assets/{TemplatesSearchView-DyoC9WUR.js.map → TemplatesSearchView-Bmr6Nd6g.js.map} +1 -1
- package/dist/assets/{TemplatesView-GQmC_sY8.js → TemplatesView-BbunSn-s.js} +2 -2
- package/dist/assets/{TemplatesView-GQmC_sY8.js.map → TemplatesView-BbunSn-s.js.map} +1 -1
- package/dist/assets/{TemplatesWorkflowView-C-0pXdDh.js → TemplatesWorkflowView-XxBIlMWY.js} +2 -2
- package/dist/assets/{TemplatesWorkflowView-C-0pXdDh.js.map → TemplatesWorkflowView-XxBIlMWY.js.map} +1 -1
- package/dist/assets/{VariablesView-BO5fdkwt.js → VariablesView-ZY5xLmKI.js} +2 -2
- package/dist/assets/{VariablesView-BO5fdkwt.js.map → VariablesView-ZY5xLmKI.js.map} +1 -1
- package/dist/assets/{WorkerView-C3Rdbsfq.js → WorkerView-DV19-i1-.js} +2 -2
- package/dist/assets/{WorkerView-C3Rdbsfq.js.map → WorkerView-DV19-i1-.js.map} +1 -1
- package/dist/assets/{WorkflowActivator-DQXSsw0V.js → WorkflowActivator-BXWURYao.js} +2 -2
- package/dist/assets/{WorkflowActivator-DQXSsw0V.js.map → WorkflowActivator-BXWURYao.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsInfoAccordion-DJPF47om.js → WorkflowExecutionsInfoAccordion-aldNazgt.js} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-DJPF47om.js.map → WorkflowExecutionsInfoAccordion-aldNazgt.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-DoSsHWxH.js → WorkflowExecutionsLandingPage-CaAameTk.js} +2 -2
- package/dist/assets/{WorkflowExecutionsLandingPage-DoSsHWxH.js.map → WorkflowExecutionsLandingPage-CaAameTk.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsPreview-Dt23N5A4.js → WorkflowExecutionsPreview-Bb-wJtr-.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-Dt23N5A4.js.map → WorkflowExecutionsPreview-Bb-wJtr-.js.map} +1 -1
- package/dist/assets/{WorkflowExecutionsView-CpAIVxYQ.js → WorkflowExecutionsView-D7nlOP1-.js} +2 -2
- package/dist/assets/{WorkflowExecutionsView-CpAIVxYQ.js.map → WorkflowExecutionsView-D7nlOP1-.js.map} +1 -1
- package/dist/assets/{WorkflowHistory-D1-E_J_s.js → WorkflowHistory-C6zCGFoY.js} +2 -2
- package/dist/assets/{WorkflowHistory-D1-E_J_s.js.map → WorkflowHistory-C6zCGFoY.js.map} +1 -1
- package/dist/assets/{WorkflowOnboardingView-fzAZuVh5.js → WorkflowOnboardingView-Bu_Oqtr7.js} +2 -2
- package/dist/assets/{WorkflowOnboardingView-fzAZuVh5.js.map → WorkflowOnboardingView-Bu_Oqtr7.js.map} +1 -1
- package/dist/assets/{WorkflowPreview-BkL2jDRm.js → WorkflowPreview-CVwpKdpj.js} +2 -2
- package/dist/assets/{WorkflowPreview-BkL2jDRm.js.map → WorkflowPreview-CVwpKdpj.js.map} +1 -1
- package/dist/assets/{WorkflowsView-rbygROmM.js → WorkflowsView-DVeAZ2zW.js} +2 -2
- package/dist/assets/{WorkflowsView-rbygROmM.js.map → WorkflowsView-DVeAZ2zW.js.map} +1 -1
- package/dist/assets/{cloud-B90x0-JC.js → cloud-BRhZDk2r.js} +2 -2
- package/dist/assets/{cloud-B90x0-JC.js.map → cloud-BRhZDk2r.js.map} +1 -1
- package/dist/assets/{collaboration.store-ElxCV91F.js → collaboration.store-Ol7bcCFc.js} +2 -2
- package/dist/assets/{collaboration.store-ElxCV91F.js.map → collaboration.store-Ol7bcCFc.js.map} +1 -1
- package/dist/assets/{index-BE0Xl-jy.js → index-1OxaEeO3.js} +4 -4
- package/dist/assets/{index-BE0Xl-jy.js.map → index-1OxaEeO3.js.map} +1 -1
- package/dist/assets/{nodeCreator.store-Q1T99YCl.js → nodeCreator.store-FIsc3SCx.js} +2 -2
- package/dist/assets/{nodeCreator.store-Q1T99YCl.js.map → nodeCreator.store-FIsc3SCx.js.map} +1 -1
- package/dist/assets/{templateActions-B7R6qRak.js → templateActions-w_1vSarr.js} +2 -2
- package/dist/assets/{templateActions-B7R6qRak.js.map → templateActions-w_1vSarr.js.map} +1 -1
- package/dist/assets/{useExecutionDebugging-BJ0CgMh8.js → useExecutionDebugging-EHinBq_u.js} +2 -2
- package/dist/assets/{useExecutionDebugging-BJ0CgMh8.js.map → useExecutionDebugging-EHinBq_u.js.map} +1 -1
- package/dist/assets/{useExecutionHelpers-D3294Pbg.js → useExecutionHelpers-LeKoU_T-.js} +2 -2
- package/dist/assets/{useExecutionHelpers-D3294Pbg.js.map → useExecutionHelpers-LeKoU_T-.js.map} +1 -1
- package/dist/assets/{usePushConnection-CsYeEXN4.js → usePushConnection-PQgFeT_8.js} +2 -2
- package/dist/assets/{usePushConnection-CsYeEXN4.js.map → usePushConnection-PQgFeT_8.js.map} +1 -1
- package/dist/assets/{useUserHelpers-CzNhI0vP.js → useUserHelpers-DZtbUAMm.js} +2 -2
- package/dist/assets/{useUserHelpers-CzNhI0vP.js.map → useUserHelpers-DZtbUAMm.js.map} +1 -1
- package/dist/assets/{useWorkflowActivate-D8iK20ua.js → useWorkflowActivate-npf1npdP.js} +2 -2
- package/dist/assets/{useWorkflowActivate-D8iK20ua.js.map → useWorkflowActivate-npf1npdP.js.map} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-BXMOfisf.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{m as oe}from"./pinia-sugP77Im.js";import{P as se}from"./PushConnectionTracker-YJuy57g2.js";import{aK as re,u as X,x as Z,e as ee,l as ne,d8 as ae,b as ce}from"./index-BE0Xl-jy.js";import{a as J,W as T,u as ie}from"./usePushConnection-CsYeEXN4.js";import{G as I,r as v,ag as g,l,m as d,p as k,U as u,O as p,H as Y,I as c,R as F,M as L,S as b,T as s,F as E,a7 as N,u as f,e as q,b as le,y as de,aH as ue}from"./vendor-Dv5OeN6t.js";import{_ as S}from"./n8n-4UEsHtUL.js";import{C as H}from"./vue-chartjs-DGI3EW71.js";import{a as pe}from"./collaboration.store-ElxCV91F.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";function te(t){return t.reduce((a,r)=>a+r,0)/t.length}function me(t){return te(t).toFixed(2)}function R(t){return t/1024/1024/1024}const _e=I({__name:"WorkerAccordion.ee",props:{icon:{default:"tasks"},iconColor:{default:"black"},initialExpanded:{type:Boolean,default:!0}},setup(t){const r=v(t.initialExpanded);function i(){r.value=!r.value}return(o,m)=>{const e=g("n8n-icon"),h=g("n8n-text");return l(),d("div",{class:c(["accordion",o.$style.container])},[k("div",{class:c({[o.$style.header]:!0,[o.$style.expanded]:r.value}),onClick:i},[u(e,{icon:o.icon,color:o.iconColor,size:"small",class:"mr-2xs"},null,8,["icon","color"]),u(h,{class:c(o.$style.headerText),color:"text-base",size:"small",align:"left",bold:""},{default:p(()=>[Y(o.$slots,"title")]),_:3},8,["class"]),u(e,{icon:r.value?"chevron-up":"chevron-down",bold:""},null,8,["icon"])],2),r.value?(l(),d("div",{key:0,class:c({[o.$style.description]:!0,[o.$style.collapsed]:!r.value})},[Y(o.$slots,"content")],2)):F("",!0)],2)}}}),he="_container_odamb_1",ke="_header_odamb_5",ye="_headerText_odamb_11",fe="_expanded_odamb_15",ge="_description_odamb_19",$e={container:he,header:ke,headerText:ye,expanded:fe,description:ge},be={$style:$e},O=S(_e,[["__cssModules",be]]),we=["href"],ve=["href"],Me=I({__name:"WorkerJobAccordion.ee",props:{items:{}},setup(t){const a=t;function r(i){let o=Math.floor((new Date().getTime()-i.getTime())/1e3);const m=Math.floor(o/3600);o-=m*3600;const e=Math.floor(o/60);return o-=e*60,`${m}h ${e}m ${Math.floor(o)}s`}return(i,o)=>{const m=g("n8n-text");return l(),L(O,{icon:"tasks","icon-color":"black","initial-expanded":!0},{title:p(()=>[b(s(i.$locale.baseText("workerList.item.jobListTitle"))+" ("+s(i.items.length)+") ",1)]),content:p(()=>[a.items.length>0?(l(),d("div",{key:0,class:c(i.$style.accordionItems)},[(l(!0),d(E,null,N(a.items,e=>(l(),d("div",{key:e.executionId,class:c(i.$style.accordionItem)},[k("a",{href:"/workflow/"+e.workflowId+"/executions/"+e.executionId}," Execution "+s(e.executionId)+" - "+s(e.workflowName),9,we),u(m,{color:"text-base",size:"small",align:"left"},{default:p(()=>{var h;return[b(" | Started at: "+s((h=new Date(e.startedAt))==null?void 0:h.toLocaleTimeString())+" | Running for "+s(r(new Date(e.startedAt)))+" "+s(e.retryOf?`| Retry of: ${e.retryOf}`:"")+" | ",1)]}),_:2},1024),k("a",{target:"_blank",href:"/workflow/"+e.workflowId}," (Open workflow)",8,ve)],2))),128))],2)):(l(),d("div",{key:1,class:c(i.$style.accordionItems)},[k("span",{class:c(i.$style.empty)},s(i.$locale.baseText("workerList.item.jobList.empty")),3)],2))]),_:1})}}}),Ie="_accordionItems_kt5sk_1",Se="_accordionItem_kt5sk_1",Ce="_empty_kt5sk_14",Te={accordionItems:Ie,accordionItem:Se,empty:Ce},Le={$style:Te},xe=S(Me,[["__cssModules",Le]]),Ae=["onClick"],We=I({__name:"WorkerNetAccordion.ee",props:{items:{}},setup(t){const a=t,r=Z(),i=re(),{showMessage:o}=X();function m(e){try{i.copy(e),o({title:r.baseText("workerList.item.copyAddressToClipboard"),type:"success"})}catch{}}return(e,h)=>(l(),L(O,{icon:"tasks","icon-color":"black","initial-expanded":!1},{title:p(()=>[b(s(e.$locale.baseText("workerList.item.netListTitle"))+" ("+s(e.items.length)+") ",1)]),content:p(()=>[a.items.length>0?(l(),d("div",{key:0,class:c(e.$style.accordionItems)},[(l(!0),d(E,null,N(a.items,y=>(l(),d("div",{key:y.address,class:c(e.$style.accordionItem),onClick:n=>m(y.address)},[b(s(y.family)+": ",1),k("span",{class:c(e.$style.clickable)},s(y.address),3),b(" "+s(y.internal?"(internal)":""),1)],10,Ae))),128))],2)):F("",!0)]),_:1}))}}),Ue="_accordionItems_10xds_1",Re="_accordionItem_10xds_1",Be="_clickable_10xds_15",De={accordionItems:Ue,accordionItem:Re,clickable:Be},Pe={$style:De},He=S(We,[["__cssModules",Pe]]),Je=I({__name:"WorkerChartsAccordion.ee",props:{workerId:{}},setup(t){var j,z,G;const a=t,r=(w,x,C=0)=>({datasets:[{label:w,backgroundColor:x,data:C?Array(Math.min(T,C)).fill(0):[]}],labels:Array(Math.min(T,C)).fill("")}),i=J(),o=v(void 0),m=v(void 0),e=v(void 0),h=()=>({responsive:!0,maintainAspectRatio:!0,scales:{y:{type:"linear",display:!0,position:"left",min:0,suggestedMax:5}}}),y=h(),n=h();(j=n.scales)!=null&&j.y&&(n.scales.y.suggestedMax=100);const _=R((z=i.workers[a.workerId])==null?void 0:z.totalMem)??1,$=h();(G=$.scales)!=null&&G.y&&($.scales.y.suggestedMax=_);const M=v(r("Job Count","rgb(255, 111, 92)",T)),W=v(r("Processor Usage","rgb(19, 205, 103)",T)),V=v(r("Memory Usage","rgb(244, 216, 174)",T));return i.$onAction(({name:w,store:x})=>{var C,K;if(w==="updateWorkerStatus"){const B=T-(((C=x.workersHistory[a.workerId])==null?void 0:C.length)??0),A=r("Job Count","rgb(255, 111, 92)",B),D=r("Processor Usage","rgb(19, 205, 103)",B),P=r("Memory Usage","rgb(244, 216, 174)",B);(K=x.workersHistory[a.workerId])==null||K.forEach(U=>{var Q;A.datasets[0].data.push(U.data.runningJobsSummary.length),(Q=A.labels)==null||Q.push(new Date(U.timestamp).toLocaleTimeString()),D.datasets[0].data.push(te(U.data.loadAvg)),D.labels=A.labels,P.datasets[0].data.push(_-R(U.data.freeMem)),P.labels=A.labels}),M.value=A,W.value=D,V.value=P}}),(w,x)=>(l(),L(O,{icon:"tasks","icon-color":"black","initial-expanded":!1},{title:p(()=>[b(s(w.$locale.baseText("workerList.item.chartsTitle")),1)]),content:p(()=>[k("div",{class:c(w.$style.charts)},[u(f(H),{ref_key:"chartRefJobs",ref:o,type:"line",data:M.value,options:f(y),class:c(w.$style.chart)},null,8,["data","options","class"]),u(f(H),{ref_key:"chartRefCPU",ref:m,type:"line",data:W.value,options:f(n),class:c(w.$style.chart)},null,8,["data","options","class"]),u(f(H),{ref_key:"chartRefMemory",ref:e,type:"line",data:V.value,options:f($),class:c(w.$style.chart)},null,8,["data","options","class"])],2)]),_:1}))}}),Fe="_accordionItems_2yo1p_1",Ee="_accordionItem_2yo1p_1",Ne="_charts_2yo1p_14",Oe="_chart_2yo1p_14",Ve={accordionItems:Fe,accordionItem:Ee,charts:Ne,chart:Oe},je={$style:Ve},ze=S(Je,[["__cssModules",je]]),Ge=k("br",null,null,-1),Ke=I({__name:"WorkerCard.ee",props:{workerId:{}},setup(t){let a;const r=J(),i=t,o=v("0"),m=v(!1),e=q(()=>r.getWorkerStatus(i.workerId)),h=q(()=>{var n;return((n=e.value)==null?void 0:n.interfaces.toSorted((_,$)=>_.family.localeCompare($.family)))??[]});function y(n){const _=Math.floor(n/86400);n-=_*3600*24;const $=Math.floor(n/3600);n-=$*3600;const M=Math.floor(n/60);return n-=M*60,`${_}d ${$}h ${M}m ${Math.floor(n)}s`}return le(()=>{a=setInterval(()=>{const n=r.getWorkerLastUpdated(i.workerId);if(!n)return;const _=Math.ceil((Date.now()-n)/1e3);m.value=_>10,o.value=_.toFixed(0)},500)}),de(()=>{clearInterval(a)}),(n,_)=>{const $=g("n8n-heading"),M=g("n8n-text"),W=g("n8n-card");return e.value?(l(),L(W,{key:0,class:c(n.$style.cardLink)},{header:p(()=>[u($,{tag:"h2",bold:"",class:c(m.value?[n.$style.cardHeading,n.$style.stale]:[n.$style.cardHeading]),"data-test-id":"worker-card-name"},{default:p(()=>[b(" Name: "+s(e.value.workerId)+" ("+s(e.value.hostname)+") ",1),Ge,b(" Average Load: "+s(f(me)(e.value.loadAvg??[0]))+" | Free Memory: "+s(f(R)(e.value.freeMem).toFixed(2))+"GB / "+s(f(R)(e.value.totalMem).toFixed(2))+"GB "+s(m.value?" (stale)":""),1)]),_:1},8,["class"])]),append:p(()=>[k("div",{ref:"cardActions",class:c(n.$style.cardActions)},null,2)]),default:p(()=>[k("div",{class:c(n.$style.cardDescription)},[u(M,{color:"text-light",size:"small",class:c(n.$style.container)},{default:p(()=>[k("span",null,s(n.$locale.baseText("workerList.item.lastUpdated"))+" "+s(o.value)+"s ago | n8n-Version: "+s(e.value.version)+" | Architecture: "+s(e.value.arch)+" ( "+s(e.value.platform)+") | Uptime: "+s(y(e.value.uptime)),1),u(xe,{items:e.value.runningJobsSummary},null,8,["items"]),u(He,{items:h.value},null,8,["items"]),u(ze,{"worker-id":e.value.workerId},null,8,["worker-id"])]),_:1},8,["class"])],2)]),_:1},8,["class"])):F("",!0)}}}),Qe="_container_s5el6_1",Ye="_cardLink_s5el6_5",qe="_cardHeading_s5el6_15",Xe="_stale_s5el6_21",Ze="_cardDescription_s5el6_25",et="_cardActions_s5el6_32",tt={container:Qe,cardLink:Ye,cardHeading:qe,stale:Xe,cardDescription:Ze,cardActions:et},ot={$style:tt},st=S(Ke,[["__cssModules",ot]]),rt=I({name:"WorkerList",components:{PushConnectionTracker:se,WorkerCard:st},props:{autoRefreshEnabled:{type:Boolean,default:!0}},setup(){const t=ue(),a=Z(),r=ie({router:t});return{i18n:a,pushConnection:r,...X()}},computed:{...oe(ne,ee,pe,J),combinedWorkers(){const t=[];for(const a in this.orchestrationManagerStore.workers)t.push(this.orchestrationManagerStore.workers[a]);return t},initialStatusReceived(){return this.orchestrationManagerStore.initialStatusReceived},workerIds(){return Object.keys(this.orchestrationManagerStore.workers)},pageTitle(){return this.i18n.baseText("workerList.pageTitle")}},mounted(){ae(`n8n - ${this.pageTitle}`),this.$telemetry.track("User viewed worker view",{instance_id:this.rootStore.instanceId})},beforeMount(){window.Cypress===void 0&&(this.pushConnection.initialize(),this.pushStore.pushConnect(),this.orchestrationManagerStore.startWorkerStatusPolling())},beforeUnmount(){window.Cypress===void 0&&(this.orchestrationManagerStore.stopWorkerStatusPolling(),this.pushStore.pushDisconnect(),this.pushConnection.terminate())},methods:{averageLoadAvg(t){return(t.reduce((a,r)=>a+r,0)/t.length).toFixed(2)},getStatus(t){return t.runningJobsSummary.length>0?"running":"success"},getRowClass(t){return[this.$style.execRow,this.$style[this.getStatus(t)]].join(" ")}}}),nt="_workerListHeader_12j1s_1",at="_card_12j1s_8",ct="_tableLoader_12j1s_12",it={workerListHeader:nt,card:at,tableLoader:ct},lt={key:0},dt={key:1},ut={key:0},pt={key:1};function mt(t,a,r,i,o,m){const e=g("PushConnectionTracker"),h=g("n8n-heading"),y=g("n8n-spinner"),n=g("WorkerCard");return l(),d("div",null,[u(e,{class:"actions"}),k("div",{class:c(t.$style.workerListHeader)},[u(h,{tag:"h1",size:"2xlarge"},{default:p(()=>[b(s(t.pageTitle),1)]),_:1})],2),t.initialStatusReceived?(l(),d("div",dt,[t.workerIds.length===0?(l(),d("div",ut,s(t.$locale.baseText("workerList.empty")),1)):(l(),d("div",pt,[(l(!0),d(E,null,N(t.workerIds,_=>(l(),d("div",{key:_,class:c(t.$style.card)},[u(n,{"worker-id":_,"data-test-id":"worker-card"},null,8,["worker-id"])],2))),128))]))])):(l(),d("div",lt,[u(y)]))])}const _t={$style:it},ht=S(rt,[["render",mt],["__cssModules",_t]]),kt=["href"],yt=I({__name:"WorkerView",setup(t){const a=ce(),r=ee(),i=()=>{r.goToUpgrade("worker-view","upgrade-worker-view")};return(o,m)=>{const e=g("n8n-action-box");return f(a).isQueueModeEnabled&&f(a).isWorkerViewAvailable?(l(),L(ht,{key:0,"data-test-id":"worker-view-licensed"})):(l(),L(e,{key:1,"data-test-id":"worker-view-unlicensed",class:c(o.$style.actionBox),description:o.$locale.baseText("workerList.actionBox.description"),"button-text":o.$locale.baseText("workerList.actionBox.buttonText"),"onClick:button":i},{heading:p(()=>[k("span",null,s(o.$locale.baseText("workerList.actionBox.title")),1)]),description:p(()=>[b(s(o.$locale.baseText("workerList.actionBox.description"))+" ",1),k("a",{href:o.$locale.baseText("workerList.docs.url"),target:"_blank"},s(o.$locale.baseText("workerList.actionBox.description.link")),9,kt)]),_:1},8,["class","description","button-text"]))}}}),ft="_actionBox_13ul9_1",gt={actionBox:ft},$t={$style:gt},eo=S(yt,[["__cssModules",$t]]);export{eo as default};
|
|
2
|
-
//# sourceMappingURL=WorkerView-
|
|
1
|
+
import{m as oe}from"./pinia-sugP77Im.js";import{P as se}from"./PushConnectionTracker-Bp-RjnYr.js";import{aK as re,u as X,x as Z,e as ee,l as ne,d8 as ae,b as ce}from"./index-1OxaEeO3.js";import{a as J,W as T,u as ie}from"./usePushConnection-PQgFeT_8.js";import{G as I,r as v,ag as g,l,m as d,p as k,U as u,O as p,H as Y,I as c,R as F,M as L,S as b,T as s,F as E,a7 as N,u as f,e as q,b as le,y as de,aH as ue}from"./vendor-Dv5OeN6t.js";import{_ as S}from"./n8n-4UEsHtUL.js";import{C as H}from"./vue-chartjs-DGI3EW71.js";import{a as pe}from"./collaboration.store-Ol7bcCFc.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";function te(t){return t.reduce((a,r)=>a+r,0)/t.length}function me(t){return te(t).toFixed(2)}function R(t){return t/1024/1024/1024}const _e=I({__name:"WorkerAccordion.ee",props:{icon:{default:"tasks"},iconColor:{default:"black"},initialExpanded:{type:Boolean,default:!0}},setup(t){const r=v(t.initialExpanded);function i(){r.value=!r.value}return(o,m)=>{const e=g("n8n-icon"),h=g("n8n-text");return l(),d("div",{class:c(["accordion",o.$style.container])},[k("div",{class:c({[o.$style.header]:!0,[o.$style.expanded]:r.value}),onClick:i},[u(e,{icon:o.icon,color:o.iconColor,size:"small",class:"mr-2xs"},null,8,["icon","color"]),u(h,{class:c(o.$style.headerText),color:"text-base",size:"small",align:"left",bold:""},{default:p(()=>[Y(o.$slots,"title")]),_:3},8,["class"]),u(e,{icon:r.value?"chevron-up":"chevron-down",bold:""},null,8,["icon"])],2),r.value?(l(),d("div",{key:0,class:c({[o.$style.description]:!0,[o.$style.collapsed]:!r.value})},[Y(o.$slots,"content")],2)):F("",!0)],2)}}}),he="_container_odamb_1",ke="_header_odamb_5",ye="_headerText_odamb_11",fe="_expanded_odamb_15",ge="_description_odamb_19",$e={container:he,header:ke,headerText:ye,expanded:fe,description:ge},be={$style:$e},O=S(_e,[["__cssModules",be]]),we=["href"],ve=["href"],Me=I({__name:"WorkerJobAccordion.ee",props:{items:{}},setup(t){const a=t;function r(i){let o=Math.floor((new Date().getTime()-i.getTime())/1e3);const m=Math.floor(o/3600);o-=m*3600;const e=Math.floor(o/60);return o-=e*60,`${m}h ${e}m ${Math.floor(o)}s`}return(i,o)=>{const m=g("n8n-text");return l(),L(O,{icon:"tasks","icon-color":"black","initial-expanded":!0},{title:p(()=>[b(s(i.$locale.baseText("workerList.item.jobListTitle"))+" ("+s(i.items.length)+") ",1)]),content:p(()=>[a.items.length>0?(l(),d("div",{key:0,class:c(i.$style.accordionItems)},[(l(!0),d(E,null,N(a.items,e=>(l(),d("div",{key:e.executionId,class:c(i.$style.accordionItem)},[k("a",{href:"/workflow/"+e.workflowId+"/executions/"+e.executionId}," Execution "+s(e.executionId)+" - "+s(e.workflowName),9,we),u(m,{color:"text-base",size:"small",align:"left"},{default:p(()=>{var h;return[b(" | Started at: "+s((h=new Date(e.startedAt))==null?void 0:h.toLocaleTimeString())+" | Running for "+s(r(new Date(e.startedAt)))+" "+s(e.retryOf?`| Retry of: ${e.retryOf}`:"")+" | ",1)]}),_:2},1024),k("a",{target:"_blank",href:"/workflow/"+e.workflowId}," (Open workflow)",8,ve)],2))),128))],2)):(l(),d("div",{key:1,class:c(i.$style.accordionItems)},[k("span",{class:c(i.$style.empty)},s(i.$locale.baseText("workerList.item.jobList.empty")),3)],2))]),_:1})}}}),Ie="_accordionItems_kt5sk_1",Se="_accordionItem_kt5sk_1",Ce="_empty_kt5sk_14",Te={accordionItems:Ie,accordionItem:Se,empty:Ce},Le={$style:Te},xe=S(Me,[["__cssModules",Le]]),Ae=["onClick"],We=I({__name:"WorkerNetAccordion.ee",props:{items:{}},setup(t){const a=t,r=Z(),i=re(),{showMessage:o}=X();function m(e){try{i.copy(e),o({title:r.baseText("workerList.item.copyAddressToClipboard"),type:"success"})}catch{}}return(e,h)=>(l(),L(O,{icon:"tasks","icon-color":"black","initial-expanded":!1},{title:p(()=>[b(s(e.$locale.baseText("workerList.item.netListTitle"))+" ("+s(e.items.length)+") ",1)]),content:p(()=>[a.items.length>0?(l(),d("div",{key:0,class:c(e.$style.accordionItems)},[(l(!0),d(E,null,N(a.items,y=>(l(),d("div",{key:y.address,class:c(e.$style.accordionItem),onClick:n=>m(y.address)},[b(s(y.family)+": ",1),k("span",{class:c(e.$style.clickable)},s(y.address),3),b(" "+s(y.internal?"(internal)":""),1)],10,Ae))),128))],2)):F("",!0)]),_:1}))}}),Ue="_accordionItems_10xds_1",Re="_accordionItem_10xds_1",Be="_clickable_10xds_15",De={accordionItems:Ue,accordionItem:Re,clickable:Be},Pe={$style:De},He=S(We,[["__cssModules",Pe]]),Je=I({__name:"WorkerChartsAccordion.ee",props:{workerId:{}},setup(t){var j,z,G;const a=t,r=(w,x,C=0)=>({datasets:[{label:w,backgroundColor:x,data:C?Array(Math.min(T,C)).fill(0):[]}],labels:Array(Math.min(T,C)).fill("")}),i=J(),o=v(void 0),m=v(void 0),e=v(void 0),h=()=>({responsive:!0,maintainAspectRatio:!0,scales:{y:{type:"linear",display:!0,position:"left",min:0,suggestedMax:5}}}),y=h(),n=h();(j=n.scales)!=null&&j.y&&(n.scales.y.suggestedMax=100);const _=R((z=i.workers[a.workerId])==null?void 0:z.totalMem)??1,$=h();(G=$.scales)!=null&&G.y&&($.scales.y.suggestedMax=_);const M=v(r("Job Count","rgb(255, 111, 92)",T)),W=v(r("Processor Usage","rgb(19, 205, 103)",T)),V=v(r("Memory Usage","rgb(244, 216, 174)",T));return i.$onAction(({name:w,store:x})=>{var C,K;if(w==="updateWorkerStatus"){const B=T-(((C=x.workersHistory[a.workerId])==null?void 0:C.length)??0),A=r("Job Count","rgb(255, 111, 92)",B),D=r("Processor Usage","rgb(19, 205, 103)",B),P=r("Memory Usage","rgb(244, 216, 174)",B);(K=x.workersHistory[a.workerId])==null||K.forEach(U=>{var Q;A.datasets[0].data.push(U.data.runningJobsSummary.length),(Q=A.labels)==null||Q.push(new Date(U.timestamp).toLocaleTimeString()),D.datasets[0].data.push(te(U.data.loadAvg)),D.labels=A.labels,P.datasets[0].data.push(_-R(U.data.freeMem)),P.labels=A.labels}),M.value=A,W.value=D,V.value=P}}),(w,x)=>(l(),L(O,{icon:"tasks","icon-color":"black","initial-expanded":!1},{title:p(()=>[b(s(w.$locale.baseText("workerList.item.chartsTitle")),1)]),content:p(()=>[k("div",{class:c(w.$style.charts)},[u(f(H),{ref_key:"chartRefJobs",ref:o,type:"line",data:M.value,options:f(y),class:c(w.$style.chart)},null,8,["data","options","class"]),u(f(H),{ref_key:"chartRefCPU",ref:m,type:"line",data:W.value,options:f(n),class:c(w.$style.chart)},null,8,["data","options","class"]),u(f(H),{ref_key:"chartRefMemory",ref:e,type:"line",data:V.value,options:f($),class:c(w.$style.chart)},null,8,["data","options","class"])],2)]),_:1}))}}),Fe="_accordionItems_2yo1p_1",Ee="_accordionItem_2yo1p_1",Ne="_charts_2yo1p_14",Oe="_chart_2yo1p_14",Ve={accordionItems:Fe,accordionItem:Ee,charts:Ne,chart:Oe},je={$style:Ve},ze=S(Je,[["__cssModules",je]]),Ge=k("br",null,null,-1),Ke=I({__name:"WorkerCard.ee",props:{workerId:{}},setup(t){let a;const r=J(),i=t,o=v("0"),m=v(!1),e=q(()=>r.getWorkerStatus(i.workerId)),h=q(()=>{var n;return((n=e.value)==null?void 0:n.interfaces.toSorted((_,$)=>_.family.localeCompare($.family)))??[]});function y(n){const _=Math.floor(n/86400);n-=_*3600*24;const $=Math.floor(n/3600);n-=$*3600;const M=Math.floor(n/60);return n-=M*60,`${_}d ${$}h ${M}m ${Math.floor(n)}s`}return le(()=>{a=setInterval(()=>{const n=r.getWorkerLastUpdated(i.workerId);if(!n)return;const _=Math.ceil((Date.now()-n)/1e3);m.value=_>10,o.value=_.toFixed(0)},500)}),de(()=>{clearInterval(a)}),(n,_)=>{const $=g("n8n-heading"),M=g("n8n-text"),W=g("n8n-card");return e.value?(l(),L(W,{key:0,class:c(n.$style.cardLink)},{header:p(()=>[u($,{tag:"h2",bold:"",class:c(m.value?[n.$style.cardHeading,n.$style.stale]:[n.$style.cardHeading]),"data-test-id":"worker-card-name"},{default:p(()=>[b(" Name: "+s(e.value.workerId)+" ("+s(e.value.hostname)+") ",1),Ge,b(" Average Load: "+s(f(me)(e.value.loadAvg??[0]))+" | Free Memory: "+s(f(R)(e.value.freeMem).toFixed(2))+"GB / "+s(f(R)(e.value.totalMem).toFixed(2))+"GB "+s(m.value?" (stale)":""),1)]),_:1},8,["class"])]),append:p(()=>[k("div",{ref:"cardActions",class:c(n.$style.cardActions)},null,2)]),default:p(()=>[k("div",{class:c(n.$style.cardDescription)},[u(M,{color:"text-light",size:"small",class:c(n.$style.container)},{default:p(()=>[k("span",null,s(n.$locale.baseText("workerList.item.lastUpdated"))+" "+s(o.value)+"s ago | n8n-Version: "+s(e.value.version)+" | Architecture: "+s(e.value.arch)+" ( "+s(e.value.platform)+") | Uptime: "+s(y(e.value.uptime)),1),u(xe,{items:e.value.runningJobsSummary},null,8,["items"]),u(He,{items:h.value},null,8,["items"]),u(ze,{"worker-id":e.value.workerId},null,8,["worker-id"])]),_:1},8,["class"])],2)]),_:1},8,["class"])):F("",!0)}}}),Qe="_container_s5el6_1",Ye="_cardLink_s5el6_5",qe="_cardHeading_s5el6_15",Xe="_stale_s5el6_21",Ze="_cardDescription_s5el6_25",et="_cardActions_s5el6_32",tt={container:Qe,cardLink:Ye,cardHeading:qe,stale:Xe,cardDescription:Ze,cardActions:et},ot={$style:tt},st=S(Ke,[["__cssModules",ot]]),rt=I({name:"WorkerList",components:{PushConnectionTracker:se,WorkerCard:st},props:{autoRefreshEnabled:{type:Boolean,default:!0}},setup(){const t=ue(),a=Z(),r=ie({router:t});return{i18n:a,pushConnection:r,...X()}},computed:{...oe(ne,ee,pe,J),combinedWorkers(){const t=[];for(const a in this.orchestrationManagerStore.workers)t.push(this.orchestrationManagerStore.workers[a]);return t},initialStatusReceived(){return this.orchestrationManagerStore.initialStatusReceived},workerIds(){return Object.keys(this.orchestrationManagerStore.workers)},pageTitle(){return this.i18n.baseText("workerList.pageTitle")}},mounted(){ae(`n8n - ${this.pageTitle}`),this.$telemetry.track("User viewed worker view",{instance_id:this.rootStore.instanceId})},beforeMount(){window.Cypress===void 0&&(this.pushConnection.initialize(),this.pushStore.pushConnect(),this.orchestrationManagerStore.startWorkerStatusPolling())},beforeUnmount(){window.Cypress===void 0&&(this.orchestrationManagerStore.stopWorkerStatusPolling(),this.pushStore.pushDisconnect(),this.pushConnection.terminate())},methods:{averageLoadAvg(t){return(t.reduce((a,r)=>a+r,0)/t.length).toFixed(2)},getStatus(t){return t.runningJobsSummary.length>0?"running":"success"},getRowClass(t){return[this.$style.execRow,this.$style[this.getStatus(t)]].join(" ")}}}),nt="_workerListHeader_12j1s_1",at="_card_12j1s_8",ct="_tableLoader_12j1s_12",it={workerListHeader:nt,card:at,tableLoader:ct},lt={key:0},dt={key:1},ut={key:0},pt={key:1};function mt(t,a,r,i,o,m){const e=g("PushConnectionTracker"),h=g("n8n-heading"),y=g("n8n-spinner"),n=g("WorkerCard");return l(),d("div",null,[u(e,{class:"actions"}),k("div",{class:c(t.$style.workerListHeader)},[u(h,{tag:"h1",size:"2xlarge"},{default:p(()=>[b(s(t.pageTitle),1)]),_:1})],2),t.initialStatusReceived?(l(),d("div",dt,[t.workerIds.length===0?(l(),d("div",ut,s(t.$locale.baseText("workerList.empty")),1)):(l(),d("div",pt,[(l(!0),d(E,null,N(t.workerIds,_=>(l(),d("div",{key:_,class:c(t.$style.card)},[u(n,{"worker-id":_,"data-test-id":"worker-card"},null,8,["worker-id"])],2))),128))]))])):(l(),d("div",lt,[u(y)]))])}const _t={$style:it},ht=S(rt,[["render",mt],["__cssModules",_t]]),kt=["href"],yt=I({__name:"WorkerView",setup(t){const a=ce(),r=ee(),i=()=>{r.goToUpgrade("worker-view","upgrade-worker-view")};return(o,m)=>{const e=g("n8n-action-box");return f(a).isQueueModeEnabled&&f(a).isWorkerViewAvailable?(l(),L(ht,{key:0,"data-test-id":"worker-view-licensed"})):(l(),L(e,{key:1,"data-test-id":"worker-view-unlicensed",class:c(o.$style.actionBox),description:o.$locale.baseText("workerList.actionBox.description"),"button-text":o.$locale.baseText("workerList.actionBox.buttonText"),"onClick:button":i},{heading:p(()=>[k("span",null,s(o.$locale.baseText("workerList.actionBox.title")),1)]),description:p(()=>[b(s(o.$locale.baseText("workerList.actionBox.description"))+" ",1),k("a",{href:o.$locale.baseText("workerList.docs.url"),target:"_blank"},s(o.$locale.baseText("workerList.actionBox.description.link")),9,kt)]),_:1},8,["class","description","button-text"]))}}}),ft="_actionBox_13ul9_1",gt={actionBox:ft},$t={$style:gt},eo=S(yt,[["__cssModules",$t]]);export{eo as default};
|
|
2
|
+
//# sourceMappingURL=WorkerView-DV19-i1-.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerView-C3Rdbsfq.js","sources":["../../src/utils/workerUtils.ts","../../src/components/Workers/WorkerAccordion.ee.vue","../../src/components/Workers/WorkerJobAccordion.ee.vue","../../src/components/Workers/WorkerNetAccordion.ee.vue","../../src/components/Workers/WorkerChartsAccordion.ee.vue","../../src/components/Workers/WorkerCard.ee.vue","../../src/components/WorkerList.ee.vue","../../src/views/WorkerView.vue"],"sourcesContent":["export function averageWorkerLoadFromLoads(loads: number[]): number {\n\treturn loads.reduce((prev, curr) => prev + curr, 0) / loads.length;\n}\n\nexport function averageWorkerLoadFromLoadsAsString(loads: number[]): string {\n\treturn averageWorkerLoadFromLoads(loads).toFixed(2);\n}\n\nexport function memAsGb(mem: number): number {\n\treturn mem / 1024 / 1024 / 1024;\n}\n","<template>\n\t<div :class=\"['accordion', $style.container]\">\n\t\t<div :class=\"{ [$style.header]: true, [$style.expanded]: expanded }\" @click=\"toggle\">\n\t\t\t<n8n-icon :icon=\"icon\" :color=\"iconColor\" size=\"small\" class=\"mr-2xs\" />\n\t\t\t<n8n-text :class=\"$style.headerText\" color=\"text-base\" size=\"small\" align=\"left\" bold>\n\t\t\t\t<slot name=\"title\"></slot>\n\t\t\t</n8n-text>\n\t\t\t<n8n-icon :icon=\"expanded ? 'chevron-up' : 'chevron-down'\" bold />\n\t\t</div>\n\t\t<div v-if=\"expanded\" :class=\"{ [$style.description]: true, [$style.collapsed]: !expanded }\">\n\t\t\t<slot name=\"content\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\ticon?: string;\n\t\ticonColor?: string;\n\t\tinitialExpanded?: boolean;\n\t}>(),\n\t{\n\t\ticon: 'tasks',\n\t\ticonColor: 'black',\n\t\tinitialExpanded: true,\n\t},\n);\n\nconst expanded = ref<boolean>(props.initialExpanded);\n\nfunction toggle() {\n\texpanded.value = !expanded.value;\n}\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\twidth: 100%;\n}\n\n.header {\n\tcursor: pointer;\n\tdisplay: flex;\n\tpadding-top: var(--spacing-s);\n\talign-items: center;\n\n\t.headerText {\n\t\tflex-grow: 1;\n\t}\n}\n\n.expanded {\n\tpadding: var(--spacing-s) 0 0 0;\n}\n\n.description {\n\tdisplay: flex;\n\tpadding: 0 var(--spacing-s) var(--spacing-s) var(--spacing-s);\n\n\tb {\n\t\tfont-weight: var(--font-weight-bold);\n\t}\n}\n</style>\n","<template>\n\t<WorkerAccordion icon=\"tasks\" icon-color=\"black\" :initial-expanded=\"true\">\n\t\t<template #title>\n\t\t\t{{ $locale.baseText('workerList.item.jobListTitle') }} ({{ items.length }})\n\t\t</template>\n\t\t<template #content>\n\t\t\t<div v-if=\"props.items.length > 0\" :class=\"$style.accordionItems\">\n\t\t\t\t<div v-for=\"item in props.items\" :key=\"item.executionId\" :class=\"$style.accordionItem\">\n\t\t\t\t\t<a :href=\"'/workflow/' + item.workflowId + '/executions/' + item.executionId\">\n\t\t\t\t\t\tExecution {{ item.executionId }} - {{ item.workflowName }}</a\n\t\t\t\t\t>\n\t\t\t\t\t<n8n-text color=\"text-base\" size=\"small\" align=\"left\">\n\t\t\t\t\t\t| Started at:\n\t\t\t\t\t\t{{ new Date(item.startedAt)?.toLocaleTimeString() }} | Running for\n\t\t\t\t\t\t{{ runningSince(new Date(item.startedAt)) }}\n\t\t\t\t\t\t{{ item.retryOf ? `| Retry of: ${item.retryOf}` : '' }} |\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<a target=\"_blank\" :href=\"'/workflow/' + item.workflowId\"> (Open workflow)</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else :class=\"$style.accordionItems\">\n\t\t\t\t<span :class=\"$style.empty\">\n\t\t\t\t\t{{ $locale.baseText('workerList.item.jobList.empty') }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</template>\n\t</WorkerAccordion>\n</template>\n\n<script setup lang=\"ts\">\nimport type { WorkerJobStatusSummary } from '@/Interface';\nimport WorkerAccordion from './WorkerAccordion.ee.vue';\n\nconst props = defineProps<{\n\titems: WorkerJobStatusSummary[];\n}>();\n\nfunction runningSince(started: Date): string {\n\tlet seconds = Math.floor((new Date().getTime() - started.getTime()) / 1000);\n\tconst hrs = Math.floor(seconds / 3600);\n\tseconds -= hrs * 3600;\n\tconst mnts = Math.floor(seconds / 60);\n\tseconds -= mnts * 60;\n\treturn `${hrs}h ${mnts}m ${Math.floor(seconds)}s`;\n}\n</script>\n\n<style lang=\"scss\" module>\n.accordionItems {\n\tdisplay: flex;\n\tflex-direction: column !important;\n\talign-items: flex-start !important;\n\twidth: 100%;\n}\n\n.accordionItem {\n\tdisplay: block !important;\n\ttext-align: left;\n\tmargin-bottom: var(--spacing-4xs);\n}\n\n.empty {\n\tdisplay: block !important;\n\ttext-align: left;\n\tmargin-top: var(--spacing-2xs);\n\tmargin-left: var(--spacing-4xs);\n}\n</style>\n","<template>\n\t<WorkerAccordion icon=\"tasks\" icon-color=\"black\" :initial-expanded=\"false\">\n\t\t<template #title>\n\t\t\t{{ $locale.baseText('workerList.item.netListTitle') }} ({{ items.length }})\n\t\t</template>\n\t\t<template #content>\n\t\t\t<div v-if=\"props.items.length > 0\" :class=\"$style.accordionItems\">\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"item in props.items\"\n\t\t\t\t\t:key=\"item.address\"\n\t\t\t\t\t:class=\"$style.accordionItem\"\n\t\t\t\t\t@click=\"onCopyToClipboard(item.address)\"\n\t\t\t\t>\n\t\t\t\t\t{{ item.family }}: <span :class=\"$style.clickable\">{{ item.address }}</span>\n\t\t\t\t\t{{ item.internal ? '(internal)' : '' }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</WorkerAccordion>\n</template>\n\n<script setup lang=\"ts\">\nimport type { IPushDataWorkerStatusPayload } from '@/Interface';\nimport WorkerAccordion from './WorkerAccordion.ee.vue';\nimport { useClipboard } from '@/composables/useClipboard';\nimport { useI18n } from '@/composables/useI18n';\nimport { useToast } from '@/composables/useToast';\n\nconst props = defineProps<{\n\titems: IPushDataWorkerStatusPayload['interfaces'];\n}>();\n\nconst i18n = useI18n();\nconst clipboard = useClipboard();\nconst { showMessage } = useToast();\n\nfunction onCopyToClipboard(content: string) {\n\ttry {\n\t\tvoid clipboard.copy(content);\n\t\tshowMessage({\n\t\t\ttitle: i18n.baseText('workerList.item.copyAddressToClipboard'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch {}\n}\n</script>\n\n<style lang=\"scss\" module>\n.accordionItems {\n\tdisplay: flex;\n\tflex-direction: column !important;\n\talign-items: flex-start !important;\n\twidth: 100%;\n\tmargin-top: var(--spacing-2xs);\n}\n\n.accordionItem {\n\tdisplay: block !important;\n\ttext-align: left;\n\tmargin-bottom: var(--spacing-4xs);\n}\n\n.clickable {\n\tcursor: pointer !important;\n\n\t&:hover {\n\t\tcolor: var(--color-primary);\n\t}\n}\n</style>\n","<template>\n\t<WorkerAccordion icon=\"tasks\" icon-color=\"black\" :initial-expanded=\"false\">\n\t\t<template #title>\n\t\t\t{{ $locale.baseText('workerList.item.chartsTitle') }}\n\t\t</template>\n\t\t<template #content>\n\t\t\t<div :class=\"$style.charts\">\n\t\t\t\t<Chart\n\t\t\t\t\tref=\"chartRefJobs\"\n\t\t\t\t\ttype=\"line\"\n\t\t\t\t\t:data=\"dataJobs\"\n\t\t\t\t\t:options=\"optionsJobs\"\n\t\t\t\t\t:class=\"$style.chart\"\n\t\t\t\t/>\n\t\t\t\t<Chart\n\t\t\t\t\tref=\"chartRefCPU\"\n\t\t\t\t\ttype=\"line\"\n\t\t\t\t\t:data=\"dataCPU\"\n\t\t\t\t\t:options=\"optionsCPU\"\n\t\t\t\t\t:class=\"$style.chart\"\n\t\t\t\t/>\n\t\t\t\t<Chart\n\t\t\t\t\tref=\"chartRefMemory\"\n\t\t\t\t\ttype=\"line\"\n\t\t\t\t\t:data=\"dataMemory\"\n\t\t\t\t\t:options=\"optionsMemory\"\n\t\t\t\t\t:class=\"$style.chart\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</template>\n\t</WorkerAccordion>\n</template>\n\n<script setup lang=\"ts\">\nimport WorkerAccordion from './WorkerAccordion.ee.vue';\nimport { WORKER_HISTORY_LENGTH, useOrchestrationStore } from '@/stores/orchestration.store';\nimport { ref } from 'vue';\nimport type { ChartData, ChartOptions } from 'chart.js';\nimport type { ChartComponentRef } from 'vue-chartjs';\nimport { Chart } from 'vue-chartjs';\nimport { averageWorkerLoadFromLoads, memAsGb } from '@/utils/workerUtils';\n\nconst props = defineProps<{\n\tworkerId: string;\n}>();\n\nconst blankDataSet = (label: string, color: string, prefill: number = 0) => ({\n\tdatasets: [\n\t\t{\n\t\t\tlabel,\n\t\t\tbackgroundColor: color,\n\t\t\tdata: prefill ? Array<number>(Math.min(WORKER_HISTORY_LENGTH, prefill)).fill(0) : [],\n\t\t},\n\t],\n\tlabels: Array<string>(Math.min(WORKER_HISTORY_LENGTH, prefill)).fill(''),\n});\n\nconst orchestrationStore = useOrchestrationStore();\nconst chartRefJobs = ref<ChartComponentRef | undefined>(undefined);\nconst chartRefCPU = ref<ChartComponentRef | undefined>(undefined);\nconst chartRefMemory = ref<ChartComponentRef | undefined>(undefined);\nconst optionsBase: () => Partial<ChartOptions<'line'>> = () => ({\n\tresponsive: true,\n\tmaintainAspectRatio: true,\n\tscales: {\n\t\ty: {\n\t\t\ttype: 'linear',\n\t\t\tdisplay: true,\n\t\t\tposition: 'left',\n\t\t\tmin: 0,\n\t\t\tsuggestedMax: 5,\n\t\t},\n\t},\n\t// uncomment to disable animation\n\t// animation: {\n\t// \tduration: 0,\n\t// },\n});\nconst optionsJobs: Partial<ChartOptions<'line'>> = optionsBase();\nconst optionsCPU: Partial<ChartOptions<'line'>> = optionsBase();\nif (optionsCPU.scales?.y) optionsCPU.scales.y.suggestedMax = 100;\nconst maxMemory = memAsGb(orchestrationStore.workers[props.workerId]?.totalMem) ?? 1;\nconst optionsMemory: Partial<ChartOptions<'line'>> = optionsBase();\nif (optionsMemory.scales?.y) optionsMemory.scales.y.suggestedMax = maxMemory;\n\n// prefilled initial arrays\nconst dataJobs = ref<ChartData>(\n\tblankDataSet('Job Count', 'rgb(255, 111, 92)', WORKER_HISTORY_LENGTH),\n);\nconst dataCPU = ref<ChartData>(\n\tblankDataSet('Processor Usage', 'rgb(19, 205, 103)', WORKER_HISTORY_LENGTH),\n);\nconst dataMemory = ref<ChartData>(\n\tblankDataSet('Memory Usage', 'rgb(244, 216, 174)', WORKER_HISTORY_LENGTH),\n);\n\norchestrationStore.$onAction(({ name, store }) => {\n\tif (name === 'updateWorkerStatus') {\n\t\tconst prefillCount =\n\t\t\tWORKER_HISTORY_LENGTH - (store.workersHistory[props.workerId]?.length ?? 0);\n\t\tconst newDataJobs: ChartData = blankDataSet('Job Count', 'rgb(255, 111, 92)', prefillCount);\n\t\tconst newDataCPU: ChartData = blankDataSet(\n\t\t\t'Processor Usage',\n\t\t\t'rgb(19, 205, 103)',\n\t\t\tprefillCount,\n\t\t);\n\t\tconst newDataMemory: ChartData = blankDataSet(\n\t\t\t'Memory Usage',\n\t\t\t'rgb(244, 216, 174)',\n\t\t\tprefillCount,\n\t\t);\n\t\tstore.workersHistory[props.workerId]?.forEach((item) => {\n\t\t\tnewDataJobs.datasets[0].data.push(item.data.runningJobsSummary.length);\n\t\t\tnewDataJobs.labels?.push(new Date(item.timestamp).toLocaleTimeString());\n\t\t\tnewDataCPU.datasets[0].data.push(averageWorkerLoadFromLoads(item.data.loadAvg));\n\t\t\tnewDataCPU.labels = newDataJobs.labels;\n\t\t\tnewDataMemory.datasets[0].data.push(maxMemory - memAsGb(item.data.freeMem));\n\t\t\tnewDataMemory.labels = newDataJobs.labels;\n\t\t});\n\t\tdataJobs.value = newDataJobs;\n\t\tdataCPU.value = newDataCPU;\n\t\tdataMemory.value = newDataMemory;\n\t}\n});\n</script>\n\n<style lang=\"scss\" module>\n.accordionItems {\n\tdisplay: flex;\n\tflex-direction: column !important;\n\talign-items: flex-start !important;\n\twidth: 100%;\n}\n\n.accordionItem {\n\tdisplay: block !important;\n\ttext-align: left;\n\tmargin-bottom: var(--spacing-4xs);\n}\n\n.charts {\n\twidth: 100%;\n\tflex-direction: column;\n}\n\n.chart {\n\tmax-width: 100%;\n\tmax-height: 200px;\n\tposition: relative;\n}\n</style>\n","<template>\n\t<n8n-card v-if=\"worker\" :class=\"$style.cardLink\">\n\t\t<template #header>\n\t\t\t<n8n-heading\n\t\t\t\ttag=\"h2\"\n\t\t\t\tbold\n\t\t\t\t:class=\"stale ? [$style.cardHeading, $style.stale] : [$style.cardHeading]\"\n\t\t\t\tdata-test-id=\"worker-card-name\"\n\t\t\t>\n\t\t\t\tName: {{ worker.workerId }} ({{ worker.hostname }}) <br />\n\t\t\t\tAverage Load: {{ averageWorkerLoadFromLoadsAsString(worker.loadAvg ?? [0]) }} | Free Memory:\n\t\t\t\t{{ memAsGb(worker.freeMem).toFixed(2) }}GB / {{ memAsGb(worker.totalMem).toFixed(2) }}GB\n\t\t\t\t{{ stale ? ' (stale)' : '' }}\n\t\t\t</n8n-heading>\n\t\t</template>\n\t\t<div :class=\"$style.cardDescription\">\n\t\t\t<n8n-text color=\"text-light\" size=\"small\" :class=\"$style.container\">\n\t\t\t\t<span\n\t\t\t\t\t>{{ $locale.baseText('workerList.item.lastUpdated') }} {{ secondsSinceLastUpdateString }}s\n\t\t\t\t\tago | n8n-Version: {{ worker.version }} | Architecture: {{ worker.arch }} (\n\t\t\t\t\t{{ worker.platform }}) | Uptime: {{ upTime(worker.uptime) }}</span\n\t\t\t\t>\n\t\t\t\t<WorkerJobAccordion :items=\"worker.runningJobsSummary\" />\n\t\t\t\t<WorkerNetAccordion :items=\"sortedWorkerInterfaces\" />\n\t\t\t\t<WorkerChartsAccordion :worker-id=\"worker.workerId\" />\n\t\t\t</n8n-text>\n\t\t</div>\n\t\t<template #append>\n\t\t\t<div ref=\"cardActions\" :class=\"$style.cardActions\">\n\t\t\t\t<!-- For future Worker actions -->\n\t\t\t</div>\n\t\t</template>\n\t</n8n-card>\n</template>\n\n<script setup lang=\"ts\">\nimport { useOrchestrationStore } from '@/stores/orchestration.store';\nimport type { IPushDataWorkerStatusPayload } from '@/Interface';\nimport { computed, onMounted, onBeforeUnmount, ref } from 'vue';\nimport { averageWorkerLoadFromLoadsAsString, memAsGb } from '../../utils/workerUtils';\nimport WorkerJobAccordion from './WorkerJobAccordion.ee.vue';\nimport WorkerNetAccordion from './WorkerNetAccordion.ee.vue';\nimport WorkerChartsAccordion from './WorkerChartsAccordion.ee.vue';\n\nlet interval: NodeJS.Timer;\n\nconst orchestrationStore = useOrchestrationStore();\n\nconst props = defineProps<{\n\tworkerId: string;\n}>();\n\nconst secondsSinceLastUpdateString = ref<string>('0');\nconst stale = ref<boolean>(false);\n\nconst worker = computed((): IPushDataWorkerStatusPayload | undefined => {\n\treturn orchestrationStore.getWorkerStatus(props.workerId);\n});\n\nconst sortedWorkerInterfaces = computed(\n\t() => worker.value?.interfaces.toSorted((a, b) => a.family.localeCompare(b.family)) ?? [],\n);\n\nfunction upTime(seconds: number): string {\n\tconst days = Math.floor(seconds / (3600 * 24));\n\tseconds -= days * 3600 * 24;\n\tconst hrs = Math.floor(seconds / 3600);\n\tseconds -= hrs * 3600;\n\tconst mnts = Math.floor(seconds / 60);\n\tseconds -= mnts * 60;\n\treturn `${days}d ${hrs}h ${mnts}m ${Math.floor(seconds)}s`;\n}\n\nonMounted(() => {\n\tinterval = setInterval(() => {\n\t\tconst lastUpdated = orchestrationStore.getWorkerLastUpdated(props.workerId);\n\t\tif (!lastUpdated) {\n\t\t\treturn;\n\t\t}\n\t\tconst secondsSinceLastUpdate = Math.ceil((Date.now() - lastUpdated) / 1000);\n\t\tstale.value = secondsSinceLastUpdate > 10;\n\t\tsecondsSinceLastUpdateString.value = secondsSinceLastUpdate.toFixed(0);\n\t}, 500);\n});\n\nonBeforeUnmount(() => {\n\tclearInterval(interval);\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\twidth: 100%;\n}\n\n.cardLink {\n\ttransition: box-shadow 0.3s ease;\n\tcursor: pointer;\n\tpadding: 0;\n\talign-items: stretch;\n\n\t&:hover {\n\t\tbox-shadow: 0 2px 8px rgba(#441c17, 0.1);\n\t}\n}\n\n.cardHeading {\n\tfont-size: var(--font-size-s);\n\tword-break: break-word;\n\tpadding: var(--spacing-s) 0 0 var(--spacing-s);\n}\n\n.stale {\n\topacity: 0.5;\n}\n\n.cardDescription {\n\tmin-height: 19px;\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0 0 var(--spacing-s) var(--spacing-s);\n}\n\n.cardActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\talign-items: center;\n\talign-self: stretch;\n\tpadding: 0 var(--spacing-s) 0 0;\n\tcursor: default;\n}\n</style>\n","<template>\n\t<div>\n\t\t<PushConnectionTracker class=\"actions\"></PushConnectionTracker>\n\t\t<div :class=\"$style.workerListHeader\">\n\t\t\t<n8n-heading tag=\"h1\" size=\"2xlarge\">{{ pageTitle }}</n8n-heading>\n\t\t</div>\n\t\t<div v-if=\"!initialStatusReceived\">\n\t\t\t<n8n-spinner />\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<div v-if=\"workerIds.length === 0\">{{ $locale.baseText('workerList.empty') }}</div>\n\t\t\t<div v-else>\n\t\t\t\t<div v-for=\"workerId in workerIds\" :key=\"workerId\" :class=\"$style.card\">\n\t\t\t\t\t<WorkerCard :worker-id=\"workerId\" data-test-id=\"worker-card\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport PushConnectionTracker from '@/components/PushConnectionTracker.vue';\nimport { useI18n } from '@/composables/useI18n';\nimport { useToast } from '@/composables/useToast';\nimport type { IPushDataWorkerStatusPayload } from '@/Interface';\nimport type { ExecutionStatus } from 'n8n-workflow';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useOrchestrationStore } from '@/stores/orchestration.store';\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport WorkerCard from './Workers/WorkerCard.ee.vue';\nimport { usePushConnection } from '@/composables/usePushConnection';\nimport { useRouter } from 'vue-router';\nimport { usePushConnectionStore } from '@/stores/pushConnection.store';\nimport { useRootStore } from '@/stores/root.store';\n\n// eslint-disable-next-line import/no-default-export\nexport default defineComponent({\n\tname: 'WorkerList',\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/naming-convention\n\tcomponents: { PushConnectionTracker, WorkerCard },\n\tprops: {\n\t\tautoRefreshEnabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tsetup() {\n\t\tconst router = useRouter();\n\t\tconst i18n = useI18n();\n\t\tconst pushConnection = usePushConnection({ router });\n\n\t\treturn {\n\t\t\ti18n,\n\t\t\tpushConnection,\n\t\t\t...useToast(),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useRootStore, useUIStore, usePushConnectionStore, useOrchestrationStore),\n\t\tcombinedWorkers(): IPushDataWorkerStatusPayload[] {\n\t\t\tconst returnData: IPushDataWorkerStatusPayload[] = [];\n\t\t\tfor (const workerId in this.orchestrationManagerStore.workers) {\n\t\t\t\treturnData.push(this.orchestrationManagerStore.workers[workerId]);\n\t\t\t}\n\t\t\treturn returnData;\n\t\t},\n\t\tinitialStatusReceived(): boolean {\n\t\t\treturn this.orchestrationManagerStore.initialStatusReceived;\n\t\t},\n\t\tworkerIds(): string[] {\n\t\t\treturn Object.keys(this.orchestrationManagerStore.workers);\n\t\t},\n\t\tpageTitle() {\n\t\t\treturn this.i18n.baseText('workerList.pageTitle');\n\t\t},\n\t},\n\tmounted() {\n\t\tsetPageTitle(`n8n - ${this.pageTitle}`);\n\n\t\tthis.$telemetry.track('User viewed worker view', {\n\t\t\tinstance_id: this.rootStore.instanceId,\n\t\t});\n\t},\n\tbeforeMount() {\n\t\tif (window.Cypress !== undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.pushConnection.initialize();\n\t\tthis.pushStore.pushConnect();\n\t\tthis.orchestrationManagerStore.startWorkerStatusPolling();\n\t},\n\tbeforeUnmount() {\n\t\tif (window.Cypress !== undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.orchestrationManagerStore.stopWorkerStatusPolling();\n\t\tthis.pushStore.pushDisconnect();\n\t\tthis.pushConnection.terminate();\n\t},\n\tmethods: {\n\t\taverageLoadAvg(loads: number[]) {\n\t\t\treturn (loads.reduce((prev, curr) => prev + curr, 0) / loads.length).toFixed(2);\n\t\t},\n\t\tgetStatus(payload: IPushDataWorkerStatusPayload): ExecutionStatus {\n\t\t\tif (payload.runningJobsSummary.length > 0) {\n\t\t\t\treturn 'running';\n\t\t\t} else {\n\t\t\t\treturn 'success';\n\t\t\t}\n\t\t},\n\t\tgetRowClass(payload: IPushDataWorkerStatusPayload): string {\n\t\t\treturn [this.$style.execRow, this.$style[this.getStatus(payload)]].join(' ');\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.workerListHeader {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tmargin-bottom: var(--spacing-s);\n}\n\n.card {\n\tmargin-bottom: var(--spacing-s);\n}\n\n.tableLoader {\n\twidth: 100%;\n\theight: 48px;\n\tmargin-bottom: var(--spacing-2xs);\n}\n</style>\n","<template>\n\t<WorkerList\n\t\tv-if=\"settingsStore.isQueueModeEnabled && settingsStore.isWorkerViewAvailable\"\n\t\tdata-test-id=\"worker-view-licensed\"\n\t/>\n\t<n8n-action-box\n\t\tv-else\n\t\tdata-test-id=\"worker-view-unlicensed\"\n\t\t:class=\"$style.actionBox\"\n\t\t:description=\"$locale.baseText('workerList.actionBox.description')\"\n\t\t:button-text=\"$locale.baseText('workerList.actionBox.buttonText')\"\n\t\t@click:button=\"goToUpgrade\"\n\t>\n\t\t<template #heading>\n\t\t\t<span>{{ $locale.baseText('workerList.actionBox.title') }}</span>\n\t\t</template>\n\t\t<template #description>\n\t\t\t{{ $locale.baseText('workerList.actionBox.description') }}\n\t\t\t<a :href=\"$locale.baseText('workerList.docs.url')\" target=\"_blank\">\n\t\t\t\t{{ $locale.baseText('workerList.actionBox.description.link') }}\n\t\t\t</a>\n\t\t</template>\n\t</n8n-action-box>\n</template>\n\n<script setup lang=\"ts\">\nimport WorkerList from '@/components/WorkerList.ee.vue';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\n\nconst settingsStore = useSettingsStore();\nconst uiStore = useUIStore();\n\nconst goToUpgrade = () => {\n\tvoid uiStore.goToUpgrade('worker-view', 'upgrade-worker-view');\n};\n</script>\n\n<style module lang=\"scss\">\n.actionBox {\n\tmargin: var(--spacing-2xl) 0 0;\n}\n</style>\n"],"names":["averageWorkerLoadFromLoads","loads","prev","curr","averageWorkerLoadFromLoadsAsString","memAsGb","mem","expanded","ref","__props","toggle","props","runningSince","started","seconds","hrs","mnts","i18n","useI18n","clipboard","useClipboard","showMessage","useToast","onCopyToClipboard","content","blankDataSet","label","color","prefill","WORKER_HISTORY_LENGTH","orchestrationStore","useOrchestrationStore","chartRefJobs","chartRefCPU","chartRefMemory","optionsBase","optionsJobs","optionsCPU","_a","maxMemory","_b","optionsMemory","_c","dataJobs","dataCPU","dataMemory","name","store","prefillCount","newDataJobs","newDataCPU","newDataMemory","item","interval","secondsSinceLastUpdateString","stale","worker","computed","sortedWorkerInterfaces","a","b","upTime","days","onMounted","lastUpdated","secondsSinceLastUpdate","onBeforeUnmount","_sfc_main$1","defineComponent","PushConnectionTracker","WorkerCard","router","useRouter","pushConnection","usePushConnection","mapStores","useRootStore","useUIStore","usePushConnectionStore","returnData","workerId","setPageTitle","payload","_hoisted_1","_hoisted_2","_resolveComponent","_openBlock","_createElementBlock","_createVNode","_component_PushConnectionTracker","_createElementVNode","_normalizeClass","_ctx","_component_n8n_heading","_createTextVNode","_toDisplayString","initialStatusReceived","_hoisted_3","workerIds","_hoisted_4","_Fragment","_renderList","_component_WorkerCard","_component_n8n_spinner","settingsStore","useSettingsStore","uiStore","goToUpgrade"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkerView-DV19-i1-.js","sources":["../../src/utils/workerUtils.ts","../../src/components/Workers/WorkerAccordion.ee.vue","../../src/components/Workers/WorkerJobAccordion.ee.vue","../../src/components/Workers/WorkerNetAccordion.ee.vue","../../src/components/Workers/WorkerChartsAccordion.ee.vue","../../src/components/Workers/WorkerCard.ee.vue","../../src/components/WorkerList.ee.vue","../../src/views/WorkerView.vue"],"sourcesContent":["export function averageWorkerLoadFromLoads(loads: number[]): number {\n\treturn loads.reduce((prev, curr) => prev + curr, 0) / loads.length;\n}\n\nexport function averageWorkerLoadFromLoadsAsString(loads: number[]): string {\n\treturn averageWorkerLoadFromLoads(loads).toFixed(2);\n}\n\nexport function memAsGb(mem: number): number {\n\treturn mem / 1024 / 1024 / 1024;\n}\n","<template>\n\t<div :class=\"['accordion', $style.container]\">\n\t\t<div :class=\"{ [$style.header]: true, [$style.expanded]: expanded }\" @click=\"toggle\">\n\t\t\t<n8n-icon :icon=\"icon\" :color=\"iconColor\" size=\"small\" class=\"mr-2xs\" />\n\t\t\t<n8n-text :class=\"$style.headerText\" color=\"text-base\" size=\"small\" align=\"left\" bold>\n\t\t\t\t<slot name=\"title\"></slot>\n\t\t\t</n8n-text>\n\t\t\t<n8n-icon :icon=\"expanded ? 'chevron-up' : 'chevron-down'\" bold />\n\t\t</div>\n\t\t<div v-if=\"expanded\" :class=\"{ [$style.description]: true, [$style.collapsed]: !expanded }\">\n\t\t\t<slot name=\"content\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\ticon?: string;\n\t\ticonColor?: string;\n\t\tinitialExpanded?: boolean;\n\t}>(),\n\t{\n\t\ticon: 'tasks',\n\t\ticonColor: 'black',\n\t\tinitialExpanded: true,\n\t},\n);\n\nconst expanded = ref<boolean>(props.initialExpanded);\n\nfunction toggle() {\n\texpanded.value = !expanded.value;\n}\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\twidth: 100%;\n}\n\n.header {\n\tcursor: pointer;\n\tdisplay: flex;\n\tpadding-top: var(--spacing-s);\n\talign-items: center;\n\n\t.headerText {\n\t\tflex-grow: 1;\n\t}\n}\n\n.expanded {\n\tpadding: var(--spacing-s) 0 0 0;\n}\n\n.description {\n\tdisplay: flex;\n\tpadding: 0 var(--spacing-s) var(--spacing-s) var(--spacing-s);\n\n\tb {\n\t\tfont-weight: var(--font-weight-bold);\n\t}\n}\n</style>\n","<template>\n\t<WorkerAccordion icon=\"tasks\" icon-color=\"black\" :initial-expanded=\"true\">\n\t\t<template #title>\n\t\t\t{{ $locale.baseText('workerList.item.jobListTitle') }} ({{ items.length }})\n\t\t</template>\n\t\t<template #content>\n\t\t\t<div v-if=\"props.items.length > 0\" :class=\"$style.accordionItems\">\n\t\t\t\t<div v-for=\"item in props.items\" :key=\"item.executionId\" :class=\"$style.accordionItem\">\n\t\t\t\t\t<a :href=\"'/workflow/' + item.workflowId + '/executions/' + item.executionId\">\n\t\t\t\t\t\tExecution {{ item.executionId }} - {{ item.workflowName }}</a\n\t\t\t\t\t>\n\t\t\t\t\t<n8n-text color=\"text-base\" size=\"small\" align=\"left\">\n\t\t\t\t\t\t| Started at:\n\t\t\t\t\t\t{{ new Date(item.startedAt)?.toLocaleTimeString() }} | Running for\n\t\t\t\t\t\t{{ runningSince(new Date(item.startedAt)) }}\n\t\t\t\t\t\t{{ item.retryOf ? `| Retry of: ${item.retryOf}` : '' }} |\n\t\t\t\t\t</n8n-text>\n\t\t\t\t\t<a target=\"_blank\" :href=\"'/workflow/' + item.workflowId\"> (Open workflow)</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else :class=\"$style.accordionItems\">\n\t\t\t\t<span :class=\"$style.empty\">\n\t\t\t\t\t{{ $locale.baseText('workerList.item.jobList.empty') }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</template>\n\t</WorkerAccordion>\n</template>\n\n<script setup lang=\"ts\">\nimport type { WorkerJobStatusSummary } from '@/Interface';\nimport WorkerAccordion from './WorkerAccordion.ee.vue';\n\nconst props = defineProps<{\n\titems: WorkerJobStatusSummary[];\n}>();\n\nfunction runningSince(started: Date): string {\n\tlet seconds = Math.floor((new Date().getTime() - started.getTime()) / 1000);\n\tconst hrs = Math.floor(seconds / 3600);\n\tseconds -= hrs * 3600;\n\tconst mnts = Math.floor(seconds / 60);\n\tseconds -= mnts * 60;\n\treturn `${hrs}h ${mnts}m ${Math.floor(seconds)}s`;\n}\n</script>\n\n<style lang=\"scss\" module>\n.accordionItems {\n\tdisplay: flex;\n\tflex-direction: column !important;\n\talign-items: flex-start !important;\n\twidth: 100%;\n}\n\n.accordionItem {\n\tdisplay: block !important;\n\ttext-align: left;\n\tmargin-bottom: var(--spacing-4xs);\n}\n\n.empty {\n\tdisplay: block !important;\n\ttext-align: left;\n\tmargin-top: var(--spacing-2xs);\n\tmargin-left: var(--spacing-4xs);\n}\n</style>\n","<template>\n\t<WorkerAccordion icon=\"tasks\" icon-color=\"black\" :initial-expanded=\"false\">\n\t\t<template #title>\n\t\t\t{{ $locale.baseText('workerList.item.netListTitle') }} ({{ items.length }})\n\t\t</template>\n\t\t<template #content>\n\t\t\t<div v-if=\"props.items.length > 0\" :class=\"$style.accordionItems\">\n\t\t\t\t<div\n\t\t\t\t\tv-for=\"item in props.items\"\n\t\t\t\t\t:key=\"item.address\"\n\t\t\t\t\t:class=\"$style.accordionItem\"\n\t\t\t\t\t@click=\"onCopyToClipboard(item.address)\"\n\t\t\t\t>\n\t\t\t\t\t{{ item.family }}: <span :class=\"$style.clickable\">{{ item.address }}</span>\n\t\t\t\t\t{{ item.internal ? '(internal)' : '' }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</WorkerAccordion>\n</template>\n\n<script setup lang=\"ts\">\nimport type { IPushDataWorkerStatusPayload } from '@/Interface';\nimport WorkerAccordion from './WorkerAccordion.ee.vue';\nimport { useClipboard } from '@/composables/useClipboard';\nimport { useI18n } from '@/composables/useI18n';\nimport { useToast } from '@/composables/useToast';\n\nconst props = defineProps<{\n\titems: IPushDataWorkerStatusPayload['interfaces'];\n}>();\n\nconst i18n = useI18n();\nconst clipboard = useClipboard();\nconst { showMessage } = useToast();\n\nfunction onCopyToClipboard(content: string) {\n\ttry {\n\t\tvoid clipboard.copy(content);\n\t\tshowMessage({\n\t\t\ttitle: i18n.baseText('workerList.item.copyAddressToClipboard'),\n\t\t\ttype: 'success',\n\t\t});\n\t} catch {}\n}\n</script>\n\n<style lang=\"scss\" module>\n.accordionItems {\n\tdisplay: flex;\n\tflex-direction: column !important;\n\talign-items: flex-start !important;\n\twidth: 100%;\n\tmargin-top: var(--spacing-2xs);\n}\n\n.accordionItem {\n\tdisplay: block !important;\n\ttext-align: left;\n\tmargin-bottom: var(--spacing-4xs);\n}\n\n.clickable {\n\tcursor: pointer !important;\n\n\t&:hover {\n\t\tcolor: var(--color-primary);\n\t}\n}\n</style>\n","<template>\n\t<WorkerAccordion icon=\"tasks\" icon-color=\"black\" :initial-expanded=\"false\">\n\t\t<template #title>\n\t\t\t{{ $locale.baseText('workerList.item.chartsTitle') }}\n\t\t</template>\n\t\t<template #content>\n\t\t\t<div :class=\"$style.charts\">\n\t\t\t\t<Chart\n\t\t\t\t\tref=\"chartRefJobs\"\n\t\t\t\t\ttype=\"line\"\n\t\t\t\t\t:data=\"dataJobs\"\n\t\t\t\t\t:options=\"optionsJobs\"\n\t\t\t\t\t:class=\"$style.chart\"\n\t\t\t\t/>\n\t\t\t\t<Chart\n\t\t\t\t\tref=\"chartRefCPU\"\n\t\t\t\t\ttype=\"line\"\n\t\t\t\t\t:data=\"dataCPU\"\n\t\t\t\t\t:options=\"optionsCPU\"\n\t\t\t\t\t:class=\"$style.chart\"\n\t\t\t\t/>\n\t\t\t\t<Chart\n\t\t\t\t\tref=\"chartRefMemory\"\n\t\t\t\t\ttype=\"line\"\n\t\t\t\t\t:data=\"dataMemory\"\n\t\t\t\t\t:options=\"optionsMemory\"\n\t\t\t\t\t:class=\"$style.chart\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</template>\n\t</WorkerAccordion>\n</template>\n\n<script setup lang=\"ts\">\nimport WorkerAccordion from './WorkerAccordion.ee.vue';\nimport { WORKER_HISTORY_LENGTH, useOrchestrationStore } from '@/stores/orchestration.store';\nimport { ref } from 'vue';\nimport type { ChartData, ChartOptions } from 'chart.js';\nimport type { ChartComponentRef } from 'vue-chartjs';\nimport { Chart } from 'vue-chartjs';\nimport { averageWorkerLoadFromLoads, memAsGb } from '@/utils/workerUtils';\n\nconst props = defineProps<{\n\tworkerId: string;\n}>();\n\nconst blankDataSet = (label: string, color: string, prefill: number = 0) => ({\n\tdatasets: [\n\t\t{\n\t\t\tlabel,\n\t\t\tbackgroundColor: color,\n\t\t\tdata: prefill ? Array<number>(Math.min(WORKER_HISTORY_LENGTH, prefill)).fill(0) : [],\n\t\t},\n\t],\n\tlabels: Array<string>(Math.min(WORKER_HISTORY_LENGTH, prefill)).fill(''),\n});\n\nconst orchestrationStore = useOrchestrationStore();\nconst chartRefJobs = ref<ChartComponentRef | undefined>(undefined);\nconst chartRefCPU = ref<ChartComponentRef | undefined>(undefined);\nconst chartRefMemory = ref<ChartComponentRef | undefined>(undefined);\nconst optionsBase: () => Partial<ChartOptions<'line'>> = () => ({\n\tresponsive: true,\n\tmaintainAspectRatio: true,\n\tscales: {\n\t\ty: {\n\t\t\ttype: 'linear',\n\t\t\tdisplay: true,\n\t\t\tposition: 'left',\n\t\t\tmin: 0,\n\t\t\tsuggestedMax: 5,\n\t\t},\n\t},\n\t// uncomment to disable animation\n\t// animation: {\n\t// \tduration: 0,\n\t// },\n});\nconst optionsJobs: Partial<ChartOptions<'line'>> = optionsBase();\nconst optionsCPU: Partial<ChartOptions<'line'>> = optionsBase();\nif (optionsCPU.scales?.y) optionsCPU.scales.y.suggestedMax = 100;\nconst maxMemory = memAsGb(orchestrationStore.workers[props.workerId]?.totalMem) ?? 1;\nconst optionsMemory: Partial<ChartOptions<'line'>> = optionsBase();\nif (optionsMemory.scales?.y) optionsMemory.scales.y.suggestedMax = maxMemory;\n\n// prefilled initial arrays\nconst dataJobs = ref<ChartData>(\n\tblankDataSet('Job Count', 'rgb(255, 111, 92)', WORKER_HISTORY_LENGTH),\n);\nconst dataCPU = ref<ChartData>(\n\tblankDataSet('Processor Usage', 'rgb(19, 205, 103)', WORKER_HISTORY_LENGTH),\n);\nconst dataMemory = ref<ChartData>(\n\tblankDataSet('Memory Usage', 'rgb(244, 216, 174)', WORKER_HISTORY_LENGTH),\n);\n\norchestrationStore.$onAction(({ name, store }) => {\n\tif (name === 'updateWorkerStatus') {\n\t\tconst prefillCount =\n\t\t\tWORKER_HISTORY_LENGTH - (store.workersHistory[props.workerId]?.length ?? 0);\n\t\tconst newDataJobs: ChartData = blankDataSet('Job Count', 'rgb(255, 111, 92)', prefillCount);\n\t\tconst newDataCPU: ChartData = blankDataSet(\n\t\t\t'Processor Usage',\n\t\t\t'rgb(19, 205, 103)',\n\t\t\tprefillCount,\n\t\t);\n\t\tconst newDataMemory: ChartData = blankDataSet(\n\t\t\t'Memory Usage',\n\t\t\t'rgb(244, 216, 174)',\n\t\t\tprefillCount,\n\t\t);\n\t\tstore.workersHistory[props.workerId]?.forEach((item) => {\n\t\t\tnewDataJobs.datasets[0].data.push(item.data.runningJobsSummary.length);\n\t\t\tnewDataJobs.labels?.push(new Date(item.timestamp).toLocaleTimeString());\n\t\t\tnewDataCPU.datasets[0].data.push(averageWorkerLoadFromLoads(item.data.loadAvg));\n\t\t\tnewDataCPU.labels = newDataJobs.labels;\n\t\t\tnewDataMemory.datasets[0].data.push(maxMemory - memAsGb(item.data.freeMem));\n\t\t\tnewDataMemory.labels = newDataJobs.labels;\n\t\t});\n\t\tdataJobs.value = newDataJobs;\n\t\tdataCPU.value = newDataCPU;\n\t\tdataMemory.value = newDataMemory;\n\t}\n});\n</script>\n\n<style lang=\"scss\" module>\n.accordionItems {\n\tdisplay: flex;\n\tflex-direction: column !important;\n\talign-items: flex-start !important;\n\twidth: 100%;\n}\n\n.accordionItem {\n\tdisplay: block !important;\n\ttext-align: left;\n\tmargin-bottom: var(--spacing-4xs);\n}\n\n.charts {\n\twidth: 100%;\n\tflex-direction: column;\n}\n\n.chart {\n\tmax-width: 100%;\n\tmax-height: 200px;\n\tposition: relative;\n}\n</style>\n","<template>\n\t<n8n-card v-if=\"worker\" :class=\"$style.cardLink\">\n\t\t<template #header>\n\t\t\t<n8n-heading\n\t\t\t\ttag=\"h2\"\n\t\t\t\tbold\n\t\t\t\t:class=\"stale ? [$style.cardHeading, $style.stale] : [$style.cardHeading]\"\n\t\t\t\tdata-test-id=\"worker-card-name\"\n\t\t\t>\n\t\t\t\tName: {{ worker.workerId }} ({{ worker.hostname }}) <br />\n\t\t\t\tAverage Load: {{ averageWorkerLoadFromLoadsAsString(worker.loadAvg ?? [0]) }} | Free Memory:\n\t\t\t\t{{ memAsGb(worker.freeMem).toFixed(2) }}GB / {{ memAsGb(worker.totalMem).toFixed(2) }}GB\n\t\t\t\t{{ stale ? ' (stale)' : '' }}\n\t\t\t</n8n-heading>\n\t\t</template>\n\t\t<div :class=\"$style.cardDescription\">\n\t\t\t<n8n-text color=\"text-light\" size=\"small\" :class=\"$style.container\">\n\t\t\t\t<span\n\t\t\t\t\t>{{ $locale.baseText('workerList.item.lastUpdated') }} {{ secondsSinceLastUpdateString }}s\n\t\t\t\t\tago | n8n-Version: {{ worker.version }} | Architecture: {{ worker.arch }} (\n\t\t\t\t\t{{ worker.platform }}) | Uptime: {{ upTime(worker.uptime) }}</span\n\t\t\t\t>\n\t\t\t\t<WorkerJobAccordion :items=\"worker.runningJobsSummary\" />\n\t\t\t\t<WorkerNetAccordion :items=\"sortedWorkerInterfaces\" />\n\t\t\t\t<WorkerChartsAccordion :worker-id=\"worker.workerId\" />\n\t\t\t</n8n-text>\n\t\t</div>\n\t\t<template #append>\n\t\t\t<div ref=\"cardActions\" :class=\"$style.cardActions\">\n\t\t\t\t<!-- For future Worker actions -->\n\t\t\t</div>\n\t\t</template>\n\t</n8n-card>\n</template>\n\n<script setup lang=\"ts\">\nimport { useOrchestrationStore } from '@/stores/orchestration.store';\nimport type { IPushDataWorkerStatusPayload } from '@/Interface';\nimport { computed, onMounted, onBeforeUnmount, ref } from 'vue';\nimport { averageWorkerLoadFromLoadsAsString, memAsGb } from '../../utils/workerUtils';\nimport WorkerJobAccordion from './WorkerJobAccordion.ee.vue';\nimport WorkerNetAccordion from './WorkerNetAccordion.ee.vue';\nimport WorkerChartsAccordion from './WorkerChartsAccordion.ee.vue';\n\nlet interval: NodeJS.Timer;\n\nconst orchestrationStore = useOrchestrationStore();\n\nconst props = defineProps<{\n\tworkerId: string;\n}>();\n\nconst secondsSinceLastUpdateString = ref<string>('0');\nconst stale = ref<boolean>(false);\n\nconst worker = computed((): IPushDataWorkerStatusPayload | undefined => {\n\treturn orchestrationStore.getWorkerStatus(props.workerId);\n});\n\nconst sortedWorkerInterfaces = computed(\n\t() => worker.value?.interfaces.toSorted((a, b) => a.family.localeCompare(b.family)) ?? [],\n);\n\nfunction upTime(seconds: number): string {\n\tconst days = Math.floor(seconds / (3600 * 24));\n\tseconds -= days * 3600 * 24;\n\tconst hrs = Math.floor(seconds / 3600);\n\tseconds -= hrs * 3600;\n\tconst mnts = Math.floor(seconds / 60);\n\tseconds -= mnts * 60;\n\treturn `${days}d ${hrs}h ${mnts}m ${Math.floor(seconds)}s`;\n}\n\nonMounted(() => {\n\tinterval = setInterval(() => {\n\t\tconst lastUpdated = orchestrationStore.getWorkerLastUpdated(props.workerId);\n\t\tif (!lastUpdated) {\n\t\t\treturn;\n\t\t}\n\t\tconst secondsSinceLastUpdate = Math.ceil((Date.now() - lastUpdated) / 1000);\n\t\tstale.value = secondsSinceLastUpdate > 10;\n\t\tsecondsSinceLastUpdateString.value = secondsSinceLastUpdate.toFixed(0);\n\t}, 500);\n});\n\nonBeforeUnmount(() => {\n\tclearInterval(interval);\n});\n</script>\n\n<style lang=\"scss\" module>\n.container {\n\twidth: 100%;\n}\n\n.cardLink {\n\ttransition: box-shadow 0.3s ease;\n\tcursor: pointer;\n\tpadding: 0;\n\talign-items: stretch;\n\n\t&:hover {\n\t\tbox-shadow: 0 2px 8px rgba(#441c17, 0.1);\n\t}\n}\n\n.cardHeading {\n\tfont-size: var(--font-size-s);\n\tword-break: break-word;\n\tpadding: var(--spacing-s) 0 0 var(--spacing-s);\n}\n\n.stale {\n\topacity: 0.5;\n}\n\n.cardDescription {\n\tmin-height: 19px;\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0 0 var(--spacing-s) var(--spacing-s);\n}\n\n.cardActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\talign-items: center;\n\talign-self: stretch;\n\tpadding: 0 var(--spacing-s) 0 0;\n\tcursor: default;\n}\n</style>\n","<template>\n\t<div>\n\t\t<PushConnectionTracker class=\"actions\"></PushConnectionTracker>\n\t\t<div :class=\"$style.workerListHeader\">\n\t\t\t<n8n-heading tag=\"h1\" size=\"2xlarge\">{{ pageTitle }}</n8n-heading>\n\t\t</div>\n\t\t<div v-if=\"!initialStatusReceived\">\n\t\t\t<n8n-spinner />\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<div v-if=\"workerIds.length === 0\">{{ $locale.baseText('workerList.empty') }}</div>\n\t\t\t<div v-else>\n\t\t\t\t<div v-for=\"workerId in workerIds\" :key=\"workerId\" :class=\"$style.card\">\n\t\t\t\t\t<WorkerCard :worker-id=\"workerId\" data-test-id=\"worker-card\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport PushConnectionTracker from '@/components/PushConnectionTracker.vue';\nimport { useI18n } from '@/composables/useI18n';\nimport { useToast } from '@/composables/useToast';\nimport type { IPushDataWorkerStatusPayload } from '@/Interface';\nimport type { ExecutionStatus } from 'n8n-workflow';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useOrchestrationStore } from '@/stores/orchestration.store';\nimport { setPageTitle } from '@/utils/htmlUtils';\nimport WorkerCard from './Workers/WorkerCard.ee.vue';\nimport { usePushConnection } from '@/composables/usePushConnection';\nimport { useRouter } from 'vue-router';\nimport { usePushConnectionStore } from '@/stores/pushConnection.store';\nimport { useRootStore } from '@/stores/root.store';\n\n// eslint-disable-next-line import/no-default-export\nexport default defineComponent({\n\tname: 'WorkerList',\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/naming-convention\n\tcomponents: { PushConnectionTracker, WorkerCard },\n\tprops: {\n\t\tautoRefreshEnabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tsetup() {\n\t\tconst router = useRouter();\n\t\tconst i18n = useI18n();\n\t\tconst pushConnection = usePushConnection({ router });\n\n\t\treturn {\n\t\t\ti18n,\n\t\t\tpushConnection,\n\t\t\t...useToast(),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useRootStore, useUIStore, usePushConnectionStore, useOrchestrationStore),\n\t\tcombinedWorkers(): IPushDataWorkerStatusPayload[] {\n\t\t\tconst returnData: IPushDataWorkerStatusPayload[] = [];\n\t\t\tfor (const workerId in this.orchestrationManagerStore.workers) {\n\t\t\t\treturnData.push(this.orchestrationManagerStore.workers[workerId]);\n\t\t\t}\n\t\t\treturn returnData;\n\t\t},\n\t\tinitialStatusReceived(): boolean {\n\t\t\treturn this.orchestrationManagerStore.initialStatusReceived;\n\t\t},\n\t\tworkerIds(): string[] {\n\t\t\treturn Object.keys(this.orchestrationManagerStore.workers);\n\t\t},\n\t\tpageTitle() {\n\t\t\treturn this.i18n.baseText('workerList.pageTitle');\n\t\t},\n\t},\n\tmounted() {\n\t\tsetPageTitle(`n8n - ${this.pageTitle}`);\n\n\t\tthis.$telemetry.track('User viewed worker view', {\n\t\t\tinstance_id: this.rootStore.instanceId,\n\t\t});\n\t},\n\tbeforeMount() {\n\t\tif (window.Cypress !== undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.pushConnection.initialize();\n\t\tthis.pushStore.pushConnect();\n\t\tthis.orchestrationManagerStore.startWorkerStatusPolling();\n\t},\n\tbeforeUnmount() {\n\t\tif (window.Cypress !== undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.orchestrationManagerStore.stopWorkerStatusPolling();\n\t\tthis.pushStore.pushDisconnect();\n\t\tthis.pushConnection.terminate();\n\t},\n\tmethods: {\n\t\taverageLoadAvg(loads: number[]) {\n\t\t\treturn (loads.reduce((prev, curr) => prev + curr, 0) / loads.length).toFixed(2);\n\t\t},\n\t\tgetStatus(payload: IPushDataWorkerStatusPayload): ExecutionStatus {\n\t\t\tif (payload.runningJobsSummary.length > 0) {\n\t\t\t\treturn 'running';\n\t\t\t} else {\n\t\t\t\treturn 'success';\n\t\t\t}\n\t\t},\n\t\tgetRowClass(payload: IPushDataWorkerStatusPayload): string {\n\t\t\treturn [this.$style.execRow, this.$style[this.getStatus(payload)]].join(' ');\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.workerListHeader {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tmargin-bottom: var(--spacing-s);\n}\n\n.card {\n\tmargin-bottom: var(--spacing-s);\n}\n\n.tableLoader {\n\twidth: 100%;\n\theight: 48px;\n\tmargin-bottom: var(--spacing-2xs);\n}\n</style>\n","<template>\n\t<WorkerList\n\t\tv-if=\"settingsStore.isQueueModeEnabled && settingsStore.isWorkerViewAvailable\"\n\t\tdata-test-id=\"worker-view-licensed\"\n\t/>\n\t<n8n-action-box\n\t\tv-else\n\t\tdata-test-id=\"worker-view-unlicensed\"\n\t\t:class=\"$style.actionBox\"\n\t\t:description=\"$locale.baseText('workerList.actionBox.description')\"\n\t\t:button-text=\"$locale.baseText('workerList.actionBox.buttonText')\"\n\t\t@click:button=\"goToUpgrade\"\n\t>\n\t\t<template #heading>\n\t\t\t<span>{{ $locale.baseText('workerList.actionBox.title') }}</span>\n\t\t</template>\n\t\t<template #description>\n\t\t\t{{ $locale.baseText('workerList.actionBox.description') }}\n\t\t\t<a :href=\"$locale.baseText('workerList.docs.url')\" target=\"_blank\">\n\t\t\t\t{{ $locale.baseText('workerList.actionBox.description.link') }}\n\t\t\t</a>\n\t\t</template>\n\t</n8n-action-box>\n</template>\n\n<script setup lang=\"ts\">\nimport WorkerList from '@/components/WorkerList.ee.vue';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useSettingsStore } from '@/stores/settings.store';\n\nconst settingsStore = useSettingsStore();\nconst uiStore = useUIStore();\n\nconst goToUpgrade = () => {\n\tvoid uiStore.goToUpgrade('worker-view', 'upgrade-worker-view');\n};\n</script>\n\n<style module lang=\"scss\">\n.actionBox {\n\tmargin: var(--spacing-2xl) 0 0;\n}\n</style>\n"],"names":["averageWorkerLoadFromLoads","loads","prev","curr","averageWorkerLoadFromLoadsAsString","memAsGb","mem","expanded","ref","__props","toggle","props","runningSince","started","seconds","hrs","mnts","i18n","useI18n","clipboard","useClipboard","showMessage","useToast","onCopyToClipboard","content","blankDataSet","label","color","prefill","WORKER_HISTORY_LENGTH","orchestrationStore","useOrchestrationStore","chartRefJobs","chartRefCPU","chartRefMemory","optionsBase","optionsJobs","optionsCPU","_a","maxMemory","_b","optionsMemory","_c","dataJobs","dataCPU","dataMemory","name","store","prefillCount","newDataJobs","newDataCPU","newDataMemory","item","interval","secondsSinceLastUpdateString","stale","worker","computed","sortedWorkerInterfaces","a","b","upTime","days","onMounted","lastUpdated","secondsSinceLastUpdate","onBeforeUnmount","_sfc_main$1","defineComponent","PushConnectionTracker","WorkerCard","router","useRouter","pushConnection","usePushConnection","mapStores","useRootStore","useUIStore","usePushConnectionStore","returnData","workerId","setPageTitle","payload","_hoisted_1","_hoisted_2","_resolveComponent","_openBlock","_createElementBlock","_createVNode","_component_PushConnectionTracker","_createElementVNode","_normalizeClass","_ctx","_component_n8n_heading","_createTextVNode","_toDisplayString","initialStatusReceived","_hoisted_3","workerIds","_hoisted_4","_Fragment","_renderList","_component_WorkerCard","_component_n8n_spinner","settingsStore","useSettingsStore","uiStore","goToUpgrade"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as m,j as g,e as h,dt as A}from"./index-
|
|
2
|
-
//# sourceMappingURL=WorkflowActivator-
|
|
1
|
+
import{u as m,j as g,e as h,dt as A}from"./index-1OxaEeO3.js";import{u as T}from"./useWorkflowActivate-npf1npdP.js";import{m as b}from"./pinia-sugP77Im.js";import{G as W,ag as s,aq as y,l as r,m as d,p as i,M as w,O as e,S as f,T as l,I as S,U as a,P as _,R as $}from"./vendor-Dv5OeN6t.js";import{_ as N}from"./n8n-4UEsHtUL.js";const C=W({name:"WorkflowActivator",props:["workflowActive","workflowId"],setup(){return{...m(),...T()}},computed:{...b(h,g),nodesIssuesExist(){return this.workflowsStore.nodesIssuesExist},isWorkflowActive(){return this.workflowsStore.activeWorkflows.includes(this.workflowId)},couldNotBeStarted(){return this.workflowActive===!0&&this.isWorkflowActive!==this.workflowActive},getActiveColor(){return this.couldNotBeStarted?"#ff4949":"#13ce66"},isCurrentWorkflow(){return this.workflowsStore.workflowId===this.workflowId},disabled(){return!this.workflowId||this.isCurrentWorkflow?!this.workflowActive&&!this.containsTrigger:!1},containsTrigger(){return A(this.workflowsStore.workflowTriggerNodes).length>0}},methods:{async activeChanged(o){return await this.updateWorkflowActivation(this.workflowId,o)},async displayActivationError(){let o;try{const t=await this.workflowsStore.getActivationError(this.workflowId);t===void 0?o=this.$locale.baseText("workflowActivator.showMessage.displayActivationError.message.errorDataUndefined"):o=this.$locale.baseText("workflowActivator.showMessage.displayActivationError.message.errorDataNotUndefined",{interpolate:{message:t}})}catch{o=this.$locale.baseText("workflowActivator.showMessage.displayActivationError.message.catchBlock")}this.showMessage({title:this.$locale.baseText("workflowActivator.showMessage.displayActivationError.title"),message:o,type:"warning",duration:0,dangerouslyUseHTMLString:!0})}}}),I="_activeStatusText_nj9sv_1",E={activeStatusText:I},M={class:"workflow-activator"},B={key:0,class:"could-not-be-started"},U=["innerHTML"];function D(o,t,x,H,z,L){const n=s("n8n-text"),v=s("el-switch"),c=s("n8n-tooltip"),k=s("font-awesome-icon"),u=y("loading");return r(),d("div",M,[i("div",{class:S(o.$style.activeStatusText),"data-test-id":"workflow-activator-status"},[o.workflowActive?(r(),w(n,{key:0,color:o.couldNotBeStarted?"danger":"success",size:"small",bold:""},{default:e(()=>[f(l(o.$locale.baseText("workflowActivator.active")),1)]),_:1},8,["color"])):(r(),w(n,{key:1,color:"text-base",size:"small",bold:""},{default:e(()=>[f(l(o.$locale.baseText("workflowActivator.inactive")),1)]),_:1}))],2),a(c,{disabled:!o.disabled,placement:"bottom"},{content:e(()=>[i("div",null,l(o.$locale.baseText("workflowActivator.thisWorkflowHasNoTriggerNodes")),1)]),default:e(()=>[_(a(v,{"model-value":o.workflowActive,title:o.workflowActive?o.$locale.baseText("workflowActivator.deactivateWorkflow"):o.$locale.baseText("workflowActivator.activateWorkflow"),disabled:o.disabled||o.updatingWorkflowActivation,"active-color":o.getActiveColor,"inactive-color":"#8899AA","data-test-id":"workflow-activate-switch","onUpdate:modelValue":o.activeChanged},null,8,["model-value","title","disabled","active-color","onUpdate:modelValue"]),[[u,o.updatingWorkflowActivation]])]),_:1},8,["disabled"]),o.couldNotBeStarted?(r(),d("div",B,[a(c,{placement:"top"},{content:e(()=>[i("div",{onClick:t[0]||(t[0]=(...p)=>o.displayActivationError&&o.displayActivationError(...p)),innerHTML:o.$locale.baseText("workflowActivator.theWorkflowIsSetToBeActiveBut")},null,8,U)]),default:e(()=>[a(k,{icon:"exclamation-triangle",onClick:o.displayActivationError},null,8,["onClick"])]),_:1})])):$("",!0)])}const V={$style:E},R=N(C,[["render",D],["__cssModules",V],["__scopeId","data-v-e3b4fb0e"]]);export{R as W};
|
|
2
|
+
//# sourceMappingURL=WorkflowActivator-BXWURYao.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowActivator-
|
|
1
|
+
{"version":3,"file":"WorkflowActivator-BXWURYao.js","sources":["../../src/components/WorkflowActivator.vue"],"sourcesContent":["<template>\n\t<div class=\"workflow-activator\">\n\t\t<div :class=\"$style.activeStatusText\" data-test-id=\"workflow-activator-status\">\n\t\t\t<n8n-text\n\t\t\t\tv-if=\"workflowActive\"\n\t\t\t\t:color=\"couldNotBeStarted ? 'danger' : 'success'\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tbold\n\t\t\t>\n\t\t\t\t{{ $locale.baseText('workflowActivator.active') }}\n\t\t\t</n8n-text>\n\t\t\t<n8n-text v-else color=\"text-base\" size=\"small\" bold>\n\t\t\t\t{{ $locale.baseText('workflowActivator.inactive') }}\n\t\t\t</n8n-text>\n\t\t</div>\n\t\t<n8n-tooltip :disabled=\"!disabled\" placement=\"bottom\">\n\t\t\t<template #content>\n\t\t\t\t<div>\n\t\t\t\t\t{{ $locale.baseText('workflowActivator.thisWorkflowHasNoTriggerNodes') }}\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<el-switch\n\t\t\t\tv-loading=\"updatingWorkflowActivation\"\n\t\t\t\t:model-value=\"workflowActive\"\n\t\t\t\t:title=\"\n\t\t\t\t\tworkflowActive\n\t\t\t\t\t\t? $locale.baseText('workflowActivator.deactivateWorkflow')\n\t\t\t\t\t\t: $locale.baseText('workflowActivator.activateWorkflow')\n\t\t\t\t\"\n\t\t\t\t:disabled=\"disabled || updatingWorkflowActivation\"\n\t\t\t\t:active-color=\"getActiveColor\"\n\t\t\t\tinactive-color=\"#8899AA\"\n\t\t\t\tdata-test-id=\"workflow-activate-switch\"\n\t\t\t\t@update:model-value=\"activeChanged\"\n\t\t\t>\n\t\t\t</el-switch>\n\t\t</n8n-tooltip>\n\n\t\t<div v-if=\"couldNotBeStarted\" class=\"could-not-be-started\">\n\t\t\t<n8n-tooltip placement=\"top\">\n\t\t\t\t<template #content>\n\t\t\t\t\t<div\n\t\t\t\t\t\t@click=\"displayActivationError\"\n\t\t\t\t\t\tv-html=\"$locale.baseText('workflowActivator.theWorkflowIsSetToBeActiveBut')\"\n\t\t\t\t\t></div>\n\t\t\t\t</template>\n\t\t\t\t<font-awesome-icon icon=\"exclamation-triangle\" @click=\"displayActivationError\" />\n\t\t\t</n8n-tooltip>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { useToast } from '@/composables/useToast';\nimport { useWorkflowActivate } from '@/composables/useWorkflowActivate';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport { getActivatableTriggerNodes } from '@/utils/nodeTypesUtils';\n\nexport default defineComponent({\n\tname: 'WorkflowActivator',\n\tprops: ['workflowActive', 'workflowId'],\n\tsetup() {\n\t\treturn {\n\t\t\t...useToast(),\n\t\t\t...useWorkflowActivate(),\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore, useWorkflowsStore),\n\t\tnodesIssuesExist(): boolean {\n\t\t\treturn this.workflowsStore.nodesIssuesExist;\n\t\t},\n\t\tisWorkflowActive(): boolean {\n\t\t\tconst activeWorkflows = this.workflowsStore.activeWorkflows;\n\t\t\treturn activeWorkflows.includes(this.workflowId);\n\t\t},\n\t\tcouldNotBeStarted(): boolean {\n\t\t\treturn this.workflowActive === true && this.isWorkflowActive !== this.workflowActive;\n\t\t},\n\t\tgetActiveColor(): string {\n\t\t\tif (this.couldNotBeStarted) {\n\t\t\t\treturn '#ff4949';\n\t\t\t}\n\t\t\treturn '#13ce66';\n\t\t},\n\t\tisCurrentWorkflow(): boolean {\n\t\t\treturn this.workflowsStore.workflowId === this.workflowId;\n\t\t},\n\t\tdisabled(): boolean {\n\t\t\tconst isNewWorkflow = !this.workflowId;\n\t\t\tif (isNewWorkflow || this.isCurrentWorkflow) {\n\t\t\t\treturn !this.workflowActive && !this.containsTrigger;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tcontainsTrigger(): boolean {\n\t\t\tconst foundTriggers = getActivatableTriggerNodes(this.workflowsStore.workflowTriggerNodes);\n\t\t\treturn foundTriggers.length > 0;\n\t\t},\n\t},\n\tmethods: {\n\t\tasync activeChanged(newActiveState: boolean) {\n\t\t\treturn await this.updateWorkflowActivation(this.workflowId, newActiveState);\n\t\t},\n\t\tasync displayActivationError() {\n\t\t\tlet errorMessage: string;\n\t\t\ttry {\n\t\t\t\tconst errorData = await this.workflowsStore.getActivationError(this.workflowId);\n\n\t\t\t\tif (errorData === undefined) {\n\t\t\t\t\terrorMessage = this.$locale.baseText(\n\t\t\t\t\t\t'workflowActivator.showMessage.displayActivationError.message.errorDataUndefined',\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = this.$locale.baseText(\n\t\t\t\t\t\t'workflowActivator.showMessage.displayActivationError.message.errorDataNotUndefined',\n\t\t\t\t\t\t{ interpolate: { message: errorData } },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\terrorMessage = this.$locale.baseText(\n\t\t\t\t\t'workflowActivator.showMessage.displayActivationError.message.catchBlock',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.showMessage({\n\t\t\t\ttitle: this.$locale.baseText('workflowActivator.showMessage.displayActivationError.title'),\n\t\t\t\tmessage: errorMessage,\n\t\t\t\ttype: 'warning',\n\t\t\t\tduration: 0,\n\t\t\t\tdangerouslyUseHTMLString: true,\n\t\t\t});\n\t\t},\n\t},\n});\n</script>\n\n<style lang=\"scss\" module>\n.activeStatusText {\n\twidth: 64px; // Required to avoid jumping when changing active state\n\tpadding-right: var(--spacing-2xs);\n\tbox-sizing: border-box;\n\tdisplay: inline-block;\n\ttext-align: right;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n.workflow-activator {\n\tdisplay: inline-flex;\n\tflex-wrap: nowrap;\n\talign-items: center;\n}\n\n.could-not-be-started {\n\tdisplay: inline-block;\n\tcolor: var(--color-text-danger);\n\tmargin-left: 0.5em;\n}\n</style>\n"],"names":["_sfc_main","defineComponent","useToast","useWorkflowActivate","mapStores","useUIStore","useWorkflowsStore","getActivatableTriggerNodes","newActiveState","errorMessage","errorData","_hoisted_1","_hoisted_2","_directive_loading","_resolveDirective","_openBlock","_createElementVNode","_normalizeClass","_ctx","workflowActive","_createBlock","_component_n8n_text","_createTextVNode","_toDisplayString","_createVNode","_component_n8n_tooltip","_withCtx","_withDirectives","_component_el_switch","$locale","disabled","updatingWorkflowActivation","couldNotBeStarted","_createElementBlock","_cache","args","_hoisted_3","displayActivationError","_createCommentVNode"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{m as k}from"./pinia-sugP77Im.js";import{G as h,aH as v,ag as a,l as x,M as E,O as t,p as u,S as n,T as i,U as r,a2 as d,I as f}from"./vendor-Dv5OeN6t.js";import{q as g,p as m,j as T,e as y,b as W,l as C,P as p,C as c}from"./index-
|
|
2
|
-
//# sourceMappingURL=WorkflowExecutionsInfoAccordion-
|
|
1
|
+
import{m as k}from"./pinia-sugP77Im.js";import{G as h,aH as v,ag as a,l as x,M as E,O as t,p as u,S as n,T as i,U as r,a2 as d,I as f}from"./vendor-Dv5OeN6t.js";import{q as g,p as m,j as T,e as y,b as W,l as C,P as p,C as c}from"./index-1OxaEeO3.js";import{h as I,_}from"./n8n-4UEsHtUL.js";const b=h({name:"WorkflowExecutionsInfoAccordion",props:{initiallyExpanded:{type:Boolean,default:!1}},setup(){const e=v();return{workflowHelpers:g({router:e})}},data(){return{defaultValues:{saveFailedExecutions:"all",saveSuccessfulExecutions:"all",saveManualExecutions:!1},workflowSaveSettings:{saveFailedExecutions:!1,saveSuccessfulExecutions:!1,saveTestExecutions:!1}}},computed:{...k(C,W,y,T,m),accordionItems(){return[{id:"productionExecutions",label:this.$locale.baseText("executionsLandingPage.emptyState.accordion.productionExecutions"),icon:this.productionExecutionsIcon.icon,iconColor:this.productionExecutionsIcon.color,tooltip:this.productionExecutionsStatus==="unknown"?this.$locale.baseText("executionsLandingPage.emptyState.accordion.productionExecutionsWarningTooltip"):null},{id:"manualExecutions",label:this.$locale.baseText("executionsLandingPage.emptyState.accordion.testExecutions"),icon:this.workflowSaveSettings.saveTestExecutions?"check":"times",iconColor:this.workflowSaveSettings.saveTestExecutions?"success":"danger"}]},shouldExpandAccordion(){return this.initiallyExpanded?!this.workflowSaveSettings.saveFailedExecutions||!this.workflowSaveSettings.saveSuccessfulExecutions||!this.workflowSaveSettings.saveTestExecutions:!1},productionExecutionsIcon(){return this.productionExecutionsStatus==="saving"?{icon:"check",color:"success"}:this.productionExecutionsStatus==="not-saving"?{icon:"times",color:"danger"}:{icon:"exclamation-triangle",color:"warning"}},productionExecutionsStatus(){return this.workflowSaveSettings.saveSuccessfulExecutions===this.workflowSaveSettings.saveFailedExecutions?this.workflowSaveSettings.saveSuccessfulExecutions?"saving":"not-saving":"unknown"},workflowSettings(){return I(this.workflowsStore.workflowSettings)},accordionIcon(){return!this.workflowSaveSettings.saveTestExecutions||this.productionExecutionsStatus!=="saving"?{icon:"exclamation-triangle",color:"warning"}:null},currentWorkflowId(){return this.workflowsStore.workflowId},isNewWorkflow(){return!this.currentWorkflowId||this.currentWorkflowId===p||this.currentWorkflowId==="new"},workflowName(){return this.workflowsStore.workflowName},currentWorkflowTagIds(){return this.workflowsStore.workflowTags}},watch:{workflowSettings(e){this.updateSettings(e)}},mounted(){this.defaultValues.saveFailedExecutions=this.settingsStore.saveDataErrorExecution,this.defaultValues.saveSuccessfulExecutions=this.settingsStore.saveDataSuccessExecution,this.defaultValues.saveManualExecutions=this.settingsStore.saveManualExecutions,this.updateSettings(this.workflowSettings)},methods:{updateSettings(e){this.workflowSaveSettings.saveFailedExecutions=e.saveDataErrorExecution===void 0?this.defaultValues.saveFailedExecutions==="all":e.saveDataErrorExecution==="all",this.workflowSaveSettings.saveSuccessfulExecutions=e.saveDataSuccessExecution===void 0?this.defaultValues.saveSuccessfulExecutions==="all":e.saveDataSuccessExecution==="all",this.workflowSaveSettings.saveTestExecutions=e.saveManualExecutions===void 0?this.defaultValues.saveManualExecutions:e.saveManualExecutions},onAccordionClick(e){e.target instanceof HTMLAnchorElement&&(e.preventDefault(),this.uiStore.openModal(c))},onItemTooltipClick(e,o){e==="productionExecutions"&&o.target instanceof HTMLAnchorElement&&(o.preventDefault(),this.uiStore.openModal(c))},openWorkflowSettings(){this.uiStore.openModal(c)},async onSaveWorkflowClick(){let e;if(this.currentWorkflowId!==p)e=this.currentWorkflowId;else if(this.$route.params.name&&this.$route.params.name!=="new"){const s=this.$route.params.name;e=Array.isArray(s)?s[0]:s}if(!e)return;await this.workflowHelpers.saveCurrentWorkflow({id:e,name:this.workflowName,tags:this.currentWorkflowTagIds})&&await this.npsSurveyStore.fetchPromptsData()}}}),$="_accordion_14pzb_1",L="_disabled_14pzb_27",M={accordion:$,disabled:L},D={class:"mt-2xs"};function A(e,o,s,P,V,F){const l=a("n8n-link"),w=a("n8n-tooltip"),S=a("n8n-info-accordion");return x(),E(S,{class:f([e.$style.accordion,"mt-2xl"]),title:e.$locale.baseText("executionsLandingPage.emptyState.accordion.title"),items:e.accordionItems,"initially-expanded":e.shouldExpandAccordion,"header-icon":e.accordionIcon,"onClick:body":e.onAccordionClick,onTooltipClick:e.onItemTooltipClick},{customContent:t(()=>[u("footer",D,[n(i(e.$locale.baseText("executionsLandingPage.emptyState.accordion.footer"))+" ",1),r(w,{disabled:!e.isNewWorkflow},{content:t(()=>[u("div",null,[r(l,{onClick:d(e.onSaveWorkflowClick,["prevent"])},{default:t(()=>[n(i(e.$locale.baseText("executionsLandingPage.emptyState.accordion.footer.tooltipLink")),1)]),_:1},8,["onClick"]),n(" "+i(e.$locale.baseText("executionsLandingPage.emptyState.accordion.footer.tooltipText")),1)])]),default:t(()=>[r(l,{class:f({[e.$style.disabled]:e.isNewWorkflow}),size:"small",onClick:d(e.openWorkflowSettings,["prevent"])},{default:t(()=>[n(i(e.$locale.baseText("executionsLandingPage.emptyState.accordion.footer.settingsLink")),1)]),_:1},8,["class","onClick"])]),_:1},8,["disabled"])])]),_:1},8,["class","title","items","initially-expanded","header-icon","onClick:body","onTooltipClick"])}const N={$style:M},B=_(b,[["render",A],["__cssModules",N]]);export{B as W};
|
|
2
|
+
//# sourceMappingURL=WorkflowExecutionsInfoAccordion-aldNazgt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutionsInfoAccordion-DJPF47om.js","sources":["../../src/components/executions/workflow/WorkflowExecutionsInfoAccordion.vue"],"sourcesContent":["<template>\n\t<n8n-info-accordion\n\t\t:class=\"[$style.accordion, 'mt-2xl']\"\n\t\t:title=\"$locale.baseText('executionsLandingPage.emptyState.accordion.title')\"\n\t\t:items=\"accordionItems\"\n\t\t:initially-expanded=\"shouldExpandAccordion\"\n\t\t:header-icon=\"accordionIcon\"\n\t\t@click:body=\"onAccordionClick\"\n\t\t@tooltip-click=\"onItemTooltipClick\"\n\t>\n\t\t<template #customContent>\n\t\t\t<footer class=\"mt-2xs\">\n\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.accordion.footer') }}\n\t\t\t\t<n8n-tooltip :disabled=\"!isNewWorkflow\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<n8n-link @click.prevent=\"onSaveWorkflowClick\">{{\n\t\t\t\t\t\t\t\t$locale.baseText('executionsLandingPage.emptyState.accordion.footer.tooltipLink')\n\t\t\t\t\t\t\t}}</n8n-link>\n\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t$locale.baseText('executionsLandingPage.emptyState.accordion.footer.tooltipText')\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-link\n\t\t\t\t\t\t:class=\"{ [$style.disabled]: isNewWorkflow }\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t@click.prevent=\"openWorkflowSettings\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.accordion.footer.settingsLink') }}\n\t\t\t\t\t</n8n-link>\n\t\t\t\t</n8n-tooltip>\n\t\t\t</footer>\n\t\t</template>\n\t</n8n-info-accordion>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport { useRouter } from 'vue-router';\nimport { useRootStore } from '@/stores/root.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { PLACEHOLDER_EMPTY_WORKFLOW_ID, WORKFLOW_SETTINGS_MODAL_KEY } from '@/constants';\nimport type { IWorkflowSettings } from 'n8n-workflow';\nimport { deepCopy } from 'n8n-workflow';\nimport { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';\nimport { useNpsSurveyStore } from '@/stores/npsSurvey.store';\n\ninterface IWorkflowSaveSettings {\n\tsaveFailedExecutions: boolean;\n\tsaveSuccessfulExecutions: boolean;\n\tsaveTestExecutions: boolean;\n}\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsInfoAccordion',\n\tprops: {\n\t\tinitiallyExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tsetup() {\n\t\tconst router = useRouter();\n\t\tconst workflowHelpers = useWorkflowHelpers({ router });\n\n\t\treturn {\n\t\t\tworkflowHelpers,\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdefaultValues: {\n\t\t\t\tsaveFailedExecutions: 'all',\n\t\t\t\tsaveSuccessfulExecutions: 'all',\n\t\t\t\tsaveManualExecutions: false,\n\t\t\t},\n\t\t\tworkflowSaveSettings: {\n\t\t\t\tsaveFailedExecutions: false,\n\t\t\t\tsaveSuccessfulExecutions: false,\n\t\t\t\tsaveTestExecutions: false,\n\t\t\t} as IWorkflowSaveSettings,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useRootStore, useSettingsStore, useUIStore, useWorkflowsStore, useNpsSurveyStore),\n\t\taccordionItems(): object[] {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'productionExecutions',\n\t\t\t\t\tlabel: this.$locale.baseText(\n\t\t\t\t\t\t'executionsLandingPage.emptyState.accordion.productionExecutions',\n\t\t\t\t\t),\n\t\t\t\t\ticon: this.productionExecutionsIcon.icon,\n\t\t\t\t\ticonColor: this.productionExecutionsIcon.color,\n\t\t\t\t\ttooltip:\n\t\t\t\t\t\tthis.productionExecutionsStatus === 'unknown'\n\t\t\t\t\t\t\t? this.$locale.baseText(\n\t\t\t\t\t\t\t\t\t'executionsLandingPage.emptyState.accordion.productionExecutionsWarningTooltip',\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: null,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'manualExecutions',\n\t\t\t\t\tlabel: this.$locale.baseText('executionsLandingPage.emptyState.accordion.testExecutions'),\n\t\t\t\t\ticon: this.workflowSaveSettings.saveTestExecutions ? 'check' : 'times',\n\t\t\t\t\ticonColor: this.workflowSaveSettings.saveTestExecutions ? 'success' : 'danger',\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t\tshouldExpandAccordion(): boolean {\n\t\t\tif (!this.initiallyExpanded) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t!this.workflowSaveSettings.saveFailedExecutions ||\n\t\t\t\t!this.workflowSaveSettings.saveSuccessfulExecutions ||\n\t\t\t\t!this.workflowSaveSettings.saveTestExecutions\n\t\t\t);\n\t\t},\n\t\tproductionExecutionsIcon(): { icon: string; color: string } {\n\t\t\tif (this.productionExecutionsStatus === 'saving') {\n\t\t\t\treturn { icon: 'check', color: 'success' };\n\t\t\t} else if (this.productionExecutionsStatus === 'not-saving') {\n\t\t\t\treturn { icon: 'times', color: 'danger' };\n\t\t\t}\n\t\t\treturn { icon: 'exclamation-triangle', color: 'warning' };\n\t\t},\n\t\tproductionExecutionsStatus(): string {\n\t\t\tif (\n\t\t\t\tthis.workflowSaveSettings.saveSuccessfulExecutions ===\n\t\t\t\tthis.workflowSaveSettings.saveFailedExecutions\n\t\t\t) {\n\t\t\t\tif (this.workflowSaveSettings.saveSuccessfulExecutions) {\n\t\t\t\t\treturn 'saving';\n\t\t\t\t}\n\t\t\t\treturn 'not-saving';\n\t\t\t} else {\n\t\t\t\treturn 'unknown';\n\t\t\t}\n\t\t},\n\t\tworkflowSettings(): IWorkflowSettings {\n\t\t\tconst workflowSettings = deepCopy(this.workflowsStore.workflowSettings);\n\t\t\treturn workflowSettings;\n\t\t},\n\t\taccordionIcon(): { icon: string; color: string } | null {\n\t\t\tif (\n\t\t\t\t!this.workflowSaveSettings.saveTestExecutions ||\n\t\t\t\tthis.productionExecutionsStatus !== 'saving'\n\t\t\t) {\n\t\t\t\treturn { icon: 'exclamation-triangle', color: 'warning' };\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tcurrentWorkflowId(): string {\n\t\t\treturn this.workflowsStore.workflowId;\n\t\t},\n\t\tisNewWorkflow(): boolean {\n\t\t\treturn (\n\t\t\t\t!this.currentWorkflowId ||\n\t\t\t\tthis.currentWorkflowId === PLACEHOLDER_EMPTY_WORKFLOW_ID ||\n\t\t\t\tthis.currentWorkflowId === 'new'\n\t\t\t);\n\t\t},\n\t\tworkflowName(): string {\n\t\t\treturn this.workflowsStore.workflowName;\n\t\t},\n\t\tcurrentWorkflowTagIds(): string[] {\n\t\t\treturn this.workflowsStore.workflowTags;\n\t\t},\n\t},\n\twatch: {\n\t\tworkflowSettings(newSettings: IWorkflowSettings) {\n\t\t\tthis.updateSettings(newSettings);\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.defaultValues.saveFailedExecutions = this.settingsStore.saveDataErrorExecution;\n\t\tthis.defaultValues.saveSuccessfulExecutions = this.settingsStore.saveDataSuccessExecution;\n\t\tthis.defaultValues.saveManualExecutions = this.settingsStore.saveManualExecutions;\n\t\tthis.updateSettings(this.workflowSettings);\n\t},\n\tmethods: {\n\t\tupdateSettings(workflowSettings: IWorkflowSettings): void {\n\t\t\tthis.workflowSaveSettings.saveFailedExecutions =\n\t\t\t\tworkflowSettings.saveDataErrorExecution === undefined\n\t\t\t\t\t? this.defaultValues.saveFailedExecutions === 'all'\n\t\t\t\t\t: workflowSettings.saveDataErrorExecution === 'all';\n\t\t\tthis.workflowSaveSettings.saveSuccessfulExecutions =\n\t\t\t\tworkflowSettings.saveDataSuccessExecution === undefined\n\t\t\t\t\t? this.defaultValues.saveSuccessfulExecutions === 'all'\n\t\t\t\t\t: workflowSettings.saveDataSuccessExecution === 'all';\n\t\t\tthis.workflowSaveSettings.saveTestExecutions =\n\t\t\t\tworkflowSettings.saveManualExecutions === undefined\n\t\t\t\t\t? this.defaultValues.saveManualExecutions\n\t\t\t\t\t: (workflowSettings.saveManualExecutions as boolean);\n\t\t},\n\t\tonAccordionClick(event: MouseEvent): void {\n\t\t\tif (event.target instanceof HTMLAnchorElement) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);\n\t\t\t}\n\t\t},\n\t\tonItemTooltipClick(item: string, event: MouseEvent): void {\n\t\t\tif (item === 'productionExecutions' && event.target instanceof HTMLAnchorElement) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);\n\t\t\t}\n\t\t},\n\t\topenWorkflowSettings(): void {\n\t\t\tthis.uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);\n\t\t},\n\t\tasync onSaveWorkflowClick(): Promise<void> {\n\t\t\tlet currentId: string | undefined = undefined;\n\t\t\tif (this.currentWorkflowId !== PLACEHOLDER_EMPTY_WORKFLOW_ID) {\n\t\t\t\tcurrentId = this.currentWorkflowId;\n\t\t\t} else if (this.$route.params.name && this.$route.params.name !== 'new') {\n\t\t\t\tconst routeName = this.$route.params.name;\n\t\t\t\tcurrentId = Array.isArray(routeName) ? routeName[0] : routeName;\n\t\t\t}\n\t\t\tif (!currentId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst saved = await this.workflowHelpers.saveCurrentWorkflow({\n\t\t\t\tid: currentId,\n\t\t\t\tname: this.workflowName,\n\t\t\t\ttags: this.currentWorkflowTagIds,\n\t\t\t});\n\t\t\tif (saved) {\n\t\t\t\tawait this.npsSurveyStore.fetchPromptsData();\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.accordion {\n\tbackground: none;\n\twidth: 320px;\n\n\t// Accordion header\n\t& > div:nth-child(1) {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tpadding: var(--spacing-xs);\n\t\twidth: 100%;\n\t\tuser-select: none;\n\t\tcolor: var(--color-text-base) !important;\n\t}\n\n\t// Accordion description\n\t& > div:nth-child(2) {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t\tpadding: 0 var(--spacing-l) var(--spacing-s) !important;\n\n\t\tspan {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\tfooter {\n\t\ttext-align: left;\n\t\twidth: 100%;\n\t\tfont-size: var(--font-size-2xs);\n\t}\n\n\t.disabled a {\n\t\tcolor: currentColor;\n\t\tcursor: not-allowed;\n\t\topacity: 0.5;\n\t\ttext-decoration: none;\n\t}\n}\n</style>\n"],"names":["_sfc_main","defineComponent","router","useRouter","useWorkflowHelpers","mapStores","useRootStore","useSettingsStore","useUIStore","useWorkflowsStore","useNpsSurveyStore","deepCopy","PLACEHOLDER_EMPTY_WORKFLOW_ID","newSettings","workflowSettings","event","WORKFLOW_SETTINGS_MODAL_KEY","item","currentId","routeName","_component_n8n_info_accordion","_resolveComponent","_openBlock","_createBlock","accordionItems","_ctx","shouldExpandAccordion","onAccordionClick","onItemTooltipClick","_withCtx","_createElementVNode","_hoisted_1","_createTextVNode","isNewWorkflow","_createVNode","_component_n8n_tooltip","onSaveWorkflowClick","_withModifiers","_toDisplayString","_component_n8n_link","_normalizeClass","openWorkflowSettings"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkflowExecutionsInfoAccordion-aldNazgt.js","sources":["../../src/components/executions/workflow/WorkflowExecutionsInfoAccordion.vue"],"sourcesContent":["<template>\n\t<n8n-info-accordion\n\t\t:class=\"[$style.accordion, 'mt-2xl']\"\n\t\t:title=\"$locale.baseText('executionsLandingPage.emptyState.accordion.title')\"\n\t\t:items=\"accordionItems\"\n\t\t:initially-expanded=\"shouldExpandAccordion\"\n\t\t:header-icon=\"accordionIcon\"\n\t\t@click:body=\"onAccordionClick\"\n\t\t@tooltip-click=\"onItemTooltipClick\"\n\t>\n\t\t<template #customContent>\n\t\t\t<footer class=\"mt-2xs\">\n\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.accordion.footer') }}\n\t\t\t\t<n8n-tooltip :disabled=\"!isNewWorkflow\">\n\t\t\t\t\t<template #content>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<n8n-link @click.prevent=\"onSaveWorkflowClick\">{{\n\t\t\t\t\t\t\t\t$locale.baseText('executionsLandingPage.emptyState.accordion.footer.tooltipLink')\n\t\t\t\t\t\t\t}}</n8n-link>\n\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t$locale.baseText('executionsLandingPage.emptyState.accordion.footer.tooltipText')\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<n8n-link\n\t\t\t\t\t\t:class=\"{ [$style.disabled]: isNewWorkflow }\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t@click.prevent=\"openWorkflowSettings\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.accordion.footer.settingsLink') }}\n\t\t\t\t\t</n8n-link>\n\t\t\t\t</n8n-tooltip>\n\t\t\t</footer>\n\t\t</template>\n\t</n8n-info-accordion>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\nimport { mapStores } from 'pinia';\nimport { useRouter } from 'vue-router';\nimport { useRootStore } from '@/stores/root.store';\nimport { useSettingsStore } from '@/stores/settings.store';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { PLACEHOLDER_EMPTY_WORKFLOW_ID, WORKFLOW_SETTINGS_MODAL_KEY } from '@/constants';\nimport type { IWorkflowSettings } from 'n8n-workflow';\nimport { deepCopy } from 'n8n-workflow';\nimport { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';\nimport { useNpsSurveyStore } from '@/stores/npsSurvey.store';\n\ninterface IWorkflowSaveSettings {\n\tsaveFailedExecutions: boolean;\n\tsaveSuccessfulExecutions: boolean;\n\tsaveTestExecutions: boolean;\n}\n\nexport default defineComponent({\n\tname: 'WorkflowExecutionsInfoAccordion',\n\tprops: {\n\t\tinitiallyExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tsetup() {\n\t\tconst router = useRouter();\n\t\tconst workflowHelpers = useWorkflowHelpers({ router });\n\n\t\treturn {\n\t\t\tworkflowHelpers,\n\t\t};\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdefaultValues: {\n\t\t\t\tsaveFailedExecutions: 'all',\n\t\t\t\tsaveSuccessfulExecutions: 'all',\n\t\t\t\tsaveManualExecutions: false,\n\t\t\t},\n\t\t\tworkflowSaveSettings: {\n\t\t\t\tsaveFailedExecutions: false,\n\t\t\t\tsaveSuccessfulExecutions: false,\n\t\t\t\tsaveTestExecutions: false,\n\t\t\t} as IWorkflowSaveSettings,\n\t\t};\n\t},\n\tcomputed: {\n\t\t...mapStores(useRootStore, useSettingsStore, useUIStore, useWorkflowsStore, useNpsSurveyStore),\n\t\taccordionItems(): object[] {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tid: 'productionExecutions',\n\t\t\t\t\tlabel: this.$locale.baseText(\n\t\t\t\t\t\t'executionsLandingPage.emptyState.accordion.productionExecutions',\n\t\t\t\t\t),\n\t\t\t\t\ticon: this.productionExecutionsIcon.icon,\n\t\t\t\t\ticonColor: this.productionExecutionsIcon.color,\n\t\t\t\t\ttooltip:\n\t\t\t\t\t\tthis.productionExecutionsStatus === 'unknown'\n\t\t\t\t\t\t\t? this.$locale.baseText(\n\t\t\t\t\t\t\t\t\t'executionsLandingPage.emptyState.accordion.productionExecutionsWarningTooltip',\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: null,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'manualExecutions',\n\t\t\t\t\tlabel: this.$locale.baseText('executionsLandingPage.emptyState.accordion.testExecutions'),\n\t\t\t\t\ticon: this.workflowSaveSettings.saveTestExecutions ? 'check' : 'times',\n\t\t\t\t\ticonColor: this.workflowSaveSettings.saveTestExecutions ? 'success' : 'danger',\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t\tshouldExpandAccordion(): boolean {\n\t\t\tif (!this.initiallyExpanded) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t!this.workflowSaveSettings.saveFailedExecutions ||\n\t\t\t\t!this.workflowSaveSettings.saveSuccessfulExecutions ||\n\t\t\t\t!this.workflowSaveSettings.saveTestExecutions\n\t\t\t);\n\t\t},\n\t\tproductionExecutionsIcon(): { icon: string; color: string } {\n\t\t\tif (this.productionExecutionsStatus === 'saving') {\n\t\t\t\treturn { icon: 'check', color: 'success' };\n\t\t\t} else if (this.productionExecutionsStatus === 'not-saving') {\n\t\t\t\treturn { icon: 'times', color: 'danger' };\n\t\t\t}\n\t\t\treturn { icon: 'exclamation-triangle', color: 'warning' };\n\t\t},\n\t\tproductionExecutionsStatus(): string {\n\t\t\tif (\n\t\t\t\tthis.workflowSaveSettings.saveSuccessfulExecutions ===\n\t\t\t\tthis.workflowSaveSettings.saveFailedExecutions\n\t\t\t) {\n\t\t\t\tif (this.workflowSaveSettings.saveSuccessfulExecutions) {\n\t\t\t\t\treturn 'saving';\n\t\t\t\t}\n\t\t\t\treturn 'not-saving';\n\t\t\t} else {\n\t\t\t\treturn 'unknown';\n\t\t\t}\n\t\t},\n\t\tworkflowSettings(): IWorkflowSettings {\n\t\t\tconst workflowSettings = deepCopy(this.workflowsStore.workflowSettings);\n\t\t\treturn workflowSettings;\n\t\t},\n\t\taccordionIcon(): { icon: string; color: string } | null {\n\t\t\tif (\n\t\t\t\t!this.workflowSaveSettings.saveTestExecutions ||\n\t\t\t\tthis.productionExecutionsStatus !== 'saving'\n\t\t\t) {\n\t\t\t\treturn { icon: 'exclamation-triangle', color: 'warning' };\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tcurrentWorkflowId(): string {\n\t\t\treturn this.workflowsStore.workflowId;\n\t\t},\n\t\tisNewWorkflow(): boolean {\n\t\t\treturn (\n\t\t\t\t!this.currentWorkflowId ||\n\t\t\t\tthis.currentWorkflowId === PLACEHOLDER_EMPTY_WORKFLOW_ID ||\n\t\t\t\tthis.currentWorkflowId === 'new'\n\t\t\t);\n\t\t},\n\t\tworkflowName(): string {\n\t\t\treturn this.workflowsStore.workflowName;\n\t\t},\n\t\tcurrentWorkflowTagIds(): string[] {\n\t\t\treturn this.workflowsStore.workflowTags;\n\t\t},\n\t},\n\twatch: {\n\t\tworkflowSettings(newSettings: IWorkflowSettings) {\n\t\t\tthis.updateSettings(newSettings);\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.defaultValues.saveFailedExecutions = this.settingsStore.saveDataErrorExecution;\n\t\tthis.defaultValues.saveSuccessfulExecutions = this.settingsStore.saveDataSuccessExecution;\n\t\tthis.defaultValues.saveManualExecutions = this.settingsStore.saveManualExecutions;\n\t\tthis.updateSettings(this.workflowSettings);\n\t},\n\tmethods: {\n\t\tupdateSettings(workflowSettings: IWorkflowSettings): void {\n\t\t\tthis.workflowSaveSettings.saveFailedExecutions =\n\t\t\t\tworkflowSettings.saveDataErrorExecution === undefined\n\t\t\t\t\t? this.defaultValues.saveFailedExecutions === 'all'\n\t\t\t\t\t: workflowSettings.saveDataErrorExecution === 'all';\n\t\t\tthis.workflowSaveSettings.saveSuccessfulExecutions =\n\t\t\t\tworkflowSettings.saveDataSuccessExecution === undefined\n\t\t\t\t\t? this.defaultValues.saveSuccessfulExecutions === 'all'\n\t\t\t\t\t: workflowSettings.saveDataSuccessExecution === 'all';\n\t\t\tthis.workflowSaveSettings.saveTestExecutions =\n\t\t\t\tworkflowSettings.saveManualExecutions === undefined\n\t\t\t\t\t? this.defaultValues.saveManualExecutions\n\t\t\t\t\t: (workflowSettings.saveManualExecutions as boolean);\n\t\t},\n\t\tonAccordionClick(event: MouseEvent): void {\n\t\t\tif (event.target instanceof HTMLAnchorElement) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);\n\t\t\t}\n\t\t},\n\t\tonItemTooltipClick(item: string, event: MouseEvent): void {\n\t\t\tif (item === 'productionExecutions' && event.target instanceof HTMLAnchorElement) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);\n\t\t\t}\n\t\t},\n\t\topenWorkflowSettings(): void {\n\t\t\tthis.uiStore.openModal(WORKFLOW_SETTINGS_MODAL_KEY);\n\t\t},\n\t\tasync onSaveWorkflowClick(): Promise<void> {\n\t\t\tlet currentId: string | undefined = undefined;\n\t\t\tif (this.currentWorkflowId !== PLACEHOLDER_EMPTY_WORKFLOW_ID) {\n\t\t\t\tcurrentId = this.currentWorkflowId;\n\t\t\t} else if (this.$route.params.name && this.$route.params.name !== 'new') {\n\t\t\t\tconst routeName = this.$route.params.name;\n\t\t\t\tcurrentId = Array.isArray(routeName) ? routeName[0] : routeName;\n\t\t\t}\n\t\t\tif (!currentId) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst saved = await this.workflowHelpers.saveCurrentWorkflow({\n\t\t\t\tid: currentId,\n\t\t\t\tname: this.workflowName,\n\t\t\t\ttags: this.currentWorkflowTagIds,\n\t\t\t});\n\t\t\tif (saved) {\n\t\t\t\tawait this.npsSurveyStore.fetchPromptsData();\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.accordion {\n\tbackground: none;\n\twidth: 320px;\n\n\t// Accordion header\n\t& > div:nth-child(1) {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tpadding: var(--spacing-xs);\n\t\twidth: 100%;\n\t\tuser-select: none;\n\t\tcolor: var(--color-text-base) !important;\n\t}\n\n\t// Accordion description\n\t& > div:nth-child(2) {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t\tpadding: 0 var(--spacing-l) var(--spacing-s) !important;\n\n\t\tspan {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\tfooter {\n\t\ttext-align: left;\n\t\twidth: 100%;\n\t\tfont-size: var(--font-size-2xs);\n\t}\n\n\t.disabled a {\n\t\tcolor: currentColor;\n\t\tcursor: not-allowed;\n\t\topacity: 0.5;\n\t\ttext-decoration: none;\n\t}\n}\n</style>\n"],"names":["_sfc_main","defineComponent","router","useRouter","useWorkflowHelpers","mapStores","useRootStore","useSettingsStore","useUIStore","useWorkflowsStore","useNpsSurveyStore","deepCopy","PLACEHOLDER_EMPTY_WORKFLOW_ID","newSettings","workflowSettings","event","WORKFLOW_SETTINGS_MODAL_KEY","item","currentId","routeName","_component_n8n_info_accordion","_resolveComponent","_openBlock","_createBlock","accordionItems","_ctx","shouldExpandAccordion","onAccordionClick","onItemTooltipClick","_withCtx","_createElementVNode","_hoisted_1","_createTextVNode","isNewWorkflow","_createVNode","_component_n8n_tooltip","onSaveWorkflowClick","_withModifiers","_toDisplayString","_component_n8n_link","_normalizeClass","openWorkflowSettings"],"mappings":"kSAyDA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,kCACN,MAAO,CACN,kBAAmB,CAClB,KAAM,QACN,QAAS,EACV,CACD,EACA,OAAQ,CACP,MAAMC,EAASC,IAGR,MAAA,CACN,gBAHuBC,EAAmB,CAAE,OAAAF,CAAQ,CAAA,CAGpD,CAEF,EACA,MAAO,CACC,MAAA,CACN,cAAe,CACd,qBAAsB,MACtB,yBAA0B,MAC1B,qBAAsB,EACvB,EACA,qBAAsB,CACrB,qBAAsB,GACtB,yBAA0B,GAC1B,mBAAoB,EACrB,CAAA,CAEF,EACA,SAAU,CACT,GAAGG,EAAUC,EAAcC,EAAkBC,EAAYC,EAAmBC,CAAiB,EAC7F,gBAA2B,CACnB,MAAA,CACN,CACC,GAAI,uBACJ,MAAO,KAAK,QAAQ,SACnB,iEACD,EACA,KAAM,KAAK,yBAAyB,KACpC,UAAW,KAAK,yBAAyB,MACzC,QACC,KAAK,6BAA+B,UACjC,KAAK,QAAQ,SACb,+EAAA,EAEA,IACL,EACA,CACC,GAAI,mBACJ,MAAO,KAAK,QAAQ,SAAS,2DAA2D,EACxF,KAAM,KAAK,qBAAqB,mBAAqB,QAAU,QAC/D,UAAW,KAAK,qBAAqB,mBAAqB,UAAY,QACvE,CAAA,CAEF,EACA,uBAAiC,CAC5B,OAAC,KAAK,kBAIT,CAAC,KAAK,qBAAqB,sBAC3B,CAAC,KAAK,qBAAqB,0BAC3B,CAAC,KAAK,qBAAqB,mBALpB,EAOT,EACA,0BAA4D,CACvD,OAAA,KAAK,6BAA+B,SAChC,CAAE,KAAM,QAAS,MAAO,SAAU,EAC/B,KAAK,6BAA+B,aACvC,CAAE,KAAM,QAAS,MAAO,QAAS,EAElC,CAAE,KAAM,uBAAwB,MAAO,SAAU,CACzD,EACA,4BAAqC,CACpC,OACC,KAAK,qBAAqB,2BAC1B,KAAK,qBAAqB,qBAEtB,KAAK,qBAAqB,yBACtB,SAED,aAEA,SAET,EACA,kBAAsC,CAE9B,OADkBC,EAAS,KAAK,eAAe,gBAAgB,CAEvE,EACA,eAAwD,CACvD,MACC,CAAC,KAAK,qBAAqB,oBAC3B,KAAK,6BAA+B,SAE7B,CAAE,KAAM,uBAAwB,MAAO,SAAU,EAElD,IACR,EACA,mBAA4B,CAC3B,OAAO,KAAK,eAAe,UAC5B,EACA,eAAyB,CACxB,MACC,CAAC,KAAK,mBACN,KAAK,oBAAsBC,GAC3B,KAAK,oBAAsB,KAE7B,EACA,cAAuB,CACtB,OAAO,KAAK,eAAe,YAC5B,EACA,uBAAkC,CACjC,OAAO,KAAK,eAAe,YAC5B,CACD,EACA,MAAO,CACN,iBAAiBC,EAAgC,CAChD,KAAK,eAAeA,CAAW,CAChC,CACD,EACA,SAAU,CACJ,KAAA,cAAc,qBAAuB,KAAK,cAAc,uBACxD,KAAA,cAAc,yBAA2B,KAAK,cAAc,yBAC5D,KAAA,cAAc,qBAAuB,KAAK,cAAc,qBACxD,KAAA,eAAe,KAAK,gBAAgB,CAC1C,EACA,QAAS,CACR,eAAeC,EAA2C,CACpD,KAAA,qBAAqB,qBACzBA,EAAiB,yBAA2B,OACzC,KAAK,cAAc,uBAAyB,MAC5CA,EAAiB,yBAA2B,MAC3C,KAAA,qBAAqB,yBACzBA,EAAiB,2BAA6B,OAC3C,KAAK,cAAc,2BAA6B,MAChDA,EAAiB,2BAA6B,MAC7C,KAAA,qBAAqB,mBACzBA,EAAiB,uBAAyB,OACvC,KAAK,cAAc,qBAClBA,EAAiB,oBACvB,EACA,iBAAiBC,EAAyB,CACrCA,EAAM,kBAAkB,oBAC3BA,EAAM,eAAe,EAChB,KAAA,QAAQ,UAAUC,CAA2B,EAEpD,EACA,mBAAmBC,EAAcF,EAAyB,CACrDE,IAAS,wBAA0BF,EAAM,kBAAkB,oBAC9DA,EAAM,eAAe,EAChB,KAAA,QAAQ,UAAUC,CAA2B,EAEpD,EACA,sBAA6B,CACvB,KAAA,QAAQ,UAAUA,CAA2B,CACnD,EACA,MAAM,qBAAqC,CAC1C,IAAIE,EACA,GAAA,KAAK,oBAAsBN,EAC9BM,EAAY,KAAK,0BACP,KAAK,OAAO,OAAO,MAAQ,KAAK,OAAO,OAAO,OAAS,MAAO,CAClE,MAAAC,EAAY,KAAK,OAAO,OAAO,KACrCD,EAAY,MAAM,QAAQC,CAAS,EAAIA,EAAU,CAAC,EAAIA,CACvD,CACA,GAAI,CAACD,EACJ,OAEa,MAAM,KAAK,gBAAgB,oBAAoB,CAC5D,GAAIA,EACJ,KAAM,KAAK,aACX,KAAM,KAAK,qBAAA,CACX,GAEM,MAAA,KAAK,eAAe,kBAE5B,CACD,CACD,CAAC,+JA1MqBE,EAAAC,EAAA,oBAAA,EA/Bd,OAAAC,EAAA,EAAUC,EAAQH,EAAA,CACvB,MAAOI,EAAc,CAAAC,EAAA,OAAA,UAAA,QAAA,CAAA,EACrB,MAAAA,EAAA,QAAkB,SAAEC,kDAAqB,EACzC,MAAAD,EAAA,eACA,qBAAYE,EAAAA,sBACZ,cAAaF,EAAEG,cAAAA,eAAAA,EAAAA,iBAEL,eAAaH,EAAA,kBAAA,EAAA,CAV1B,cAAAI,EAAA,IAAA,CA+BkBC,EAAA,SAAAC,EAAA,CAAAC,EAlBWC,EAAaR,EAAA,QAAA,SAAA,mDAAA,CAAA,EAAA,IAAA,CAAA,EAAAS,EAAAC,EAAA,CAC1B,SAAO,CAAAV,EAAA,aAAA,EAAA,SAEhBI,EAEa,IAAA,CAAAC,EAlBpB,MAgBiCM,KAAAA,CAAAA,EAAAA,EAAAA,CAhBjC,QAkBSC,EAAAZ,EAAA,oBAAA,CAAA,SAAA,CAAA,CAAA,EAAA,gBAlBTO,EAAAM,EAAAb,EAAA,QAAA,SAAA,+DAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,SAAA,CAAA,iGAAA,CAAA,CAAA,CAAA,UAyBYI,EAzBZ,IAAA,CAAAK,EA0BWK,EAAO,CACX,MAAKC,EA3BZ,CA2BsBC,CAAoBhB,EAAA,OAAA,QAAA,EAAAA,EAAA,cAAA,EAAA,KAAA,QA3B1C,QA6B8FY,EAAAZ,EAAA,qBAAA,CAAA,SAAA,CAAA,CAAA,EAAA,gBA7B9FO,EAAAM,EAAAb,EAAA,QAAA,SAAA,gEAAA,CAAA,EAAA,CAAA,CAAA,CAAA,KAAA,EAAA,EAAA,CAAA,QAAA,SAAA,CAAA,CAAA,CAAA,sBAAA,CAAA,CAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{j as g,e as f,P as _,V as c}from"./index-
|
|
2
|
-
//# sourceMappingURL=WorkflowExecutionsLandingPage-
|
|
1
|
+
import{j as g,e as f,P as _,V as c}from"./index-1OxaEeO3.js";import{m as k}from"./pinia-sugP77Im.js";import{W as w}from"./WorkflowExecutionsInfoAccordion-aldNazgt.js";import{G as x,ag as t,l as n,m as s,I as p,U as e,O as r,S as i,T as a,R as h}from"./vendor-Dv5OeN6t.js";import{_ as S}from"./n8n-4UEsHtUL.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";const W=x({name:"ExecutionsLandingPage",components:{WorkflowExecutionsInfoAccordion:w},computed:{...k(f,g),executionCount(){return this.workflowsStore.currentWorkflowExecutions.length},containsTrigger(){return this.workflowsStore.workflowTriggerNodes.length>0}},methods:{onSetupFirstStep(){this.uiStore.addFirstStepOnLoad=!0;const o=this.getWorkflowRoute();this.$router.push(o)},getWorkflowRoute(){const o=this.workflowsStore.workflowId||this.$route.params.name;return o===_?{name:c.NEW_WORKFLOW,params:{}}:{name:c.WORKFLOW,params:{name:o}}}}}),y="_container_acx6b_1",C="_messageContainer_acx6b_11",$="_icon_acx6b_22",E={container:y,messageContainer:C,icon:$},T={key:0},b={key:1};function L(o,O,P,R,v,F){const m=t("n8n-heading"),l=t("n8n-text"),u=t("n8n-button"),d=t("WorkflowExecutionsInfoAccordion");return n(),s("div",{class:p(["workflow-executions-container",o.$style.container])},[o.executionCount===0?(n(),s("div",{key:0,class:p([o.$style.messageContainer,o.$style.noExecutionsMessage])},[o.containsTrigger?(n(),s("div",b,[e(m,{tag:"h2",size:"xlarge",color:"text-dark",class:"mb-2xs"},{default:r(()=>[i(a(o.$locale.baseText("executionsLandingPage.emptyState.heading")),1)]),_:1}),e(d)])):(n(),s("div",T,[e(m,{tag:"h2",size:"xlarge",color:"text-dark",class:"mb-2xs"},{default:r(()=>[i(a(o.$locale.baseText("executionsLandingPage.emptyState.noTrigger.heading")),1)]),_:1}),e(l,{size:"medium"},{default:r(()=>[i(a(o.$locale.baseText("executionsLandingPage.emptyState.message")),1)]),_:1}),e(u,{class:"mt-l",type:"tertiary",size:"large",onClick:o.onSetupFirstStep},{default:r(()=>[i(a(o.$locale.baseText("executionsLandingPage.emptyState.noTrigger.buttonText")),1)]),_:1},8,["onClick"])]))],2)):h("",!0)],2)}const I={$style:E},uo=S(W,[["render",L],["__cssModules",I]]);export{uo as default};
|
|
2
|
+
//# sourceMappingURL=WorkflowExecutionsLandingPage-CaAameTk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowExecutionsLandingPage-
|
|
1
|
+
{"version":3,"file":"WorkflowExecutionsLandingPage-CaAameTk.js","sources":["../../src/components/executions/workflow/WorkflowExecutionsLandingPage.vue"],"sourcesContent":["<template>\n\t<div :class=\"['workflow-executions-container', $style.container]\">\n\t\t<div v-if=\"executionCount === 0\" :class=\"[$style.messageContainer, $style.noExecutionsMessage]\">\n\t\t\t<div v-if=\"!containsTrigger\">\n\t\t\t\t<n8n-heading tag=\"h2\" size=\"xlarge\" color=\"text-dark\" class=\"mb-2xs\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.noTrigger.heading') }}\n\t\t\t\t</n8n-heading>\n\t\t\t\t<n8n-text size=\"medium\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.message') }}\n\t\t\t\t</n8n-text>\n\t\t\t\t<n8n-button class=\"mt-l\" type=\"tertiary\" size=\"large\" @click=\"onSetupFirstStep\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.noTrigger.buttonText') }}\n\t\t\t\t</n8n-button>\n\t\t\t</div>\n\t\t\t<div v-else>\n\t\t\t\t<n8n-heading tag=\"h2\" size=\"xlarge\" color=\"text-dark\" class=\"mb-2xs\">\n\t\t\t\t\t{{ $locale.baseText('executionsLandingPage.emptyState.heading') }}\n\t\t\t\t</n8n-heading>\n\t\t\t\t<WorkflowExecutionsInfoAccordion />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport { PLACEHOLDER_EMPTY_WORKFLOW_ID, VIEWS } from '@/constants';\nimport { useUIStore } from '@/stores/ui.store';\nimport { useWorkflowsStore } from '@/stores/workflows.store';\nimport { mapStores } from 'pinia';\nimport { defineComponent } from 'vue';\nimport WorkflowExecutionsInfoAccordion from './WorkflowExecutionsInfoAccordion.vue';\n\nexport default defineComponent({\n\tname: 'ExecutionsLandingPage',\n\tcomponents: {\n\t\tWorkflowExecutionsInfoAccordion,\n\t},\n\tcomputed: {\n\t\t...mapStores(useUIStore, useWorkflowsStore),\n\t\texecutionCount(): number {\n\t\t\treturn this.workflowsStore.currentWorkflowExecutions.length;\n\t\t},\n\t\tcontainsTrigger(): boolean {\n\t\t\treturn this.workflowsStore.workflowTriggerNodes.length > 0;\n\t\t},\n\t},\n\tmethods: {\n\t\tonSetupFirstStep(): void {\n\t\t\tthis.uiStore.addFirstStepOnLoad = true;\n\t\t\tconst workflowRoute = this.getWorkflowRoute();\n\t\t\tvoid this.$router.push(workflowRoute);\n\t\t},\n\t\tgetWorkflowRoute(): { name: string; params: {} } {\n\t\t\tconst workflowId = this.workflowsStore.workflowId || this.$route.params.name;\n\t\t\tif (workflowId === PLACEHOLDER_EMPTY_WORKFLOW_ID) {\n\t\t\t\treturn { name: VIEWS.NEW_WORKFLOW, params: {} };\n\t\t\t} else {\n\t\t\t\treturn { name: VIEWS.WORKFLOW, params: { name: workflowId } };\n\t\t\t}\n\t\t},\n\t},\n});\n</script>\n\n<style module lang=\"scss\">\n.container {\n\twidth: 100%;\n\theight: 100%;\n\tflex: 1;\n\tbackground-color: var(--color-background-light);\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n\n.messageContainer {\n\tmargin-top: var(--spacing-4xl);\n\tcolor: var(--color-text-base);\n\n\tdiv {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t}\n}\n\n.icon {\n\tfont-size: 24px;\n\tcolor: var(--color-foreground-dark);\n}\n</style>\n"],"names":["_sfc_main","defineComponent","WorkflowExecutionsInfoAccordion","mapStores","useUIStore","useWorkflowsStore","workflowRoute","workflowId","PLACEHOLDER_EMPTY_WORKFLOW_ID","VIEWS","_component_WorkflowExecutionsInfoAccordion","_resolveComponent","executionCount","_ctx","_openBlock","_createElementBlock","$style","containsTrigger","_hoisted_2","_createVNode","_component_n8n_heading","_createTextVNode","_toDisplayString","_hoisted_1","_component_n8n_text","$locale","_withCtx","_component_n8n_button","_createCommentVNode"],"mappings":"ksCAgCA,MAAAA,EAAeC,EAAgB,CAC9B,KAAM,wBACN,WAAY,CACX,gCAAAC,CACD,EACA,SAAU,CACT,GAAGC,EAAUC,EAAYC,CAAiB,EAC1C,gBAAyB,CACjB,OAAA,KAAK,eAAe,0BAA0B,MACtD,EACA,iBAA2B,CACnB,OAAA,KAAK,eAAe,qBAAqB,OAAS,CAC1D,CACD,EACA,QAAS,CACR,kBAAyB,CACxB,KAAK,QAAQ,mBAAqB,GAC5B,MAAAC,EAAgB,KAAK,mBACtB,KAAK,QAAQ,KAAKA,CAAa,CACrC,EACA,kBAAiD,CAChD,MAAMC,EAAa,KAAK,eAAe,YAAc,KAAK,OAAO,OAAO,KACxE,OAAIA,IAAeC,EACX,CAAE,KAAMC,EAAM,aAAc,OAAQ,CAAG,CAAA,EAEvC,CAAE,KAAMA,EAAM,SAAU,OAAQ,CAAE,KAAMF,GAEjD,CACD,CACD,CAAC,4NAxCMG,EAAAC,EAAA,iCAAA,4BAnBMC,EAAc,CAAA,gCAAAC,EAAA,OAAA,SAAA,CAAA,CAAA,EAAA,CAF3BA,EAAA,iBAAA,GAAAC,EAAA,EAAAC,EAE4CC,MAAO,CAAA,IAAA,QACpCC,EAAe,CAAAJ,EAAA,OAAA,iBAAAA,EAAA,OAAA,mBAAA,CAAA,CAAA,EAAA,CAC1BA,EAAA,iBAUDC,EACsB,EAAAC,EAAA,MAAAG,EAAA,CAAAC,EAAMC,EAAQ,CAAC,IAAK,KAAa,KAAK,SAAA,MAAA,YAf/D,MAAA,QAAA,EAAA,gBAAAC,EAAAC,EAAAT,EAAA,QAAA,SAAA,0CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAkBI,EAAA,CAAA,CAAA,MAlBJ,CAAA,IAIIC,EAAqB,EAAAC,EAAA,MAAAQ,EAAA,CAAAJ,EAAMC,EAAQ,CAAC,IAAK,KAAa,KAAK,SAAA,MAAA,YAJ/D,MAAA,QAAA,EAAA,gBAAAC,EAAAC,EAAAT,EAAA,QAAA,SAAA,oDAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAOI,EAAA,CAAA,CAAA,EAPJM,EAAAK,EAAA,CAAA,KAQQC,QAAQ,EAAA,CAAA,QAAAC,EAAA,IAAA,CARhBL,EAAAC,EAAAT,EAAA,QAAA,SAAA,0CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAUI,EAAA,CAAA,CAAA,IAA8Bc,EAAU,CAAC,MAAK,OAAS,KAAA,WAAA,KAAA,QAV3D,QAAAd,EAAA,gBAAA,EAAA,gBAAAQ,EAAAC,EAAAT,EAAA,QAAA,SAAA,uDAAA,CAAA,EAAA,CAAA,CAAA,CAAA,KAcG,EAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA,EAdH,EAAA,CAAA,GAAAe,EAAA,GAAA,EAAA"}
|
package/dist/assets/{WorkflowExecutionsPreview-Dt23N5A4.js → WorkflowExecutionsPreview-Bb-wJtr-.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as T}from"./useExecutionDebugging-
|
|
2
|
-
//# sourceMappingURL=WorkflowExecutionsPreview-
|
|
1
|
+
import{u as T}from"./useExecutionDebugging-EHinBq_u.js";import{H as E,j as v,V as h,A as B}from"./index-1OxaEeO3.js";import{W as U}from"./WorkflowPreview-CVwpKdpj.js";import{u as M}from"./useExecutionHelpers-LeKoU_T-.js";import{m as L}from"./pinia-sugP77Im.js";import{ao as W,_ as R}from"./n8n-4UEsHtUL.js";import{G as q,ag as r,l as a,m as x,p as c,U as o,I as u,O as t,S as i,T as n,M as d,R as m}from"./vendor-Dv5OeN6t.js";import"./axios-Mm4CS0gO.js";import"./flatted-DN8lQ2XG.js";import"./@vueuse/core-BBHtM40w.js";import"./lodash-es-CZ1inz46.js";import"./@n8n/permissions-BxxteU-C.js";import"./dateformat-CIxnBJXX.js";import"./vue-i18n-Delvyc9x.js";import"./uuid-SoommWqA.js";import"./luxon-CLwAIbs0.js";import"./@n8n/codemirror-lang-sql-DBO6T13I.js";import"./@lezer/common-B6ct0j_v.js";import"./prettier-bS6l4Vb1.js";import"./@jsplumb/util-DS-9vq_E.js";import"./@jsplumb/core-CVBraiyY.js";import"./@jsplumb/common-CF-b-6-M.js";import"./@jsplumb/connector-bezier-BGU0Ovbw.js";import"./@jsplumb/browser-ui-BVF2KoJK.js";import"./codemirror-lang-html-n8n-CWDO6_kP.js";import"./@n8n/codemirror-lang-Dl0FW_KM.js";import"./esprima-next-nhoSXAeq.js";import"./fast-json-stable-stringify-BOfzoJX1.js";import"./timeago.js-CiyKClrF.js";import"./qrcode.vue-BGkPba5A.js";import"./vue3-touch-events-mV0oX_Sl.js";import"./chart.js-343vZi4M.js";import"./dateFormatter-CfbOITvW.js";const z=q({name:"WorkflowExecutionsPreview",components:{ElDropdown:W,WorkflowPreview:U},props:{execution:{type:Object,required:!0}},setup(){return{executionHelpers:M(),...E(),...T()}},computed:{...L(v),executionId(){return this.$route.params.executionId},executionUIDetails(){return this.execution?this.executionHelpers.getUIDetails(this.execution):null},executionMode(){var e;return((e=this.execution)==null?void 0:e.mode)||""},debugButtonData(){var e;return((e=this.execution)==null?void 0:e.status)==="success"?{text:this.$locale.baseText("executionsList.debug.button.copyToEditor"),type:"secondary"}:{text:this.$locale.baseText("executionsList.debug.button.debugInEditor"),type:"primary"}},isRetriable(){return!!this.execution&&this.executionHelpers.isExecutionRetriable(this.execution)},executionDebugViewName(){return h.EXECUTION_DEBUG},executionPreviewViewName(){return h.EXECUTION_PREVIEW}},methods:{async onDeleteExecution(){await this.confirm(this.$locale.baseText("executionDetails.confirmMessage.message"),this.$locale.baseText("executionDetails.confirmMessage.headline"),{type:"warning",confirmButtonText:this.$locale.baseText("executionDetails.confirmMessage.confirmButtonText"),cancelButtonText:""})===B&&this.$emit("deleteCurrentExecution")},handleRetryClick(e){this.$emit("retryExecution",{execution:this.execution,command:e})},handleStopClick(){this.$emit("stopExecution")},onRetryButtonBlur(e){const p=this.$refs.retryDropdown;p&&e.relatedTarget===null&&p.handleClose()}}}),N="_previewContainer_1qf32_1",V="_executionDetails_1qf32_7",O="_spinner_1qf32_26",P="_running_1qf32_32",S="_waiting_1qf32_37",H="_success_1qf32_41",j="_error_1qf32_45",A="_runningInfo_1qf32_49",F="_runningMessage_1qf32_56",G="_debugLink_1qf32_62",X={previewContainer:N,executionDetails:V,spinner:O,running:P,waiting:S,success:H,error:j,runningInfo:A,runningMessage:F,debugLink:G},J=["data-test-id"],K=c("br",null,null,-1),Q=c("br",null,null,-1),Y={class:"retry-button"};function Z(e,p,te,ne,oe,ie){var k,D,_;const f=r("n8n-spinner"),l=r("n8n-text"),g=r("n8n-button"),y=r("router-link"),w=r("n8n-icon-button"),b=r("el-dropdown-item"),I=r("el-dropdown-menu"),$=r("ElDropdown"),C=r("WorkflowPreview");return((k=e.executionUIDetails)==null?void 0:k.name)==="running"?(a(),x("div",{key:0,class:u(e.$style.runningInfo)},[c("div",{class:u(e.$style.spinner)},[o(f,{type:"ring"})],2),o(l,{class:u(e.$style.runningMessage),color:"text-light"},{default:t(()=>[i(n(e.$locale.baseText("executionDetails.runningMessage")),1)]),_:1},8,["class"]),o(g,{class:"mt-l",type:"tertiary",onClick:e.handleStopClick},{default:t(()=>[i(n(e.$locale.baseText("executionsList.stopExecution")),1)]),_:1},8,["onClick"])],2)):e.executionUIDetails?(a(),x("div",{key:1,class:u(e.$style.previewContainer)},[e.execution?(a(),x("div",{key:0,class:u(e.$style.executionDetails),"data-test-id":`execution-preview-details-${e.executionId}`},[c("div",null,[o(l,{size:"large",color:"text-base",bold:!0,"data-test-id":"execution-time"},{default:t(()=>{var s;return[i(n((s=e.executionUIDetails)==null?void 0:s.startTime),1)]}),_:1}),K,((D=e.executionUIDetails)==null?void 0:D.name)==="running"?(a(),d(f,{key:0,size:"small",class:u([e.$style.spinner,"mr-4xs"])},null,8,["class"])):m("",!0),o(l,{size:"medium",class:u([e.$style.status,e.$style[e.executionUIDetails.name]]),"data-test-id":"execution-preview-label"},{default:t(()=>[i(n(e.executionUIDetails.label),1)]),_:1},8,["class"]),i(" "+n(" ")+" "),e.executionUIDetails.name==="running"?(a(),d(l,{key:1,color:"text-base",size:"medium"},{default:t(()=>{var s;return[i(n(e.$locale.baseText("executionDetails.runningTimeRunning",{interpolate:{time:(s=e.executionUIDetails)==null?void 0:s.runningTime}}))+" | ID#"+n(e.execution.id),1)]}),_:1})):e.executionUIDetails.name!=="waiting"?(a(),d(l,{key:2,color:"text-base",size:"medium","data-test-id":"execution-preview-id"},{default:t(()=>{var s;return[i(n(e.$locale.baseText("executionDetails.runningTimeFinished",{interpolate:{time:((s=e.executionUIDetails)==null?void 0:s.runningTime)??"unknown"}}))+" | ID#"+n(e.execution.id),1)]}),_:1})):((_=e.executionUIDetails)==null?void 0:_.name)==="waiting"?(a(),d(l,{key:3,color:"text-base",size:"medium"},{default:t(()=>[i(" | ID#"+n(e.execution.id),1)]),_:1})):m("",!0),Q,e.execution.mode==="retry"?(a(),d(l,{key:4,color:"text-base",size:"medium"},{default:t(()=>[i(n(e.$locale.baseText("executionDetails.retry"))+" ",1),o(y,{class:u(e.$style.executionLink),to:{name:e.executionPreviewViewName,params:{workflowId:e.execution.workflowId,executionId:e.execution.retryOf}}},{default:t(()=>[i(" #"+n(e.execution.retryOf),1)]),_:1},8,["class","to"])]),_:1})):m("",!0)]),c("div",null,[o(g,{size:"medium",type:e.debugButtonData.type,class:u(e.$style.debugLink)},{default:t(()=>[o(y,{to:{name:e.executionDebugViewName,params:{name:e.execution.workflowId,executionId:e.execution.id}}},{default:t(()=>[c("span",{"data-test-id":"execution-debug-button",onClick:p[0]||(p[0]=(...s)=>e.handleDebugLinkClick&&e.handleDebugLinkClick(...s))},n(e.debugButtonData.text),1)]),_:1},8,["to"])]),_:1},8,["type","class"]),e.isRetriable?(a(),d($,{key:0,ref:"retryDropdown",trigger:"click",class:"mr-xs",onCommand:e.handleRetryClick},{dropdown:t(()=>[o(I,null,{default:t(()=>[o(b,{command:"current-workflow"},{default:t(()=>[i(n(e.$locale.baseText("executionsList.retryWithCurrentlySavedWorkflow")),1)]),_:1}),o(b,{command:"original-workflow"},{default:t(()=>[i(n(e.$locale.baseText("executionsList.retryWithOriginalWorkflow")),1)]),_:1})]),_:1})]),default:t(()=>[c("span",Y,[o(w,{size:"medium",type:"tertiary",title:e.$locale.baseText("executionsList.retryExecution"),icon:"redo","data-test-id":"execution-preview-retry-button",onBlur:e.onRetryButtonBlur},null,8,["title","onBlur"])])]),_:1},8,["onCommand"])):m("",!0),o(w,{title:e.$locale.baseText("executionDetails.deleteExecution"),icon:"trash",size:"medium",type:"tertiary","data-test-id":"execution-preview-delete-button",onClick:e.onDeleteExecution},null,8,["title","onClick"])])],10,J)):m("",!0),o(C,{mode:"execution","loader-type":"spinner","execution-id":e.executionId,"execution-mode":e.executionMode},null,8,["execution-id","execution-mode"])],2)):m("",!0)}const ee={$style:X},Ne=R(z,[["render",Z],["__cssModules",ee]]);export{Ne as default};
|
|
2
|
+
//# sourceMappingURL=WorkflowExecutionsPreview-Bb-wJtr-.js.map
|