n8n-editor-ui 1.83.2 → 1.85.0

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.
Files changed (126) hide show
  1. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-COOCXFFe.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BefsLZo6.js} +1 -1
  2. package/dist/assets/{AuthView-C7UxnH6d.js → AuthView-Bwnmj61F.js} +2 -2
  3. package/dist/assets/{CanvasChat-CSLR5tKe.css → CanvasChatSwitch-BcSDHC-c.css} +546 -33
  4. package/dist/assets/{CanvasChat-CmjR9yPV.js → CanvasChatSwitch-Dgc1t6ax.js} +1047 -550
  5. package/dist/assets/{ChangePasswordView-ah8H7l7b.js → ChangePasswordView-Ojbow8CX.js} +3 -3
  6. package/dist/assets/CollectionParameter-2r_LuiyO.js +4 -0
  7. package/dist/assets/CommitMonoVariable-ytizKI8U.woff2 +0 -0
  8. package/dist/assets/{CredentialsView-DqcTSsjv.js → CredentialsView-DhEvPiu_.js} +19 -9
  9. package/dist/assets/{ErrorView-DG7aEbhz.js → ErrorView-RGryGbpa.js} +1 -1
  10. package/dist/assets/{ConcurrentExecutionsHeader-CEBmSYNK.css → ExecutionsTime-BOPJEomw.css} +63 -63
  11. package/dist/assets/{ConcurrentExecutionsHeader-tdwilNra.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-Iwq0aeRX.js} +114 -114
  12. package/dist/assets/ExecutionsView-CL7Ei3Em.js +943 -0
  13. package/dist/assets/{ExecutionsView-CB1tvZfo.css → ExecutionsView-JCKikuIS.css} +60 -188
  14. package/dist/assets/{FileSaver.min-D9u6MONp.js → FileSaver.min-C4OYrSWg.js} +1 -1
  15. package/dist/assets/{FixedCollectionParameter-CLjLHGyL.js → FixedCollectionParameter-CJ4s-1jy.js} +1 -1
  16. package/dist/assets/{ForgotMyPasswordView-DDtUSUcw.js → ForgotMyPasswordView-7tFMaf89.js} +3 -3
  17. package/dist/assets/InterVariable-DiVDrmQJ.woff2 +0 -0
  18. package/dist/assets/InterVariable-Italic-FCBEiFp6.woff2 +0 -0
  19. package/dist/assets/{Logo-CBvZEey7.js → Logo-BW8jOa0h.js} +8 -19
  20. package/dist/assets/{ProjectHeader-BZ6b6lat.css → Logo-DLBj1gMw.css} +23 -17
  21. package/dist/assets/{MainHeader-PgJurmwZ.js → MainHeader-BUWCKbvC.js} +47 -22
  22. package/dist/assets/{MainHeader-CX-ZfeKE.css → MainHeader-CWA2JfVJ.css} +22 -22
  23. package/dist/assets/{MainSidebar-DsyUXL2c.js → MainSidebar-BeZfQeco.js} +75 -42
  24. package/dist/assets/{MainSidebar-BRAjTL7J.css → MainSidebar-CKMiDGvH.css} +13 -12
  25. package/dist/assets/{NodeCreation-CiSTfSrv.js → NodeCreation-DIg39Pbx.js} +5 -5
  26. package/dist/assets/{NodeCreator-16svYK-i.js → NodeCreator-BwYjrEUk.js} +10 -11
  27. package/dist/assets/{NodeCreator-DDiuO5S0.css → NodeCreator-D9fmPdS2.css} +12 -12
  28. package/dist/assets/{NodeDetailsView-CVVfk-zW.css → NodeDetailsView-C1z3N5z_.css} +46 -46
  29. package/dist/assets/{NodeDetailsView-D5ZKTnOO.js → NodeDetailsView-WuroVzlr.js} +93 -85
  30. package/dist/assets/{NodeView-CVxHVGxF.js → NodeView-CmjajouX.js} +63 -28
  31. package/dist/assets/{ProjectCardBadge-DKJ8uRN7.js → ProjectCardBadge-cIqYJxKe.js} +1 -1
  32. package/dist/assets/ProjectHeader-B-a6_GH6.css +285 -0
  33. package/dist/assets/{ProjectHeader-BY3TAX3C.js → ProjectHeader-BGrFY-5v.js} +66 -27
  34. package/dist/assets/{ProjectSettings-B3FxW1ze.js → ProjectSettings-D10vay6-.js} +2 -3
  35. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CzwYeMCe.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DJAYslHT.js} +2 -2
  36. package/dist/assets/{ResourcesListLayout-DbPhtDij.js → ResourcesListLayout-C6v8Zm5q.js} +25 -21
  37. package/dist/assets/{ResourcesListLayout-Brs7VKUf.css → ResourcesListLayout-CWgWhtKq.css} +43 -33
  38. package/dist/assets/{RunDataAi-DJ-PSs_k.css → RunDataAi-CN9FrT9c.css} +2 -2
  39. package/dist/assets/{RunDataAi-Cq_XIdUj.js → RunDataAi-dhPBStdr.js} +25 -20
  40. package/dist/assets/{RunDataJson-BYaB0x1O.js → RunDataJson-kGRhUGn3.js} +12 -12
  41. package/dist/assets/{RunDataJsonActions-CU0K3JKo.js → RunDataJsonActions-BTljOq8V.js} +2 -2
  42. package/dist/assets/{RunDataSearch-Cx3Q6SS-.js → RunDataSearch-mVQhE8PH.js} +1 -1
  43. package/dist/assets/{RunDataTable-thC_K8V5.js → RunDataTable-CFoDiExh.js} +2 -2
  44. package/dist/assets/{SamlOnboarding-kqju2Vdw.js → SamlOnboarding-dDZHHNp4.js} +3 -3
  45. package/dist/assets/{SettingsApiView-DZWY9nyk.js → SettingsApiView-C9hbuZ42.js} +2 -3
  46. package/dist/assets/{SettingsCommunityNodesView-BLPF2nGe.js → SettingsCommunityNodesView-0wzih2lc.js} +5 -5
  47. package/dist/assets/{SettingsExternalSecrets-giVhhOpK.js → SettingsExternalSecrets-BCDoBPTc.js} +1 -1
  48. package/dist/assets/{SettingsLdapView-CcLGbweG.js → SettingsLdapView-CBCprymb.js} +1 -1
  49. package/dist/assets/{SettingsLogStreamingView-T4v-UDVv.js → SettingsLogStreamingView-CMQQQdcB.js} +2 -2
  50. package/dist/assets/{SettingsPersonalView-C1vojEEm.js → SettingsPersonalView-DtAM5Qmb.js} +1 -1
  51. package/dist/assets/{SettingsSourceControl-mTHmVIMw.js → SettingsSourceControl-CysMFVZs.js} +1 -1
  52. package/dist/assets/{SettingsSso-BBoPSBvR.js → SettingsSso-B0PZUvVx.js} +7 -7
  53. package/dist/assets/{SettingsSso-BjoJZ2DU.css → SettingsSso-DyrGnPdA.css} +10 -10
  54. package/dist/assets/{SettingsUsageAndPlan-CT1Jb0GH.js → SettingsUsageAndPlan-2QUTEbXv.js} +8 -3
  55. package/dist/assets/{SettingsUsageAndPlan-Cul4YcIk.css → SettingsUsageAndPlan-b3WY2Ea_.css} +3 -3
  56. package/dist/assets/{SettingsUsersView-Cak1x7Pc.js → SettingsUsersView-C16e4GB4.js} +1 -1
  57. package/dist/assets/{SettingsView-DCkltMay.js → SettingsView-B-BQ6FGS.js} +1 -1
  58. package/dist/assets/{SetupView-DJmIQyS0.js → SetupView-Kx3RATQz.js} +3 -3
  59. package/dist/assets/{SetupWorkflowCredentialsButton-DCfwCYAd.js → SetupWorkflowCredentialsButton-BQ2_-L-1.js} +1 -1
  60. package/dist/assets/{SetupWorkflowFromTemplateView-k_iBV2jh.js → SetupWorkflowFromTemplateView-D_E17TKc.js} +3 -3
  61. package/dist/assets/{SigninView-BnsteSQ9.js → SigninView-d0aJ1Mkg.js} +3 -3
  62. package/dist/assets/{SignoutView-CyCh9bOx.js → SignoutView-CvyFrh7y.js} +1 -1
  63. package/dist/assets/{SignupView-BsFwHPbF.js → SignupView-CnlD_UrJ.js} +3 -3
  64. package/dist/assets/{TemplateDetails-D_qS2oXP.js → TemplateDetails-DRuh9UqO.js} +3 -3
  65. package/dist/assets/{TemplateList-Bsr77oun.js → TemplateList-gpWBWX3r.js} +1 -1
  66. package/dist/assets/{TemplatesCollectionView-DOx2xwGE.js → TemplatesCollectionView-Y6-pxrOD.js} +5 -5
  67. package/dist/assets/{TemplatesSearchView-C6YmB2wy.js → TemplatesSearchView-DP8XRZ62.js} +3 -3
  68. package/dist/assets/{TemplatesView-DQBwrteM.js → TemplatesView-B3vanV3h.js} +1 -1
  69. package/dist/assets/{TemplatesWorkflowView-C2iuRHel.js → TemplatesWorkflowView-CIB9qsVC.js} +5 -5
  70. package/dist/assets/{TestDefinitionEditView-JONL00pA.css → TestDefinitionEditView-BXhOuJrU.css} +128 -116
  71. package/dist/assets/{TestDefinitionEditView-BhFe0nl4.js → TestDefinitionEditView-BkhmS3l4.js} +243 -252
  72. package/dist/assets/{TestDefinitionListView-xb_7O8DU.js → TestDefinitionListView-tvjwd9Ts.js} +1 -1
  73. package/dist/assets/{TestDefinitionNewView-DfTA2Tx8.js → TestDefinitionNewView-DOGHwct6.js} +13 -4
  74. package/dist/assets/{TestDefinitionRootView-CaoWSLan.js → TestDefinitionRootView-B-QvwldV.js} +1 -1
  75. package/dist/assets/{VariablesView-CbTLdNwU.css → VariablesView-ATWfdJsE.css} +7 -11
  76. package/dist/assets/{VariablesView-B2ttHbBo.js → VariablesView-CoBnz2nF.js} +6 -6
  77. package/dist/assets/{WorkerView-CzDTwlX2.js → WorkerView-CsTZzlRj.js} +7 -7
  78. package/dist/assets/{WorkflowActivator-mNogYc60.js → WorkflowActivator-DeLhupjy.js} +2 -2
  79. package/dist/assets/{WorkflowExecutionsInfoAccordion-CNoXKDkU.js → WorkflowExecutionsInfoAccordion-WRdvo2wq.js} +1 -1
  80. package/dist/assets/{WorkflowExecutionsLandingPage-XS-H1Pwn.js → WorkflowExecutionsLandingPage-DP8mgG6I.js} +2 -2
  81. package/dist/assets/{WorkflowExecutionsPreview-BMqpqyNP.js → WorkflowExecutionsPreview-BmG1Fptg.js} +270 -136
  82. package/dist/assets/{WorkflowExecutionsPreview-BDVLuC1z.css → WorkflowExecutionsPreview-CHu6M3Dh.css} +70 -38
  83. package/dist/assets/{WorkflowExecutionsView-BLj64NZs.js → WorkflowExecutionsView-DmN-exp3.js} +6 -7
  84. package/dist/assets/{WorkflowHistory-CFqqM71F.js → WorkflowHistory-CdEr7dbB.js} +3 -3
  85. package/dist/assets/{WorkflowOnboardingView-8o-XsXJA.js → WorkflowOnboardingView-D45YjFmk.js} +1 -1
  86. package/dist/assets/{WorkflowPreview-B05e6atY.js → WorkflowPreview-x0_AdULu.js} +1 -1
  87. package/dist/assets/{WorkflowsView-D6AZEJR8.js → WorkflowsView-BhcJ-MjE.js} +726 -341
  88. package/dist/assets/{WorkflowsView-JN0Hvhvt.css → WorkflowsView-r9qJOUEb.css} +64 -43
  89. package/dist/assets/{easyAiWorkflowUtils-DCq6uUmq.js → easyAiWorkflowUtils-NXaV8dgZ.js} +5 -5
  90. package/dist/assets/{global-link-actions-DhVbzPXz.js → global-link-actions-DgZH3fz2.js} +1 -1
  91. package/dist/assets/{import-curl-CpQ9LTub.js → import-curl-DUv4B2nO.js} +1 -1
  92. package/dist/assets/{index-ntAcmC2q.js → index-CDluwnbb.js} +4962 -3420
  93. package/dist/assets/{index-D534l065.css → index-CgXKy7t-.css} +2783 -2112
  94. package/dist/assets/{index-wbgX3Vnk.js → index-DAyhXitv.js} +1 -1
  95. package/dist/assets/{pickBy-DAl85H93.js → pickBy-D-hOoXP_.js} +1 -1
  96. package/dist/assets/{polyfills-C7eMRNFe.js → polyfills-CLZ4X0Ad.js} +2342 -1944
  97. package/dist/assets/{pushConnection.store-Cs7MLBaJ.js → pushConnection.store-Dl_VgTY2.js} +1 -1
  98. package/dist/assets/{templateActions-C6kwBsE2.js → templateActions-B4AFVixD.js} +1 -1
  99. package/dist/assets/{typescript.worker-DP34mIHW.js → typescript.worker-Bt3bByTc.js} +1158 -695
  100. package/dist/assets/{useBeforeUnload-Cr9E4FVX.js → useBeforeUnload-DS-CCd-3.js} +1 -1
  101. package/dist/assets/{useCanvasMapping-CkNBF2SE.css → useCanvasMapping-CJcAsQmx.css} +585 -585
  102. package/dist/assets/{useCanvasMapping-DwbUSpab.js → useCanvasMapping-DnPGwCm3.js} +10390 -10379
  103. package/dist/assets/{useCanvasOperations-Ch4-PXXM.js → useCanvasOperations-CY1OrN2X.js} +472 -185
  104. package/dist/assets/useClearExecutionButtonVisible-CjX9PqMR.js +23 -0
  105. package/dist/assets/{useExecutionDebugging-WtMBcJA-.js → useExecutionDebugging-BN-lQ24h.js} +1 -1
  106. package/dist/assets/{useExecutionHelpers-DYVB2XNC.js → useExecutionHelpers-wN0DRQB-.js} +1 -1
  107. package/dist/assets/{useImportCurlCommand-B6a2t4kf.js → useImportCurlCommand-DgTeVIgh.js} +13 -20
  108. package/dist/assets/useOverview-BBgWJdVL.js +161 -0
  109. package/dist/assets/{Logo-DJLTXpXC.css → useOverview-DcRuPjLJ.css} +97 -30
  110. package/dist/assets/{usePushConnection-BvuDmDSY.js → usePushConnection-F1s4Muc0.js} +5 -4
  111. package/dist/assets/{useRunWorkflow-BjW-TsKk.js → useRunWorkflow-RBDuKZVj.js} +13 -13
  112. package/dist/assets/{useTestDefinitionForm-uexL_DkW.js → useTestDefinitionForm-DX1gvhBC.js} +1 -1
  113. package/dist/assets/{useWorkflowActivate-BAjo-kUC.js → useWorkflowActivate-DsRC3mvG.js} +1 -1
  114. package/dist/index.html +3 -3
  115. package/package.json +1 -1
  116. package/dist/assets/CollectionParameter-Dk76idMw.js +0 -4
  117. package/dist/assets/ExecutionsView-zqdNLgx1.js +0 -983
  118. package/dist/assets/ProjectCreateResource-5lC9x1Ht.js +0 -56
  119. package/dist/assets/ProjectCreateResource-eYdTamXR.css +0 -139
  120. package/dist/assets/open-sans-latin-400-normal-kLvSbl7y.woff +0 -0
  121. package/dist/assets/open-sans-latin-400-normal-sjvN8RAh.woff2 +0 -0
  122. package/dist/assets/open-sans-latin-600-normal-BYc6TgXR.woff2 +0 -0
  123. package/dist/assets/open-sans-latin-600-normal-CJ2UE_uF.woff +0 -0
  124. package/dist/assets/open-sans-latin-700-normal-DMXgkrz3.woff +0 -0
  125. package/dist/assets/open-sans-latin-700-normal-DXyImmHa.woff2 +0 -0
  126. package/dist/assets/usePinnedData-CvnROquX.js +0 -274
@@ -0,0 +1,943 @@
1
+ import { d as defineComponent, h as resolveComponent, e as createBlock, g as openBlock, w as withCtx, x as renderSlot, f as createCommentVNode, j as createVNode, n as normalizeClass, l as createTextVNode, t as toDisplayString, m as unref, c as useI18n, _ as _export_sfc, i as createElementBlock, gI as createStaticVNode, $ as useCssModule, r as ref, q as computed, fR as WAIT_INDEFINITELY, k as createBaseVNode, d5 as N8nCheckbox, V as VIEWS, by as N8nText, c6 as N8nIcon, aR as N8nTooltip, F as Fragment, b9 as N8nButton, J as withModifiers, aT as _sfc_main$6, T as useWorkflowsStore, au as useExecutionsStore, p as useSettingsStore, a7 as usePageRedirectionHelper, a as useToast, ab as EnterpriseEditionFeature, I as watch, bw as useTemplateRef, gJ as useIntersectionObserver, D as renderList, gK as ElSkeletonItem, gL as N8nTableBase, a8 as getResourcePermissions, ah as useTelemetry, aj as useMessage, ak as MODAL_CONFIRM, U as useRoute, gr as useInsightsStore, a5 as useDocumentTitle, cz as storeToRefs, aA as onBeforeMount, aQ as useExternalHooks, o as onMounted, y as onBeforeUnmount } from "./index-CDluwnbb.js";
2
+ import { _ as _sfc_main$5, E as ExecutionsFilter, C as ConcurrentExecutionsHeader } from "./ExecutionsTime.vue_vue_type_script_setup_true_lang-Iwq0aeRX.js";
3
+ import { u as useExecutionHelpers, c as convertToDisplayDate } from "./useExecutionHelpers-wN0DRQB-.js";
4
+ import { u as useOverview, I as InsightsSummary } from "./useOverview-BBgWJdVL.js";
5
+ import { P as ProjectHeader } from "./ProjectHeader-BGrFY-5v.js";
6
+ import "./AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BefsLZo6.js";
7
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
8
+ __name: "GlobalExecutionsListItemQueuedTooltip",
9
+ props: {
10
+ status: {},
11
+ concurrencyCap: {},
12
+ isCloudDeployment: { type: Boolean }
13
+ },
14
+ emits: ["goToUpgrade"],
15
+ setup(__props, { emit: __emit }) {
16
+ const props = __props;
17
+ const emit = __emit;
18
+ const i18n = useI18n();
19
+ return (_ctx, _cache) => {
20
+ const _component_i18n_t = resolveComponent("i18n-t");
21
+ const _component_N8nLink = resolveComponent("N8nLink");
22
+ const _component_N8nTooltip = resolveComponent("N8nTooltip");
23
+ return openBlock(), createBlock(_component_N8nTooltip, { placement: "top" }, {
24
+ content: withCtx(() => [
25
+ props.status === "waiting" ? (openBlock(), createBlock(_component_i18n_t, {
26
+ key: 0,
27
+ keypath: "executionsList.statusTooltipText.theWorkflowIsWaitingIndefinitely"
28
+ })) : createCommentVNode("", true),
29
+ props.status === "new" ? (openBlock(), createBlock(_component_i18n_t, {
30
+ key: 1,
31
+ keypath: "executionsList.statusTooltipText.waitingForConcurrencyCapacity"
32
+ }, {
33
+ instance: withCtx(() => [
34
+ props.isCloudDeployment ? (openBlock(), createBlock(_component_i18n_t, {
35
+ key: 0,
36
+ keypath: "executionsList.statusTooltipText.waitingForConcurrencyCapacity.cloud"
37
+ }, {
38
+ concurrencyCap: withCtx(() => [
39
+ createTextVNode(toDisplayString(props.concurrencyCap), 1)
40
+ ]),
41
+ link: withCtx(() => [
42
+ createVNode(_component_N8nLink, {
43
+ bold: "",
44
+ size: "small",
45
+ class: normalizeClass(_ctx.$style.link),
46
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("goToUpgrade"))
47
+ }, {
48
+ default: withCtx(() => [
49
+ createTextVNode(toDisplayString(unref(i18n).baseText("generic.upgradeNow")), 1)
50
+ ]),
51
+ _: 1
52
+ }, 8, ["class"])
53
+ ]),
54
+ _: 1
55
+ })) : (openBlock(), createBlock(_component_i18n_t, {
56
+ key: 1,
57
+ keypath: "executionsList.statusTooltipText.waitingForConcurrencyCapacity.self"
58
+ }, {
59
+ concurrencyCap: withCtx(() => [
60
+ createTextVNode(toDisplayString(props.concurrencyCap), 1)
61
+ ]),
62
+ link: withCtx(() => [
63
+ createVNode(_component_N8nLink, {
64
+ class: normalizeClass(_ctx.$style.link),
65
+ href: unref(i18n).baseText("executions.concurrency.docsLink"),
66
+ target: "_blank"
67
+ }, {
68
+ default: withCtx(() => [
69
+ createTextVNode(toDisplayString(unref(i18n).baseText("generic.viewDocs")), 1)
70
+ ]),
71
+ _: 1
72
+ }, 8, ["class", "href"])
73
+ ]),
74
+ _: 1
75
+ }))
76
+ ]),
77
+ _: 1
78
+ })) : createCommentVNode("", true)
79
+ ]),
80
+ default: withCtx(() => [
81
+ renderSlot(_ctx.$slots, "default")
82
+ ]),
83
+ _: 3
84
+ });
85
+ };
86
+ }
87
+ });
88
+ const link = "_link_1k41m_123";
89
+ const style0$2 = {
90
+ link
91
+ };
92
+ const cssModules$2 = {
93
+ "$style": style0$2
94
+ };
95
+ const __unplugin_components_0 = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__cssModules", cssModules$2]]);
96
+ const _sfc_main$3 = {};
97
+ const _hoisted_1$2 = {
98
+ width: "14",
99
+ height: "14",
100
+ viewBox: "0 0 14 14",
101
+ fill: "none",
102
+ xmlns: "http://www.w3.org/2000/svg"
103
+ };
104
+ function _sfc_render(_ctx, _cache) {
105
+ return openBlock(), createElementBlock("svg", _hoisted_1$2, _cache[0] || (_cache[0] = [
106
+ createStaticVNode('<g data-v-7870f87e><path d="M7 0L7 3" stroke="currentColor" stroke-width="2" class="line one" data-v-7870f87e></path><path d="M11.9497 2.05031L9.82837 4.17163" stroke="currentColor" stroke-width="2" class="line two" data-v-7870f87e></path><path d="M14 7L11 7" stroke="currentColor" stroke-width="2" class="line three" data-v-7870f87e></path><path d="M11.9497 11.9497L9.82839 9.82839" stroke="currentColor" stroke-width="2" class="line four" data-v-7870f87e></path><path d="M7 14L7 11" stroke="currentColor" stroke-width="2" class="line five" data-v-7870f87e></path><path d="M0 7L3 7" stroke="currentColor" stroke-width="2" class="line seven" data-v-7870f87e></path><path d="M2.05031 2.05031L4.17163 4.17163" stroke="currentColor" stroke-width="2" class="line eight" data-v-7870f87e></path><path d="M2.05029 11.9497L4.17161 9.82839" stroke="currentColor" stroke-width="2" class="line six" data-v-7870f87e></path></g>', 1)
107
+ ]));
108
+ }
109
+ const AnimatedSpinner = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render], ["__scopeId", "data-v-7870f87e"]]);
110
+ const _hoisted_1$1 = { "data-test-id": "execution-status" };
111
+ const _hoisted_2$1 = { key: 0 };
112
+ const _hoisted_3$1 = { key: 1 };
113
+ const _hoisted_4$1 = { key: 2 };
114
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
115
+ __name: "GlobalExecutionsListItem",
116
+ props: {
117
+ execution: {},
118
+ selected: { type: Boolean, default: false },
119
+ workflowName: { default: "" },
120
+ workflowPermissions: {},
121
+ concurrencyCap: {},
122
+ isCloudDeployment: { type: Boolean }
123
+ },
124
+ emits: ["stop", "select", "retrySaved", "retryOriginal", "delete", "goToUpgrade"],
125
+ setup(__props, { emit: __emit }) {
126
+ const emit = __emit;
127
+ const props = __props;
128
+ const style = useCssModule();
129
+ const locale = useI18n();
130
+ const executionHelpers = useExecutionHelpers();
131
+ const isStopping = ref(false);
132
+ const isRunning = computed(() => props.execution.status === "running");
133
+ const isWaitTillIndefinite = computed(() => {
134
+ if (!props.execution.waitTill) {
135
+ return false;
136
+ }
137
+ return new Date(props.execution.waitTill).getTime() === WAIT_INDEFINITELY.getTime();
138
+ });
139
+ const isRetriable = computed(() => executionHelpers.isExecutionRetriable(props.execution));
140
+ const EXECUTION_STATUS = {
141
+ CRASHED: "crashed",
142
+ ERROR: "error",
143
+ WAITING: "waiting",
144
+ SUCCESS: "success",
145
+ NEW: "new",
146
+ RUNNING: "running",
147
+ UNKNOWN: "unknown",
148
+ CANCELED: "canceled"
149
+ };
150
+ const executionIconStatusDictionary = {
151
+ [EXECUTION_STATUS.CRASHED]: {
152
+ icon: "status-error",
153
+ color: "danger"
154
+ },
155
+ [EXECUTION_STATUS.ERROR]: {
156
+ icon: "status-error",
157
+ color: "danger"
158
+ },
159
+ [EXECUTION_STATUS.WAITING]: {
160
+ icon: "status-waiting",
161
+ color: "secondary"
162
+ },
163
+ [EXECUTION_STATUS.SUCCESS]: {
164
+ icon: "status-completed",
165
+ color: "success"
166
+ },
167
+ [EXECUTION_STATUS.NEW]: {
168
+ icon: "status-new",
169
+ color: "foreground-xdark"
170
+ },
171
+ [EXECUTION_STATUS.RUNNING]: {
172
+ icon: "spinner",
173
+ color: "secondary"
174
+ },
175
+ [EXECUTION_STATUS.UNKNOWN]: {
176
+ icon: "status-unknown",
177
+ color: "foreground-xdark"
178
+ },
179
+ [EXECUTION_STATUS.CANCELED]: {
180
+ icon: "status-canceled",
181
+ color: "foreground-xdark"
182
+ }
183
+ };
184
+ const errorStatuses = [EXECUTION_STATUS.ERROR, EXECUTION_STATUS.CRASHED];
185
+ const classes = computed(() => {
186
+ return {
187
+ [style.dangerBg]: errorStatuses.includes(props.execution.status)
188
+ };
189
+ });
190
+ const formattedStartedAtDate = computed(() => {
191
+ return props.execution.startedAt ? formatDate(props.execution.startedAt) : locale.baseText("executionsList.startingSoon");
192
+ });
193
+ const formattedWaitTillDate = computed(() => {
194
+ return props.execution.waitTill ? formatDate(props.execution.waitTill) : "";
195
+ });
196
+ const formattedStoppedAtDate = computed(() => {
197
+ return props.execution.stoppedAt ? locale.displayTimer(
198
+ new Date(props.execution.stoppedAt).getTime() - new Date(props.execution.startedAt).getTime(),
199
+ true
200
+ ) : "";
201
+ });
202
+ function getStatusLabel(status) {
203
+ if (status === EXECUTION_STATUS.CRASHED) {
204
+ return locale.baseText("executionsList.error");
205
+ }
206
+ return locale.baseText(`executionsList.${status}`);
207
+ }
208
+ const statusRender = computed(() => {
209
+ return {
210
+ ...executionIconStatusDictionary[props.execution.status],
211
+ label: getStatusLabel(props.execution.status)
212
+ };
213
+ });
214
+ function formatDate(fullDate) {
215
+ const { date, time } = convertToDisplayDate(fullDate);
216
+ return locale.baseText("executionsList.started", { interpolate: { time, date } });
217
+ }
218
+ function onStopExecution() {
219
+ isStopping.value = true;
220
+ emit("stop", props.execution);
221
+ }
222
+ function onSelect() {
223
+ emit("select", props.execution);
224
+ }
225
+ async function handleActionItemClick(commandData) {
226
+ emit(commandData, props.execution);
227
+ }
228
+ return (_ctx, _cache) => {
229
+ const _component_RouterLink = resolveComponent("RouterLink");
230
+ const _component_GlobalExecutionsListItemQueuedTooltip = __unplugin_components_0;
231
+ const _component_ElDropdownItem = resolveComponent("ElDropdownItem");
232
+ const _component_ElDropdownMenu = resolveComponent("ElDropdownMenu");
233
+ const _component_ElDropdown = resolveComponent("ElDropdown");
234
+ return openBlock(), createElementBlock("tr", {
235
+ class: normalizeClass(classes.value)
236
+ }, [
237
+ createBaseVNode("td", null, [
238
+ createVNode(unref(N8nCheckbox), {
239
+ "model-value": _ctx.selected,
240
+ "data-test-id": "select-execution-checkbox",
241
+ disabled: !Boolean(_ctx.execution.id && _ctx.execution.stoppedAt),
242
+ "onUpdate:modelValue": onSelect
243
+ }, null, 8, ["model-value", "disabled"])
244
+ ]),
245
+ createBaseVNode("td", null, [
246
+ createVNode(_component_RouterLink, {
247
+ to: {
248
+ name: unref(VIEWS).EXECUTION_PREVIEW,
249
+ params: { name: _ctx.execution.workflowId, executionId: _ctx.execution.id }
250
+ },
251
+ target: "_blank"
252
+ }, {
253
+ default: withCtx(() => [
254
+ createVNode(unref(N8nText), { color: "text-dark" }, {
255
+ default: withCtx(() => [
256
+ createTextVNode(toDisplayString(_ctx.execution.workflowName || _ctx.workflowName), 1)
257
+ ]),
258
+ _: 1
259
+ })
260
+ ]),
261
+ _: 1
262
+ }, 8, ["to"])
263
+ ]),
264
+ createBaseVNode("td", _hoisted_1$1, [
265
+ isWaitTillIndefinite.value || _ctx.execution.status === EXECUTION_STATUS.NEW ? (openBlock(), createBlock(_component_GlobalExecutionsListItemQueuedTooltip, {
266
+ key: 0,
267
+ status: props.execution.status,
268
+ "concurrency-cap": props.concurrencyCap,
269
+ "is-cloud-deployment": props.isCloudDeployment,
270
+ onGoToUpgrade: _cache[0] || (_cache[0] = ($event) => emit("goToUpgrade"))
271
+ }, {
272
+ default: withCtx(() => [
273
+ createBaseVNode("div", null, [
274
+ createVNode(unref(N8nIcon), {
275
+ icon: statusRender.value.icon,
276
+ color: statusRender.value.color,
277
+ class: "mr-2xs"
278
+ }, null, 8, ["icon", "color"]),
279
+ createTextVNode(" " + toDisplayString(statusRender.value.label), 1)
280
+ ])
281
+ ]),
282
+ _: 1
283
+ }, 8, ["status", "concurrency-cap", "is-cloud-deployment"])) : (openBlock(), createBlock(unref(N8nTooltip), {
284
+ key: 1,
285
+ disabled: _ctx.execution.status !== EXECUTION_STATUS.WAITING,
286
+ content: unref(locale).baseText("executionsList.statusWaiting", {
287
+ interpolate: { status: _ctx.execution.status, time: formattedWaitTillDate.value }
288
+ })
289
+ }, {
290
+ default: withCtx(() => [
291
+ createBaseVNode("div", null, [
292
+ _ctx.execution.status === EXECUTION_STATUS.RUNNING ? (openBlock(), createBlock(unref(N8nText), {
293
+ key: 0,
294
+ color: "secondary",
295
+ class: "mr-2xs"
296
+ }, {
297
+ default: withCtx(() => [
298
+ createVNode(AnimatedSpinner)
299
+ ]),
300
+ _: 1
301
+ })) : (openBlock(), createBlock(unref(N8nIcon), {
302
+ key: 1,
303
+ icon: statusRender.value.icon,
304
+ color: statusRender.value.color,
305
+ class: "mr-2xs"
306
+ }, null, 8, ["icon", "color"])),
307
+ createTextVNode(" " + toDisplayString(statusRender.value.label), 1)
308
+ ])
309
+ ]),
310
+ _: 1
311
+ }, 8, ["disabled", "content"]))
312
+ ]),
313
+ createBaseVNode("td", null, toDisplayString(formattedStartedAtDate.value), 1),
314
+ createBaseVNode("td", null, [
315
+ formattedStoppedAtDate.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
316
+ createTextVNode(toDisplayString(formattedStoppedAtDate.value), 1)
317
+ ], 64)) : (openBlock(), createBlock(_sfc_main$5, {
318
+ key: 1,
319
+ "start-time": _ctx.execution.startedAt
320
+ }, null, 8, ["start-time"]))
321
+ ]),
322
+ createBaseVNode("td", null, [
323
+ _ctx.execution.id ? (openBlock(), createElementBlock("span", _hoisted_2$1, toDisplayString(_ctx.execution.id), 1)) : createCommentVNode("", true),
324
+ _ctx.execution.retryOf ? (openBlock(), createElementBlock("span", _hoisted_3$1, [
325
+ _cache[1] || (_cache[1] = createBaseVNode("br", null, null, -1)),
326
+ createBaseVNode("small", null, " (" + toDisplayString(unref(locale).baseText("executionsList.retryOf")) + " " + toDisplayString(_ctx.execution.retryOf) + ") ", 1)
327
+ ])) : _ctx.execution.retrySuccessId ? (openBlock(), createElementBlock("span", _hoisted_4$1, [
328
+ _cache[2] || (_cache[2] = createBaseVNode("br", null, null, -1)),
329
+ createBaseVNode("small", null, " (" + toDisplayString(unref(locale).baseText("executionsList.successRetry")) + " " + toDisplayString(_ctx.execution.retrySuccessId) + ") ", 1)
330
+ ])) : createCommentVNode("", true)
331
+ ]),
332
+ createBaseVNode("td", null, [
333
+ createBaseVNode("span", {
334
+ class: normalizeClass(_ctx.$style.capitalize)
335
+ }, toDisplayString(_ctx.execution.mode), 3)
336
+ ]),
337
+ createBaseVNode("td", null, [
338
+ !_ctx.execution.stoppedAt || _ctx.execution.waitTill ? (openBlock(), createBlock(unref(N8nButton), {
339
+ key: 0,
340
+ "data-test-id": "stop-execution-button",
341
+ loading: isStopping.value,
342
+ disabled: isStopping.value,
343
+ onClick: withModifiers(onStopExecution, ["stop"])
344
+ }, {
345
+ default: withCtx(() => [
346
+ createTextVNode(toDisplayString(unref(locale).baseText("executionsList.stop")), 1)
347
+ ]),
348
+ _: 1
349
+ }, 8, ["loading", "disabled"])) : createCommentVNode("", true)
350
+ ]),
351
+ createBaseVNode("td", null, [
352
+ !isRunning.value ? (openBlock(), createBlock(_component_ElDropdown, {
353
+ key: 0,
354
+ trigger: "click",
355
+ onCommand: handleActionItemClick
356
+ }, {
357
+ dropdown: withCtx(() => [
358
+ createVNode(_component_ElDropdownMenu, {
359
+ class: normalizeClass({
360
+ [_ctx.$style.actions]: true,
361
+ [_ctx.$style.deleteOnly]: !isRetriable.value
362
+ })
363
+ }, {
364
+ default: withCtx(() => [
365
+ isRetriable.value ? (openBlock(), createBlock(_component_ElDropdownItem, {
366
+ key: 0,
367
+ "data-test-id": "execution-retry-saved-dropdown-item",
368
+ class: normalizeClass(_ctx.$style.retryAction),
369
+ command: "retrySaved",
370
+ disabled: !_ctx.workflowPermissions.execute
371
+ }, {
372
+ default: withCtx(() => [
373
+ createTextVNode(toDisplayString(unref(locale).baseText("executionsList.retryWithCurrentlySavedWorkflow")), 1)
374
+ ]),
375
+ _: 1
376
+ }, 8, ["class", "disabled"])) : createCommentVNode("", true),
377
+ isRetriable.value ? (openBlock(), createBlock(_component_ElDropdownItem, {
378
+ key: 1,
379
+ "data-test-id": "execution-retry-original-dropdown-item",
380
+ class: normalizeClass(_ctx.$style.retryAction),
381
+ command: "retryOriginal",
382
+ disabled: !_ctx.workflowPermissions.execute
383
+ }, {
384
+ default: withCtx(() => [
385
+ createTextVNode(toDisplayString(unref(locale).baseText("executionsList.retryWithOriginalWorkflow")), 1)
386
+ ]),
387
+ _: 1
388
+ }, 8, ["class", "disabled"])) : createCommentVNode("", true),
389
+ createVNode(_component_ElDropdownItem, {
390
+ "data-test-id": "execution-delete-dropdown-item",
391
+ class: normalizeClass(_ctx.$style.deleteAction),
392
+ command: "delete",
393
+ disabled: !_ctx.workflowPermissions.update
394
+ }, {
395
+ default: withCtx(() => [
396
+ createTextVNode(toDisplayString(unref(locale).baseText("generic.delete")), 1)
397
+ ]),
398
+ _: 1
399
+ }, 8, ["class", "disabled"])
400
+ ]),
401
+ _: 1
402
+ }, 8, ["class"])
403
+ ]),
404
+ default: withCtx(() => [
405
+ createVNode(unref(_sfc_main$6), {
406
+ text: "",
407
+ type: "tertiary",
408
+ size: "mini",
409
+ icon: "ellipsis-v"
410
+ })
411
+ ]),
412
+ _: 1
413
+ })) : createCommentVNode("", true)
414
+ ])
415
+ ], 2);
416
+ };
417
+ }
418
+ });
419
+ const dangerBg = "_dangerBg_rruph_123";
420
+ const capitalize = "_capitalize_rruph_127";
421
+ const style0$1 = {
422
+ dangerBg,
423
+ capitalize
424
+ };
425
+ const cssModules$1 = {
426
+ "$style": style0$1
427
+ };
428
+ const GlobalExecutionsListItem = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules$1]]);
429
+ const _hoisted_1 = { style: { "margin-left": "auto" } };
430
+ const _hoisted_2 = { key: 0 };
431
+ const _hoisted_3 = { style: { "width": "50px" } };
432
+ const _hoisted_4 = { colspan: "8" };
433
+ const _hoisted_5 = { style: { "width": "50px" } };
434
+ const _hoisted_6 = {
435
+ colspan: "9",
436
+ style: { "text-align": "center" }
437
+ };
438
+ const _hoisted_7 = {
439
+ key: 0,
440
+ "data-test-id": "execution-list-empty"
441
+ };
442
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
443
+ __name: "GlobalExecutionsList",
444
+ props: {
445
+ executions: {},
446
+ filters: {},
447
+ total: { default: 0 },
448
+ estimated: { type: Boolean, default: false }
449
+ },
450
+ emits: ["update:filters", "execution:stop"],
451
+ setup(__props, { emit: __emit }) {
452
+ const props = __props;
453
+ const emit = __emit;
454
+ const i18n = useI18n();
455
+ const telemetry = useTelemetry();
456
+ const workflowsStore = useWorkflowsStore();
457
+ const executionsStore = useExecutionsStore();
458
+ const settingsStore = useSettingsStore();
459
+ const pageRedirectionHelper = usePageRedirectionHelper();
460
+ const allVisibleSelected = ref(false);
461
+ const allExistingSelected = ref(false);
462
+ const selectedItems = ref({});
463
+ const message = useMessage();
464
+ const toast = useToast();
465
+ const selectedCount = computed(() => {
466
+ if (allExistingSelected.value) {
467
+ return props.total;
468
+ }
469
+ return Object.keys(selectedItems.value).length;
470
+ });
471
+ const workflows = computed(() => {
472
+ return [
473
+ {
474
+ id: "all",
475
+ name: i18n.baseText("executionsList.allWorkflows")
476
+ },
477
+ ...workflowsStore.allWorkflows
478
+ ];
479
+ });
480
+ const isAnnotationEnabled = computed(
481
+ () => settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.AdvancedExecutionFilters]
482
+ );
483
+ const runningExecutionsCount = computed(() => {
484
+ return props.executions.filter(
485
+ (execution) => execution.status === "running" && ["webhook", "trigger"].includes(execution.mode)
486
+ ).length;
487
+ });
488
+ watch(
489
+ () => props.executions,
490
+ () => {
491
+ if (props.executions.length === 0) {
492
+ handleClearSelection();
493
+ }
494
+ adjustSelectionAfterMoreItemsLoaded();
495
+ }
496
+ );
497
+ function handleCheckAllExistingChange() {
498
+ allExistingSelected.value = !allExistingSelected.value;
499
+ allVisibleSelected.value = !allExistingSelected.value;
500
+ handleCheckAllVisibleChange();
501
+ }
502
+ function handleCheckAllVisibleChange() {
503
+ allVisibleSelected.value = !allVisibleSelected.value;
504
+ if (!allVisibleSelected.value) {
505
+ allExistingSelected.value = false;
506
+ selectedItems.value = {};
507
+ } else {
508
+ selectAllVisibleExecutions();
509
+ }
510
+ }
511
+ function toggleSelectExecution(execution) {
512
+ const executionId = execution.id;
513
+ if (selectedItems.value[executionId]) {
514
+ const { [executionId]: removedSelectedItem, ...rest } = selectedItems.value;
515
+ selectedItems.value = rest;
516
+ } else {
517
+ selectedItems.value = {
518
+ ...selectedItems.value,
519
+ [executionId]: true
520
+ };
521
+ }
522
+ allVisibleSelected.value = Object.keys(selectedItems.value).length === props.executions.length;
523
+ allExistingSelected.value = Object.keys(selectedItems.value).length === props.total;
524
+ }
525
+ async function handleDeleteSelected() {
526
+ const confirmationText = [
527
+ isAnnotationEnabled.value && i18n.baseText("executionsList.confirmMessage.annotationsNote"),
528
+ i18n.baseText("executionsList.confirmMessage.message", {
529
+ interpolate: { count: selectedCount.value.toString() }
530
+ })
531
+ ].filter(Boolean).join(" ");
532
+ const deleteExecutions = await message.confirm(
533
+ confirmationText,
534
+ i18n.baseText("executionsList.confirmMessage.headline"),
535
+ {
536
+ type: "warning",
537
+ confirmButtonText: i18n.baseText("executionsList.confirmMessage.confirmButtonText"),
538
+ cancelButtonText: i18n.baseText("executionsList.confirmMessage.cancelButtonText")
539
+ }
540
+ );
541
+ if (deleteExecutions !== MODAL_CONFIRM) {
542
+ return;
543
+ }
544
+ try {
545
+ await executionsStore.deleteExecutions({
546
+ filters: executionsStore.executionsFilters,
547
+ ...allExistingSelected.value ? { deleteBefore: /* @__PURE__ */ new Date() } : {
548
+ ids: Object.keys(selectedItems.value)
549
+ }
550
+ });
551
+ } catch (error) {
552
+ toast.showError(error, i18n.baseText("executionsList.showError.handleDeleteSelected.title"));
553
+ return;
554
+ }
555
+ toast.showMessage({
556
+ title: i18n.baseText("executionsList.showMessage.handleDeleteSelected.title"),
557
+ type: "success"
558
+ });
559
+ handleClearSelection();
560
+ }
561
+ function handleClearSelection() {
562
+ allVisibleSelected.value = false;
563
+ allExistingSelected.value = false;
564
+ selectedItems.value = {};
565
+ }
566
+ async function onFilterChanged(filters) {
567
+ emit("update:filters", filters);
568
+ handleClearSelection();
569
+ }
570
+ function getExecutionWorkflowName(execution) {
571
+ return getWorkflowName(execution.workflowId ?? "") ?? i18n.baseText("executionsList.unsavedWorkflow");
572
+ }
573
+ function getExecutionWorkflowPermissions(execution) {
574
+ return getResourcePermissions(execution.scopes).workflow;
575
+ }
576
+ function getWorkflowName(workflowId) {
577
+ return workflows.value.find((data) => data.id === workflowId)?.name;
578
+ }
579
+ const loadMoreRef = useTemplateRef("loadMoreButton");
580
+ useIntersectionObserver(loadMoreRef, ([entry]) => {
581
+ if (!entry?.isIntersecting) return;
582
+ void loadMore();
583
+ });
584
+ async function loadMore() {
585
+ if (executionsStore.filters.status === "running") {
586
+ return;
587
+ }
588
+ const lastItem = props.executions.at(-1);
589
+ try {
590
+ await executionsStore.fetchExecutions(executionsStore.executionsFilters, lastItem?.id);
591
+ } catch (error) {
592
+ toast.showError(error, i18n.baseText("executionsList.showError.loadMore.title"));
593
+ }
594
+ }
595
+ function selectAllVisibleExecutions() {
596
+ props.executions.forEach((execution) => {
597
+ selectedItems.value[execution.id] = true;
598
+ });
599
+ }
600
+ function adjustSelectionAfterMoreItemsLoaded() {
601
+ if (allExistingSelected.value) {
602
+ allVisibleSelected.value = true;
603
+ selectAllVisibleExecutions();
604
+ }
605
+ }
606
+ async function retrySavedExecution(execution) {
607
+ await retryExecution(execution, true);
608
+ }
609
+ async function retryOriginalExecution(execution) {
610
+ await retryExecution(execution, false);
611
+ }
612
+ async function retryExecution(execution, loadWorkflow) {
613
+ try {
614
+ const retrySuccessful = await executionsStore.retryExecution(execution.id, loadWorkflow);
615
+ if (retrySuccessful) {
616
+ toast.showMessage({
617
+ title: i18n.baseText("executionsList.showMessage.retrySuccessfulTrue.title"),
618
+ type: "success"
619
+ });
620
+ } else {
621
+ toast.showMessage({
622
+ title: i18n.baseText("executionsList.showMessage.retrySuccessfulFalse.title"),
623
+ type: "error"
624
+ });
625
+ }
626
+ } catch (error) {
627
+ toast.showError(error, i18n.baseText("executionsList.showError.retryExecution.title"));
628
+ }
629
+ telemetry.track("User clicked retry execution button", {
630
+ workflow_id: workflowsStore.workflowId,
631
+ execution_id: execution.id,
632
+ retry_type: loadWorkflow ? "current" : "original"
633
+ });
634
+ }
635
+ async function stopExecution(execution) {
636
+ try {
637
+ await executionsStore.stopCurrentExecution(execution.id);
638
+ toast.showMessage({
639
+ title: i18n.baseText("executionsList.showMessage.stopExecution.title"),
640
+ message: i18n.baseText("executionsList.showMessage.stopExecution.message", {
641
+ interpolate: { activeExecutionId: execution.id }
642
+ }),
643
+ type: "success"
644
+ });
645
+ emit("execution:stop");
646
+ } catch (error) {
647
+ toast.showError(error, i18n.baseText("executionsList.showError.stopExecution.title"));
648
+ }
649
+ }
650
+ async function deleteExecution(execution) {
651
+ const hasAnnotation = !!execution.annotation && (execution.annotation.vote || execution.annotation.tags.length > 0);
652
+ if (hasAnnotation) {
653
+ const deleteConfirmed = await message.confirm(
654
+ i18n.baseText("executionsList.confirmMessage.annotatedExecutionMessage"),
655
+ i18n.baseText("executionDetails.confirmMessage.headline"),
656
+ {
657
+ type: "warning",
658
+ confirmButtonText: i18n.baseText("executionDetails.confirmMessage.confirmButtonText"),
659
+ cancelButtonText: ""
660
+ }
661
+ );
662
+ if (deleteConfirmed !== MODAL_CONFIRM) {
663
+ return;
664
+ }
665
+ }
666
+ try {
667
+ await executionsStore.deleteExecutions({ ids: [execution.id] });
668
+ if (allVisibleSelected.value) {
669
+ const { [execution.id]: _, ...rest } = selectedItems.value;
670
+ selectedItems.value = rest;
671
+ }
672
+ } catch (error) {
673
+ toast.showError(error, i18n.baseText("executionsList.showError.handleDeleteSelected.title"));
674
+ }
675
+ }
676
+ async function onAutoRefreshToggle(value) {
677
+ if (value) {
678
+ await executionsStore.startAutoRefreshInterval();
679
+ } else {
680
+ executionsStore.stopAutoRefreshInterval();
681
+ }
682
+ }
683
+ const goToUpgrade = () => {
684
+ void pageRedirectionHelper.goToUpgrade("concurrency", "upgrade-concurrency");
685
+ };
686
+ return (_ctx, _cache) => {
687
+ const _component_ElCheckbox = resolveComponent("ElCheckbox");
688
+ return openBlock(), createElementBlock("div", {
689
+ class: normalizeClass(_ctx.$style.execListWrapper)
690
+ }, [
691
+ renderSlot(_ctx.$slots, "default", {}, void 0, true),
692
+ createBaseVNode("div", {
693
+ class: normalizeClass(_ctx.$style.execListHeaderControls)
694
+ }, [
695
+ createVNode(ExecutionsFilter, {
696
+ workflows: workflows.value,
697
+ class: "execFilter",
698
+ onFilterChanged
699
+ }, null, 8, ["workflows"]),
700
+ createBaseVNode("div", _hoisted_1, [
701
+ unref(settingsStore).isConcurrencyEnabled ? (openBlock(), createBlock(ConcurrentExecutionsHeader, {
702
+ key: 0,
703
+ "running-executions-count": runningExecutionsCount.value,
704
+ "concurrency-cap": unref(settingsStore).concurrency,
705
+ "is-cloud-deployment": unref(settingsStore).isCloudDeployment,
706
+ onGoToUpgrade: goToUpgrade
707
+ }, null, 8, ["running-executions-count", "concurrency-cap", "is-cloud-deployment"])) : (openBlock(), createBlock(_component_ElCheckbox, {
708
+ key: 1,
709
+ modelValue: unref(executionsStore).autoRefresh,
710
+ "onUpdate:modelValue": [
711
+ _cache[0] || (_cache[0] = ($event) => unref(executionsStore).autoRefresh = $event),
712
+ _cache[1] || (_cache[1] = ($event) => onAutoRefreshToggle($event))
713
+ ],
714
+ "data-test-id": "execution-auto-refresh-checkbox"
715
+ }, {
716
+ default: withCtx(() => [
717
+ createTextVNode(toDisplayString(unref(i18n).baseText("executionsList.autoRefresh")), 1)
718
+ ]),
719
+ _: 1
720
+ }, 8, ["modelValue"]))
721
+ ])
722
+ ], 2),
723
+ createBaseVNode("div", {
724
+ class: normalizeClass(_ctx.$style.execList)
725
+ }, [
726
+ createBaseVNode("div", {
727
+ class: normalizeClass(_ctx.$style.execTable)
728
+ }, [
729
+ createVNode(unref(N8nTableBase), null, {
730
+ default: withCtx(() => [
731
+ createBaseVNode("thead", null, [
732
+ allVisibleSelected.value && _ctx.total > 0 ? (openBlock(), createElementBlock("tr", _hoisted_2, [
733
+ createBaseVNode("th", _hoisted_3, [
734
+ createVNode(unref(N8nCheckbox), {
735
+ "model-value": allExistingSelected.value,
736
+ "data-test-id": "select-all-executions-checkbox",
737
+ "onUpdate:modelValue": handleCheckAllExistingChange
738
+ }, null, 8, ["model-value"])
739
+ ]),
740
+ createBaseVNode("th", _hoisted_4, toDisplayString(unref(i18n).baseText("executionsList.selectAll", {
741
+ adjustToNumber: _ctx.total,
742
+ interpolate: { executionNum: `${_ctx.total}` }
743
+ })), 1)
744
+ ])) : createCommentVNode("", true),
745
+ createBaseVNode("tr", null, [
746
+ createBaseVNode("th", _hoisted_5, [
747
+ createVNode(unref(N8nCheckbox), {
748
+ "model-value": allVisibleSelected.value,
749
+ disabled: _ctx.total < 1,
750
+ "data-test-id": "select-visible-executions-checkbox",
751
+ "onUpdate:modelValue": handleCheckAllVisibleChange
752
+ }, null, 8, ["model-value", "disabled"])
753
+ ]),
754
+ createBaseVNode("th", null, toDisplayString(unref(i18n).baseText("generic.workflow")), 1),
755
+ createBaseVNode("th", null, toDisplayString(unref(i18n).baseText("executionsList.status")), 1),
756
+ createBaseVNode("th", null, toDisplayString(unref(i18n).baseText("executionsList.startedAt")), 1),
757
+ createBaseVNode("th", null, toDisplayString(unref(i18n).baseText("executionsList.runTime")), 1),
758
+ createBaseVNode("th", null, toDisplayString(unref(i18n).baseText("executionsList.id")), 1),
759
+ createBaseVNode("th", null, toDisplayString(unref(i18n).baseText("executionsList.trigger")), 1),
760
+ _cache[3] || (_cache[3] = createBaseVNode("th", { style: { "width": "69px" } }, null, -1)),
761
+ _cache[4] || (_cache[4] = createBaseVNode("th", { style: { "width": "50px" } }, null, -1))
762
+ ])
763
+ ]),
764
+ createBaseVNode("tbody", null, [
765
+ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.executions, (execution) => {
766
+ return openBlock(), createBlock(GlobalExecutionsListItem, {
767
+ key: execution.id,
768
+ execution,
769
+ "workflow-name": getExecutionWorkflowName(execution),
770
+ "workflow-permissions": getExecutionWorkflowPermissions(execution),
771
+ selected: selectedItems.value[execution.id] || allExistingSelected.value,
772
+ "concurrency-cap": unref(settingsStore).concurrency,
773
+ "is-cloud-deployment": unref(settingsStore).isCloudDeployment,
774
+ "data-test-id": "global-execution-list-item",
775
+ onStop: stopExecution,
776
+ onDelete: deleteExecution,
777
+ onSelect: toggleSelectExecution,
778
+ onRetrySaved: retrySavedExecution,
779
+ onRetryOriginal: retryOriginalExecution,
780
+ onGoToUpgrade: goToUpgrade
781
+ }, null, 8, ["execution", "workflow-name", "workflow-permissions", "selected", "concurrency-cap", "is-cloud-deployment"]);
782
+ }), 128)),
783
+ unref(executionsStore).loading && !_ctx.executions.length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(executionsStore).itemsPerPage, (item) => {
784
+ return openBlock(), createElementBlock("tr", { key: item }, [
785
+ (openBlock(), createElementBlock(Fragment, null, renderList(9, (col) => {
786
+ return createBaseVNode("td", { key: col }, [
787
+ createVNode(unref(ElSkeletonItem))
788
+ ]);
789
+ }), 64))
790
+ ]);
791
+ }), 128)) : createCommentVNode("", true),
792
+ createBaseVNode("tr", null, [
793
+ createBaseVNode("td", _hoisted_6, [
794
+ !_ctx.executions.length ? (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(unref(i18n).baseText("executionsList.empty")), 1)) : _ctx.total > _ctx.executions.length || _ctx.estimated ? (openBlock(), createBlock(unref(N8nButton), {
795
+ key: 1,
796
+ ref: "loadMoreButton",
797
+ icon: "sync",
798
+ title: unref(i18n).baseText("executionsList.loadMore"),
799
+ label: unref(i18n).baseText("executionsList.loadMore"),
800
+ loading: unref(executionsStore).loading,
801
+ "data-test-id": "load-more-button",
802
+ onClick: _cache[2] || (_cache[2] = ($event) => loadMore())
803
+ }, null, 8, ["title", "label", "loading"])) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
804
+ createTextVNode(toDisplayString(unref(i18n).baseText("executionsList.loadedAll")), 1)
805
+ ], 64))
806
+ ])
807
+ ])
808
+ ])
809
+ ]),
810
+ _: 1
811
+ })
812
+ ], 2)
813
+ ], 2),
814
+ selectedCount.value > 0 ? (openBlock(), createElementBlock("div", {
815
+ key: 0,
816
+ class: normalizeClass(_ctx.$style.selectionOptions),
817
+ "data-test-id": "selected-executions-info"
818
+ }, [
819
+ createBaseVNode("span", null, toDisplayString(unref(i18n).baseText("executionsList.selected", {
820
+ adjustToNumber: selectedCount.value,
821
+ interpolate: { count: `${selectedCount.value}` }
822
+ })), 1),
823
+ createVNode(unref(N8nButton), {
824
+ label: unref(i18n).baseText("generic.delete"),
825
+ type: "tertiary",
826
+ "data-test-id": "delete-selected-button",
827
+ onClick: handleDeleteSelected
828
+ }, null, 8, ["label"]),
829
+ createVNode(unref(N8nButton), {
830
+ label: unref(i18n).baseText("executionsList.clearSelection"),
831
+ type: "tertiary",
832
+ "data-test-id": "clear-selection-button",
833
+ onClick: handleClearSelection
834
+ }, null, 8, ["label"])
835
+ ], 2)) : createCommentVNode("", true)
836
+ ], 2);
837
+ };
838
+ }
839
+ });
840
+ const execListWrapper = "_execListWrapper_1tnmy_123";
841
+ const execList = "_execList_1tnmy_123";
842
+ const execListHeaderControls = "_execListHeaderControls_1tnmy_138";
843
+ const selectionOptions = "_selectionOptions_1tnmy_145";
844
+ const execTable = "_execTable_1tnmy_163";
845
+ const style0 = {
846
+ execListWrapper,
847
+ execList,
848
+ execListHeaderControls,
849
+ selectionOptions,
850
+ execTable
851
+ };
852
+ const cssModules = {
853
+ "$style": style0
854
+ };
855
+ const GlobalExecutionsList = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules], ["__scopeId", "data-v-f071418a"]]);
856
+ const _sfc_main = /* @__PURE__ */ defineComponent({
857
+ __name: "ExecutionsView",
858
+ setup(__props) {
859
+ const route = useRoute();
860
+ const i18n = useI18n();
861
+ const telemetry = useTelemetry();
862
+ const externalHooks = useExternalHooks();
863
+ const workflowsStore = useWorkflowsStore();
864
+ const executionsStore = useExecutionsStore();
865
+ const insightsStore = useInsightsStore();
866
+ const documentTitle = useDocumentTitle();
867
+ const toast = useToast();
868
+ const overview = useOverview();
869
+ const { executionsCount, executionsCountEstimated, filters, allExecutions } = storeToRefs(executionsStore);
870
+ onBeforeMount(async () => {
871
+ await loadWorkflows();
872
+ void externalHooks.run("executionsList.openDialog");
873
+ telemetry.track("User opened Executions log", {
874
+ workflow_id: workflowsStore.workflowId
875
+ });
876
+ });
877
+ onMounted(async () => {
878
+ documentTitle.set(i18n.baseText("executionsList.workflowExecutions"));
879
+ document.addEventListener("visibilitychange", onDocumentVisibilityChange);
880
+ await executionsStore.initialize();
881
+ });
882
+ onBeforeUnmount(() => {
883
+ executionsStore.reset();
884
+ document.removeEventListener("visibilitychange", onDocumentVisibilityChange);
885
+ });
886
+ async function loadWorkflows() {
887
+ try {
888
+ await workflowsStore.fetchAllWorkflows(route.params?.projectId);
889
+ } catch (error) {
890
+ toast.showError(error, i18n.baseText("executionsList.showError.loadWorkflows.title"));
891
+ }
892
+ }
893
+ function onDocumentVisibilityChange() {
894
+ if (document.visibilityState === "hidden") {
895
+ executionsStore.stopAutoRefreshInterval();
896
+ } else {
897
+ void executionsStore.startAutoRefreshInterval();
898
+ }
899
+ }
900
+ async function onRefreshData() {
901
+ try {
902
+ await executionsStore.fetchExecutions();
903
+ } catch (error) {
904
+ toast.showError(error, i18n.baseText("executionsList.showError.refreshData.title"));
905
+ }
906
+ }
907
+ async function onUpdateFilters(newFilters) {
908
+ executionsStore.reset();
909
+ executionsStore.setFilters(newFilters);
910
+ await executionsStore.initialize();
911
+ }
912
+ async function onExecutionStop() {
913
+ await onRefreshData();
914
+ }
915
+ return (_ctx, _cache) => {
916
+ return openBlock(), createBlock(GlobalExecutionsList, {
917
+ executions: unref(allExecutions),
918
+ filters: unref(filters),
919
+ total: unref(executionsCount),
920
+ "estimated-total": unref(executionsCountEstimated),
921
+ "onExecution:stop": onExecutionStop,
922
+ "onUpdate:filters": onUpdateFilters
923
+ }, {
924
+ default: withCtx(() => [
925
+ createVNode(ProjectHeader, null, {
926
+ default: withCtx(() => [
927
+ unref(overview).isOverviewSubPage ? (openBlock(), createBlock(InsightsSummary, {
928
+ key: 0,
929
+ loading: unref(insightsStore).summary.isLoading,
930
+ summary: unref(insightsStore).summary.state
931
+ }, null, 8, ["loading", "summary"])) : createCommentVNode("", true)
932
+ ]),
933
+ _: 1
934
+ })
935
+ ]),
936
+ _: 1
937
+ }, 8, ["executions", "filters", "total", "estimated-total"]);
938
+ };
939
+ }
940
+ });
941
+ export {
942
+ _sfc_main as default
943
+ };