UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

369 lines (368 loc) 20.3 kB
; (function () { System.register(["./chunk-legacy-Re9CbdfL.js", "./vue.runtime.esm-bundler-legacy--Sn1h8On.js", "./_MapCache-legacy-DlYNX_X1.js", "./src-legacy-uZTNWMC0.js", "./en-legacy-DJK4SpPN.js", "./preload-helper-legacy-CXRjoQ0T.js", "./_plugin-vue_export-helper-legacy-DZMI5HPp.js", "./truncate-legacy-BGje52Or.js", "./icon-legacy-CqVXaCIS.js", "./empty-legacy-CA9D6itE.js", "./useTelemetry-legacy-B3pzzkAE.js", "./sanitize-html-legacy-DLqXJu-U.js", "./CalendarDate-legacy-BUvNgcoo.js", "./path-browserify-legacy-C6ml8BkF.js", "./constants-legacy-TKxWCqvM.js", "./merge-legacy-8xjIc_ts.js", "./_baseOrderBy-legacy-CB2Dh5d_.js", "./dateformat-legacy-C4HUJTCr.js", "./useDebounce-legacy-CqZ-fJEm.js", "./ProjectIcon-legacy-BKmF89ad.js", "./EnterpriseEdition.ee-legacy-41Hc0JOt.js", "./TimeAgo-legacy-okNrPxgf.js", "./orderBy-legacy-BzJ3mIT5.js", "./ProjectSharing-legacy-BF1j4qGE.js", "./ResourceFiltersDropdown-legacy-xoxQ657s.js", "./SeverityTag-legacy-CqrrTow_.js"], function (_export, _context) { "use strict"; var __toESM, computed, toDisplayString, createElementBlock, createCommentVNode, unref, ref, createVNode, defineComponent, createBlock, Fragment, withCtx, openBlock, withModifiers, renderList, createTextVNode, normalizeClass, createBaseVNode, useI18n, useDebounceFn, useAsyncState, N8nSelect_default, N8nButton_default, N8nOption_default, N8nText_default, N8nIcon_default, N8nInputLabel_default, N8nDataTableServer_default, N8nLoading_default, N8nLink_default, N8nTag_default, N8nInput_default, __plugin_vue_export_helper_default, useRouter, VIEWS, useRootStore, TimeAgo_default, require_orderBy, ResourceFiltersDropdown_default, getReportForRule, SeverityTag_default, __vite_style__, import_orderBy, _hoisted_1, _hoisted_2, _hoisted_3, _hoisted_4, MigrationRuleDetail_vue_vue_type_script_setup_true_lang_default, backButton, clickableRow, filterControls, NoLineBreak, UnderlinedText, MigrationRuleDetail_vue_vue_type_style_index_0_lang_module_default, cssModules, MigrationRuleDetail_default; return { setters: [function (_chunkLegacy001Js) { __toESM = _chunkLegacy001Js.o; }, function (_vueRuntimeEsmBundlerLegacy003Js) { computed = _vueRuntimeEsmBundlerLegacy003Js.C; toDisplayString = _vueRuntimeEsmBundlerLegacy003Js.Cn; createElementBlock = _vueRuntimeEsmBundlerLegacy003Js.D; createCommentVNode = _vueRuntimeEsmBundlerLegacy003Js.E; unref = _vueRuntimeEsmBundlerLegacy003Js.Gt; ref = _vueRuntimeEsmBundlerLegacy003Js.It; createVNode = _vueRuntimeEsmBundlerLegacy003Js.M; defineComponent = _vueRuntimeEsmBundlerLegacy003Js.P; createBlock = _vueRuntimeEsmBundlerLegacy003Js.T; Fragment = _vueRuntimeEsmBundlerLegacy003Js._; withCtx = _vueRuntimeEsmBundlerLegacy003Js.bt; openBlock = _vueRuntimeEsmBundlerLegacy003Js.et; withModifiers = _vueRuntimeEsmBundlerLegacy003Js.h; renderList = _vueRuntimeEsmBundlerLegacy003Js.it; createTextVNode = _vueRuntimeEsmBundlerLegacy003Js.j; normalizeClass = _vueRuntimeEsmBundlerLegacy003Js.vn; createBaseVNode = _vueRuntimeEsmBundlerLegacy003Js.w; }, function (_MapCacheLegacy005Js) { useI18n = _MapCacheLegacy005Js.gt; useDebounceFn = _MapCacheLegacy005Js.rt; useAsyncState = _MapCacheLegacy005Js.x; }, function (_srcLegacy007Js) { N8nSelect_default = _srcLegacy007Js.G; N8nButton_default = _srcLegacy007Js.Hn; N8nOption_default = _srcLegacy007Js.K; N8nText_default = _srcLegacy007Js.Vn; N8nIcon_default = _srcLegacy007Js.Wn; N8nInputLabel_default = _srcLegacy007Js.X; N8nDataTableServer_default = _srcLegacy007Js.s; N8nLoading_default = _srcLegacy007Js.tt; N8nLink_default = _srcLegacy007Js.ut; N8nTag_default = _srcLegacy007Js.v; N8nInput_default = _srcLegacy007Js.yt; }, function (_enLegacy00bJs) {}, function (_preloadHelperLegacy00dJs) {}, function (_pluginVue_exportHelperLegacy00fJs) { __plugin_vue_export_helper_default = _pluginVue_exportHelperLegacy00fJs.t; }, function (_truncateLegacy00hJs) { useRouter = _truncateLegacy00hJs.y; }, function (_iconLegacy00nJs) {}, function (_emptyLegacy00vJs) {}, function (_useTelemetryLegacy00HJs) {}, function (_sanitizeHtmlLegacy00LJs) {}, function (_CalendarDateLegacy00NJs) {}, function (_pathBrowserifyLegacy00RJs) {}, function (_constantsLegacy00TJs) { VIEWS = _constantsLegacy00TJs.Io; }, function (_mergeLegacy00VJs) {}, function (_baseOrderByLegacy00ZJs) { useRootStore = _baseOrderByLegacy00ZJs.r; }, function (_dateformatLegacy00$Js) {}, function (_useDebounceLegacy011Js) {}, function (_ProjectIconLegacy02fJs) {}, function (_EnterpriseEditionEeLegacy02PJs) {}, function (_TimeAgoLegacy02TJs) { TimeAgo_default = _TimeAgoLegacy02TJs.t; }, function (_orderByLegacy02VJs) { require_orderBy = _orderByLegacy02VJs.t; }, function (_ProjectSharingLegacy02XJs) {}, function (_ResourceFiltersDropdownLegacy04RJs) { ResourceFiltersDropdown_default = _ResourceFiltersDropdownLegacy04RJs.t; }, function (_SeverityTagLegacy07vJs) { getReportForRule = _SeverityTagLegacy07vJs.r; SeverityTag_default = _SeverityTagLegacy07vJs.t; }], execute: function () { __vite_style__ = document.createElement('style'); __vite_style__.textContent = "\n._backButton_1kw04_2 {\n\tpadding-left: 0;\n}\n._clickableRow_1kw04_6 {\n\tcursor: pointer;\n}\n._filterControls_1kw04_10 {\n\tdisplay: flex;\n\tgap: var(--spacing--xs);\n\tmargin-bottom: var(--spacing--md);\n\talign-items: center;\n\tjustify-content: end;\n}\n._filterControls_1kw04_10 > :first-child {\n\tflex: 1;\n\tmax-width: 400px;\n}\n._NoLineBreak_1kw04_23 {\n\twhite-space: nowrap;\n}\n._UnderlinedText_1kw04_27 {\n\ttext-decoration: underline;\n}\n/*$vite$:1*/"; document.head.appendChild(__vite_style__); //#region src/features/settings/migrationReport/MigrationRuleDetail.vue?vue&type=script&setup=true&lang.ts import_orderBy = /* @__PURE__ */__toESM(require_orderBy()); _hoisted_1 = { class: "mb-2xs" }; _hoisted_2 = { class: "mb-2xl" }; _hoisted_3 = { style: { "white-space": "nowrap", "overflow": "hidden", "text-overflow": "ellipsis" } }; _hoisted_4 = { key: 1 }; MigrationRuleDetail_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({ __name: "MigrationRuleDetail", props: { migrationRuleId: {} }, setup(__props) { const i18n = useI18n(); const props = __props; const router = useRouter(); const { state, isLoading } = useAsyncState(async () => { return await getReportForRule(useRootStore().restApiContext, props.migrationRuleId); }, { ruleId: "", ruleTitle: "", ruleDescription: "", ruleSeverity: "low", affectedWorkflows: [], recommendations: [] }); const tableHeaders = ref([{ title: i18n.baseText("settings.migrationReport.detail.table.name"), key: "name", width: 200 }, { title: i18n.baseText("settings.migrationReport.detail.table.status"), key: "active", value: row => row.active ? i18n.baseText("settings.migrationReport.detail.table.active") : i18n.baseText("settings.migrationReport.detail.table.deactivated"), width: 40 }, { title: i18n.baseText("settings.migrationReport.detail.table.nodesAffected"), key: "issues" }, { title: i18n.baseText("settings.migrationReport.detail.table.numberOfExecutions"), key: "numberOfExecutions", width: 40 }, { title: i18n.baseText("settings.migrationReport.detail.table.lastExecuted"), key: "lastExecutedAt", width: 40 }, { title: i18n.baseText("settings.migrationReport.detail.table.lastUpdated"), key: "lastUpdatedAt", width: 40 }]); function handleRowClick(_event, { item }) { window.open(router.resolve({ name: VIEWS.WORKFLOW, params: { name: item.id } }).href, "_blank"); } const sortBy = ref([{ id: "numberOfExecutions", desc: true }]); const searchInput = ref(""); const searchQuery = ref(""); const statusFilter = ref(""); const debouncedSearch = useDebounceFn(value => { searchQuery.value = value; }, 300); const onSearchInput = value => { searchInput.value = value; debouncedSearch(value); }; const statusOptions = computed(() => [{ value: "", label: i18n.baseText("settings.migrationReport.detail.filter.status.all") }, { value: "active", label: i18n.baseText("settings.migrationReport.detail.filter.status.active") }, { value: "deactivated", label: i18n.baseText("settings.migrationReport.detail.filter.status.deactivated") }]); const filters = computed(() => ({ search: searchInput.value, status: statusFilter.value })); const filterKeys = computed(() => ["status"]); const wasJustReset = ref(false); const resetFilters = () => { statusFilter.value = ""; wasJustReset.value = true; }; const onUpdateFilters = newFilters => { if (wasJustReset.value) { wasJustReset.value = false; return; } statusFilter.value = newFilters.status || ""; }; const filteredWorkflows = computed(() => { let workflows = state.value.affectedWorkflows; if (searchQuery.value) { const query = searchQuery.value.toLowerCase(); workflows = workflows.filter(workflow => workflow.name.toLowerCase().includes(query)); } if (statusFilter.value !== "") workflows = workflows.filter(workflow => { if (statusFilter.value === "active") return workflow.active;else if (statusFilter.value === "deactivated") return !workflow.active; return true; }); return workflows; }); const sortedWorkflows = computed(() => { if (!sortBy.value.length) return filteredWorkflows.value; return (0, import_orderBy.default)(filteredWorkflows.value, [sortBy.value[0].id], [sortBy.value[0].desc ? "desc" : "asc"]); }); return (_ctx, _cache) => { return openBlock(), createElementBlock("div", null, [createVNode(unref(N8nButton_default), { class: normalizeClass([_ctx.$style.backButton, "mb-xs"]), type: "secondary", text: "", icon: "arrow-left", label: unref(i18n).baseText("generic.back"), onClick: _cache[0] || (_cache[0] = $event => unref(router).push({ name: unref(VIEWS).MIGRATION_REPORT })) }, null, 8, ["class", "label"]), unref(isLoading) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createBaseVNode("div", _hoisted_1, [createVNode(unref(N8nLoading_default), { variant: "h1" })]), createBaseVNode("div", _hoisted_2, [createVNode(unref(N8nLoading_default), { variant: "p", rows: 2 })])], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createVNode(unref(N8nText_default), { tag: "h2", size: "xlarge", color: "text-dark", class: "mb-2xs", style: { "display": "flex", "align-items": "center", "gap": "4px" } }, { default: withCtx(() => [createTextVNode(toDisplayString(unref(state).ruleTitle) + " ", 1), createVNode(SeverityTag_default, { severity: unref(state).ruleSeverity }, null, 8, ["severity"]), createVNode(unref(N8nTag_default), { text: unref(i18n).baseText("settings.migrationReport.detail.affectedTag", { interpolate: { count: String(unref(state).affectedWorkflows.length) } }), clickable: false }, null, 8, ["text"])]), _: 1 }), createVNode(unref(N8nText_default), { tag: "p", color: "text-base", class: "mb-2xl" }, { default: withCtx(() => [createTextVNode(toDisplayString(unref(state).ruleDescription) + toDisplayString(unref(state).ruleDescription.endsWith(".") ? "" : ".") + " ", 1), unref(state).ruleDocumentationUrl ? (openBlock(), createBlock(unref(N8nLink_default), { key: 0, theme: "text", href: unref(state).ruleDocumentationUrl, target: "_blank", rel: "noopener noreferrer", class: normalizeClass(_ctx.$style.NoLineBreak) }, { default: withCtx(() => [createBaseVNode("span", { class: normalizeClass(_ctx.$style.UnderlinedText) }, toDisplayString(unref(i18n).baseText("settings.migrationReport.documentation")), 3), _cache[4] || (_cache[4] = createTextVNode(" ↗ "))]), _: 1 }, 8, ["href", "class"])) : createCommentVNode("", true)]), _: 1 })], 64)), createBaseVNode("div", { class: normalizeClass(_ctx.$style.filterControls) }, [createVNode(unref(N8nInput_default), { "model-value": filters.value.search, placeholder: unref(i18n).baseText("settings.migrationReport.detail.search.placeholder"), size: "small", clearable: "", "data-test-id": "migration-rule-search", "onUpdate:modelValue": onSearchInput }, { prefix: withCtx(() => [createVNode(unref(N8nIcon_default), { icon: "search" })]), _: 1 }, 8, ["model-value", "placeholder"]), createVNode(ResourceFiltersDropdown_default, { keys: filterKeys.value, reset: resetFilters, "model-value": filters.value, shareable: false, "data-test-id": "migration-rule-filters", "onUpdate:modelValue": onUpdateFilters }, { default: withCtx(() => [createVNode(unref(N8nInputLabel_default), { label: unref(i18n).baseText("settings.migrationReport.detail.filter.status.label"), bold: false, size: "small", color: "text-base", class: "mb-3xs" }, null, 8, ["label"]), createVNode(unref(N8nSelect_default), { modelValue: statusFilter.value, "onUpdate:modelValue": _cache[1] || (_cache[1] = $event => statusFilter.value = $event), size: "small", "data-test-id": "migration-rule-status-filter" }, { default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(statusOptions.value, option => { return openBlock(), createBlock(unref(N8nOption_default), { key: option.value, value: option.value, label: option.label }, null, 8, ["value", "label"]); }), 128))]), _: 1 }, 8, ["modelValue"])]), _: 1 }, 8, ["keys", "model-value"])], 2), createVNode(unref(N8nDataTableServer_default), { "sort-by": sortBy.value, "onUpdate:sortBy": _cache[3] || (_cache[3] = $event => sortBy.value = $event), "items-per-page": sortedWorkflows.value.length + 1, items: sortedWorkflows.value, "items-length": sortedWorkflows.value.length, headers: tableHeaders.value, "row-props": { class: _ctx.$style.clickableRow }, loading: unref(isLoading), "onClick:row": handleRowClick }, { [`item.issues`]: withCtx(({ item }) => [createBaseVNode("div", _hoisted_3, [(openBlock(true), createElementBlock(Fragment, null, renderList(item.issues, (issue, index) => { return openBlock(), createElementBlock(Fragment, { key: issue.nodeId }, [createVNode(unref(N8nLink_default), { theme: "text", to: `/workflow/${item.id}/${issue.nodeId}`, "new-window": "", onClickCapture: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"])) }, { default: withCtx(() => [createTextVNode(toDisplayString(issue.nodeName), 1)]), _: 2 }, 1032, ["to"]), index < item.issues.length - 1 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(", ")], 64)) : createCommentVNode("", true)], 64); }), 128))])]), [`item.lastExecutedAt`]: withCtx(({ item }) => [item.lastExecutedAt ? (openBlock(), createBlock(TimeAgo_default, { key: 0, date: item.lastExecutedAt.toString() }, null, 8, ["date"])) : (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(unref(i18n).baseText("settings.migrationReport.detail.table.never")), 1))]), [`item.lastUpdatedAt`]: withCtx(({ item }) => [createVNode(TimeAgo_default, { date: item.lastUpdatedAt.toString() }, null, 8, ["date"])]), _: 2 }, 1032, ["sort-by", "items-per-page", "items", "items-length", "headers", "row-props", "loading"])]); }; } }); //#endregion //#region src/features/settings/migrationReport/MigrationRuleDetail.vue?vue&type=style&index=0&lang.module.css backButton = "_backButton_1kw04_2"; clickableRow = "_clickableRow_1kw04_6"; filterControls = "_filterControls_1kw04_10"; NoLineBreak = "_NoLineBreak_1kw04_23"; UnderlinedText = "_UnderlinedText_1kw04_27"; MigrationRuleDetail_vue_vue_type_style_index_0_lang_module_default = { backButton, clickableRow, filterControls, NoLineBreak, UnderlinedText }; //#endregion //#region src/features/settings/migrationReport/MigrationRuleDetail.vue cssModules = { "$style": MigrationRuleDetail_vue_vue_type_style_index_0_lang_module_default }; _export("default", MigrationRuleDetail_default = /* @__PURE__ */__plugin_vue_export_helper_default(MigrationRuleDetail_vue_vue_type_script_setup_true_lang_default, [["__cssModules", cssModules]])); //#endregion } }; }); })();