n8n-editor-ui 1.85.2 → 1.87.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.
- package/dist/assets/AnimatedSpinner-ChSRgyeI.css +39 -0
- package/dist/assets/AnimatedSpinner-urWn52iY.js +18 -0
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-B2Xk-4o2.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DIbgkfAC.js} +1 -1
- package/dist/assets/{AuthView-Bhr2Ols-.js → AuthView-DIQI5asI.js} +2 -2
- package/dist/assets/{CanvasChatSwitch-BcSDHC-c.css → CanvasChatSwitch-0IWSu8RE.css} +488 -46
- package/dist/assets/{CanvasChatSwitch-E9vu2jW8.js → CanvasChatSwitch-BIpZuY-n.js} +697 -214
- package/dist/assets/{ChangePasswordView-BzAEcqVw.js → ChangePasswordView-D8Qv0tim.js} +3 -3
- package/dist/assets/CollectionParameter-DT1MnS63.js +4 -0
- package/dist/assets/{CredentialsView-CZiEXdjH.js → CredentialsView-tJ8-2RrO.js} +8 -8
- package/dist/assets/{ErrorView-C1QywuMY.js → ErrorView-CZEZD7LB.js} +1 -1
- package/dist/assets/{ExecutionsTime-BOPJEomw.css → ExecutionsTime-DZHUIJjP.css} +6 -6
- package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-l5VZIkoy.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-gcknFyjA.js} +23 -20
- package/dist/assets/{ExecutionsView-Bo0Nk8lV.js → ExecutionsView-BCfIz8EF.js} +49 -57
- package/dist/assets/{ExecutionsView-JCKikuIS.css → ExecutionsView-ByQf9yli.css} +13 -47
- package/dist/assets/{FileSaver.min-D3VgyjMF.js → FileSaver.min-Bs2qHlKb.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-RpfOY9Ho.js → FixedCollectionParameter-E0LDqNW3.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-DPTddCxG.js → ForgotMyPasswordView-YOnrzvKJ.js} +3 -3
- package/dist/assets/InsightsChartAverageRuntime-DWrrriYN.js +61 -0
- package/dist/assets/InsightsChartFailed-DRi6JC3m.js +57 -0
- package/dist/assets/InsightsChartFailureRate-BdFNsMpg.js +57 -0
- package/dist/assets/InsightsChartTimeSaved-C12GZzSQ.js +71 -0
- package/dist/assets/InsightsChartTotal-Cn386HO4.js +59 -0
- package/dist/assets/InsightsDashboard-BawwZ0Oo.js +154 -0
- package/dist/assets/InsightsDashboard-CB4vHnBh.css +152 -0
- package/dist/assets/InsightsPaywall-OeXh6LeZ.css +133 -0
- package/dist/assets/InsightsPaywall-g3JcqAYL.js +58 -0
- package/dist/assets/{useOverview-DcRuPjLJ.css → InsightsSummary-W08OzElS.css} +57 -35
- package/dist/assets/InsightsSummary-vMmKUcie.js +185 -0
- package/dist/assets/InsightsTableWorkflows-DQQ1vvMz.js +129 -0
- package/dist/assets/InsightsTableWorkflows-Us3j4UTO.css +128 -0
- package/dist/assets/{Logo-CxllxUni.js → Logo-Vm92axlM.js} +1 -1
- package/dist/assets/{MainHeader-9gTxUJIR.js → MainHeader-BUhpvu2K.js} +9 -10
- package/dist/assets/{MainSidebar-CRJML8mh.js → MainSidebar-D5P5FSUQ.js} +11 -4
- package/dist/assets/{NodeCreation-zoYjBJl6.js → NodeCreation-BgW5u-Bc.js} +4 -4
- package/dist/assets/{NodeCreator-D-qBRyBy.js → NodeCreator-CFe2n6vJ.js} +10 -26
- package/dist/assets/{NodeDetailsView-C1z3N5z_.css → NodeDetailsView-BT-ro74o.css} +63 -70
- package/dist/assets/{NodeDetailsView-C1iBFaC1.js → NodeDetailsView-CmtK-rDD.js} +145 -482
- package/dist/assets/{NodeView-Bio-FnnF.js → NodeView-BqaNPfpx.js} +19 -21
- package/dist/assets/{ProjectCardBadge-BEflW6oP.js → ProjectCardBadge-BKgtzWr1.js} +69 -36
- package/dist/assets/{ProjectCardBadge-C78ap7Rc.css → ProjectCardBadge-t3v64i1e.css} +18 -13
- package/dist/assets/{ProjectHeader-DK3_g_D8.js → ProjectHeader-BWVSdavS.js} +33 -7
- package/dist/assets/{ProjectHeader-B-a6_GH6.css → ProjectHeader-BsBpG-Mj.css} +7 -7
- package/dist/assets/{ProjectSettings-CLMy_-YC.js → ProjectSettings-BL-2-uOg.js} +3 -3
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-CSazgsi8.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-BL-bMMgn.js} +1 -2
- package/dist/assets/{ResourcesListLayout-CBvvL0VM.js → ResourcesListLayout-CozpmfUY.js} +1 -1
- package/dist/assets/{RunDataAi-C-tu9GrI.js → RunDataAi-B_EadpzG.js} +188 -94
- package/dist/assets/{RunDataAi-CN9FrT9c.css → RunDataAi-CUUDqZRP.css} +128 -0
- package/dist/assets/{RunDataJson-ClpS_600.js → RunDataJson-CyNNCtyd.js} +11 -12
- package/dist/assets/{RunDataJsonActions-gWW8Qkt_.js → RunDataJsonActions-SQqaiBEP.js} +1 -2
- package/dist/assets/{RunDataSearch-Dgv5JYk-.js → RunDataSearch-BF9kshKq.js} +1 -1
- package/dist/assets/{RunDataTable-nsOk35pD.js → RunDataTable-DsW7wuc2.js} +10 -8
- package/dist/assets/{SamlOnboarding-C5TSdGcx.js → SamlOnboarding-BX7RiRJB.js} +3 -3
- package/dist/assets/{SettingsApiView-CzQG1ofR.js → SettingsApiView-CDIPYvaG.js} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-D_F3n2NO.js → SettingsCommunityNodesView-BRSEkT73.js} +4 -5
- package/dist/assets/{SettingsExternalSecrets-BUgKlMoR.js → SettingsExternalSecrets-D7ASuAnS.js} +1 -1
- package/dist/assets/{SettingsLdapView-CAmuVErd.js → SettingsLdapView-DA5fZZ51.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-DLkHrsx5.js → SettingsLogStreamingView-C9qkYvCr.js} +1 -1
- package/dist/assets/{SettingsPersonalView-2elwsG0f.js → SettingsPersonalView-BnNOJcvO.js} +2 -2
- package/dist/assets/{SettingsSourceControl-BD426GUo.js → SettingsSourceControl--ozL4427.js} +1 -1
- package/dist/assets/{SettingsSso-B-7lLoTI.js → SettingsSso-Bfe_HRSr.js} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-EUWVJYe2.js → SettingsUsageAndPlan-CzvMNudh.js} +1 -1
- package/dist/assets/{SettingsUsersView-C3GbTYvU.js → SettingsUsersView-DGu5ku48.js} +1 -1
- package/dist/assets/{SettingsView-DSMM_8SL.js → SettingsView-CvreVxXL.js} +1 -1
- package/dist/assets/{SetupView-CexY8Lic.js → SetupView-BJT6GtIA.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-BpLp754t.js → SetupWorkflowCredentialsButton-BEq2gs_-.js} +2 -4
- package/dist/assets/{SetupWorkflowFromTemplateView-CLvS9Kda.js → SetupWorkflowFromTemplateView-F9oCDWX8.js} +3 -12
- package/dist/assets/{SigninView-CYkcm3hG.js → SigninView-DyoDtCBc.js} +3 -3
- package/dist/assets/{SignoutView-C2HutrZm.js → SignoutView-DclBslYe.js} +1 -1
- package/dist/assets/{SignupView-B-o-ka0Z.js → SignupView-BhB0Hhj0.js} +3 -3
- package/dist/assets/{TemplateDetails-C20G_lj4.js → TemplateDetails-B3utdyMi.js} +1 -1
- package/dist/assets/{TemplateList-DQzcYS6n.js → TemplateList-Bgz1iiiH.js} +1 -1
- package/dist/assets/{TemplatesCollectionView-DEEMhmYZ.js → TemplatesCollectionView-CORzb8YZ.js} +7 -9
- package/dist/assets/{TemplatesSearchView-S6802uNr.js → TemplatesSearchView-DTuv4-5C.js} +3 -3
- package/dist/assets/{TemplatesView-CT7S5O4K.js → TemplatesView-CFV5SVF7.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-BMd9OmqA.js → TemplatesWorkflowView-CQVVdNty.js} +5 -7
- package/dist/assets/{TestDefinitionEditView-BXhOuJrU.css → TestDefinitionEditView-Cwkrz308.css} +12 -143
- package/dist/assets/{TestDefinitionEditView-5kDGEtaD.js → TestDefinitionEditView-DX6GIeq2.js} +179 -331
- package/dist/assets/{TestDefinitionListView-BM-hghAY.js → TestDefinitionListView-CLEkthYQ.js} +1 -1
- package/dist/assets/{TestDefinitionNewView-CNN-qAmL.js → TestDefinitionNewView-DWTTqvlN.js} +2 -2
- package/dist/assets/{TestDefinitionRootView-S8g84AaK.js → TestDefinitionRootView-D0yLW0V6.js} +1 -1
- package/dist/assets/{VariablesView-D90WCfYK.js → VariablesView-Dsr4pqth.js} +3 -3
- package/dist/assets/{WorkerView-BHVIRKm_.js → WorkerView-Bbu5wv-g.js} +6 -7
- package/dist/assets/{WorkflowActivator-BsceIfln.js → WorkflowActivator-C197X_D6.js} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-DxGIzmq4.js → WorkflowExecutionsInfoAccordion-CHPlRtMQ.js} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-czqJYUnQ.js → WorkflowExecutionsLandingPage-CnvMc3SA.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-BzCGXWj0.js → WorkflowExecutionsPreview-CJBM3Awe.js} +24 -256
- package/dist/assets/{WorkflowExecutionsPreview-CHu6M3Dh.css → WorkflowExecutionsPreview-D7jTJ8GL.css} +16 -48
- package/dist/assets/{WorkflowExecutionsView-syep-_N0.js → WorkflowExecutionsView-BwB6WS6M.js} +11 -17
- package/dist/assets/{WorkflowHistory-CmHn_hnX.js → WorkflowHistory-U5a4aYts.js} +4 -4
- package/dist/assets/{WorkflowOnboardingView-BmhaZBkH.js → WorkflowOnboardingView-DHUUTLOo.js} +1 -1
- package/dist/assets/{WorkflowPreview-BN13256Q.js → WorkflowPreview-D8pwehRe.js} +1 -1
- package/dist/assets/{WorkflowsView-r9qJOUEb.css → WorkflowsView-CJB9aI6A.css} +27 -41
- package/dist/assets/{WorkflowsView-6qbtftll.js → WorkflowsView-DIh7kqZk.js} +76 -141
- package/dist/assets/chartjs.utils-DTEY3u-V.js +193 -0
- package/dist/assets/dateFormatter-C7xnNKzY.js +21 -0
- package/dist/assets/{easyAiWorkflowUtils-C7LfXIgb.js → easyAiWorkflowUtils-V__OjFo9.js} +1 -1
- package/dist/assets/{global-link-actions-znEIb0N4.js → global-link-actions-vGpWr9Uz.js} +1 -1
- package/dist/assets/{import-curl-BsKs3fYs.js → import-curl-C6ERUxFe.js} +1 -1
- package/dist/assets/{index-Cjz62pAo.js → index-BrjPYODL.js} +3 -1
- package/dist/assets/{index-DZljH0cm.js → index-DD7Wuhk5.js} +11407 -5580
- package/dist/assets/{index-CgXKy7t-.css → index-DJ205bL0.css} +418 -92
- package/dist/assets/{pickBy-DlIFPp_M.js → pickBy-BILEJ4hg.js} +1 -1
- package/dist/assets/{templateActions-ClDjWPHA.js → templateActions-M3qRQiV6.js} +2 -7
- package/dist/assets/{useBeforeUnload-BFlrxvKb.js → useBeforeUnload-DTsj_abb.js} +1 -1
- package/dist/assets/{useCanvasMapping-CJcAsQmx.css → useCanvasMapping-BkGr1HdJ.css} +29 -28
- package/dist/assets/{useCanvasMapping-C0PMQVwg.js → useCanvasMapping-DJvMRP2s.js} +71 -56
- package/dist/assets/{useCanvasOperations-2Ca5hPmu.js → useCanvasOperations-DCaSrD1N.js} +26 -254
- package/dist/assets/{useClearExecutionButtonVisible-D8unhL-H.js → useClearExecutionButtonVisible-CVPKhr9F.js} +2 -2
- package/dist/assets/{useExecutionDebugging-MiAgkS54.js → useExecutionDebugging-yY2o_eNc.js} +1 -1
- package/dist/assets/{useExecutionHelpers-CgD9G_XU.js → useExecutionHelpers-BVY9xXbG.js} +2 -19
- package/dist/assets/{useImportCurlCommand-D6LUnncf.js → useImportCurlCommand-Chewi-_x.js} +2 -2
- package/dist/assets/{usePushConnection-DAhrfl2L.js → usePushConnection-9zsAnuvC.js} +13 -6
- package/dist/assets/{useTestDefinitionForm-TDiKTq9o.js → useTestDefinitionForm-CCVy0jKP.js} +1 -31
- package/dist/assets/{useWorkflowActivate-C_GRAYoC.js → useWorkflowActivate-DeEvbrsK.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-XKkHxrwX.js +0 -4
- package/dist/assets/pushConnection.store-DHLcz9cC.js +0 -238
- package/dist/assets/useOverview-BqIOGpWx.js +0 -161
- package/dist/assets/useRunWorkflow-sGIs6NeH.js +0 -521
package/dist/assets/{TestDefinitionEditView-5kDGEtaD.js → TestDefinitionEditView-DX6GIeq2.js}
RENAMED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { u as useTestDefinitionForm } from "./useTestDefinitionForm-
|
|
2
|
-
import { _ as _export_sfc, i as createElementBlock, g as openBlock, k as createBaseVNode, n as normalizeClass, d as defineComponent, r as ref,
|
|
3
|
-
import { u as useVueFlow, a as useCanvasMapping, C as Canvas, b as CanvasNode } from "./useCanvasMapping-
|
|
4
|
-
import { b as useCanvasOperations } from "./useCanvasOperations-
|
|
5
|
-
import { L as Line } from "./index-
|
|
6
|
-
import "./
|
|
7
|
-
import "./
|
|
1
|
+
import { u as useTestDefinitionForm } from "./useTestDefinitionForm-CCVy0jKP.js";
|
|
2
|
+
import { _ as _export_sfc, i as createElementBlock, g as openBlock, k as createBaseVNode, n as normalizeClass, d as defineComponent, r as ref, a0 as useCssModule, q as computed, h as resolveComponent, m as unref, j as createVNode, f as createCommentVNode, aS as N8nTooltip, w as withCtx, e as createBlock, b9 as N8nText, x as renderSlot, F as Fragment, l as createTextVNode, t as toDisplayString, df as InfoTip, c as useI18n, g8 as ne, U as useWorkflowsStore, bw as useNodeTypesStore, W as useRoute, b as useRouter, fA as useModel, o as onMounted, c_ as N8nHeading, g9 as _sfc_main$9, b3 as mergeProps, bb as N8nButton, ai as useTelemetry, a4 as useProjectsStore, ga as SAMPLE_EVALUATION_WORKFLOW, aT as N8nLink, gb as __unplugin_components_0, V as VIEWS, fz as mergeModels, gc as Tag, gd as NODE_PINNING_MODAL_KEY, ge as __unplugin_components_0$1, ak as useMessage, gf as useCssVar, f9 as dateformat, bc as watchEffect, D as renderList, gg as TestTableBase, bE as N8nIcon, K as useDebounce, a as useToast, g5 as useTestDefinitionStore, fQ as useAnnotationTagsStore, L as useUIStore, $ as useDocumentVisibility, I as watch, d2 as orderBy, aU as _sfc_main$a, gh as InlineNameEdit } from "./index-DD7Wuhk5.js";
|
|
3
|
+
import { u as useVueFlow, a as useCanvasMapping, C as Canvas, b as CanvasNode } from "./useCanvasMapping-DJvMRP2s.js";
|
|
4
|
+
import { b as useCanvasOperations } from "./useCanvasOperations-DCaSrD1N.js";
|
|
5
|
+
import { L as Line } from "./index-BrjPYODL.js";
|
|
6
|
+
import { _ as __unplugin_components_0$2 } from "./AnimatedSpinner-urWn52iY.js";
|
|
7
|
+
import { c as convertToDisplayDate } from "./dateFormatter-C7xnNKzY.js";
|
|
8
8
|
const blockArrow = "_blockArrow_hbkir_123";
|
|
9
9
|
const stalk = "_stalk_hbkir_129";
|
|
10
10
|
const arrowHead = "_arrowHead_hbkir_136";
|
|
11
|
-
const style0$
|
|
11
|
+
const style0$7 = {
|
|
12
12
|
blockArrow,
|
|
13
13
|
stalk,
|
|
14
14
|
arrowHead
|
|
15
15
|
};
|
|
16
|
-
const _sfc_main$
|
|
16
|
+
const _sfc_main$8 = {};
|
|
17
17
|
function _sfc_render(_ctx, _cache) {
|
|
18
18
|
return openBlock(), createElementBlock("div", {
|
|
19
19
|
class: normalizeClass(_ctx.$style.blockArrow)
|
|
@@ -26,11 +26,11 @@ function _sfc_render(_ctx, _cache) {
|
|
|
26
26
|
}, null, 2)
|
|
27
27
|
], 2);
|
|
28
28
|
}
|
|
29
|
-
const cssModules$
|
|
30
|
-
"$style": style0$
|
|
29
|
+
const cssModules$7 = {
|
|
30
|
+
"$style": style0$7
|
|
31
31
|
};
|
|
32
|
-
const BlockArrow = /* @__PURE__ */ _export_sfc(_sfc_main$
|
|
33
|
-
const _sfc_main$
|
|
32
|
+
const BlockArrow = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render], ["__cssModules", cssModules$7]]);
|
|
33
|
+
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
34
34
|
__name: "EvaluationStep",
|
|
35
35
|
props: {
|
|
36
36
|
title: { default: "" },
|
|
@@ -197,7 +197,7 @@ const infoTip = "_infoTip_1h8fm_172";
|
|
|
197
197
|
const actions = "_actions_1h8fm_180";
|
|
198
198
|
const cardContent = "_cardContent_1h8fm_186";
|
|
199
199
|
const cardContentWrapper = "_cardContentWrapper_1h8fm_192";
|
|
200
|
-
const style0$
|
|
200
|
+
const style0$6 = {
|
|
201
201
|
evaluationStep,
|
|
202
202
|
evaluationTooltip,
|
|
203
203
|
icon,
|
|
@@ -211,79 +211,10 @@ const style0$7 = {
|
|
|
211
211
|
cardContentWrapper,
|
|
212
212
|
"has-issues": "_has-issues_1h8fm_196"
|
|
213
213
|
};
|
|
214
|
-
const cssModules$7 = {
|
|
215
|
-
"$style": style0$7
|
|
216
|
-
};
|
|
217
|
-
const EvaluationStep = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__cssModules", cssModules$7]]);
|
|
218
|
-
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
219
|
-
__name: "MetricsInput",
|
|
220
|
-
props: {
|
|
221
|
-
modelValue: {}
|
|
222
|
-
},
|
|
223
|
-
emits: ["update:modelValue", "deleteMetric"],
|
|
224
|
-
setup(__props, { emit: __emit }) {
|
|
225
|
-
const props = __props;
|
|
226
|
-
const emit = __emit;
|
|
227
|
-
const locale = useI18n();
|
|
228
|
-
const metricsRefs = useTemplateRef("metric");
|
|
229
|
-
function addNewMetric() {
|
|
230
|
-
emit("update:modelValue", [...props.modelValue, { name: "" }]);
|
|
231
|
-
void nextTick(() => metricsRefs.value?.at(-1)?.focus());
|
|
232
|
-
}
|
|
233
|
-
function updateMetric(index, name) {
|
|
234
|
-
const newMetrics = [...props.modelValue];
|
|
235
|
-
newMetrics[index].name = name;
|
|
236
|
-
emit("update:modelValue", newMetrics);
|
|
237
|
-
}
|
|
238
|
-
function onDeleteMetric(metric, index) {
|
|
239
|
-
if (!metric.id) {
|
|
240
|
-
const newMetrics = [...props.modelValue];
|
|
241
|
-
newMetrics.splice(index, 1);
|
|
242
|
-
emit("update:modelValue", newMetrics);
|
|
243
|
-
} else {
|
|
244
|
-
emit("deleteMetric", metric);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
return (_ctx, _cache) => {
|
|
248
|
-
return openBlock(), createElementBlock("div", null, [
|
|
249
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.modelValue, (metric, index) => {
|
|
250
|
-
return openBlock(), createElementBlock("div", {
|
|
251
|
-
key: index,
|
|
252
|
-
class: normalizeClass([_ctx.$style.metricItem, "mb-xs"])
|
|
253
|
-
}, [
|
|
254
|
-
createVNode(unref(N8nInput), {
|
|
255
|
-
ref_for: true,
|
|
256
|
-
ref: "metric",
|
|
257
|
-
"data-test-id": "evaluation-metric-item",
|
|
258
|
-
"model-value": metric.name,
|
|
259
|
-
placeholder: unref(locale).baseText("testDefinition.edit.metricsPlaceholder"),
|
|
260
|
-
"onUpdate:modelValue": (value) => updateMetric(index, value)
|
|
261
|
-
}, null, 8, ["model-value", "placeholder", "onUpdate:modelValue"]),
|
|
262
|
-
createVNode(unref(_sfc_main$a), {
|
|
263
|
-
icon: "trash",
|
|
264
|
-
type: "secondary",
|
|
265
|
-
text: "",
|
|
266
|
-
onClick: ($event) => onDeleteMetric(metric, index)
|
|
267
|
-
}, null, 8, ["onClick"])
|
|
268
|
-
], 2);
|
|
269
|
-
}), 128)),
|
|
270
|
-
createVNode(unref(N8nButton), {
|
|
271
|
-
type: "secondary",
|
|
272
|
-
label: unref(locale).baseText("testDefinition.edit.metricsNew"),
|
|
273
|
-
onClick: addNewMetric
|
|
274
|
-
}, null, 8, ["label"])
|
|
275
|
-
]);
|
|
276
|
-
};
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
const metricItem = "_metricItem_1hbcq_123";
|
|
280
|
-
const style0$6 = {
|
|
281
|
-
metricItem
|
|
282
|
-
};
|
|
283
214
|
const cssModules$6 = {
|
|
284
215
|
"$style": style0$6
|
|
285
216
|
};
|
|
286
|
-
const
|
|
217
|
+
const EvaluationStep = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__cssModules", cssModules$6]]);
|
|
287
218
|
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
288
219
|
__name: "NodesPinning",
|
|
289
220
|
props: {
|
|
@@ -407,7 +338,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
407
338
|
key: 1,
|
|
408
339
|
class: normalizeClass(_ctx.$style.container)
|
|
409
340
|
}, [
|
|
410
|
-
isLoading.value ? (openBlock(), createBlock(unref(_sfc_main$
|
|
341
|
+
isLoading.value ? (openBlock(), createBlock(unref(_sfc_main$9), {
|
|
411
342
|
key: 0,
|
|
412
343
|
size: "large",
|
|
413
344
|
type: "dots",
|
|
@@ -615,14 +546,12 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
615
546
|
"tagsModifiers": {},
|
|
616
547
|
"evaluationWorkflow": { required: true },
|
|
617
548
|
"evaluationWorkflowModifiers": {},
|
|
618
|
-
"metrics": { required: true },
|
|
619
|
-
"metricsModifiers": {},
|
|
620
549
|
"mockedNodes": {
|
|
621
550
|
required: true
|
|
622
551
|
},
|
|
623
552
|
"mockedNodesModifiers": {}
|
|
624
553
|
}),
|
|
625
|
-
emits: /* @__PURE__ */ mergeModels(["openPinningModal", "
|
|
554
|
+
emits: /* @__PURE__ */ mergeModels(["openPinningModal", "openExecutionsViewForTag", "renameTag", "evaluationWorkflowCreated"], ["update:tags", "update:evaluationWorkflow", "update:mockedNodes"]),
|
|
626
555
|
setup(__props, { emit: __emit }) {
|
|
627
556
|
const props = __props;
|
|
628
557
|
const emit = __emit;
|
|
@@ -651,7 +580,6 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
651
580
|
__props,
|
|
652
581
|
"evaluationWorkflow"
|
|
653
582
|
);
|
|
654
|
-
const metrics = useModel(__props, "metrics");
|
|
655
583
|
const mockedNodes = useModel(__props, "mockedNodes");
|
|
656
584
|
const selectedTag = computed(() => props.tagsById[tags.value.value[0]] ?? {});
|
|
657
585
|
function openExecutionsView() {
|
|
@@ -782,25 +710,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
782
710
|
}, null, 8, ["modelValue", "example-pinned-data", "class", "sample-workflow-name"])
|
|
783
711
|
]),
|
|
784
712
|
_: 1
|
|
785
|
-
}, 8, ["title", "description", "issues", "tooltip", "external-tooltip"])
|
|
786
|
-
createVNode(BlockArrow, { class: "mt-5xs mb-5xs" }),
|
|
787
|
-
createVNode(EvaluationStep, {
|
|
788
|
-
title: unref(locale).baseText("testDefinition.edit.step.metrics"),
|
|
789
|
-
issues: _ctx.getFieldIssues("metrics"),
|
|
790
|
-
description: unref(locale).baseText("testDefinition.edit.step.metrics.description"),
|
|
791
|
-
tooltip: unref(locale).baseText("testDefinition.edit.step.metrics.tooltip"),
|
|
792
|
-
"external-tooltip": !_ctx.hasRuns
|
|
793
|
-
}, {
|
|
794
|
-
cardContent: withCtx(() => [
|
|
795
|
-
createVNode(MetricsInput, {
|
|
796
|
-
modelValue: metrics.value,
|
|
797
|
-
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => metrics.value = $event),
|
|
798
|
-
class: normalizeClass([{ "has-issues": _ctx.getFieldIssues("metrics").length > 0 }, "mt-xs"]),
|
|
799
|
-
onDeleteMetric: _cache[4] || (_cache[4] = (metric) => emit("deleteMetric", metric))
|
|
800
|
-
}, null, 8, ["modelValue", "class"])
|
|
801
|
-
]),
|
|
802
|
-
_: 1
|
|
803
|
-
}, 8, ["title", "issues", "description", "tooltip", "external-tooltip"])
|
|
713
|
+
}, 8, ["title", "description", "issues", "tooltip", "external-tooltip"])
|
|
804
714
|
], 2),
|
|
805
715
|
createVNode(_component_Modal, {
|
|
806
716
|
width: "calc(100% - (48px * 2))",
|
|
@@ -830,7 +740,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
830
740
|
content: withCtx(() => [
|
|
831
741
|
createVNode(NodesPinning, {
|
|
832
742
|
modelValue: mockedNodes.value,
|
|
833
|
-
"onUpdate:modelValue": _cache[
|
|
743
|
+
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => mockedNodes.value = $event),
|
|
834
744
|
"data-test-id": "nodes-pinning-modal"
|
|
835
745
|
}, null, 8, ["modelValue"])
|
|
836
746
|
]),
|
|
@@ -852,61 +762,44 @@ const cssModules$4 = {
|
|
|
852
762
|
"$style": style0$4
|
|
853
763
|
};
|
|
854
764
|
const ConfigSection = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__cssModules", cssModules$4]]);
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
primary: "
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
grid: "rgba(68, 68, 68, 0.1)"
|
|
864
|
-
},
|
|
865
|
-
dark: {
|
|
866
|
-
primary: "rgb(255, 110, 92)",
|
|
867
|
-
text: {
|
|
868
|
-
primary: "rgb(255, 255, 255)",
|
|
869
|
-
secondary: "rgba(255, 255, 255, 0.7)"
|
|
870
|
-
},
|
|
871
|
-
background: "rgb(32, 32, 32)",
|
|
872
|
-
grid: "rgba(255, 255, 255, 0.1)"
|
|
873
|
-
}
|
|
874
|
-
};
|
|
875
|
-
function useMetricsChart(mode = "light") {
|
|
876
|
-
const colors = THEME_COLORS[mode];
|
|
877
|
-
const toRGBA = (color, alpha) => {
|
|
878
|
-
if (color.includes("rgba")) return color;
|
|
879
|
-
return color.replace("rgb", "rgba").replace(")", `, ${alpha})`);
|
|
765
|
+
function useMetricsChart() {
|
|
766
|
+
const colors = {
|
|
767
|
+
primary: useCssVar("--color-primary", document.body).value,
|
|
768
|
+
textBase: useCssVar("--color-text-base", document.body).value,
|
|
769
|
+
backgroundXLight: useCssVar("--color-background-xlight", document.body).value,
|
|
770
|
+
foregroundLight: useCssVar("--color-foreground-light", document.body).value,
|
|
771
|
+
foregroundBase: useCssVar("--color-foreground-base", document.body).value,
|
|
772
|
+
foregroundDark: useCssVar("--color-foreground-dark", document.body).value
|
|
880
773
|
};
|
|
881
774
|
function generateChartData(runs2, metric) {
|
|
882
|
-
const
|
|
883
|
-
return {
|
|
884
|
-
labels: sortedRuns.map((run) => {
|
|
885
|
-
return dateFormat(run.runAt, "yyyy-mm-dd HH:MM");
|
|
886
|
-
}),
|
|
775
|
+
const data = {
|
|
887
776
|
datasets: [
|
|
888
777
|
{
|
|
889
|
-
|
|
890
|
-
|
|
778
|
+
data: runs2,
|
|
779
|
+
parsing: {
|
|
780
|
+
xAxisKey: "id",
|
|
781
|
+
yAxisKey: `metrics.${metric}`
|
|
782
|
+
},
|
|
891
783
|
borderColor: colors.primary,
|
|
892
|
-
backgroundColor:
|
|
893
|
-
borderWidth:
|
|
894
|
-
pointRadius:
|
|
895
|
-
pointHoverRadius:
|
|
896
|
-
pointBackgroundColor: colors.
|
|
897
|
-
|
|
898
|
-
pointHoverBackgroundColor: colors.background,
|
|
899
|
-
pointHoverBorderColor: colors.primary,
|
|
900
|
-
tension: 0.4,
|
|
901
|
-
fill: true
|
|
784
|
+
backgroundColor: colors.backgroundXLight,
|
|
785
|
+
borderWidth: 1,
|
|
786
|
+
pointRadius: 2,
|
|
787
|
+
pointHoverRadius: 4,
|
|
788
|
+
pointBackgroundColor: colors.backgroundXLight,
|
|
789
|
+
pointHoverBackgroundColor: colors.backgroundXLight
|
|
902
790
|
}
|
|
903
791
|
]
|
|
904
792
|
};
|
|
793
|
+
return data;
|
|
905
794
|
}
|
|
906
|
-
function generateChartOptions(
|
|
795
|
+
function generateChartOptions({
|
|
796
|
+
metric,
|
|
797
|
+
data
|
|
798
|
+
}) {
|
|
907
799
|
return {
|
|
908
800
|
responsive: true,
|
|
909
801
|
maintainAspectRatio: false,
|
|
802
|
+
animation: false,
|
|
910
803
|
devicePixelRatio: 2,
|
|
911
804
|
interaction: {
|
|
912
805
|
mode: "index",
|
|
@@ -914,67 +807,64 @@ function useMetricsChart(mode = "light") {
|
|
|
914
807
|
},
|
|
915
808
|
scales: {
|
|
916
809
|
y: {
|
|
917
|
-
|
|
810
|
+
border: {
|
|
811
|
+
display: false
|
|
812
|
+
},
|
|
918
813
|
grid: {
|
|
919
|
-
color: colors.
|
|
814
|
+
color: colors.foregroundBase
|
|
920
815
|
},
|
|
921
816
|
ticks: {
|
|
922
817
|
padding: 8,
|
|
923
|
-
color: colors.
|
|
924
|
-
},
|
|
925
|
-
title: {
|
|
926
|
-
display: false,
|
|
927
|
-
text: params.metric,
|
|
928
|
-
padding: 16,
|
|
929
|
-
color: colors.text.primary
|
|
818
|
+
color: colors.textBase
|
|
930
819
|
}
|
|
931
820
|
},
|
|
932
821
|
x: {
|
|
933
|
-
|
|
822
|
+
border: {
|
|
934
823
|
display: false
|
|
935
824
|
},
|
|
936
|
-
|
|
825
|
+
grid: {
|
|
937
826
|
display: false
|
|
938
827
|
},
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
828
|
+
ticks: {
|
|
829
|
+
color: colors.textBase,
|
|
830
|
+
// eslint-disable-next-line id-denylist
|
|
831
|
+
callback(_tickValue, index) {
|
|
832
|
+
return `#${data[index].index}`;
|
|
833
|
+
}
|
|
943
834
|
}
|
|
944
835
|
}
|
|
945
836
|
},
|
|
946
837
|
plugins: {
|
|
947
838
|
tooltip: {
|
|
948
|
-
backgroundColor: colors.
|
|
949
|
-
titleColor: colors.
|
|
839
|
+
backgroundColor: colors.backgroundXLight,
|
|
840
|
+
titleColor: colors.textBase,
|
|
950
841
|
titleFont: {
|
|
951
842
|
weight: "600"
|
|
952
843
|
},
|
|
953
|
-
bodyColor: colors.
|
|
844
|
+
bodyColor: colors.textBase,
|
|
954
845
|
bodySpacing: 4,
|
|
955
846
|
padding: 12,
|
|
956
|
-
borderColor:
|
|
847
|
+
borderColor: colors.foregroundBase,
|
|
957
848
|
borderWidth: 1,
|
|
958
849
|
displayColors: true,
|
|
959
850
|
callbacks: {
|
|
960
|
-
title: (tooltipItems) =>
|
|
961
|
-
|
|
851
|
+
title: (tooltipItems) => {
|
|
852
|
+
return dateformat(tooltipItems[0].raw.runAt, "yyyy-mm-dd HH:MM");
|
|
853
|
+
},
|
|
854
|
+
label: (context) => `${metric}: ${context.parsed.y.toFixed(2)}`,
|
|
855
|
+
labelColor() {
|
|
856
|
+
return {
|
|
857
|
+
borderColor: "rgba(29, 21, 21, 0)",
|
|
858
|
+
backgroundColor: colors.primary,
|
|
859
|
+
borderWidth: 0,
|
|
860
|
+
borderRadius: 5
|
|
861
|
+
};
|
|
862
|
+
}
|
|
962
863
|
}
|
|
963
864
|
},
|
|
964
865
|
legend: {
|
|
965
866
|
display: false
|
|
966
867
|
}
|
|
967
|
-
},
|
|
968
|
-
animation: {
|
|
969
|
-
duration: 750,
|
|
970
|
-
easing: "easeInOutQuart"
|
|
971
|
-
},
|
|
972
|
-
transitions: {
|
|
973
|
-
active: {
|
|
974
|
-
animation: {
|
|
975
|
-
duration: 300
|
|
976
|
-
}
|
|
977
|
-
}
|
|
978
868
|
}
|
|
979
869
|
};
|
|
980
870
|
}
|
|
@@ -987,26 +877,29 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
987
877
|
__name: "MetricsChart",
|
|
988
878
|
props: {
|
|
989
879
|
selectedMetric: {},
|
|
990
|
-
runs: {}
|
|
991
|
-
theme: {}
|
|
880
|
+
runs: {}
|
|
992
881
|
},
|
|
993
882
|
emits: ["update:selectedMetric"],
|
|
994
883
|
setup(__props, { emit: __emit }) {
|
|
995
884
|
const emit = __emit;
|
|
996
885
|
const props = __props;
|
|
997
|
-
const
|
|
998
|
-
const metricsChart = useMetricsChart(props.theme);
|
|
886
|
+
const metricsChart = useMetricsChart();
|
|
999
887
|
const availableMetrics = computed(() => {
|
|
1000
888
|
return props.runs.reduce((acc, run) => {
|
|
1001
889
|
const metricKeys = Object.keys(run.metrics ?? {});
|
|
1002
890
|
return [.../* @__PURE__ */ new Set([...acc, ...metricKeys])];
|
|
1003
891
|
}, []);
|
|
1004
892
|
});
|
|
1005
|
-
const
|
|
893
|
+
const filteredRuns = computed(
|
|
894
|
+
() => props.runs.filter((run) => run.metrics?.[props.selectedMetric] !== void 0)
|
|
895
|
+
);
|
|
896
|
+
const chartData = computed(
|
|
897
|
+
() => metricsChart.generateChartData(filteredRuns.value, props.selectedMetric)
|
|
898
|
+
);
|
|
1006
899
|
const chartOptions = computed(
|
|
1007
900
|
() => metricsChart.generateChartOptions({
|
|
1008
901
|
metric: props.selectedMetric,
|
|
1009
|
-
|
|
902
|
+
data: filteredRuns.value
|
|
1010
903
|
})
|
|
1011
904
|
);
|
|
1012
905
|
watchEffect(() => {
|
|
@@ -1017,8 +910,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
1017
910
|
return (_ctx, _cache) => {
|
|
1018
911
|
const _component_N8nOption = resolveComponent("N8nOption");
|
|
1019
912
|
const _component_N8nSelect = resolveComponent("N8nSelect");
|
|
1020
|
-
return
|
|
1021
|
-
key: 0,
|
|
913
|
+
return openBlock(), createElementBlock("div", {
|
|
1022
914
|
class: normalizeClass(_ctx.$style.metricsChartContainer)
|
|
1023
915
|
}, [
|
|
1024
916
|
createBaseVNode("div", {
|
|
@@ -1046,22 +938,22 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
1046
938
|
createBaseVNode("div", {
|
|
1047
939
|
class: normalizeClass(_ctx.$style.chartWrapper)
|
|
1048
940
|
}, [
|
|
1049
|
-
|
|
941
|
+
(openBlock(), createBlock(unref(Line), {
|
|
1050
942
|
key: _ctx.selectedMetric,
|
|
1051
943
|
data: chartData.value,
|
|
1052
944
|
options: chartOptions.value,
|
|
1053
945
|
class: normalizeClass(_ctx.$style.metricsChart)
|
|
1054
|
-
}, null, 8, ["data", "options", "class"]))
|
|
946
|
+
}, null, 8, ["data", "options", "class"]))
|
|
1055
947
|
], 2)
|
|
1056
|
-
], 2)
|
|
948
|
+
], 2);
|
|
1057
949
|
};
|
|
1058
950
|
}
|
|
1059
951
|
});
|
|
1060
|
-
const metricsChartContainer = "
|
|
1061
|
-
const chartHeader = "
|
|
1062
|
-
const chartTitle = "
|
|
1063
|
-
const metricSelect = "
|
|
1064
|
-
const chartWrapper = "
|
|
952
|
+
const metricsChartContainer = "_metricsChartContainer_1xhz2_123";
|
|
953
|
+
const chartHeader = "_chartHeader_1xhz2_128";
|
|
954
|
+
const chartTitle = "_chartTitle_1xhz2_131";
|
|
955
|
+
const metricSelect = "_metricSelect_1xhz2_136";
|
|
956
|
+
const chartWrapper = "_chartWrapper_1xhz2_139";
|
|
1065
957
|
const style0$3 = {
|
|
1066
958
|
metricsChartContainer,
|
|
1067
959
|
chartHeader,
|
|
@@ -1078,24 +970,43 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1078
970
|
__name: "TestRunsTable",
|
|
1079
971
|
props: {
|
|
1080
972
|
runs: {},
|
|
1081
|
-
columns: {}
|
|
1082
|
-
selectable: { type: Boolean }
|
|
973
|
+
columns: {}
|
|
1083
974
|
},
|
|
1084
|
-
emits: ["rowClick"
|
|
975
|
+
emits: ["rowClick"],
|
|
1085
976
|
setup(__props, { emit: __emit }) {
|
|
1086
977
|
const emit = __emit;
|
|
1087
978
|
const props = __props;
|
|
1088
|
-
const
|
|
1089
|
-
new:
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
979
|
+
const statusDictionary = {
|
|
980
|
+
new: {
|
|
981
|
+
icon: "status-new",
|
|
982
|
+
color: "foreground-xdark"
|
|
983
|
+
},
|
|
984
|
+
running: {
|
|
985
|
+
icon: "spinner",
|
|
986
|
+
color: "secondary"
|
|
987
|
+
},
|
|
988
|
+
completed: {
|
|
989
|
+
icon: "status-completed",
|
|
990
|
+
color: "success"
|
|
991
|
+
},
|
|
992
|
+
error: {
|
|
993
|
+
icon: "status-error",
|
|
994
|
+
color: "danger"
|
|
995
|
+
},
|
|
996
|
+
cancelled: {
|
|
997
|
+
icon: "status-canceled",
|
|
998
|
+
color: "foreground-xdark"
|
|
999
|
+
},
|
|
1000
|
+
warning: {
|
|
1001
|
+
icon: "status-warning",
|
|
1002
|
+
color: "warning"
|
|
1003
|
+
},
|
|
1004
|
+
success: {
|
|
1005
|
+
icon: "status-completed",
|
|
1006
|
+
color: "success"
|
|
1007
|
+
}
|
|
1096
1008
|
};
|
|
1097
1009
|
const locale = useI18n();
|
|
1098
|
-
const selectedRows = ref([]);
|
|
1099
1010
|
const runSummaries = computed(() => {
|
|
1100
1011
|
return props.runs.map(({ status, finalResult, ...run }) => {
|
|
1101
1012
|
if (status === "completed" && finalResult) {
|
|
@@ -1104,86 +1015,60 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1104
1015
|
return { ...run, status };
|
|
1105
1016
|
});
|
|
1106
1017
|
});
|
|
1107
|
-
function onSelectionChange(runs2) {
|
|
1108
|
-
selectedRows.value = runs2;
|
|
1109
|
-
emit("selectionChange", runs2);
|
|
1110
|
-
}
|
|
1111
|
-
async function deleteRuns() {
|
|
1112
|
-
emit("deleteRuns", selectedRows.value);
|
|
1113
|
-
}
|
|
1114
1018
|
return (_ctx, _cache) => {
|
|
1115
1019
|
const _component_N8nHeading = resolveComponent("N8nHeading");
|
|
1116
|
-
const
|
|
1020
|
+
const _component_AnimatedSpinner = __unplugin_components_0$2;
|
|
1117
1021
|
return openBlock(), createElementBlock("div", {
|
|
1118
1022
|
class: normalizeClass(_ctx.$style.container)
|
|
1119
1023
|
}, [
|
|
1120
1024
|
createVNode(_component_N8nHeading, {
|
|
1121
1025
|
size: "large",
|
|
1122
1026
|
bold: true,
|
|
1123
|
-
class: normalizeClass(_ctx.$style.runsTableHeading)
|
|
1027
|
+
class: normalizeClass(_ctx.$style.runsTableHeading),
|
|
1028
|
+
color: "text-base"
|
|
1124
1029
|
}, {
|
|
1125
1030
|
default: withCtx(() => [
|
|
1126
|
-
createTextVNode(toDisplayString(unref(locale).baseText("testDefinition.edit.pastRuns.total", { adjustToNumber: _ctx.runs.length })), 1)
|
|
1031
|
+
createTextVNode(toDisplayString(unref(locale).baseText("testDefinition.edit.pastRuns.total", { adjustToNumber: _ctx.runs.length })) + " ", 1),
|
|
1032
|
+
createVNode(unref(N8nText), null, {
|
|
1033
|
+
default: withCtx(() => [
|
|
1034
|
+
createTextVNode(" (" + toDisplayString(_ctx.runs.length) + ") ", 1)
|
|
1035
|
+
]),
|
|
1036
|
+
_: 1
|
|
1037
|
+
})
|
|
1127
1038
|
]),
|
|
1128
1039
|
_: 1
|
|
1129
1040
|
}, 8, ["class"]),
|
|
1130
|
-
createBaseVNode("div", {
|
|
1131
|
-
class: normalizeClass(_ctx.$style.header)
|
|
1132
|
-
}, [
|
|
1133
|
-
withDirectives(createVNode(_component_n8n_button, {
|
|
1134
|
-
type: "danger",
|
|
1135
|
-
class: normalizeClass(_ctx.$style.activator),
|
|
1136
|
-
size: "medium",
|
|
1137
|
-
icon: "trash",
|
|
1138
|
-
"data-test-id": "delete-runs-button",
|
|
1139
|
-
onClick: deleteRuns
|
|
1140
|
-
}, {
|
|
1141
|
-
default: withCtx(() => [
|
|
1142
|
-
createTextVNode(toDisplayString(unref(locale).baseText("testDefinition.listRuns.deleteRuns", {
|
|
1143
|
-
adjustToNumber: selectedRows.value.length
|
|
1144
|
-
})), 1)
|
|
1145
|
-
]),
|
|
1146
|
-
_: 1
|
|
1147
|
-
}, 8, ["class"]), [
|
|
1148
|
-
[vShow, selectedRows.value.length > 0]
|
|
1149
|
-
])
|
|
1150
|
-
], 2),
|
|
1151
1041
|
createVNode(TestTableBase, {
|
|
1152
1042
|
data: runSummaries.value,
|
|
1153
1043
|
columns: _ctx.columns,
|
|
1154
|
-
selectable: "",
|
|
1155
1044
|
"default-sort": { prop: "runAt", order: "descending" },
|
|
1156
|
-
onRowClick: _cache[0] || (_cache[0] = (row) => emit("rowClick", row))
|
|
1157
|
-
onSelectionChange
|
|
1045
|
+
onRowClick: _cache[0] || (_cache[0] = (row) => emit("rowClick", row))
|
|
1158
1046
|
}, {
|
|
1047
|
+
id: withCtx(({ row }) => [
|
|
1048
|
+
createTextVNode("#" + toDisplayString(row.index), 1)
|
|
1049
|
+
]),
|
|
1159
1050
|
status: withCtx(({ row }) => [
|
|
1160
1051
|
createBaseVNode("div", _hoisted_1$1, [
|
|
1161
|
-
|
|
1162
|
-
icon: "circle",
|
|
1163
|
-
size: "xsmall",
|
|
1164
|
-
style: normalizeStyle({ color: statusesColorDictionary[row.status] })
|
|
1165
|
-
}, null, 8, ["style"]),
|
|
1166
|
-
row.status === "error" ? (openBlock(), createBlock(unref(N8nText), {
|
|
1052
|
+
row.status === "running" ? (openBlock(), createBlock(unref(N8nText), {
|
|
1167
1053
|
key: 0,
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
color: "text-base"
|
|
1054
|
+
color: "secondary",
|
|
1055
|
+
class: "mr-2xs"
|
|
1171
1056
|
}, {
|
|
1172
1057
|
default: withCtx(() => [
|
|
1173
|
-
|
|
1058
|
+
createVNode(_component_AnimatedSpinner)
|
|
1174
1059
|
]),
|
|
1175
|
-
_:
|
|
1176
|
-
}
|
|
1060
|
+
_: 1
|
|
1061
|
+
})) : (openBlock(), createBlock(unref(N8nIcon), {
|
|
1177
1062
|
key: 1,
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
},
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1063
|
+
icon: statusDictionary[row.status].icon,
|
|
1064
|
+
color: statusDictionary[row.status].color,
|
|
1065
|
+
class: "mr-2xs"
|
|
1066
|
+
}, null, 8, ["icon", "color"])),
|
|
1067
|
+
row.status === "error" ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
|
|
1068
|
+
createTextVNode(toDisplayString(row.failedCases) + " " + toDisplayString(row.status), 1)
|
|
1069
|
+
], 64)) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [
|
|
1070
|
+
createTextVNode(toDisplayString(row.status), 1)
|
|
1071
|
+
], 64))
|
|
1187
1072
|
])
|
|
1188
1073
|
]),
|
|
1189
1074
|
_: 1
|
|
@@ -1192,7 +1077,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
1192
1077
|
};
|
|
1193
1078
|
}
|
|
1194
1079
|
});
|
|
1195
|
-
const container = "
|
|
1080
|
+
const container = "_container_1rjad_123";
|
|
1196
1081
|
const style0$2 = {
|
|
1197
1082
|
container
|
|
1198
1083
|
};
|
|
@@ -1204,22 +1089,17 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1204
1089
|
__name: "RunsSection",
|
|
1205
1090
|
props: /* @__PURE__ */ mergeModels({
|
|
1206
1091
|
runs: {},
|
|
1207
|
-
testId: {}
|
|
1208
|
-
appliedTheme: {}
|
|
1092
|
+
testId: {}
|
|
1209
1093
|
}, {
|
|
1210
1094
|
"selectedMetric": { required: true },
|
|
1211
1095
|
"selectedMetricModifiers": {}
|
|
1212
1096
|
}),
|
|
1213
|
-
emits:
|
|
1214
|
-
setup(__props
|
|
1097
|
+
emits: ["update:selectedMetric"],
|
|
1098
|
+
setup(__props) {
|
|
1215
1099
|
const props = __props;
|
|
1216
|
-
const emit = __emit;
|
|
1217
1100
|
const locale = useI18n();
|
|
1218
1101
|
const router = useRouter();
|
|
1219
1102
|
const selectedMetric = useModel(__props, "selectedMetric");
|
|
1220
|
-
function onDeleteRuns(toDelete) {
|
|
1221
|
-
emit("deleteRuns", toDelete);
|
|
1222
|
-
}
|
|
1223
1103
|
const metrics = computed(() => {
|
|
1224
1104
|
const metricKeys = props.runs.reduce((acc, run) => {
|
|
1225
1105
|
Object.keys(run.metrics ?? {}).forEach((metric) => acc.add(metric));
|
|
@@ -1234,14 +1114,13 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1234
1114
|
sortable: true,
|
|
1235
1115
|
showHeaderTooltip: true,
|
|
1236
1116
|
sortMethod: (a, b) => (a.metrics?.[metric] ?? 0) - (b.metrics?.[metric] ?? 0),
|
|
1237
|
-
formatter: (row) =>
|
|
1117
|
+
formatter: (row) => row.metrics?.[metric] !== void 0 ? (row.metrics?.[metric]).toFixed(2) : ""
|
|
1238
1118
|
}))
|
|
1239
1119
|
);
|
|
1240
1120
|
const columns = computed(() => [
|
|
1241
1121
|
{
|
|
1242
|
-
prop: "
|
|
1122
|
+
prop: "id",
|
|
1243
1123
|
label: locale.baseText("testDefinition.listRuns.runNumber"),
|
|
1244
|
-
formatter: (row) => `${row.id}`,
|
|
1245
1124
|
showOverflowTooltip: true
|
|
1246
1125
|
},
|
|
1247
1126
|
{
|
|
@@ -1249,6 +1128,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1249
1128
|
label: "Run at",
|
|
1250
1129
|
sortable: true,
|
|
1251
1130
|
showOverflowTooltip: true,
|
|
1131
|
+
formatter: (row) => {
|
|
1132
|
+
const { date, time } = convertToDisplayDate(row.runAt);
|
|
1133
|
+
return [date, time].join(", ");
|
|
1134
|
+
},
|
|
1252
1135
|
sortMethod: (a, b) => new Date(a.runAt ?? a.createdAt).getTime() - new Date(b.runAt ?? b.createdAt).getTime()
|
|
1253
1136
|
},
|
|
1254
1137
|
{
|
|
@@ -1271,23 +1154,21 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
1271
1154
|
createVNode(MetricsChart, {
|
|
1272
1155
|
selectedMetric: selectedMetric.value,
|
|
1273
1156
|
"onUpdate:selectedMetric": _cache[0] || (_cache[0] = ($event) => selectedMetric.value = $event),
|
|
1274
|
-
runs: _ctx.runs
|
|
1275
|
-
|
|
1276
|
-
}, null, 8, ["selectedMetric", "runs", "theme"]),
|
|
1157
|
+
runs: _ctx.runs
|
|
1158
|
+
}, null, 8, ["selectedMetric", "runs"]),
|
|
1277
1159
|
createVNode(TestRunsTable, {
|
|
1278
1160
|
class: normalizeClass(_ctx.$style.runsTable),
|
|
1279
1161
|
runs: _ctx.runs,
|
|
1280
1162
|
columns: columns.value,
|
|
1281
1163
|
selectable: true,
|
|
1282
1164
|
"data-test-id": "past-runs-table",
|
|
1283
|
-
onDeleteRuns,
|
|
1284
1165
|
onRowClick: handleRowClick
|
|
1285
1166
|
}, null, 8, ["class", "runs", "columns"])
|
|
1286
1167
|
], 2);
|
|
1287
1168
|
};
|
|
1288
1169
|
}
|
|
1289
1170
|
});
|
|
1290
|
-
const runs = "
|
|
1171
|
+
const runs = "_runs_37xaf_123";
|
|
1291
1172
|
const style0$1 = {
|
|
1292
1173
|
runs
|
|
1293
1174
|
};
|
|
@@ -1321,21 +1202,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1321
1202
|
await getExamplePinnedDataForTags();
|
|
1322
1203
|
testDefinitionStore.updateRunFieldIssues(props.testId);
|
|
1323
1204
|
});
|
|
1324
|
-
const {
|
|
1325
|
-
state,
|
|
1326
|
-
isSaving,
|
|
1327
|
-
cancelEditing,
|
|
1328
|
-
loadTestData,
|
|
1329
|
-
updateTest,
|
|
1330
|
-
startEditing,
|
|
1331
|
-
saveChanges,
|
|
1332
|
-
deleteMetric,
|
|
1333
|
-
updateMetrics
|
|
1334
|
-
} = useTestDefinitionForm();
|
|
1205
|
+
const { state, isSaving, cancelEditing, loadTestData, updateTest, startEditing, saveChanges } = useTestDefinitionForm();
|
|
1335
1206
|
const isLoading = computed(() => tagsStore.isLoading);
|
|
1336
1207
|
const tagsById = computed(() => tagsStore.tagsById);
|
|
1337
1208
|
const currentWorkflowId = computed(() => props.name);
|
|
1338
|
-
const appliedTheme = computed(() => uiStore.appliedTheme);
|
|
1339
1209
|
const workflowName = computed(() => workflowStore.workflow.name);
|
|
1340
1210
|
const hasRuns = computed(() => runs2.value.length > 0);
|
|
1341
1211
|
const fieldsIssues = computed(() => testDefinitionStore.getFieldIssues(props.testId) ?? []);
|
|
@@ -1351,19 +1221,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1351
1221
|
}
|
|
1352
1222
|
};
|
|
1353
1223
|
const handleUpdateTestDebounced = debounce(handleUpdateTest, { debounceTime: 400, trailing: true });
|
|
1354
|
-
const handleUpdateMetricsDebounced = debounce(
|
|
1355
|
-
async (testId) => {
|
|
1356
|
-
await updateMetrics(testId);
|
|
1357
|
-
testDefinitionStore.updateRunFieldIssues(testId);
|
|
1358
|
-
},
|
|
1359
|
-
{ debounceTime: 400, trailing: true }
|
|
1360
|
-
);
|
|
1361
1224
|
function getFieldIssues(key) {
|
|
1362
1225
|
return fieldsIssues.value.filter((issue) => issue.field === key);
|
|
1363
1226
|
}
|
|
1364
|
-
async function onDeleteMetric(deletedMetric) {
|
|
1365
|
-
await deleteMetric(deletedMetric.id, props.testId);
|
|
1366
|
-
}
|
|
1367
1227
|
async function openPinningModal() {
|
|
1368
1228
|
uiStore.openModal(NODE_PINNING_MODAL_KEY);
|
|
1369
1229
|
}
|
|
@@ -1379,20 +1239,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1379
1239
|
});
|
|
1380
1240
|
window.open(executionsRoute.href, "_blank");
|
|
1381
1241
|
}
|
|
1382
|
-
const runs2 = computed(
|
|
1383
|
-
|
|
1384
|
-
(
|
|
1385
|
-
)
|
|
1386
|
-
|
|
1242
|
+
const runs2 = computed(() => {
|
|
1243
|
+
const testRuns = Object.values(testDefinitionStore.testRunsById ?? {}).filter(
|
|
1244
|
+
({ testDefinitionId }) => testDefinitionId === props.testId
|
|
1245
|
+
);
|
|
1246
|
+
return orderBy(testRuns, (record) => new Date(record.runAt), ["asc"]).map(
|
|
1247
|
+
(record, index) => Object.assign(record, { index: index + 1 })
|
|
1248
|
+
);
|
|
1249
|
+
});
|
|
1387
1250
|
const isRunning = computed(() => runs2.value.some((run) => run.status === "running"));
|
|
1388
1251
|
const isRunTestEnabled = computed(() => fieldsIssues.value.length === 0 && !isRunning.value);
|
|
1389
|
-
async function onDeleteRuns(toDelete) {
|
|
1390
|
-
await Promise.all(
|
|
1391
|
-
toDelete.map(async (run) => {
|
|
1392
|
-
await testDefinitionStore.deleteTestRun({ testDefinitionId: props.testId, runId: run.id });
|
|
1393
|
-
})
|
|
1394
|
-
);
|
|
1395
|
-
}
|
|
1396
1252
|
async function renameTag(newName) {
|
|
1397
1253
|
await tagsStore.rename({ id: state.value.tags.value[0], name: newName });
|
|
1398
1254
|
}
|
|
@@ -1546,10 +1402,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1546
1402
|
"onUpdate:selectedMetric": _cache[1] || (_cache[1] = ($event) => selectedMetric.value = $event),
|
|
1547
1403
|
class: normalizeClass(_ctx.$style.runs),
|
|
1548
1404
|
runs: runs2.value,
|
|
1549
|
-
"test-id": _ctx.testId
|
|
1550
|
-
|
|
1551
|
-
onDeleteRuns
|
|
1552
|
-
}, null, 8, ["selectedMetric", "class", "runs", "test-id", "applied-theme"])) : createCommentVNode("", true),
|
|
1405
|
+
"test-id": _ctx.testId
|
|
1406
|
+
}, null, 8, ["selectedMetric", "class", "runs", "test-id"])) : createCommentVNode("", true),
|
|
1553
1407
|
showConfig.value ? (openBlock(), createBlock(ConfigSection, {
|
|
1554
1408
|
key: 1,
|
|
1555
1409
|
tags: unref(state).tags,
|
|
@@ -1559,14 +1413,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1559
1413
|
_cache[3] || (_cache[3] = ($event) => unref(state).evaluationWorkflow = $event),
|
|
1560
1414
|
unref(handleUpdateTestDebounced)
|
|
1561
1415
|
],
|
|
1562
|
-
metrics: unref(state).metrics,
|
|
1563
|
-
"onUpdate:metrics": [
|
|
1564
|
-
_cache[4] || (_cache[4] = ($event) => unref(state).metrics = $event),
|
|
1565
|
-
_cache[6] || (_cache[6] = () => unref(handleUpdateMetricsDebounced)(_ctx.testId))
|
|
1566
|
-
],
|
|
1567
1416
|
mockedNodes: unref(state).mockedNodes,
|
|
1568
1417
|
"onUpdate:mockedNodes": [
|
|
1569
|
-
_cache[
|
|
1418
|
+
_cache[4] || (_cache[4] = ($event) => unref(state).mockedNodes = $event),
|
|
1570
1419
|
unref(handleUpdateTestDebounced)
|
|
1571
1420
|
],
|
|
1572
1421
|
class: normalizeClass(_ctx.$style.config),
|
|
@@ -1581,10 +1430,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
1581
1430
|
"sample-workflow-name": workflowName.value,
|
|
1582
1431
|
onRenameTag: renameTag,
|
|
1583
1432
|
onOpenPinningModal: openPinningModal,
|
|
1584
|
-
onDeleteMetric,
|
|
1585
1433
|
onOpenExecutionsViewForTag: openExecutionsViewForTag,
|
|
1586
|
-
onEvaluationWorkflowCreated: _cache[
|
|
1587
|
-
}, null, 8, ["tags", "evaluationWorkflow", "
|
|
1434
|
+
onEvaluationWorkflowCreated: _cache[5] || (_cache[5] = ($event) => onEvaluationWorkflowCreated($event))
|
|
1435
|
+
}, null, 8, ["tags", "evaluationWorkflow", "mockedNodes", "class", "cancel-editing", "tags-by-id", "is-loading", "start-editing", "save-changes", "has-runs", "example-pinned-data", "sample-workflow-name", "onUpdate:evaluationWorkflow", "onUpdate:mockedNodes"])) : createCommentVNode("", true)
|
|
1588
1436
|
], 2)
|
|
1589
1437
|
], 2)
|
|
1590
1438
|
], 2)) : createCommentVNode("", true);
|