n8n-editor-ui 1.83.1 → 1.84.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 (110) hide show
  1. package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-Cu5o7-TL.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-78eP7HIe.js} +1 -1
  2. package/dist/assets/{AuthView-mP34ZmnC.js → AuthView-Bn_LB3Kw.js} +2 -2
  3. package/dist/assets/{CanvasChat-CSLR5tKe.css → CanvasChat-CGGQcCRA.css} +45 -30
  4. package/dist/assets/{CanvasChat-cto4xkVD.js → CanvasChat-tuKMnT6J.js} +230 -143
  5. package/dist/assets/{ChangePasswordView-DkwRz1u6.js → ChangePasswordView-aXYIR8zr.js} +3 -3
  6. package/dist/assets/CollectionParameter-DR9e0MGf.js +4 -0
  7. package/dist/assets/{CredentialsView-UBVro_dv.js → CredentialsView-k8CeiyMJ.js} +5 -6
  8. package/dist/assets/{ErrorView-EWPmvugu.js → ErrorView-e-cpk6J7.js} +1 -1
  9. package/dist/assets/{ConcurrentExecutionsHeader-CEBmSYNK.css → ExecutionsTime-BOPJEomw.css} +63 -63
  10. package/dist/assets/{ConcurrentExecutionsHeader-Ul9ROpk0.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-BYacEmlc.js} +114 -114
  11. package/dist/assets/ExecutionsView-CQi8A4ps.js +926 -0
  12. package/dist/assets/{ExecutionsView-CB1tvZfo.css → ExecutionsView-CRTcP3sx.css} +60 -188
  13. package/dist/assets/{FileSaver.min-D6Iix6V9.js → FileSaver.min-DmMmlWYQ.js} +1 -1
  14. package/dist/assets/{FixedCollectionParameter-DBIBAKMF.js → FixedCollectionParameter-BfUPtP5M.js} +1 -1
  15. package/dist/assets/{ForgotMyPasswordView-DOMjwy3H.js → ForgotMyPasswordView-Dzao5PZ9.js} +3 -3
  16. package/dist/assets/{ProjectHeader-BZ6b6lat.css → Logo-DLBj1gMw.css} +23 -17
  17. package/dist/assets/{Logo-CidMx5L1.js → Logo-DVRZ2qRx.js} +8 -19
  18. package/dist/assets/{MainHeader-CpYwrGHe.js → MainHeader-BUw_JG4S.js} +10 -10
  19. package/dist/assets/{MainSidebar-u0kzXS10.js → MainSidebar-C6aXqICd.js} +75 -42
  20. package/dist/assets/{MainSidebar-BRAjTL7J.css → MainSidebar-CKMiDGvH.css} +13 -12
  21. package/dist/assets/{NodeCreation-C3kgMOiP.js → NodeCreation-B9-99kNr.js} +4 -4
  22. package/dist/assets/{NodeCreator-C3jOJmI0.js → NodeCreator-DH90304h.js} +4 -4
  23. package/dist/assets/{NodeDetailsView-CVVfk-zW.css → NodeDetailsView-0RXvy-0D.css} +2 -2
  24. package/dist/assets/{NodeDetailsView-BuAX7b_S.js → NodeDetailsView-Ci-9Cz_w.js} +69 -61
  25. package/dist/assets/{NodeView-CsrK5ExP.js → NodeView-CFUO-Q9X.js} +57 -19
  26. package/dist/assets/{ProjectCardBadge-BYZ4CZ8h.js → ProjectCardBadge-CGqr1_BG.js} +1 -1
  27. package/dist/assets/{ProjectHeader-AVHuknTg.js → ProjectHeader-C8hRwBFC.js} +60 -7
  28. package/dist/assets/ProjectHeader-CQjB5wC7.css +285 -0
  29. package/dist/assets/{ProjectSettings-BBgNR6v0.js → ProjectSettings-motYfWGR.js} +2 -3
  30. package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-oVU1CjGg.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-DzkWenq4.js} +2 -2
  31. package/dist/assets/{ResourcesListLayout-C9w15Q23.js → ResourcesListLayout-BYVhS2j5.js} +14 -13
  32. package/dist/assets/{ResourcesListLayout-Brs7VKUf.css → ResourcesListLayout-BqQI0lCG.css} +29 -22
  33. package/dist/assets/{RunDataAi-DvJKJNYm.js → RunDataAi-pfKF0Nfm.js} +3 -3
  34. package/dist/assets/{RunDataJson-T-tjG8mj.js → RunDataJson-CNT_rM-i.js} +12 -12
  35. package/dist/assets/{RunDataJsonActions-zKxT1j4k.js → RunDataJsonActions-BTLAUv9R.js} +2 -2
  36. package/dist/assets/{RunDataSearch-CYKk6_W2.js → RunDataSearch-BpcbBojC.js} +1 -1
  37. package/dist/assets/{RunDataTable-rs93_vdQ.js → RunDataTable-ZnG9QEzJ.js} +2 -2
  38. package/dist/assets/{SamlOnboarding-gWhQJPLd.js → SamlOnboarding-DjhCWFIr.js} +3 -3
  39. package/dist/assets/{SettingsApiView-QxAEXccw.js → SettingsApiView-C1ClqjeG.js} +1 -1
  40. package/dist/assets/{SettingsCommunityNodesView-BpwvEtUI.js → SettingsCommunityNodesView-D5eLIpQC.js} +5 -5
  41. package/dist/assets/{SettingsExternalSecrets-DXrPZ93O.js → SettingsExternalSecrets-ubf6jijA.js} +1 -1
  42. package/dist/assets/{SettingsLdapView-nAm7w9WO.js → SettingsLdapView-BezV6JLr.js} +1 -1
  43. package/dist/assets/{SettingsLogStreamingView-Dr4ArIl_.js → SettingsLogStreamingView-ETOxA5Tw.js} +1 -1
  44. package/dist/assets/{SettingsPersonalView-DWFlvGTn.js → SettingsPersonalView-DGxUC8Q4.js} +1 -1
  45. package/dist/assets/{SettingsSourceControl-DKLeROzN.js → SettingsSourceControl-1vHHG6W9.js} +1 -1
  46. package/dist/assets/{SettingsSso-BVmlQW_R.js → SettingsSso-CdI26YPF.js} +1 -1
  47. package/dist/assets/{SettingsUsageAndPlan-I5n8xGLd.js → SettingsUsageAndPlan-BmI8cSiq.js} +1 -1
  48. package/dist/assets/{SettingsUsersView-D8uY5rsT.js → SettingsUsersView-90JmT1qM.js} +1 -1
  49. package/dist/assets/{SettingsView-e7XAFpfc.js → SettingsView-i7rE7s3I.js} +1 -1
  50. package/dist/assets/{SetupView-DQq_7fpU.js → SetupView-Lp4ullGE.js} +3 -3
  51. package/dist/assets/{SetupWorkflowCredentialsButton-frwFWfGJ.js → SetupWorkflowCredentialsButton-CoXXUd3B.js} +1 -1
  52. package/dist/assets/{SetupWorkflowFromTemplateView-C3ENxhAx.js → SetupWorkflowFromTemplateView-TVU0-Zq4.js} +3 -3
  53. package/dist/assets/{SigninView-Bq3o_KYj.js → SigninView-BqF8j6-h.js} +3 -3
  54. package/dist/assets/{SignoutView-BYQXAHDT.js → SignoutView-DrYJ9Qe3.js} +1 -1
  55. package/dist/assets/{SignupView-xqJgShbm.js → SignupView-_EKPhYKN.js} +3 -3
  56. package/dist/assets/{TemplateDetails-COPYl_Ch.js → TemplateDetails-DAalg9G2.js} +3 -3
  57. package/dist/assets/{TemplateList-DWGAiMoN.js → TemplateList-BEYMeJMu.js} +1 -1
  58. package/dist/assets/{TemplatesCollectionView-D7C-dsc7.js → TemplatesCollectionView-fMELXCRX.js} +5 -5
  59. package/dist/assets/{TemplatesSearchView-CUFKLHbU.js → TemplatesSearchView-BO-e3IH7.js} +3 -3
  60. package/dist/assets/{TemplatesView-BjZHhHGF.js → TemplatesView-p57nARMp.js} +1 -1
  61. package/dist/assets/{TemplatesWorkflowView-C2OFQoFQ.js → TemplatesWorkflowView-DAbL5S1-.js} +5 -5
  62. package/dist/assets/{TestDefinitionEditView-DjR3gJvA.js → TestDefinitionEditView-BTo9LlAU.js} +244 -252
  63. package/dist/assets/{TestDefinitionEditView-JONL00pA.css → TestDefinitionEditView-BXhOuJrU.css} +128 -116
  64. package/dist/assets/{TestDefinitionListView-BLzGSiMz.js → TestDefinitionListView-D_-DyZDv.js} +1 -1
  65. package/dist/assets/{TestDefinitionNewView-DBs9WSAD.js → TestDefinitionNewView-Crk5OePO.js} +13 -4
  66. package/dist/assets/{TestDefinitionRootView-vaMPai85.js → TestDefinitionRootView-BtiqAWW1.js} +1 -1
  67. package/dist/assets/{VariablesView-B2A18wmf.js → VariablesView-Bg3GI1iE.js} +5 -5
  68. package/dist/assets/{VariablesView-CbTLdNwU.css → VariablesView-BvDpOTm3.css} +7 -11
  69. package/dist/assets/{WorkerView-CfmL9mV2.js → WorkerView-CaTyr1ci.js} +7 -7
  70. package/dist/assets/{WorkflowActivator-Bk7lYyKD.js → WorkflowActivator-BvmRhIkt.js} +2 -2
  71. package/dist/assets/{WorkflowExecutionsInfoAccordion-BJUV_abc.js → WorkflowExecutionsInfoAccordion-BuIbG1kZ.js} +1 -1
  72. package/dist/assets/{WorkflowExecutionsLandingPage-BGJsZkAj.js → WorkflowExecutionsLandingPage-BirtsKx4.js} +2 -2
  73. package/dist/assets/{WorkflowExecutionsPreview-BDVLuC1z.css → WorkflowExecutionsPreview-CPGOOAq2.css} +48 -16
  74. package/dist/assets/{WorkflowExecutionsPreview-C1dnDirp.js → WorkflowExecutionsPreview-DFyHWF9H.js} +253 -119
  75. package/dist/assets/{WorkflowExecutionsView-CeyHBNCa.js → WorkflowExecutionsView-IUjVjxU9.js} +7 -7
  76. package/dist/assets/{WorkflowHistory-BjD7fWBc.js → WorkflowHistory-BqKSxr_5.js} +3 -3
  77. package/dist/assets/{WorkflowOnboardingView-C9XnQ0XZ.js → WorkflowOnboardingView-Bs0Rmm6I.js} +1 -1
  78. package/dist/assets/{WorkflowPreview-DzPoQOB4.js → WorkflowPreview-1jsK9hpV.js} +1 -1
  79. package/dist/assets/{WorkflowsView-DG5J9u8v.js → WorkflowsView-MzPw02jI.js} +482 -347
  80. package/dist/assets/{WorkflowsView-JN0Hvhvt.css → WorkflowsView-Sg6GR5kC.css} +53 -39
  81. package/dist/assets/{easyAiWorkflowUtils-CHIZUcBZ.js → easyAiWorkflowUtils-DlyLBhIZ.js} +1 -1
  82. package/dist/assets/{global-link-actions-DJx6dXwY.js → global-link-actions-DvwtxSrW.js} +1 -1
  83. package/dist/assets/{import-curl-BQvYdAxP.js → import-curl-CbxpR02g.js} +1 -1
  84. package/dist/assets/{index-CFLVCCgm.css → index-74EeM2i2.css} +751 -103
  85. package/dist/assets/{index-BloiTH5y.js → index-CyVlLoqB.js} +3216 -2198
  86. package/dist/assets/{index-Cvcpg6Dy.js → index-tzkIB4Tg.js} +1 -1
  87. package/dist/assets/{pickBy-fjQgBd6D.js → pickBy-DI3cF803.js} +1 -1
  88. package/dist/assets/{polyfills-C7eMRNFe.js → polyfills-CLZ4X0Ad.js} +2342 -1944
  89. package/dist/assets/{pushConnection.store-D5RQY4RP.js → pushConnection.store-BhUCpqAg.js} +1 -1
  90. package/dist/assets/{templateActions-DfmqYUYJ.js → templateActions-BnGO7zdc.js} +1 -1
  91. package/dist/assets/{typescript.worker-DP34mIHW.js → typescript.worker-Bt3bByTc.js} +1158 -695
  92. package/dist/assets/{useBeforeUnload-BTvPg0aq.js → useBeforeUnload-DtKxjKeS.js} +1 -1
  93. package/dist/assets/{useCanvasMapping-CGHW3BxZ.js → useCanvasMapping-BCP7UO9p.js} +10410 -10398
  94. package/dist/assets/{useCanvasMapping-CkNBF2SE.css → useCanvasMapping-CI4ehFWu.css} +579 -579
  95. package/dist/assets/{useCanvasOperations-Cr_vZCiR.js → useCanvasOperations-Ctquo5LL.js} +23 -6
  96. package/dist/assets/{useExecutionDebugging-CTmjDF_B.js → useExecutionDebugging-C0TAc9fj.js} +1 -1
  97. package/dist/assets/{useExecutionHelpers-C8isDFPE.js → useExecutionHelpers-BQHL3OpL.js} +1 -1
  98. package/dist/assets/{useImportCurlCommand-uH3ThHFG.js → useImportCurlCommand-IE8oJ9bp.js} +13 -20
  99. package/dist/assets/{usePinnedData-C5x08fuF.js → usePinnedData-CtRDhd6k.js} +2 -2
  100. package/dist/assets/{usePushConnection-DUixULqA.js → usePushConnection-DXozzPWi.js} +5 -4
  101. package/dist/assets/{useRunWorkflow-CnFMyZFO.js → useRunWorkflow-D9JIEr1s.js} +3 -3
  102. package/dist/assets/{useTestDefinitionForm-DxJcvrhw.js → useTestDefinitionForm-8dJH3v29.js} +1 -1
  103. package/dist/assets/{useWorkflowActivate-Cn5TIR2c.js → useWorkflowActivate-CI3X35ZJ.js} +1 -1
  104. package/dist/index.html +3 -3
  105. package/package.json +1 -1
  106. package/dist/assets/CollectionParameter-DzUDyeJC.js +0 -4
  107. package/dist/assets/ExecutionsView-DCeodQ1s.js +0 -983
  108. package/dist/assets/Logo-DJLTXpXC.css +0 -165
  109. package/dist/assets/ProjectCreateResource-cJSSCcoG.js +0 -56
  110. package/dist/assets/ProjectCreateResource-eYdTamXR.css +0 -139
@@ -1,983 +0,0 @@
1
- import { d as defineComponent, m as resolveComponent, c as openBlock, e as createBlock, w as withCtx, f as createCommentVNode, k as createTextVNode, t as toDisplayString, i as createVNode, n as normalizeClass, l as unref, v as renderSlot, g as useI18n, _ as _export_sfc, ab as useCssModule, r as ref, q as computed, fF as WAIT_INDEFINITELY, c_ as i18n, h as createElementBlock, j as createBaseVNode, J as withModifiers, U as useWorkflowsStore, at as useExecutionsStore, p as useSettingsStore, a6 as usePageRedirectionHelper, a as useToast, a9 as EnterpriseEditionFeature, I as watch, o as onMounted, ax as withDirectives, ay as vShow, F as Fragment, B as renderList, bS as TransitionGroup, af as MODAL_CONFIRM, am as getResourcePermissions, ak as useTelemetry, al as useMessage, W as useRoute, a4 as useDocumentTitle, cn as storeToRefs, aw as onBeforeMount, y as onBeforeUnmount, aU as useExternalHooks } from "./index-BloiTH5y.js";
2
- import { _ as _sfc_main$4, C as ConcurrentExecutionsHeader, E as ExecutionsFilter } from "./ConcurrentExecutionsHeader-Ul9ROpk0.js";
3
- import { u as useExecutionHelpers, c as convertToDisplayDate } from "./useExecutionHelpers-C8isDFPE.js";
4
- import { P as ProjectHeader } from "./ProjectHeader-AVHuknTg.js";
5
- import "./AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-Cu5o7-TL.js";
6
- import "./ProjectCreateResource-cJSSCcoG.js";
7
- const _sfc_main$3 = /* @__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 i18n2 = 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(i18n2).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(i18n2).baseText("executions.concurrency.docsLink"),
66
- target: "_blank"
67
- }, {
68
- default: withCtx(() => [
69
- createTextVNode(toDisplayString(unref(i18n2).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$1 = "_link_1k41m_123";
89
- const style0$2 = {
90
- link: link$1
91
- };
92
- const cssModules$2 = {
93
- "$style": style0$2
94
- };
95
- const GlobalExecutionsListItemQueuedTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__cssModules", cssModules$2]]);
96
- const _hoisted_1$1 = { key: 0 };
97
- const _hoisted_2 = { key: 1 };
98
- const _hoisted_3 = { key: 0 };
99
- const _hoisted_4 = { key: 1 };
100
- const _hoisted_5 = { key: 2 };
101
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
102
- __name: "GlobalExecutionsListItem",
103
- props: {
104
- execution: {},
105
- selected: { type: Boolean, default: false },
106
- workflowName: { default: "" },
107
- workflowPermissions: {},
108
- concurrencyCap: {},
109
- isCloudDeployment: { type: Boolean }
110
- },
111
- emits: ["stop", "select", "retrySaved", "retryOriginal", "delete", "goToUpgrade"],
112
- setup(__props, { emit: __emit }) {
113
- const emit = __emit;
114
- const props = __props;
115
- const style = useCssModule();
116
- const i18n$1 = useI18n();
117
- const executionHelpers = useExecutionHelpers();
118
- const isStopping = ref(false);
119
- const isRunning = computed(() => {
120
- return props.execution.status === "running";
121
- });
122
- const isQueued = computed(() => {
123
- return props.execution.status === "new";
124
- });
125
- const isWaitTillIndefinite = computed(() => {
126
- if (!props.execution.waitTill) {
127
- return false;
128
- }
129
- return new Date(props.execution.waitTill).getTime() === WAIT_INDEFINITELY.getTime();
130
- });
131
- const isRetriable = computed(() => executionHelpers.isExecutionRetriable(props.execution));
132
- const classes = computed(() => {
133
- return {
134
- [style.executionListItem]: true,
135
- [style[props.execution.status]]: true
136
- };
137
- });
138
- const formattedStartedAtDate = computed(() => {
139
- return props.execution.startedAt ? formatDate(props.execution.startedAt) : i18n$1.baseText("executionsList.startingSoon");
140
- });
141
- const formattedWaitTillDate = computed(() => {
142
- return props.execution.waitTill ? formatDate(props.execution.waitTill) : "";
143
- });
144
- const formattedStoppedAtDate = computed(() => {
145
- return props.execution.stoppedAt ? i18n$1.displayTimer(
146
- new Date(props.execution.stoppedAt).getTime() - new Date(props.execution.startedAt).getTime(),
147
- true
148
- ) : "";
149
- });
150
- const statusText = computed(() => {
151
- switch (props.execution.status) {
152
- case "waiting":
153
- return i18n$1.baseText("executionsList.waiting");
154
- case "canceled":
155
- return i18n$1.baseText("executionsList.canceled");
156
- case "crashed":
157
- return i18n$1.baseText("executionsList.error");
158
- case "new":
159
- return i18n$1.baseText("executionsList.new");
160
- case "running":
161
- return i18n$1.baseText("executionsList.running");
162
- case "success":
163
- return i18n$1.baseText("executionsList.succeeded");
164
- case "error":
165
- return i18n$1.baseText("executionsList.error");
166
- default:
167
- return i18n$1.baseText("executionsList.unknown");
168
- }
169
- });
170
- const statusTextTranslationPath = computed(() => {
171
- switch (props.execution.status) {
172
- case "waiting":
173
- return "executionsList.statusWaiting";
174
- case "canceled":
175
- return "executionsList.statusCanceled";
176
- case "crashed":
177
- case "error":
178
- case "success":
179
- if (!props.execution.stoppedAt) {
180
- return "executionsList.statusTextWithoutTime";
181
- } else {
182
- return "executionsList.statusText";
183
- }
184
- case "new":
185
- return "executionsList.statusTextWithoutTime";
186
- case "running":
187
- return "executionsList.statusRunning";
188
- default:
189
- return "executionsList.statusUnknown";
190
- }
191
- });
192
- function formatDate(fullDate) {
193
- const { date, time } = convertToDisplayDate(fullDate);
194
- return i18n.baseText("executionsList.started", { interpolate: { time, date } });
195
- }
196
- function displayExecution() {
197
- executionHelpers.openExecutionInNewTab(props.execution.id, props.execution.workflowId);
198
- }
199
- function onStopExecution() {
200
- isStopping.value = true;
201
- emit("stop", props.execution);
202
- }
203
- function onSelect() {
204
- emit("select", props.execution);
205
- }
206
- async function handleActionItemClick(commandData) {
207
- emit(commandData, props.execution);
208
- }
209
- return (_ctx, _cache) => {
210
- const _component_ElCheckbox = resolveComponent("ElCheckbox");
211
- const _component_FontAwesomeIcon = resolveComponent("FontAwesomeIcon");
212
- const _component_i18n_t = resolveComponent("i18n-t");
213
- const _component_N8nTooltip = resolveComponent("N8nTooltip");
214
- const _component_N8nButton = resolveComponent("N8nButton");
215
- const _component_N8nIconButton = resolveComponent("N8nIconButton");
216
- const _component_ElDropdownItem = resolveComponent("ElDropdownItem");
217
- const _component_ElDropdownMenu = resolveComponent("ElDropdownMenu");
218
- const _component_ElDropdown = resolveComponent("ElDropdown");
219
- return openBlock(), createElementBlock("tr", {
220
- class: normalizeClass(classes.value)
221
- }, [
222
- createBaseVNode("td", null, [
223
- !!_ctx.execution.stoppedAt && _ctx.execution.id ? (openBlock(), createBlock(_component_ElCheckbox, {
224
- key: 0,
225
- "model-value": _ctx.selected,
226
- label: "",
227
- "data-test-id": "select-execution-checkbox",
228
- "onUpdate:modelValue": onSelect
229
- }, null, 8, ["model-value"])) : createCommentVNode("", true)
230
- ]),
231
- createBaseVNode("td", null, [
232
- createBaseVNode("span", {
233
- class: normalizeClass(_ctx.$style.link),
234
- onClick: withModifiers(displayExecution, ["stop"])
235
- }, toDisplayString(_ctx.execution.workflowName || _ctx.workflowName), 3)
236
- ]),
237
- createBaseVNode("td", null, [
238
- createBaseVNode("span", null, toDisplayString(formattedStartedAtDate.value), 1)
239
- ]),
240
- createBaseVNode("td", null, [
241
- createBaseVNode("div", {
242
- class: normalizeClass(_ctx.$style.statusColumn)
243
- }, [
244
- isRunning.value ? (openBlock(), createElementBlock("span", {
245
- key: 0,
246
- class: normalizeClass(_ctx.$style.spinner)
247
- }, [
248
- createVNode(_component_FontAwesomeIcon, {
249
- icon: "spinner",
250
- spin: ""
251
- })
252
- ], 2)) : createCommentVNode("", true),
253
- !isWaitTillIndefinite.value && !isQueued.value ? (openBlock(), createBlock(_component_i18n_t, {
254
- key: 1,
255
- "data-test-id": "execution-status",
256
- tag: "span",
257
- keypath: statusTextTranslationPath.value
258
- }, {
259
- status: withCtx(() => [
260
- createBaseVNode("span", {
261
- class: normalizeClass(_ctx.$style.status)
262
- }, toDisplayString(statusText.value), 3)
263
- ]),
264
- time: withCtx(() => [
265
- _ctx.execution.waitTill ? (openBlock(), createElementBlock("span", _hoisted_1$1, toDisplayString(formattedWaitTillDate.value), 1)) : !!_ctx.execution.stoppedAt ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(formattedStoppedAtDate.value), 1)) : _ctx.execution.status !== "new" ? (openBlock(), createBlock(_sfc_main$4, {
266
- key: 2,
267
- "start-time": _ctx.execution.startedAt
268
- }, null, 8, ["start-time"])) : createCommentVNode("", true)
269
- ]),
270
- _: 1
271
- }, 8, ["keypath"])) : (openBlock(), createBlock(GlobalExecutionsListItemQueuedTooltip, {
272
- key: 2,
273
- status: props.execution.status,
274
- "concurrency-cap": props.concurrencyCap,
275
- "is-cloud-deployment": props.isCloudDeployment,
276
- onGoToUpgrade: _cache[0] || (_cache[0] = ($event) => emit("goToUpgrade"))
277
- }, {
278
- default: withCtx(() => [
279
- createBaseVNode("span", {
280
- class: normalizeClass(_ctx.$style.status)
281
- }, toDisplayString(statusText.value), 3)
282
- ]),
283
- _: 1
284
- }, 8, ["status", "concurrency-cap", "is-cloud-deployment"]))
285
- ], 2)
286
- ]),
287
- createBaseVNode("td", null, [
288
- _ctx.execution.id ? (openBlock(), createElementBlock("span", _hoisted_3, "#" + toDisplayString(_ctx.execution.id), 1)) : createCommentVNode("", true),
289
- _ctx.execution.retryOf ? (openBlock(), createElementBlock("span", _hoisted_4, [
290
- _cache[1] || (_cache[1] = createBaseVNode("br", null, null, -1)),
291
- createBaseVNode("small", null, " (" + toDisplayString(unref(i18n$1).baseText("executionsList.retryOf")) + " #" + toDisplayString(_ctx.execution.retryOf) + ") ", 1)
292
- ])) : _ctx.execution.retrySuccessId ? (openBlock(), createElementBlock("span", _hoisted_5, [
293
- _cache[2] || (_cache[2] = createBaseVNode("br", null, null, -1)),
294
- createBaseVNode("small", null, " (" + toDisplayString(unref(i18n$1).baseText("executionsList.successRetry")) + " #" + toDisplayString(_ctx.execution.retrySuccessId) + ") ", 1)
295
- ])) : createCommentVNode("", true)
296
- ]),
297
- createBaseVNode("td", null, [
298
- _ctx.execution.mode === "manual" ? (openBlock(), createBlock(_component_N8nTooltip, {
299
- key: 0,
300
- placement: "top"
301
- }, {
302
- content: withCtx(() => [
303
- createBaseVNode("span", null, toDisplayString(unref(i18n$1).baseText("executionsList.test")), 1)
304
- ]),
305
- default: withCtx(() => [
306
- createVNode(_component_FontAwesomeIcon, { icon: "flask" })
307
- ]),
308
- _: 1
309
- })) : createCommentVNode("", true),
310
- _ctx.execution.mode === "evaluation" ? (openBlock(), createBlock(_component_N8nTooltip, {
311
- key: 1,
312
- placement: "top"
313
- }, {
314
- content: withCtx(() => [
315
- createBaseVNode("span", null, toDisplayString(unref(i18n$1).baseText("executionsList.evaluation")), 1)
316
- ]),
317
- default: withCtx(() => [
318
- createVNode(_component_FontAwesomeIcon, { icon: "tasks" })
319
- ]),
320
- _: 1
321
- })) : createCommentVNode("", true)
322
- ]),
323
- createBaseVNode("td", null, [
324
- createBaseVNode("div", {
325
- class: normalizeClass(_ctx.$style.buttonCell)
326
- }, [
327
- !!_ctx.execution.stoppedAt && _ctx.execution.id ? (openBlock(), createBlock(_component_N8nButton, {
328
- key: 0,
329
- size: "small",
330
- outline: "",
331
- label: unref(i18n$1).baseText("executionsList.view"),
332
- onClick: withModifiers(displayExecution, ["stop"])
333
- }, null, 8, ["label"])) : createCommentVNode("", true)
334
- ], 2)
335
- ]),
336
- createBaseVNode("td", null, [
337
- createBaseVNode("div", {
338
- class: normalizeClass(_ctx.$style.buttonCell)
339
- }, [
340
- !_ctx.execution.stoppedAt || _ctx.execution.waitTill ? (openBlock(), createBlock(_component_N8nButton, {
341
- key: 0,
342
- "data-test-id": "stop-execution-button",
343
- size: "small",
344
- outline: "",
345
- label: unref(i18n$1).baseText("executionsList.stop"),
346
- loading: isStopping.value,
347
- onClick: withModifiers(onStopExecution, ["stop"])
348
- }, null, 8, ["label", "loading"])) : createCommentVNode("", true)
349
- ], 2)
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(i18n$1).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(i18n$1).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(i18n$1).baseText("generic.delete")), 1)
397
- ]),
398
- _: 1
399
- }, 8, ["class", "disabled"])
400
- ]),
401
- _: 1
402
- }, 8, ["class"])
403
- ]),
404
- default: withCtx(() => [
405
- createVNode(_component_N8nIconButton, {
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 executionListItem = "_executionListItem_1rqmn_123";
420
- const crashed = "_crashed_1rqmn_152";
421
- const error = "_error_1rqmn_152";
422
- const success = "_success_1rqmn_155";
423
- const running = "_running_1rqmn_161";
424
- const waiting = "_waiting_1rqmn_164";
425
- const unknown = "_unknown_1rqmn_167";
426
- const link = "_link_1rqmn_171";
427
- const statusColumn = "_statusColumn_1rqmn_177";
428
- const spinner = "_spinner_1rqmn_182";
429
- const status = "_status_1rqmn_177";
430
- const buttonCell = "_buttonCell_1rqmn_211";
431
- const style0$1 = {
432
- executionListItem,
433
- crashed,
434
- error,
435
- success,
436
- "new": "_new_1rqmn_158",
437
- running,
438
- waiting,
439
- unknown,
440
- link,
441
- statusColumn,
442
- spinner,
443
- status,
444
- buttonCell
445
- };
446
- const cssModules$1 = {
447
- "$style": style0$1
448
- };
449
- const GlobalExecutionsListItem = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__cssModules", cssModules$1]]);
450
- const _hoisted_1 = { key: 1 };
451
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
452
- __name: "GlobalExecutionsList",
453
- props: {
454
- executions: {},
455
- filters: {},
456
- total: { default: 0 },
457
- estimated: { type: Boolean, default: false }
458
- },
459
- emits: ["update:filters", "execution:stop"],
460
- setup(__props, { emit: __emit }) {
461
- const props = __props;
462
- const emit = __emit;
463
- const i18n2 = useI18n();
464
- const telemetry = useTelemetry();
465
- const workflowsStore = useWorkflowsStore();
466
- const executionsStore = useExecutionsStore();
467
- const settingsStore = useSettingsStore();
468
- const pageRedirectionHelper = usePageRedirectionHelper();
469
- const isMounted = ref(false);
470
- const allVisibleSelected = ref(false);
471
- const allExistingSelected = ref(false);
472
- const selectedItems = ref({});
473
- const message = useMessage();
474
- const toast = useToast();
475
- const selectedCount = computed(() => {
476
- if (allExistingSelected.value) {
477
- return props.total;
478
- }
479
- return Object.keys(selectedItems.value).length;
480
- });
481
- const workflows = computed(() => {
482
- return [
483
- {
484
- id: "all",
485
- name: i18n2.baseText("executionsList.allWorkflows")
486
- },
487
- ...workflowsStore.allWorkflows
488
- ];
489
- });
490
- const isAnnotationEnabled = computed(
491
- () => settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.AdvancedExecutionFilters]
492
- );
493
- const runningExecutionsCount = computed(() => {
494
- return props.executions.filter(
495
- (execution) => execution.status === "running" && ["webhook", "trigger"].includes(execution.mode)
496
- ).length;
497
- });
498
- watch(
499
- () => props.executions,
500
- () => {
501
- if (props.executions.length === 0) {
502
- handleClearSelection();
503
- }
504
- adjustSelectionAfterMoreItemsLoaded();
505
- }
506
- );
507
- onMounted(() => {
508
- isMounted.value = true;
509
- });
510
- function handleCheckAllExistingChange() {
511
- allExistingSelected.value = !allExistingSelected.value;
512
- allVisibleSelected.value = !allExistingSelected.value;
513
- handleCheckAllVisibleChange();
514
- }
515
- function handleCheckAllVisibleChange() {
516
- allVisibleSelected.value = !allVisibleSelected.value;
517
- if (!allVisibleSelected.value) {
518
- allExistingSelected.value = false;
519
- selectedItems.value = {};
520
- } else {
521
- selectAllVisibleExecutions();
522
- }
523
- }
524
- function toggleSelectExecution(execution) {
525
- const executionId = execution.id;
526
- if (selectedItems.value[executionId]) {
527
- const { [executionId]: removedSelectedItem, ...rest } = selectedItems.value;
528
- selectedItems.value = rest;
529
- } else {
530
- selectedItems.value = {
531
- ...selectedItems.value,
532
- [executionId]: true
533
- };
534
- }
535
- allVisibleSelected.value = Object.keys(selectedItems.value).length === props.executions.length;
536
- allExistingSelected.value = Object.keys(selectedItems.value).length === props.total;
537
- }
538
- async function handleDeleteSelected() {
539
- const confirmationText = [
540
- isAnnotationEnabled.value && i18n2.baseText("executionsList.confirmMessage.annotationsNote"),
541
- i18n2.baseText("executionsList.confirmMessage.message", {
542
- interpolate: { count: selectedCount.value.toString() }
543
- })
544
- ].filter(Boolean).join(" ");
545
- const deleteExecutions = await message.confirm(
546
- confirmationText,
547
- i18n2.baseText("executionsList.confirmMessage.headline"),
548
- {
549
- type: "warning",
550
- confirmButtonText: i18n2.baseText("executionsList.confirmMessage.confirmButtonText"),
551
- cancelButtonText: i18n2.baseText("executionsList.confirmMessage.cancelButtonText")
552
- }
553
- );
554
- if (deleteExecutions !== MODAL_CONFIRM) {
555
- return;
556
- }
557
- try {
558
- await executionsStore.deleteExecutions({
559
- filters: executionsStore.executionsFilters,
560
- ...allExistingSelected.value ? { deleteBefore: /* @__PURE__ */ new Date() } : {
561
- ids: Object.keys(selectedItems.value)
562
- }
563
- });
564
- } catch (error2) {
565
- toast.showError(error2, i18n2.baseText("executionsList.showError.handleDeleteSelected.title"));
566
- return;
567
- }
568
- toast.showMessage({
569
- title: i18n2.baseText("executionsList.showMessage.handleDeleteSelected.title"),
570
- type: "success"
571
- });
572
- handleClearSelection();
573
- }
574
- function handleClearSelection() {
575
- allVisibleSelected.value = false;
576
- allExistingSelected.value = false;
577
- selectedItems.value = {};
578
- }
579
- async function onFilterChanged(filters) {
580
- emit("update:filters", filters);
581
- handleClearSelection();
582
- }
583
- function getExecutionWorkflowName(execution) {
584
- return getWorkflowName(execution.workflowId ?? "") ?? i18n2.baseText("executionsList.unsavedWorkflow");
585
- }
586
- function getExecutionWorkflowPermissions(execution) {
587
- return getResourcePermissions(execution.scopes).workflow;
588
- }
589
- function getWorkflowName(workflowId) {
590
- return workflows.value.find((data) => data.id === workflowId)?.name;
591
- }
592
- async function loadMore2() {
593
- if (executionsStore.filters.status === "running") {
594
- return;
595
- }
596
- let lastId;
597
- if (props.executions.length !== 0) {
598
- const lastItem = props.executions.slice(-1)[0];
599
- lastId = lastItem.id;
600
- }
601
- try {
602
- await executionsStore.fetchExecutions(executionsStore.executionsFilters, lastId);
603
- } catch (error2) {
604
- toast.showError(error2, i18n2.baseText("executionsList.showError.loadMore.title"));
605
- }
606
- }
607
- function selectAllVisibleExecutions() {
608
- props.executions.forEach((execution) => {
609
- selectedItems.value[execution.id] = true;
610
- });
611
- }
612
- function adjustSelectionAfterMoreItemsLoaded() {
613
- if (allExistingSelected.value) {
614
- allVisibleSelected.value = true;
615
- selectAllVisibleExecutions();
616
- }
617
- }
618
- async function retrySavedExecution(execution) {
619
- await retryExecution(execution, true);
620
- }
621
- async function retryOriginalExecution(execution) {
622
- await retryExecution(execution, false);
623
- }
624
- async function retryExecution(execution, loadWorkflow) {
625
- try {
626
- const retrySuccessful = await executionsStore.retryExecution(execution.id, loadWorkflow);
627
- if (retrySuccessful) {
628
- toast.showMessage({
629
- title: i18n2.baseText("executionsList.showMessage.retrySuccessfulTrue.title"),
630
- type: "success"
631
- });
632
- } else {
633
- toast.showMessage({
634
- title: i18n2.baseText("executionsList.showMessage.retrySuccessfulFalse.title"),
635
- type: "error"
636
- });
637
- }
638
- } catch (error2) {
639
- toast.showError(error2, i18n2.baseText("executionsList.showError.retryExecution.title"));
640
- }
641
- telemetry.track("User clicked retry execution button", {
642
- workflow_id: workflowsStore.workflowId,
643
- execution_id: execution.id,
644
- retry_type: loadWorkflow ? "current" : "original"
645
- });
646
- }
647
- async function stopExecution(execution) {
648
- try {
649
- await executionsStore.stopCurrentExecution(execution.id);
650
- toast.showMessage({
651
- title: i18n2.baseText("executionsList.showMessage.stopExecution.title"),
652
- message: i18n2.baseText("executionsList.showMessage.stopExecution.message", {
653
- interpolate: { activeExecutionId: execution.id }
654
- }),
655
- type: "success"
656
- });
657
- emit("execution:stop");
658
- } catch (error2) {
659
- toast.showError(error2, i18n2.baseText("executionsList.showError.stopExecution.title"));
660
- }
661
- }
662
- async function deleteExecution(execution) {
663
- const hasAnnotation = !!execution.annotation && (execution.annotation.vote || execution.annotation.tags.length > 0);
664
- if (hasAnnotation) {
665
- const deleteConfirmed = await message.confirm(
666
- i18n2.baseText("executionsList.confirmMessage.annotatedExecutionMessage"),
667
- i18n2.baseText("executionDetails.confirmMessage.headline"),
668
- {
669
- type: "warning",
670
- confirmButtonText: i18n2.baseText("executionDetails.confirmMessage.confirmButtonText"),
671
- cancelButtonText: ""
672
- }
673
- );
674
- if (deleteConfirmed !== MODAL_CONFIRM) {
675
- return;
676
- }
677
- }
678
- try {
679
- await executionsStore.deleteExecutions({ ids: [execution.id] });
680
- if (allVisibleSelected.value) {
681
- const { [execution.id]: _, ...rest } = selectedItems.value;
682
- selectedItems.value = rest;
683
- }
684
- } catch (error2) {
685
- toast.showError(error2, i18n2.baseText("executionsList.showError.handleDeleteSelected.title"));
686
- }
687
- }
688
- async function onAutoRefreshToggle(value) {
689
- if (value) {
690
- await executionsStore.startAutoRefreshInterval();
691
- } else {
692
- executionsStore.stopAutoRefreshInterval();
693
- }
694
- }
695
- const goToUpgrade = () => {
696
- void pageRedirectionHelper.goToUpgrade("concurrency", "upgrade-concurrency");
697
- };
698
- return (_ctx, _cache) => {
699
- const _component_N8nLoading = resolveComponent("N8nLoading");
700
- const _component_ElCheckbox = resolveComponent("ElCheckbox");
701
- const _component_el_checkbox = resolveComponent("el-checkbox");
702
- const _component_N8nButton = resolveComponent("N8nButton");
703
- return openBlock(), createElementBlock("div", {
704
- class: normalizeClass(_ctx.$style.execListWrapper)
705
- }, [
706
- createVNode(ProjectHeader),
707
- createBaseVNode("div", {
708
- class: normalizeClass(_ctx.$style.execList)
709
- }, [
710
- createBaseVNode("div", {
711
- class: normalizeClass(_ctx.$style.execListHeader)
712
- }, [
713
- createBaseVNode("div", {
714
- class: normalizeClass(_ctx.$style.execListHeaderControls)
715
- }, [
716
- unref(settingsStore).isConcurrencyEnabled ? (openBlock(), createBlock(ConcurrentExecutionsHeader, {
717
- key: 0,
718
- class: "mr-xl",
719
- "running-executions-count": runningExecutionsCount.value,
720
- "concurrency-cap": unref(settingsStore).concurrency,
721
- "is-cloud-deployment": unref(settingsStore).isCloudDeployment,
722
- onGoToUpgrade: goToUpgrade
723
- }, null, 8, ["running-executions-count", "concurrency-cap", "is-cloud-deployment"])) : createCommentVNode("", true),
724
- !isMounted.value ? (openBlock(), createBlock(_component_N8nLoading, {
725
- key: 1,
726
- class: normalizeClass(_ctx.$style.filterLoader),
727
- variant: "custom"
728
- }, null, 8, ["class"])) : (openBlock(), createBlock(_component_ElCheckbox, {
729
- key: 2,
730
- modelValue: unref(executionsStore).autoRefresh,
731
- "onUpdate:modelValue": [
732
- _cache[0] || (_cache[0] = ($event) => unref(executionsStore).autoRefresh = $event),
733
- _cache[1] || (_cache[1] = ($event) => onAutoRefreshToggle($event))
734
- ],
735
- class: "mr-xl",
736
- "data-test-id": "execution-auto-refresh-checkbox"
737
- }, {
738
- default: withCtx(() => [
739
- createTextVNode(toDisplayString(unref(i18n2).baseText("executionsList.autoRefresh")), 1)
740
- ]),
741
- _: 1
742
- }, 8, ["modelValue"])),
743
- withDirectives(createVNode(ExecutionsFilter, {
744
- workflows: workflows.value,
745
- class: "execFilter",
746
- onFilterChanged
747
- }, null, 8, ["workflows"]), [
748
- [vShow, isMounted.value]
749
- ])
750
- ], 2)
751
- ], 2),
752
- allVisibleSelected.value && _ctx.total > 0 ? (openBlock(), createBlock(_component_ElCheckbox, {
753
- key: 0,
754
- class: normalizeClass(_ctx.$style.selectAll),
755
- label: unref(i18n2).baseText("executionsList.selectAll", {
756
- adjustToNumber: _ctx.total,
757
- interpolate: { executionNum: `${_ctx.total}` }
758
- }),
759
- "model-value": allExistingSelected.value,
760
- "data-test-id": "select-all-executions-checkbox",
761
- "onUpdate:modelValue": handleCheckAllExistingChange
762
- }, null, 8, ["class", "label", "model-value"])) : createCommentVNode("", true),
763
- !isMounted.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
764
- createVNode(_component_N8nLoading, {
765
- class: normalizeClass(_ctx.$style.tableLoader),
766
- variant: "custom"
767
- }, null, 8, ["class"]),
768
- createVNode(_component_N8nLoading, {
769
- class: normalizeClass(_ctx.$style.tableLoader),
770
- variant: "custom"
771
- }, null, 8, ["class"]),
772
- createVNode(_component_N8nLoading, {
773
- class: normalizeClass(_ctx.$style.tableLoader),
774
- variant: "custom"
775
- }, null, 8, ["class"])
776
- ])) : (openBlock(), createElementBlock("table", {
777
- key: 2,
778
- class: normalizeClass(_ctx.$style.execTable)
779
- }, [
780
- createBaseVNode("thead", null, [
781
- createBaseVNode("tr", null, [
782
- createBaseVNode("th", null, [
783
- createVNode(_component_el_checkbox, {
784
- "model-value": allVisibleSelected.value,
785
- disabled: _ctx.total < 1,
786
- label: "",
787
- "data-test-id": "select-visible-executions-checkbox",
788
- "onUpdate:modelValue": handleCheckAllVisibleChange
789
- }, null, 8, ["model-value", "disabled"])
790
- ]),
791
- createBaseVNode("th", null, toDisplayString(unref(i18n2).baseText("executionsList.name")), 1),
792
- createBaseVNode("th", null, toDisplayString(unref(i18n2).baseText("executionsList.startedAt")), 1),
793
- createBaseVNode("th", null, toDisplayString(unref(i18n2).baseText("executionsList.status")), 1),
794
- createBaseVNode("th", null, toDisplayString(unref(i18n2).baseText("executionsList.id")), 1),
795
- _cache[3] || (_cache[3] = createBaseVNode("th", null, null, -1)),
796
- _cache[4] || (_cache[4] = createBaseVNode("th", null, null, -1)),
797
- _cache[5] || (_cache[5] = createBaseVNode("th", null, null, -1)),
798
- _cache[6] || (_cache[6] = createBaseVNode("th", null, null, -1))
799
- ])
800
- ]),
801
- createVNode(TransitionGroup, {
802
- tag: "tbody",
803
- name: "executions-list"
804
- }, {
805
- default: withCtx(() => [
806
- (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.executions, (execution) => {
807
- return openBlock(), createBlock(GlobalExecutionsListItem, {
808
- key: execution.id,
809
- execution,
810
- "workflow-name": getExecutionWorkflowName(execution),
811
- "workflow-permissions": getExecutionWorkflowPermissions(execution),
812
- selected: selectedItems.value[execution.id] || allExistingSelected.value,
813
- "concurrency-cap": unref(settingsStore).concurrency,
814
- "is-cloud-deployment": unref(settingsStore).isCloudDeployment,
815
- "data-test-id": "global-execution-list-item",
816
- onStop: stopExecution,
817
- onDelete: deleteExecution,
818
- onSelect: toggleSelectExecution,
819
- onRetrySaved: retrySavedExecution,
820
- onRetryOriginal: retryOriginalExecution,
821
- onGoToUpgrade: goToUpgrade
822
- }, null, 8, ["execution", "workflow-name", "workflow-permissions", "selected", "concurrency-cap", "is-cloud-deployment"]);
823
- }), 128))
824
- ]),
825
- _: 1
826
- })
827
- ], 2)),
828
- !_ctx.executions.length && isMounted.value && !unref(executionsStore).loading ? (openBlock(), createElementBlock("div", {
829
- key: 3,
830
- class: normalizeClass(_ctx.$style.loadedAll),
831
- "data-test-id": "execution-list-empty"
832
- }, toDisplayString(unref(i18n2).baseText("executionsList.empty")), 3)) : _ctx.total > _ctx.executions.length || _ctx.estimated ? (openBlock(), createElementBlock("div", {
833
- key: 4,
834
- class: normalizeClass(_ctx.$style.loadMore)
835
- }, [
836
- createVNode(_component_N8nButton, {
837
- icon: "sync",
838
- title: unref(i18n2).baseText("executionsList.loadMore"),
839
- label: unref(i18n2).baseText("executionsList.loadMore"),
840
- loading: unref(executionsStore).loading,
841
- "data-test-id": "load-more-button",
842
- onClick: _cache[2] || (_cache[2] = ($event) => loadMore2())
843
- }, null, 8, ["title", "label", "loading"])
844
- ], 2)) : isMounted.value && !unref(executionsStore).loading ? (openBlock(), createElementBlock("div", {
845
- key: 5,
846
- class: normalizeClass(_ctx.$style.loadedAll),
847
- "data-test-id": "execution-all-loaded"
848
- }, toDisplayString(unref(i18n2).baseText("executionsList.loadedAll")), 3)) : createCommentVNode("", true)
849
- ], 2),
850
- selectedCount.value > 0 ? (openBlock(), createElementBlock("div", {
851
- key: 0,
852
- class: normalizeClass(_ctx.$style.selectionOptions),
853
- "data-test-id": "selected-executions-info"
854
- }, [
855
- createBaseVNode("span", null, toDisplayString(unref(i18n2).baseText("executionsList.selected", {
856
- adjustToNumber: selectedCount.value,
857
- interpolate: { count: `${selectedCount.value}` }
858
- })), 1),
859
- createVNode(_component_N8nButton, {
860
- label: unref(i18n2).baseText("generic.delete"),
861
- type: "tertiary",
862
- "data-test-id": "delete-selected-button",
863
- onClick: handleDeleteSelected
864
- }, null, 8, ["label"]),
865
- createVNode(_component_N8nButton, {
866
- label: unref(i18n2).baseText("executionsList.clearSelection"),
867
- type: "tertiary",
868
- "data-test-id": "clear-selection-button",
869
- onClick: handleClearSelection
870
- }, null, 8, ["label"])
871
- ], 2)) : createCommentVNode("", true)
872
- ], 2);
873
- };
874
- }
875
- });
876
- const execListWrapper = "_execListWrapper_152sq_123";
877
- const execList = "_execList_152sq_123";
878
- const execListHeader = "_execListHeader_152sq_144";
879
- const execListHeaderControls = "_execListHeaderControls_152sq_151";
880
- const selectionOptions = "_selectionOptions_152sq_157";
881
- const execTable = "_execTable_152sq_175";
882
- const loadMore = "_loadMore_152sq_218";
883
- const loadedAll = "_loadedAll_152sq_224";
884
- const actions = "_actions_152sq_231";
885
- const deleteOnly = "_deleteOnly_152sq_231";
886
- const retryAction = "_retryAction_152sq_235";
887
- const deleteAction = "_deleteAction_152sq_235";
888
- const selectAll = "_selectAll_152sq_239";
889
- const filterLoader = "_filterLoader_152sq_245";
890
- const tableLoader = "_tableLoader_152sq_250";
891
- const style0 = {
892
- execListWrapper,
893
- execList,
894
- execListHeader,
895
- execListHeaderControls,
896
- selectionOptions,
897
- execTable,
898
- loadMore,
899
- loadedAll,
900
- actions,
901
- deleteOnly,
902
- retryAction,
903
- deleteAction,
904
- selectAll,
905
- filterLoader,
906
- tableLoader
907
- };
908
- const cssModules = {
909
- "$style": style0
910
- };
911
- const GlobalExecutionsList = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__cssModules", cssModules], ["__scopeId", "data-v-cb068364"]]);
912
- const _sfc_main = /* @__PURE__ */ defineComponent({
913
- __name: "ExecutionsView",
914
- setup(__props) {
915
- const route = useRoute();
916
- const i18n2 = useI18n();
917
- const telemetry = useTelemetry();
918
- const externalHooks = useExternalHooks();
919
- const workflowsStore = useWorkflowsStore();
920
- const executionsStore = useExecutionsStore();
921
- const documentTitle = useDocumentTitle();
922
- const toast = useToast();
923
- const { executionsCount, executionsCountEstimated, filters, allExecutions } = storeToRefs(executionsStore);
924
- onBeforeMount(async () => {
925
- await loadWorkflows();
926
- void externalHooks.run("executionsList.openDialog");
927
- telemetry.track("User opened Executions log", {
928
- workflow_id: workflowsStore.workflowId
929
- });
930
- });
931
- onMounted(async () => {
932
- documentTitle.set(i18n2.baseText("executionsList.workflowExecutions"));
933
- document.addEventListener("visibilitychange", onDocumentVisibilityChange);
934
- await executionsStore.initialize();
935
- });
936
- onBeforeUnmount(() => {
937
- executionsStore.reset();
938
- document.removeEventListener("visibilitychange", onDocumentVisibilityChange);
939
- });
940
- async function loadWorkflows() {
941
- try {
942
- await workflowsStore.fetchAllWorkflows(route.params?.projectId);
943
- } catch (error2) {
944
- toast.showError(error2, i18n2.baseText("executionsList.showError.loadWorkflows.title"));
945
- }
946
- }
947
- function onDocumentVisibilityChange() {
948
- if (document.visibilityState === "hidden") {
949
- executionsStore.stopAutoRefreshInterval();
950
- } else {
951
- void executionsStore.startAutoRefreshInterval();
952
- }
953
- }
954
- async function onRefreshData() {
955
- try {
956
- await executionsStore.fetchExecutions();
957
- } catch (error2) {
958
- toast.showError(error2, i18n2.baseText("executionsList.showError.refreshData.title"));
959
- }
960
- }
961
- async function onUpdateFilters(newFilters) {
962
- executionsStore.reset();
963
- executionsStore.setFilters(newFilters);
964
- await executionsStore.initialize();
965
- }
966
- async function onExecutionStop() {
967
- await onRefreshData();
968
- }
969
- return (_ctx, _cache) => {
970
- return openBlock(), createBlock(GlobalExecutionsList, {
971
- executions: unref(allExecutions),
972
- filters: unref(filters),
973
- total: unref(executionsCount),
974
- "estimated-total": unref(executionsCountEstimated),
975
- "onExecution:stop": onExecutionStop,
976
- "onUpdate:filters": onUpdateFilters
977
- }, null, 8, ["executions", "filters", "total", "estimated-total"]);
978
- };
979
- }
980
- });
981
- export {
982
- _sfc_main as default
983
- };