n8n-editor-ui 1.86.0 → 1.87.1
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-BJKBduqI.js +18 -0
- package/dist/assets/AnimatedSpinner-ChSRgyeI.css +39 -0
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DofUIs9S.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-BNiwICGe.js} +1 -1
- package/dist/assets/{AuthView-CyY2quTd.js → AuthView-DrViDPFs.js} +2 -2
- package/dist/assets/{CanvasChatSwitch-CRtE2Fld.css → CanvasChatSwitch-0IWSu8RE.css} +249 -45
- package/dist/assets/{CanvasChatSwitch-BTInPgKl.js → CanvasChatSwitch-BnTApoNZ.js} +436 -268
- package/dist/assets/{ChangePasswordView-Db-MkXhZ.js → ChangePasswordView-DPUv2ZhO.js} +3 -3
- package/dist/assets/CollectionParameter-14_bIMyy.js +4 -0
- package/dist/assets/{CredentialsView-CLr_6U2B.js → CredentialsView-Cx3MfjwO.js} +8 -8
- package/dist/assets/{ErrorView-CUS5vnCW.js → ErrorView-C3Sxa6Qs.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-D15zjPBZ.js → ExecutionsTime.vue_vue_type_script_setup_true_lang-B0NnOKRw.js} +23 -20
- package/dist/assets/{ExecutionsView-1df-oH5P.js → ExecutionsView-BD9a5MiE.js} +48 -56
- package/dist/assets/{ExecutionsView-BnBpSqVn.css → ExecutionsView-ByQf9yli.css} +13 -47
- package/dist/assets/{FileSaver.min-DLKMtSuf.js → FileSaver.min-CsyH54Dh.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-CcqTLBeP.js → FixedCollectionParameter-icyYiANk.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-BHRWkO2H.js → ForgotMyPasswordView-B7m6OAyt.js} +3 -3
- package/dist/assets/InsightsChartAverageRuntime-CiI5y8BG.js +61 -0
- package/dist/assets/InsightsChartFailed-BAnQv9pU.js +57 -0
- package/dist/assets/InsightsChartFailureRate-CGRL86zw.js +57 -0
- package/dist/assets/InsightsChartTimeSaved-BJmjC9xP.js +71 -0
- package/dist/assets/InsightsChartTotal-YSqQgGkL.js +59 -0
- package/dist/assets/InsightsDashboard-CB4vHnBh.css +152 -0
- package/dist/assets/InsightsDashboard-oe5QP-_0.js +154 -0
- package/dist/assets/InsightsPaywall-BCSe1GCl.js +58 -0
- package/dist/assets/InsightsPaywall-OeXh6LeZ.css +133 -0
- package/dist/assets/InsightsSummary-Bf61oFlG.js +185 -0
- package/dist/assets/{InsightsSummary-DcRuPjLJ.css → InsightsSummary-W08OzElS.css} +57 -35
- package/dist/assets/InsightsTableWorkflows-B5M_o3Di.js +129 -0
- package/dist/assets/InsightsTableWorkflows-Us3j4UTO.css +128 -0
- package/dist/assets/{Logo-DbXTFYA8.js → Logo-DZ8mhDMd.js} +1 -1
- package/dist/assets/{MainHeader-BfQR9Td3.js → MainHeader-CItoJWMi.js} +9 -10
- package/dist/assets/{MainSidebar-CDUegYGN.js → MainSidebar-Cponf9eD.js} +11 -2
- package/dist/assets/{NodeCreation-BBXRRxZa.js → NodeCreation-DiUBT9p0.js} +4 -4
- package/dist/assets/{NodeCreator-BiyvtIjb.js → NodeCreator-BHji7uJa.js} +3 -3
- package/dist/assets/{NodeDetailsView-BcVu3kf0.css → NodeDetailsView-BT-ro74o.css} +63 -70
- package/dist/assets/{NodeDetailsView-Ph7FVpa8.js → NodeDetailsView-CPsaG2IZ.js} +123 -444
- package/dist/assets/{NodeView-BEJ48TF4.js → NodeView-9P-9rNOD.js} +19 -21
- package/dist/assets/{ProjectCardBadge-B7cCM6Eo.js → ProjectCardBadge-BdyDghHf.js} +1 -1
- package/dist/assets/{ProjectHeader-BjPaep-H.js → ProjectHeader-D8-9oE80.js} +1 -1
- package/dist/assets/{ProjectSettings-C1By1g0Z.js → ProjectSettings-Brpx7x2l.js} +2 -2
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-UHiXbqwy.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-CShLauba.js} +1 -2
- package/dist/assets/{ResourcesListLayout-CiiXWGd5.js → ResourcesListLayout-nD22utQX.js} +1 -1
- package/dist/assets/{RunDataAi-CN9FrT9c.css → RunDataAi-CUUDqZRP.css} +128 -0
- package/dist/assets/{RunDataAi-CQE0VYut.js → RunDataAi-DULZvgnn.js} +88 -37
- package/dist/assets/{RunDataJson-BY9cOxFp.js → RunDataJson-jnag_uEf.js} +11 -12
- package/dist/assets/{RunDataJsonActions-CuFjccfe.js → RunDataJsonActions-CWCdb4Yi.js} +1 -2
- package/dist/assets/{RunDataSearch-afEc-21Y.js → RunDataSearch-CI5OdX2M.js} +1 -1
- package/dist/assets/{RunDataTable-N6yWFXKt.js → RunDataTable-CQc98S7W.js} +10 -8
- package/dist/assets/{SamlOnboarding-HDQzVmha.js → SamlOnboarding-mdVsZszT.js} +3 -3
- package/dist/assets/{SettingsApiView-DQMZT3uc.js → SettingsApiView-CRDQ66Jq.js} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-BlQT_0E8.js → SettingsCommunityNodesView-DCp8y1mn.js} +4 -5
- package/dist/assets/{SettingsExternalSecrets-BL_3qoNS.js → SettingsExternalSecrets-PhLe1dhs.js} +1 -1
- package/dist/assets/{SettingsLdapView-BMsfXg-A.js → SettingsLdapView-DrPh9Cmp.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-Bm5vaSO2.js → SettingsLogStreamingView-D_dGzLfg.js} +1 -1
- package/dist/assets/{SettingsPersonalView-Djl1VXnE.js → SettingsPersonalView-C6XeNBcf.js} +1 -1
- package/dist/assets/{SettingsSourceControl-A-9nD8hG.js → SettingsSourceControl-Bu_qi87k.js} +1 -1
- package/dist/assets/{SettingsSso-DZCscZY6.js → SettingsSso-BF8Nr76R.js} +1 -1
- package/dist/assets/{SettingsUsageAndPlan-Rd5AGlNl.js → SettingsUsageAndPlan-DTyc2TI4.js} +1 -1
- package/dist/assets/{SettingsUsersView-NEahsGVs.js → SettingsUsersView-BfK_vKh5.js} +1 -1
- package/dist/assets/{SettingsView-CeXAUGXE.js → SettingsView-bkz5b7Ks.js} +1 -1
- package/dist/assets/{SetupView-BI7oJfg0.js → SetupView--_MmPcKt.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-DMZX1S1F.js → SetupWorkflowCredentialsButton-C94b-j6c.js} +2 -4
- package/dist/assets/{SetupWorkflowFromTemplateView-DZsPVdhN.js → SetupWorkflowFromTemplateView-Bn6NUya1.js} +3 -12
- package/dist/assets/{SigninView-CzVnEKyz.js → SigninView-s9B3HXBX.js} +3 -3
- package/dist/assets/{SignoutView-C4ynr4AN.js → SignoutView-CvFIZuRL.js} +1 -1
- package/dist/assets/{SignupView-9nwGonm9.js → SignupView-B6YMoGnc.js} +3 -3
- package/dist/assets/{TemplateDetails-DT1tI4AF.js → TemplateDetails-DOGmuYC4.js} +1 -1
- package/dist/assets/{TemplateList-DGPm_Qol.js → TemplateList-BRL4OSZK.js} +1 -1
- package/dist/assets/{TemplatesCollectionView-DwXY5s5G.js → TemplatesCollectionView-Ct2GIDCZ.js} +7 -9
- package/dist/assets/{TemplatesSearchView-D0R7uF40.js → TemplatesSearchView-CWGmY4-P.js} +3 -3
- package/dist/assets/{TemplatesView-BZ-ntkfi.js → TemplatesView-vYQo2Y75.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-TwVAHvD7.js → TemplatesWorkflowView-Cw6mc6wy.js} +5 -7
- package/dist/assets/{TestDefinitionEditView-o2Gc4BjN.js → TestDefinitionEditView-CZnzTAsp.js} +163 -199
- package/dist/assets/{TestDefinitionEditView-C3nnWQ4Q.css → TestDefinitionEditView-Cwkrz308.css} +12 -18
- package/dist/assets/{TestDefinitionListView-BuUWjPAl.js → TestDefinitionListView-CKsRlhn4.js} +1 -1
- package/dist/assets/{TestDefinitionNewView-DmSFNxfn.js → TestDefinitionNewView-B1KZ2Qnt.js} +2 -2
- package/dist/assets/{TestDefinitionRootView-1dNmGZUI.js → TestDefinitionRootView-V43FaNr3.js} +1 -1
- package/dist/assets/{VariablesView-D46tH9pw.js → VariablesView-DLB1Vvnc.js} +3 -3
- package/dist/assets/{WorkerView-G0K849qT.js → WorkerView-Iqi25XGQ.js} +6 -7
- package/dist/assets/{WorkflowActivator-DfalOPsa.js → WorkflowActivator-D9fExB06.js} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-BcD7ZskD.js → WorkflowExecutionsInfoAccordion-Md7C2uBw.js} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-BhPbJi5K.js → WorkflowExecutionsLandingPage-CKOlfG7s.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-CHu6M3Dh.css → WorkflowExecutionsPreview-D7jTJ8GL.css} +16 -48
- package/dist/assets/{WorkflowExecutionsPreview-CowaFwPg.js → WorkflowExecutionsPreview-DS6HDJng.js} +24 -256
- package/dist/assets/{WorkflowExecutionsView-BAojAjIM.js → WorkflowExecutionsView-LF3g9gDB.js} +11 -17
- package/dist/assets/{WorkflowHistory-Bj5_YFN8.js → WorkflowHistory-Cu7OIIMi.js} +4 -4
- package/dist/assets/{WorkflowOnboardingView-D9peqUJs.js → WorkflowOnboardingView-B2WUKfr6.js} +1 -1
- package/dist/assets/{WorkflowPreview-gflk06YT.js → WorkflowPreview-DlKRTeNZ.js} +1 -1
- package/dist/assets/{WorkflowsView-CmgKYCQ6.js → WorkflowsView-dot2ovV7.js} +10 -10
- package/dist/assets/chartjs.utils-BLcAAfTE.js +193 -0
- package/dist/assets/dateFormatter-Cdy8FmTT.js +21 -0
- package/dist/assets/{easyAiWorkflowUtils-CLssJdgl.js → easyAiWorkflowUtils-C5xkiwuo.js} +1 -1
- package/dist/assets/{global-link-actions-BphqczCY.js → global-link-actions-CfWIYTMM.js} +1 -1
- package/dist/assets/{import-curl-C9KhAemD.js → import-curl-DO7fae0m.js} +1 -1
- package/dist/assets/{index-C0DaAYgf.js → index-Bo3CExk-.js} +3 -1
- package/dist/assets/{index-CkOV8f0Z.js → index-D76xStxp.js} +9450 -3622
- package/dist/assets/{index-BaqhUIB7.css → index-DJ205bL0.css} +369 -44
- package/dist/assets/{pickBy-DUugkW7s.js → pickBy-DdpxIwij.js} +1 -1
- package/dist/assets/{templateActions-Czp13jCM.js → templateActions-BCMgItKi.js} +2 -7
- package/dist/assets/{useBeforeUnload-BBbiw-FV.js → useBeforeUnload-CDzomPGL.js} +1 -1
- package/dist/assets/{useCanvasMapping-Cla--atl.js → useCanvasMapping-D1DfqsUU.js} +6 -6
- package/dist/assets/{useCanvasOperations-FyzGfva5.js → useCanvasOperations-CAthHfOB.js} +27 -256
- package/dist/assets/{useClearExecutionButtonVisible-fESJZE5R.js → useClearExecutionButtonVisible-CnDyjcGF.js} +2 -2
- package/dist/assets/{useExecutionDebugging-D4s4CdaL.js → useExecutionDebugging-Bm9sy3W3.js} +1 -1
- package/dist/assets/{useExecutionHelpers-Bm91b8wb.js → useExecutionHelpers-C_yBGArA.js} +2 -19
- package/dist/assets/{useImportCurlCommand-BPNuR5ZX.js → useImportCurlCommand-CK-lTdZr.js} +2 -2
- package/dist/assets/{usePushConnection-BbQhNUm8.js → usePushConnection-potv7eom.js} +3 -4
- package/dist/assets/{useTestDefinitionForm-ZJngcsSH.js → useTestDefinitionForm-Dlzud2C-.js} +1 -1
- package/dist/assets/{useWorkflowActivate-CkCvd-g6.js → useWorkflowActivate-BvmFVCGP.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-BD3jmKi_.js +0 -4
- package/dist/assets/InsightsSummary-CyilLKXz.js +0 -152
- package/dist/assets/pushConnection.store-Cb2TGyrZ.js +0 -238
- package/dist/assets/useRunWorkflow-DnbQqqcB.js +0 -527
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { dM as baseSlice, dN as toString, dO as createCompounder, dP as SetCache, dQ as arrayIncludes, dR as cacheHas, dS as baseRest, dT as isArrayLikeObject, dU as baseFlatten, dV as CORE_NODES_CATEGORY, dW as DEFAULT_SUBCATEGORY, bj as v4, p as useSettingsStore, dX as AI_TRANSFORM_NODE_TYPE, bn as AI_SUBCATEGORY, dY as HUMAN_IN_THE_LOOP_CATEGORY, bo as AI_CATEGORY_AGENTS, dZ as sortBy, de as i18n, d_ as AI_CATEGORY_OTHER_TOOLS, d$ as SEND_AND_WAIT_OPERATION, e0 as AI_CATEGORY_DOCUMENT_LOADERS, e1 as AI_CATEGORY_LANGUAGE_MODELS, e2 as AI_CATEGORY_MEMORY, e3 as AI_CATEGORY_OUTPUTPARSER, e4 as AI_CATEGORY_RETRIEVERS, e5 as AI_CATEGORY_TEXT_SPLITTERS, e6 as AI_WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE, e7 as AI_CODE_TOOL_LANGCHAIN_NODE_TYPE, c as useI18n, e8 as AI_CATEGORY_TOOLS, e9 as AI_CATEGORY_EMBEDDING, ea as AI_CATEGORY_VECTOR_STORES, eb as AI_UNCATEGORIZED_CATEGORY, ec as AI_OTHERS_NODE_CREATOR_VIEW, bu as NodeConnectionTypes, bw as useNodeTypesStore, aP as useTemplatesStore, ed as AI_NODE_CREATOR_VIEW, ee as RSS_READ_NODE_TYPE, ef as EMAIL_SEND_NODE_TYPE, eg as SET_NODE_TYPE, eh as CODE_NODE_TYPE, ei as DATETIME_NODE_TYPE, ej as FILTER_NODE_TYPE, ek as REMOVE_DUPLICATES_NODE_TYPE, el as SPLIT_OUT_NODE_TYPE, em as LIMIT_NODE_TYPE, en as SUMMARIZE_NODE_TYPE, eo as AGGREGATE_NODE_TYPE, ep as MERGE_NODE_TYPE, eq as HTML_NODE_TYPE, er as MARKDOWN_NODE_TYPE, es as XML_NODE_TYPE, et as CRYPTO_NODE_TYPE, eu as EXTRACT_FROM_FILE_NODE_TYPE, ev as CONVERT_TO_FILE_NODE_TYPE, ew as COMPRESSION_NODE_TYPE, ex as EDIT_IMAGE_NODE_TYPE, ey as TRANSFORM_DATA_SUBCATEGORY, ez as IF_NODE_TYPE, eA as SPLIT_IN_BATCHES_NODE_TYPE, eB as FLOWS_CONTROL_SUBCATEGORY, eC as HTTP_REQUEST_NODE_TYPE, eD as WEBHOOK_NODE_TYPE, eE as HELPERS_SUBCATEGORY, eF as HITL_SUBCATEGORY, eG as TRIGGER_NODE_CREATOR_VIEW, eH as REGULAR_NODE_CREATOR_VIEW, eI as MANUAL_TRIGGER_NODE_TYPE, eJ as EMAIL_IMAP_NODE_TYPE, eK as SCHEDULE_TRIGGER_NODE_TYPE, eL as FORM_TRIGGER_NODE_TYPE, dB as EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE, bv as CHAT_TRIGGER_NODE_TYPE, eM as OTHER_TRIGGER_NODES_SUBCATEGORY, bp as AI_CATEGORY_CHAINS, S as defineStore, r as ref, q as computed, a2 as useCanvasStore, eN as AI_CATEGORY_ROOT_NODES, z as nextTick, eO as getThemedValue, L as useUIStore, bq as AI_CODE_NODE_TYPE, eP as AI_TRANSFORM_NODE_TYPE$1, eQ as isValidCanvasConnectionMode, c2 as CanvasConnectionMode, c1 as isValidNodeConnectionType, U as useWorkflowsStore, au as useNDVStore, aR as useExternalHooks, eR as isVueFlowConnection, br as getNodeInputs, eS as CUSTOM_API_CALL_KEY, Y as STORES, c5 as NODE_CREATOR_OPEN_SOURCES, ai as useTelemetry, a1 as useRootStore, bM as useCredentialsStore, bP as useHistoryStore, E as useTagsStore, av as useExecutionsStore, a4 as useProjectsStore, a as useToast, a7 as useWorkflowHelpers, bx as useNodeHelpers, ba as useClipboard, eT as UPDATE_WEBHOOK_ID_NODE_TYPES, dw as generateNodesGraph, eU as getNewNodePosition, eV as AddConnectionCommand, aA as STICKY_NODE_TYPE, bt as getNodeOutputs, eW as RemoveConnectionCommand, ac as EnterpriseEditionFeature, cb as deepCopy, eX as isPresent, eY as RemoveNodeCommand, eZ as RenameNodeCommand, bi as usePinnedData, e_ as useDataSchema, e$ as MoveNodeCommand, f0 as DEFAULT_NODE_SIZE, f1 as CONFIGURATION_NODE_SIZE, bs as getConnectionTypes, f2 as generateOffsets, f3 as CONFIGURABLE_NODE_SIZE, f4 as PUSH_NODES_OFFSET, f5 as AddNodeCommand, f6 as NODE_SIZE, f7 as GRID_SIZE, f8 as getNodeParameters } from "./index-D76xStxp.js";
|
|
2
2
|
function castSlice(array, start, end) {
|
|
3
3
|
var length = array.length;
|
|
4
4
|
end = end === void 0 ? length : end;
|
|
@@ -72,236 +72,6 @@ function baseDifference(array, values, iteratee, comparator) {
|
|
|
72
72
|
var difference = baseRest(function(array, values) {
|
|
73
73
|
return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) : [];
|
|
74
74
|
});
|
|
75
|
-
function useNodeType(options = {}) {
|
|
76
|
-
const nodeTypesStore = useNodeTypesStore();
|
|
77
|
-
const nodeType = computed(() => {
|
|
78
|
-
if (options.nodeType) {
|
|
79
|
-
return unref(options.nodeType);
|
|
80
|
-
}
|
|
81
|
-
const activeNode = unref(options.node);
|
|
82
|
-
if (activeNode) {
|
|
83
|
-
return nodeTypesStore.getNodeType(activeNode.type, activeNode.typeVersion);
|
|
84
|
-
}
|
|
85
|
-
return null;
|
|
86
|
-
});
|
|
87
|
-
const isSubNodeType$1 = computed(() => isSubNodeType(nodeType.value));
|
|
88
|
-
const isMultipleOutputsNodeType = computed(() => {
|
|
89
|
-
const outputs = nodeType.value?.outputs;
|
|
90
|
-
if (typeof outputs === "string") return false;
|
|
91
|
-
return (outputs ?? []).length > 1;
|
|
92
|
-
});
|
|
93
|
-
return {
|
|
94
|
-
nodeType,
|
|
95
|
-
isSubNodeType: isSubNodeType$1,
|
|
96
|
-
isMultipleOutputsNodeType
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
function usePinnedData(node, options = {}) {
|
|
100
|
-
const rootStore = useRootStore();
|
|
101
|
-
const workflowsStore = useWorkflowsStore();
|
|
102
|
-
const toast = useToast();
|
|
103
|
-
const i18n2 = useI18n();
|
|
104
|
-
const telemetry = useTelemetry();
|
|
105
|
-
const externalHooks = useExternalHooks();
|
|
106
|
-
const { getInputDataWithPinned } = useDataSchema();
|
|
107
|
-
const { isSubNodeType: isSubNodeType2, isMultipleOutputsNodeType } = useNodeType({
|
|
108
|
-
node
|
|
109
|
-
});
|
|
110
|
-
const data = computed(() => {
|
|
111
|
-
const targetNode = unref(node);
|
|
112
|
-
return targetNode ? workflowsStore.pinDataByNodeName(targetNode.name) : void 0;
|
|
113
|
-
});
|
|
114
|
-
const hasData = computed(() => {
|
|
115
|
-
const targetNode = unref(node);
|
|
116
|
-
return !!targetNode && typeof data.value !== "undefined";
|
|
117
|
-
});
|
|
118
|
-
const isValidNodeType = computed(() => {
|
|
119
|
-
const targetNode = unref(node);
|
|
120
|
-
return !!targetNode && !isSubNodeType2.value && !isMultipleOutputsNodeType.value && !PIN_DATA_NODE_TYPES_DENYLIST.includes(targetNode.type);
|
|
121
|
-
});
|
|
122
|
-
function canPinNode(checkDataEmpty = false, outputIndex) {
|
|
123
|
-
const targetNode = unref(node);
|
|
124
|
-
if (targetNode === null || PIN_DATA_NODE_TYPES_DENYLIST.includes(targetNode.type)) return false;
|
|
125
|
-
const nodeType = useNodeTypesStore().getNodeType(targetNode.type, targetNode.typeVersion);
|
|
126
|
-
const dataToPin = getInputDataWithPinned(targetNode);
|
|
127
|
-
if (!nodeType || checkDataEmpty && dataToPin.length === 0) return false;
|
|
128
|
-
const workflow = workflowsStore.getCurrentWorkflow();
|
|
129
|
-
const outputs = getNodeOutputs(workflow, targetNode, nodeType).map(
|
|
130
|
-
(output) => typeof output === "string" ? { type: output } : output
|
|
131
|
-
);
|
|
132
|
-
const mainOutputs = outputs.filter(
|
|
133
|
-
(output) => output.type === NodeConnectionTypes.Main && output.category !== "error"
|
|
134
|
-
);
|
|
135
|
-
let indexAcceptable = true;
|
|
136
|
-
if (outputIndex !== void 0) {
|
|
137
|
-
const output = outputs[outputIndex];
|
|
138
|
-
if (outputs[outputIndex] === void 0) return false;
|
|
139
|
-
indexAcceptable = output.type === NodeConnectionTypes.Main && output.category !== "error";
|
|
140
|
-
}
|
|
141
|
-
return mainOutputs.length === 1 && indexAcceptable;
|
|
142
|
-
}
|
|
143
|
-
function isValidJSON(data2) {
|
|
144
|
-
try {
|
|
145
|
-
JSON.parse(data2);
|
|
146
|
-
return true;
|
|
147
|
-
} catch (error) {
|
|
148
|
-
const title = i18n2.baseText("runData.editOutputInvalid");
|
|
149
|
-
const toRemove = new RegExp(/JSON\.parse:|of the JSON data/, "g");
|
|
150
|
-
const message = error.message.replace(toRemove, "").trim();
|
|
151
|
-
const positionMatchRegEx = /at position (\d+)/;
|
|
152
|
-
const positionMatch = error.message.match(positionMatchRegEx);
|
|
153
|
-
error.message = message.charAt(0).toUpperCase() + message.slice(1);
|
|
154
|
-
error.message = error.message.replace(
|
|
155
|
-
"Unexpected token ' in JSON",
|
|
156
|
-
i18n2.baseText("runData.editOutputInvalid.singleQuote")
|
|
157
|
-
);
|
|
158
|
-
if (positionMatch) {
|
|
159
|
-
const position = parseInt(positionMatch[1], 10);
|
|
160
|
-
const lineBreaksUpToPosition = (data2.slice(0, position).match(/\n/g) || []).length;
|
|
161
|
-
error.message = error.message.replace(
|
|
162
|
-
positionMatchRegEx,
|
|
163
|
-
i18n2.baseText("runData.editOutputInvalid.atPosition", {
|
|
164
|
-
interpolate: {
|
|
165
|
-
position: `${position}`
|
|
166
|
-
}
|
|
167
|
-
})
|
|
168
|
-
);
|
|
169
|
-
error.message = `${i18n2.baseText("runData.editOutputInvalid.onLine", {
|
|
170
|
-
interpolate: {
|
|
171
|
-
line: `${lineBreaksUpToPosition + 1}`
|
|
172
|
-
}
|
|
173
|
-
})} ${error.message}`;
|
|
174
|
-
}
|
|
175
|
-
toast.showError(error, title);
|
|
176
|
-
return false;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
function getMaxPinnedDataSize() {
|
|
180
|
-
return window.maxPinnedDataSize ?? MAX_PINNED_DATA_SIZE;
|
|
181
|
-
}
|
|
182
|
-
function isValidSize(data2) {
|
|
183
|
-
const targetNode = unref(node);
|
|
184
|
-
if (!targetNode) {
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
if (typeof data2 === "object") data2 = JSON.stringify(data2);
|
|
188
|
-
const { pinData: currentPinData, ...workflow } = workflowsStore.getCurrentWorkflow();
|
|
189
|
-
const workflowJson = jsonStringify(workflow, { replaceCircularRefs: true });
|
|
190
|
-
const newPinData = { ...currentPinData, [targetNode.name]: data2 };
|
|
191
|
-
const newPinDataSize = workflowsStore.getPinDataSize(newPinData);
|
|
192
|
-
if (newPinDataSize > getMaxPinnedDataSize()) {
|
|
193
|
-
toast.showError(
|
|
194
|
-
new Error(
|
|
195
|
-
i18n2.baseText("ndv.pinData.error.tooLarge.description", {
|
|
196
|
-
interpolate: {
|
|
197
|
-
size: toMegaBytes(newPinDataSize),
|
|
198
|
-
limit: toMegaBytes(getMaxPinnedDataSize())
|
|
199
|
-
}
|
|
200
|
-
})
|
|
201
|
-
),
|
|
202
|
-
i18n2.baseText("ndv.pinData.error.tooLarge.title")
|
|
203
|
-
);
|
|
204
|
-
return false;
|
|
205
|
-
}
|
|
206
|
-
const workflowSize = stringSizeInBytes(workflowJson) + newPinDataSize;
|
|
207
|
-
const limit = MAX_WORKFLOW_SIZE - MAX_EXPECTED_REQUEST_SIZE;
|
|
208
|
-
if (workflowSize > limit) {
|
|
209
|
-
toast.showError(
|
|
210
|
-
new Error(
|
|
211
|
-
i18n2.baseText("ndv.pinData.error.tooLargeWorkflow.description", {
|
|
212
|
-
interpolate: { size: toMegaBytes(workflowSize), limit: toMegaBytes(limit) }
|
|
213
|
-
})
|
|
214
|
-
),
|
|
215
|
-
i18n2.baseText("ndv.pinData.error.tooLargeWorkflow.title")
|
|
216
|
-
);
|
|
217
|
-
return false;
|
|
218
|
-
}
|
|
219
|
-
return true;
|
|
220
|
-
}
|
|
221
|
-
function onSetDataSuccess({ source }) {
|
|
222
|
-
const targetNode = unref(node);
|
|
223
|
-
const displayMode = unref(options.displayMode);
|
|
224
|
-
const runIndex = unref(options.runIndex);
|
|
225
|
-
const telemetryPayload = {
|
|
226
|
-
pinning_source: source,
|
|
227
|
-
node_type: targetNode?.type,
|
|
228
|
-
push_ref: rootStore.pushRef,
|
|
229
|
-
data_size: stringSizeInBytes(data.value),
|
|
230
|
-
view: displayMode,
|
|
231
|
-
run_index: runIndex
|
|
232
|
-
};
|
|
233
|
-
void externalHooks.run("runData.onDataPinningSuccess", telemetryPayload);
|
|
234
|
-
telemetry.track("Ndv data pinning success", telemetryPayload);
|
|
235
|
-
}
|
|
236
|
-
function onSetDataError({
|
|
237
|
-
errorType,
|
|
238
|
-
source
|
|
239
|
-
}) {
|
|
240
|
-
const targetNode = unref(node);
|
|
241
|
-
const displayMode = unref(options.displayMode);
|
|
242
|
-
const runIndex = unref(options.runIndex);
|
|
243
|
-
telemetry.track("Ndv data pinning failure", {
|
|
244
|
-
pinning_source: source,
|
|
245
|
-
node_type: targetNode?.type,
|
|
246
|
-
push_ref: rootStore.pushRef,
|
|
247
|
-
data_size: stringSizeInBytes(data.value),
|
|
248
|
-
view: displayMode,
|
|
249
|
-
run_index: runIndex,
|
|
250
|
-
error_type: errorType
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
function setData(data2, source) {
|
|
254
|
-
const targetNode = unref(node);
|
|
255
|
-
if (!targetNode) {
|
|
256
|
-
return;
|
|
257
|
-
}
|
|
258
|
-
if (typeof data2 === "string") {
|
|
259
|
-
if (!isValidJSON(data2)) {
|
|
260
|
-
onSetDataError({ errorType: "invalid-json", source });
|
|
261
|
-
throw new Error("Invalid JSON");
|
|
262
|
-
}
|
|
263
|
-
data2 = jsonParse(data2);
|
|
264
|
-
}
|
|
265
|
-
if (!isValidSize(data2)) {
|
|
266
|
-
onSetDataError({ errorType: "data-too-large", source });
|
|
267
|
-
throw new Error("Data too large");
|
|
268
|
-
}
|
|
269
|
-
workflowsStore.pinData({ node: targetNode, data: data2 });
|
|
270
|
-
onSetDataSuccess({ source });
|
|
271
|
-
}
|
|
272
|
-
function onUnsetData({ source }) {
|
|
273
|
-
const targetNode = unref(node);
|
|
274
|
-
const runIndex = unref(options.runIndex);
|
|
275
|
-
telemetry.track("User unpinned ndv data", {
|
|
276
|
-
node_type: targetNode?.type,
|
|
277
|
-
push_ref: rootStore.pushRef,
|
|
278
|
-
run_index: runIndex,
|
|
279
|
-
source,
|
|
280
|
-
data_size: stringSizeInBytes(data.value)
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
function unsetData(source) {
|
|
284
|
-
const targetNode = unref(node);
|
|
285
|
-
if (!targetNode) {
|
|
286
|
-
return;
|
|
287
|
-
}
|
|
288
|
-
onUnsetData({ source });
|
|
289
|
-
workflowsStore.unpinData({ node: targetNode });
|
|
290
|
-
}
|
|
291
|
-
return {
|
|
292
|
-
data,
|
|
293
|
-
hasData,
|
|
294
|
-
isValidNodeType,
|
|
295
|
-
canPinNode,
|
|
296
|
-
setData,
|
|
297
|
-
onSetDataSuccess,
|
|
298
|
-
onSetDataError,
|
|
299
|
-
unsetData,
|
|
300
|
-
onUnsetData,
|
|
301
|
-
isValidJSON,
|
|
302
|
-
isValidSize
|
|
303
|
-
};
|
|
304
|
-
}
|
|
305
75
|
const SEQUENTIAL_BONUS = 60;
|
|
306
76
|
const SEPARATOR_BONUS = 30;
|
|
307
77
|
const CAMEL_BONUS = 30;
|
|
@@ -2082,11 +1852,15 @@ function useCanvasOperations({ router }) {
|
|
|
2082
1852
|
trackTidyUp({ result, source, target });
|
|
2083
1853
|
}
|
|
2084
1854
|
function trackTidyUp({ result, source, target }) {
|
|
2085
|
-
telemetry.track(
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
1855
|
+
telemetry.track(
|
|
1856
|
+
"User tidied up canvas",
|
|
1857
|
+
{
|
|
1858
|
+
source,
|
|
1859
|
+
target,
|
|
1860
|
+
nodes_count: result.nodes.length
|
|
1861
|
+
},
|
|
1862
|
+
{ withPostHog: true }
|
|
1863
|
+
);
|
|
2090
1864
|
}
|
|
2091
1865
|
function updateNodesPosition(events, { trackHistory = false, trackBulk = true } = {}) {
|
|
2092
1866
|
if (trackHistory && trackBulk) {
|
|
@@ -2606,7 +2380,8 @@ function useCanvasOperations({ router }) {
|
|
|
2606
2380
|
node.parameters,
|
|
2607
2381
|
true,
|
|
2608
2382
|
false,
|
|
2609
|
-
node
|
|
2383
|
+
node,
|
|
2384
|
+
nodeTypeDescription
|
|
2610
2385
|
);
|
|
2611
2386
|
node.parameters = nodeParameters ?? {};
|
|
2612
2387
|
}
|
|
@@ -3354,11 +3129,9 @@ function useCanvasOperations({ router }) {
|
|
|
3354
3129
|
uiStore.stateIsDirty = false;
|
|
3355
3130
|
return data;
|
|
3356
3131
|
}
|
|
3357
|
-
async function toggleChatOpen(source) {
|
|
3132
|
+
async function toggleChatOpen(source, isOpen) {
|
|
3358
3133
|
const workflow = workflowsStore.getCurrentWorkflow();
|
|
3359
|
-
workflowsStore.
|
|
3360
|
-
workflowsStore.chatPanelState === "closed" ? "attached" : "closed"
|
|
3361
|
-
);
|
|
3134
|
+
workflowsStore.toggleLogsPanelOpen(isOpen);
|
|
3362
3135
|
const payload = {
|
|
3363
3136
|
workflow_id: workflow.id,
|
|
3364
3137
|
button_type: source
|
|
@@ -3435,24 +3208,22 @@ export {
|
|
|
3435
3208
|
AINodesView as A,
|
|
3436
3209
|
RegularView as R,
|
|
3437
3210
|
TriggerView as T,
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
|
|
3441
|
-
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
|
|
3211
|
+
useNodeCreatorStore as a,
|
|
3212
|
+
useCanvasOperations as b,
|
|
3213
|
+
createCanvasConnectionHandleString as c,
|
|
3214
|
+
capitalize as d,
|
|
3215
|
+
checkOverlap as e,
|
|
3216
|
+
mapLegacyConnectionsToCanvasConnections as f,
|
|
3217
|
+
formatTriggerActionName as g,
|
|
3218
|
+
useViewStacks as h,
|
|
3446
3219
|
insertSpacersBetweenEndpoints as i,
|
|
3447
|
-
|
|
3448
|
-
|
|
3449
|
-
|
|
3220
|
+
camelCase as j,
|
|
3221
|
+
useKeyboardNavigation as k,
|
|
3222
|
+
AIView as l,
|
|
3450
3223
|
mapLegacyEndpointsToCanvasConnectionPort as m,
|
|
3451
|
-
|
|
3452
|
-
AIView as o,
|
|
3224
|
+
flattenCreateElements as n,
|
|
3453
3225
|
parseCanvasConnectionHandleString as p,
|
|
3454
|
-
flattenCreateElements as q,
|
|
3455
3226
|
sortNodeCreateElements as s,
|
|
3456
3227
|
transformNodeType as t,
|
|
3457
|
-
|
|
3228
|
+
upperFirst as u
|
|
3458
3229
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { W as useRoute, a3 as useSourceControlStore, U as useWorkflowsStore, q as computed, b as useRouter, bw as useNodeTypesStore, bS as START_NODE_TYPE } from "./index-D76xStxp.js";
|
|
2
|
+
import { b as useCanvasOperations } from "./useCanvasOperations-CAthHfOB.js";
|
|
3
3
|
function useClearExecutionButtonVisible() {
|
|
4
4
|
const route = useRoute();
|
|
5
5
|
const sourceControlStore = useSourceControlStore();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as useRouter, a as useToast,
|
|
1
|
+
import { b as useRouter, a as useToast, U as useWorkflowsStore, p as useSettingsStore, L as useUIStore, a8 as usePageRedirectionHelper, q as computed, ac as EnterpriseEditionFeature, c as useI18n, ch as DEBUG_PAYWALL_MODAL_KEY, as as h, ci as sanitizeHtml, ak as useMessage, al as MODAL_CONFIRM, V as VIEWS, ai as useTelemetry, a1 as useRootStore, cj as isFullExecutionResponse } from "./index-D76xStxp.js";
|
|
2
2
|
const useExecutionDebugging = () => {
|
|
3
3
|
const telemetry = useTelemetry();
|
|
4
4
|
const router = useRouter();
|
|
@@ -1,18 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
const mask = `d mmm${new Date(fullDate).getFullYear() === (/* @__PURE__ */ new Date()).getFullYear() ? "" : ", yyyy"}#HH:MM:ss`;
|
|
4
|
-
const formattedDate = dateFormat(fullDate, mask);
|
|
5
|
-
const [date, time] = formattedDate.split("#");
|
|
6
|
-
return { date, time };
|
|
7
|
-
};
|
|
8
|
-
function convertToDisplayDate(fullDate) {
|
|
9
|
-
const mask = `d mmm${new Date(fullDate).getFullYear() === (/* @__PURE__ */ new Date()).getFullYear() ? "" : ", yyyy"}#HH:MM:ss`;
|
|
10
|
-
const formattedDate = dateFormat(fullDate, mask);
|
|
11
|
-
const [date, time] = formattedDate.split("#");
|
|
12
|
-
return { date, time };
|
|
13
|
-
}
|
|
14
|
-
const toDayMonth = (fullDate) => dateFormat(fullDate, "d mmm");
|
|
15
|
-
const toTime = (fullDate) => dateFormat(fullDate, "HH:MM:ss");
|
|
1
|
+
import { c as convertToDisplayDate } from "./dateFormatter-Cdy8FmTT.js";
|
|
2
|
+
import { b as useRouter, V as VIEWS, ai as useTelemetry, c as useI18n } from "./index-D76xStxp.js";
|
|
16
3
|
function useExecutionHelpers() {
|
|
17
4
|
const i18n = useI18n();
|
|
18
5
|
const router = useRouter();
|
|
@@ -104,9 +91,5 @@ function useExecutionHelpers() {
|
|
|
104
91
|
};
|
|
105
92
|
}
|
|
106
93
|
export {
|
|
107
|
-
toTime as a,
|
|
108
|
-
convertToDisplayDateComponents as b,
|
|
109
|
-
convertToDisplayDate as c,
|
|
110
|
-
toDayMonth as t,
|
|
111
94
|
useExecutionHelpers as u
|
|
112
95
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { gP as require$$0, cl as getDefaultExportFromCjs, a as useToast, m as unref, cM as assert, gQ as CURL_IMPORT_NOT_SUPPORTED_PROTOCOLS, gR as CURL_IMPORT_NODES_PROTOCOLS, c as useI18n, gS as get } from "./index-D76xStxp.js";
|
|
2
2
|
import { c as commonjsRequire } from "./_commonjs-dynamic-modules-TGKdzP3c.js";
|
|
3
|
-
import { i as importCurlEventBus } from "./import-curl-
|
|
3
|
+
import { i as importCurlEventBus } from "./import-curl-DO7fae0m.js";
|
|
4
4
|
class CCError extends Error {
|
|
5
5
|
}
|
|
6
6
|
const UTF8encoder = new TextEncoder();
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { g as globalLinkActionsEventBus } from "./global-link-actions-
|
|
3
|
-
import {
|
|
4
|
-
import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-CLssJdgl.js";
|
|
1
|
+
import { dq as makeRestApiRequest, S as defineStore, a1 as useRootStore, d as defineComponent, cc as resolveDirective, i as createElementBlock, g as openBlock, aC as withDirectives, k as createBaseVNode, t as toDisplayString, m as unref, c as useI18n, a7 as useWorkflowHelpers, bx as useNodeHelpers, a as useToast, bM as useCredentialsStore, bw as useNodeTypesStore, T as usePushConnectionStore, p as useSettingsStore, L as useUIStore, U as useWorkflowsStore, dr as useAssistantStore, aw as usePostHog, r as ref, ds as clearPopupWindowState, b$ as AI_CREDITS_EXPERIMENT, ai as useTelemetry, dt as parse, du as hasTrimmedItem, dv as codeNodeEditorEventBus, am as WORKFLOW_SETTINGS_MODAL_KEY, dw as generateNodesGraph, as as h, dx as getTriggerNodeServiceName, dy as hasTrimmedData, aR as useExternalHooks, dz as useSchemaPreviewStore } from "./index-D76xStxp.js";
|
|
2
|
+
import { g as globalLinkActionsEventBus } from "./global-link-actions-CfWIYTMM.js";
|
|
3
|
+
import { g as getEasyAiWorkflowJson } from "./easyAiWorkflowUtils-C5xkiwuo.js";
|
|
5
4
|
const GET_STATUS_ENDPOINT = "/orchestration/worker/status";
|
|
6
5
|
const sendGetWorkerStatus = async (context) => {
|
|
7
6
|
await makeRestApiRequest(context, "POST", GET_STATUS_ENDPOINT);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { g5 as useTestDefinitionStore, r as ref, q as computed } from "./index-D76xStxp.js";
|
|
2
2
|
function useTestDefinitionForm() {
|
|
3
3
|
const evaluationsStore = useTestDefinitionStore();
|
|
4
4
|
const state = ref({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as ref, b as useRouter,
|
|
1
|
+
import { r as ref, b as useRouter, a7 as useWorkflowHelpers, U as useWorkflowsStore, L as useUIStore, a as useToast, a5 as useNpsSurveyStore, X as PLACEHOLDER_EMPTY_WORKFLOW_ID, ai as useTelemetry, aR as useExternalHooks, c as useI18n, aL as useStorage, dE as LOCAL_STORAGE_ACTIVATION_FLAG, dF as WORKFLOW_ACTIVE_MODAL_KEY } from "./index-D76xStxp.js";
|
|
2
2
|
function useWorkflowActivate() {
|
|
3
3
|
const updatingWorkflowActivation = ref(false);
|
|
4
4
|
const router = useRouter();
|
package/dist/index.html
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
<script>!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled getFeatureFlag onFeatureFlags reloadFeatureFlags".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[])</script>
|
|
17
17
|
|
|
18
18
|
<title>n8n.io - Workflow Automation</title>
|
|
19
|
-
<script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-
|
|
20
|
-
<link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-
|
|
19
|
+
<script type="module" crossorigin src="/{{BASE_PATH}}/assets/index-D76xStxp.js"></script>
|
|
20
|
+
<link rel="stylesheet" crossorigin href="/{{BASE_PATH}}/assets/index-DJ205bL0.css">
|
|
21
21
|
</head>
|
|
22
22
|
<body>
|
|
23
23
|
<noscript>
|
package/package.json
CHANGED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { d as defineComponent, $ as useCssModule, q as computed, c as useI18n, h as resolveComponent, i as createElementBlock, f as createCommentVNode, g as openBlock, j as createVNode, e as createBlock, w as withCtx, l as createTextVNode, t as toDisplayString, m as unref, n as normalizeClass, F as Fragment, D as renderList, k as createBaseVNode, gC as INSIGHT_IMPACT_TYPES, gD as INSIGHTS_UNIT_IMPACT_MAPPING, _ as _export_sfc } from "./index-CkOV8f0Z.js";
|
|
2
|
-
const smartDecimal = (value, decimals = 2) => {
|
|
3
|
-
if (Number.isInteger(value)) {
|
|
4
|
-
return value;
|
|
5
|
-
}
|
|
6
|
-
if (value.toString().split(".")[1].length <= decimals) {
|
|
7
|
-
return value;
|
|
8
|
-
}
|
|
9
|
-
return Number(value.toFixed(decimals));
|
|
10
|
-
};
|
|
11
|
-
const _hoisted_1 = {
|
|
12
|
-
key: 1,
|
|
13
|
-
"data-test-id": "insights-summary-tabs"
|
|
14
|
-
};
|
|
15
|
-
const _hoisted_2 = ["data-test-id"];
|
|
16
|
-
const _hoisted_3 = { href: "#" };
|
|
17
|
-
const _hoisted_4 = { key: 1 };
|
|
18
|
-
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
19
|
-
__name: "InsightsSummary",
|
|
20
|
-
props: {
|
|
21
|
-
summary: {},
|
|
22
|
-
loading: { type: Boolean }
|
|
23
|
-
},
|
|
24
|
-
setup(__props) {
|
|
25
|
-
const i18n = useI18n();
|
|
26
|
-
const $style = useCssModule();
|
|
27
|
-
const summaryTitles = computed(() => ({
|
|
28
|
-
total: i18n.baseText("insights.banner.title.total"),
|
|
29
|
-
failed: i18n.baseText("insights.banner.title.failed"),
|
|
30
|
-
failureRate: i18n.baseText("insights.banner.title.failureRate"),
|
|
31
|
-
timeSaved: i18n.baseText("insights.banner.title.timeSaved"),
|
|
32
|
-
averageRunTime: i18n.baseText("insights.banner.title.averageRunTime")
|
|
33
|
-
}));
|
|
34
|
-
const getSign = (n) => n > 0 ? "+" : void 0;
|
|
35
|
-
const getImpactStyle = (id, value) => {
|
|
36
|
-
const impact = INSIGHTS_UNIT_IMPACT_MAPPING[id];
|
|
37
|
-
if (value === 0 || impact === INSIGHT_IMPACT_TYPES.NEUTRAL) {
|
|
38
|
-
return $style.neutral;
|
|
39
|
-
}
|
|
40
|
-
if (impact === INSIGHT_IMPACT_TYPES.POSITIVE) {
|
|
41
|
-
return value > 0 ? $style.positive : $style.negative;
|
|
42
|
-
}
|
|
43
|
-
if (impact === INSIGHT_IMPACT_TYPES.NEGATIVE) {
|
|
44
|
-
return value < 0 ? $style.positive : $style.negative;
|
|
45
|
-
}
|
|
46
|
-
return $style.neutral;
|
|
47
|
-
};
|
|
48
|
-
return (_ctx, _cache) => {
|
|
49
|
-
const _component_N8nHeading = resolveComponent("N8nHeading");
|
|
50
|
-
const _component_N8nLoading = resolveComponent("N8nLoading");
|
|
51
|
-
const _component_i18n_t = resolveComponent("i18n-t");
|
|
52
|
-
const _component_N8nIcon = resolveComponent("N8nIcon");
|
|
53
|
-
const _component_N8nTooltip = resolveComponent("N8nTooltip");
|
|
54
|
-
return _ctx.summary.length ? (openBlock(), createElementBlock("div", {
|
|
55
|
-
key: 0,
|
|
56
|
-
class: normalizeClass(unref($style).insights)
|
|
57
|
-
}, [
|
|
58
|
-
createVNode(_component_N8nHeading, {
|
|
59
|
-
bold: "",
|
|
60
|
-
tag: "h3",
|
|
61
|
-
size: "small",
|
|
62
|
-
color: "text-light",
|
|
63
|
-
class: "mb-xs"
|
|
64
|
-
}, {
|
|
65
|
-
default: withCtx(() => [
|
|
66
|
-
createTextVNode(toDisplayString(unref(i18n).baseText("insights.banner.title", { interpolate: { count: 7 } })), 1)
|
|
67
|
-
]),
|
|
68
|
-
_: 1
|
|
69
|
-
}),
|
|
70
|
-
_ctx.loading ? (openBlock(), createBlock(_component_N8nLoading, {
|
|
71
|
-
key: 0,
|
|
72
|
-
class: normalizeClass(unref($style).loading),
|
|
73
|
-
cols: 5
|
|
74
|
-
}, null, 8, ["class"])) : (openBlock(), createElementBlock("ul", _hoisted_1, [
|
|
75
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.summary, ({ id, value, deviation, unit }) => {
|
|
76
|
-
return openBlock(), createElementBlock("li", {
|
|
77
|
-
key: id,
|
|
78
|
-
"data-test-id": `insights-summary-tab-${id}`
|
|
79
|
-
}, [
|
|
80
|
-
createBaseVNode("p", null, [
|
|
81
|
-
createBaseVNode("strong", null, toDisplayString(summaryTitles.value[id]), 1),
|
|
82
|
-
value === 0 && id === "timeSaved" ? (openBlock(), createElementBlock("span", {
|
|
83
|
-
key: 0,
|
|
84
|
-
class: normalizeClass(unref($style).empty)
|
|
85
|
-
}, [
|
|
86
|
-
_cache[0] || (_cache[0] = createBaseVNode("em", null, "--", -1)),
|
|
87
|
-
createBaseVNode("small", null, [
|
|
88
|
-
createVNode(_component_N8nTooltip, { placement: "bottom" }, {
|
|
89
|
-
content: withCtx(() => [
|
|
90
|
-
createVNode(_component_i18n_t, { keypath: "insights.banner.timeSaved.tooltip" }, {
|
|
91
|
-
link: withCtx(() => [
|
|
92
|
-
createBaseVNode("a", _hoisted_3, toDisplayString(unref(i18n).baseText("insights.banner.timeSaved.tooltip.link.text")), 1)
|
|
93
|
-
]),
|
|
94
|
-
_: 1
|
|
95
|
-
})
|
|
96
|
-
]),
|
|
97
|
-
default: withCtx(() => [
|
|
98
|
-
createVNode(_component_N8nIcon, {
|
|
99
|
-
class: normalizeClass(unref($style).icon),
|
|
100
|
-
icon: "info-circle"
|
|
101
|
-
}, null, 8, ["class"])
|
|
102
|
-
]),
|
|
103
|
-
_: 1
|
|
104
|
-
})
|
|
105
|
-
])
|
|
106
|
-
], 2)) : (openBlock(), createElementBlock("span", _hoisted_4, [
|
|
107
|
-
createBaseVNode("em", null, [
|
|
108
|
-
createTextVNode(toDisplayString(unref(smartDecimal)(value)) + " ", 1),
|
|
109
|
-
createBaseVNode("i", null, toDisplayString(unit), 1)
|
|
110
|
-
]),
|
|
111
|
-
deviation !== null ? (openBlock(), createElementBlock("small", {
|
|
112
|
-
key: 0,
|
|
113
|
-
class: normalizeClass(getImpactStyle(id, deviation))
|
|
114
|
-
}, [
|
|
115
|
-
createVNode(_component_N8nIcon, {
|
|
116
|
-
class: normalizeClass([unref($style).icon, getImpactStyle(id, deviation)]),
|
|
117
|
-
icon: deviation === 0 ? "caret-right" : deviation > 0 ? "caret-up" : "caret-down"
|
|
118
|
-
}, null, 8, ["class", "icon"]),
|
|
119
|
-
createTextVNode(" " + toDisplayString(getSign(deviation)) + toDisplayString(unref(smartDecimal)(deviation)), 1)
|
|
120
|
-
], 2)) : createCommentVNode("", true)
|
|
121
|
-
]))
|
|
122
|
-
])
|
|
123
|
-
], 8, _hoisted_2);
|
|
124
|
-
}), 128))
|
|
125
|
-
]))
|
|
126
|
-
], 2)) : createCommentVNode("", true);
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
const insights = "_insights_1r55j_123";
|
|
131
|
-
const empty = "_empty_1r55j_165";
|
|
132
|
-
const icon = "_icon_1r55j_173";
|
|
133
|
-
const positive = "_positive_1r55j_206";
|
|
134
|
-
const negative = "_negative_1r55j_210";
|
|
135
|
-
const neutral = "_neutral_1r55j_214";
|
|
136
|
-
const loading = "_loading_1r55j_229";
|
|
137
|
-
const style0 = {
|
|
138
|
-
insights,
|
|
139
|
-
empty,
|
|
140
|
-
icon,
|
|
141
|
-
positive,
|
|
142
|
-
negative,
|
|
143
|
-
neutral,
|
|
144
|
-
loading
|
|
145
|
-
};
|
|
146
|
-
const cssModules = {
|
|
147
|
-
"$style": style0
|
|
148
|
-
};
|
|
149
|
-
const InsightsSummary = /* @__PURE__ */ _export_sfc(_sfc_main, [["__cssModules", cssModules]]);
|
|
150
|
-
export {
|
|
151
|
-
InsightsSummary as I
|
|
152
|
-
};
|