From 4f9d5a4814ba7b4442c459c11976f1d8e96c28a9 Mon Sep 17 00:00:00 2001 From: guerler Date: Sun, 1 Dec 2024 21:10:47 +0300 Subject: [PATCH 001/158] Add helper to generically split markdown sections without parsing arguments --- client/src/components/Markdown/parse.test.js | 20 +++++++++++++++- client/src/components/Markdown/parse.ts | 24 ++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/client/src/components/Markdown/parse.test.js b/client/src/components/Markdown/parse.test.js index 50b1ae99397d..5ee139ca8397 100644 --- a/client/src/components/Markdown/parse.test.js +++ b/client/src/components/Markdown/parse.test.js @@ -1,4 +1,4 @@ -import { getArgs, replaceLabel, splitMarkdown } from "./parse"; +import { getArgs, parseSections, replaceLabel, splitMarkdown } from "./parse"; describe("parse.ts", () => { describe("getArgs", () => { @@ -20,6 +20,24 @@ describe("parse.ts", () => { }); }); + describe("parseSections", () => { + it("strip leading whitespace by default", () => { + const sections = parseSections( + "```galaxy\njob_metrics(job_id=THISFAKEID)\n```\n DEFAULT_CONTENT \n```special\n SPECIAL_CONTENT \n```\n MORE_DEFAULT_CONTENT" + ); + console.log(sections); + expect(sections.length).toBe(4); + expect(sections[0].name).toBe("galaxy"); + expect(sections[0].content).toBe("job_metrics(job_id=THISFAKEID)"); + expect(sections[1].name).toBe("default"); + expect(sections[1].content).toBe("DEFAULT_CONTENT"); + expect(sections[2].name).toBe("special"); + expect(sections[2].content).toBe("SPECIAL_CONTENT"); + expect(sections[3].name).toBe("default"); + expect(sections[3].content).toBe("MORE_DEFAULT_CONTENT"); + }); + }); + describe("splitMarkdown", () => { it("strip leading whitespace by default", () => { const { sections } = splitMarkdown("\n```galaxy\njob_metrics(job_id=THISFAKEID)\n```"); diff --git a/client/src/components/Markdown/parse.ts b/client/src/components/Markdown/parse.ts index e001e1861a0d..10f352847ec7 100644 --- a/client/src/components/Markdown/parse.ts +++ b/client/src/components/Markdown/parse.ts @@ -13,6 +13,30 @@ type WorkflowLabelKind = "input" | "output" | "step"; const SINGLE_QUOTE = "'"; const DOUBLE_QUOTE = '"'; +export function parseSections(input: string): { name: string; content: string }[] { + const result: { name: string; content: string }[] = []; + const lines = input.split("\n"); + let currentName: string = "default"; + let currentContent: string[] = []; + lines.forEach((line) => { + const sectionMatch = line.match(/^```(.*)$/); + if (sectionMatch) { + console.log(sectionMatch); + if (currentContent.length > 0) { + result.push({ name: currentName, content: currentContent.join("\n").trim() }); + } + currentName = sectionMatch[1] || "default"; + currentContent = []; + } else { + currentContent.push(line); + } + }); + if (currentContent.length > 0) { + result.push({ name: currentName, content: currentContent.join("\n").trim() }); + } + return result; +} + export function splitMarkdown(markdown: string, preserveWhitespace = false) { const sections: Section[] = []; const markdownErrors = []; From 93f89961f1b520d521454814e3fc647b6da9d5ff Mon Sep 17 00:00:00 2001 From: guerler Date: Sun, 1 Dec 2024 21:18:53 +0300 Subject: [PATCH 002/158] Replace section parser in markdown component --- client/src/components/Markdown/Markdown.vue | 4 ++-- client/src/components/Markdown/parse.test.js | 5 ++--- client/src/components/Markdown/parse.ts | 3 +-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/client/src/components/Markdown/Markdown.vue b/client/src/components/Markdown/Markdown.vue index 895f09714309..a502f640fc71 100644 --- a/client/src/components/Markdown/Markdown.vue +++ b/client/src/components/Markdown/Markdown.vue @@ -74,7 +74,7 @@ import Vue from "vue"; import { useWorkflowStore } from "@/stores/workflowStore"; -import { splitMarkdown as splitMarkdownUnrendered } from "./parse"; +import { parseMarkdown } from "./parse"; import MarkdownContainer from "./MarkdownContainer.vue"; import LoadingSpan from "components/LoadingSpan.vue"; @@ -183,7 +183,7 @@ export default { const config = this.markdownConfig; const markdown = config.content || config.markdown || ""; this.markdownErrors = config.errors || []; - this.markdownObjects = this.splitMarkdown(markdown); + this.markdownObjects = parseMarkdown(markdown); this.datasets = config.history_datasets || {}; this.histories = config.histories || {}; this.collections = config.history_dataset_collections || {}; diff --git a/client/src/components/Markdown/parse.test.js b/client/src/components/Markdown/parse.test.js index 5ee139ca8397..33e5673cc072 100644 --- a/client/src/components/Markdown/parse.test.js +++ b/client/src/components/Markdown/parse.test.js @@ -1,4 +1,4 @@ -import { getArgs, parseSections, replaceLabel, splitMarkdown } from "./parse"; +import { getArgs, parseMarkdown, replaceLabel, splitMarkdown } from "./parse"; describe("parse.ts", () => { describe("getArgs", () => { @@ -22,10 +22,9 @@ describe("parse.ts", () => { describe("parseSections", () => { it("strip leading whitespace by default", () => { - const sections = parseSections( + const sections = parseMarkdown( "```galaxy\njob_metrics(job_id=THISFAKEID)\n```\n DEFAULT_CONTENT \n```special\n SPECIAL_CONTENT \n```\n MORE_DEFAULT_CONTENT" ); - console.log(sections); expect(sections.length).toBe(4); expect(sections[0].name).toBe("galaxy"); expect(sections[0].content).toBe("job_metrics(job_id=THISFAKEID)"); diff --git a/client/src/components/Markdown/parse.ts b/client/src/components/Markdown/parse.ts index 10f352847ec7..58e664ada52f 100644 --- a/client/src/components/Markdown/parse.ts +++ b/client/src/components/Markdown/parse.ts @@ -13,7 +13,7 @@ type WorkflowLabelKind = "input" | "output" | "step"; const SINGLE_QUOTE = "'"; const DOUBLE_QUOTE = '"'; -export function parseSections(input: string): { name: string; content: string }[] { +export function parseMarkdown(input: string): { name: string; content: string }[] { const result: { name: string; content: string }[] = []; const lines = input.split("\n"); let currentName: string = "default"; @@ -21,7 +21,6 @@ export function parseSections(input: string): { name: string; content: string }[ lines.forEach((line) => { const sectionMatch = line.match(/^```(.*)$/); if (sectionMatch) { - console.log(sectionMatch); if (currentContent.length > 0) { result.push({ name: currentName, content: currentContent.join("\n").trim() }); } From aa7a4632f20aadfca6a167be881fd6331f41684c Mon Sep 17 00:00:00 2001 From: guerler Date: Sun, 1 Dec 2024 21:31:05 +0300 Subject: [PATCH 003/158] Move argument resolution to markdown container --- client/src/components/Markdown/Markdown.vue | 19 +++++-------------- .../components/Markdown/MarkdownContainer.vue | 13 +++++++------ .../components/Markdown/MarkdownDefault.vue | 9 +++++++++ 3 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 client/src/components/Markdown/MarkdownDefault.vue diff --git a/client/src/components/Markdown/Markdown.vue b/client/src/components/Markdown/Markdown.vue index a502f640fc71..fe88cb17ec55 100644 --- a/client/src/components/Markdown/Markdown.vue +++ b/client/src/components/Markdown/Markdown.vue @@ -45,11 +45,10 @@
-

+ markdownErrors.push(error)); - sections.forEach((section) => { - if (section.name == "default") { - section.content = md.render(section.content); - } - }); - return sections; - }, }, }; diff --git a/client/src/components/Markdown/MarkdownContainer.vue b/client/src/components/Markdown/MarkdownContainer.vue index 72f487deb26e..9c2f5910cc05 100644 --- a/client/src/components/Markdown/MarkdownContainer.vue +++ b/client/src/components/Markdown/MarkdownContainer.vue @@ -20,19 +20,16 @@ import Visualization from "./Elements/Visualization.vue"; import WorkflowDisplay from "./Elements/Workflow/WorkflowDisplay.vue"; import WorkflowImage from "./Elements/Workflow/WorkflowImage.vue"; import WorkflowLicense from "./Elements/Workflow/WorkflowLicense.vue"; +import { getArgs } from "./parse"; const { config, isConfigLoaded } = useConfig(); const toggle = ref(false); const props = defineProps({ - name: { + content: { type: String, required: true, }, - args: { - type: Object, - required: true, - }, datasets: { type: Object, default: null, @@ -63,7 +60,11 @@ const props = defineProps({ }, }); -const isCollapsible = computed(() => props.args.collapse !== undefined); +const parsedArgs = computed(() => getArgs(props.content)); +const args = computed(() => parsedArgs.value.args); +const name = computed(() => parsedArgs.value.name); + +const isCollapsible = computed(() => args.value.collapse !== undefined); const isVisible = computed(() => !isCollapsible.value || toggle.value); function argToBoolean(args, name, booleanDefault) { diff --git a/client/src/components/Markdown/MarkdownDefault.vue b/client/src/components/Markdown/MarkdownDefault.vue new file mode 100644 index 000000000000..e0dea897f5bd --- /dev/null +++ b/client/src/components/Markdown/MarkdownDefault.vue @@ -0,0 +1,9 @@ + + + From 70a26a3277d8fc3b46d56391fb0322d9ab6a156e Mon Sep 17 00:00:00 2001 From: guerler Date: Sun, 1 Dec 2024 22:16:33 +0300 Subject: [PATCH 004/158] Add markdown renderer to default container --- client/src/components/Markdown/Markdown.vue | 9 --------- .../components/Markdown/MarkdownDefault.vue | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/client/src/components/Markdown/Markdown.vue b/client/src/components/Markdown/Markdown.vue index fe88cb17ec55..edb2035fd56a 100644 --- a/client/src/components/Markdown/Markdown.vue +++ b/client/src/components/Markdown/Markdown.vue @@ -66,8 +66,6 @@ import { library } from "@fortawesome/fontawesome-svg-core"; import { faDownload, faEdit } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; import BootstrapVue from "bootstrap-vue"; -import MarkdownIt from "markdown-it"; -import markdownItRegexp from "markdown-it-regexp"; import { mapActions } from "pinia"; import Vue from "vue"; @@ -80,13 +78,6 @@ import MarkdownContainer from "./MarkdownContainer.vue"; import LoadingSpan from "components/LoadingSpan.vue"; import StsDownloadButton from "components/StsDownloadButton.vue"; -const mdNewline = markdownItRegexp(/
/, () => { - return "


"; -}); - -const md = MarkdownIt(); -md.use(mdNewline); - Vue.use(BootstrapVue); library.add(faDownload, faEdit); diff --git a/client/src/components/Markdown/MarkdownDefault.vue b/client/src/components/Markdown/MarkdownDefault.vue index e0dea897f5bd..2d3c81891741 100644 --- a/client/src/components/Markdown/MarkdownDefault.vue +++ b/client/src/components/Markdown/MarkdownDefault.vue @@ -1,9 +1,23 @@ From 8394a64e4834f7f094e9b03d0e18bde1d79be08a Mon Sep 17 00:00:00 2001 From: guerler Date: Sun, 1 Dec 2024 22:50:27 +0300 Subject: [PATCH 005/158] Move VegaWrapper to Common folder, use also in Markdown --- .../VegaWrapper.vue | 0 client/src/components/Markdown/Markdown.vue | 6 +++++- .../Markdown/{ => Sections}/MarkdownDefault.vue | 0 .../Markdown/Sections/MarkdownVega.vue | 17 +++++++++++++++++ .../WorkflowInvocationMetrics.vue | 2 +- 5 files changed, 23 insertions(+), 2 deletions(-) rename client/src/components/{WorkflowInvocationState => Common}/VegaWrapper.vue (100%) rename client/src/components/Markdown/{ => Sections}/MarkdownDefault.vue (100%) create mode 100644 client/src/components/Markdown/Sections/MarkdownVega.vue diff --git a/client/src/components/WorkflowInvocationState/VegaWrapper.vue b/client/src/components/Common/VegaWrapper.vue similarity index 100% rename from client/src/components/WorkflowInvocationState/VegaWrapper.vue rename to client/src/components/Common/VegaWrapper.vue diff --git a/client/src/components/Markdown/Markdown.vue b/client/src/components/Markdown/Markdown.vue index edb2035fd56a..de357e8be6bc 100644 --- a/client/src/components/Markdown/Markdown.vue +++ b/client/src/components/Markdown/Markdown.vue @@ -46,6 +46,7 @@
+ +const VegaWrapper = () => import("@/components/Common/VegaWrapper.vue"); +import { computed } from "vue"; + +const props = defineProps<{ + content: string; +}>(); + +const spec = computed(() => ({ + ...JSON.parse(props.content), + width: "container", +})); + + + diff --git a/client/src/components/WorkflowInvocationState/WorkflowInvocationMetrics.vue b/client/src/components/WorkflowInvocationState/WorkflowInvocationMetrics.vue index 3fdfda962bdb..64ad2b64a6db 100644 --- a/client/src/components/WorkflowInvocationState/WorkflowInvocationMetrics.vue +++ b/client/src/components/WorkflowInvocationState/WorkflowInvocationMetrics.vue @@ -12,7 +12,7 @@ import { capitalizeFirstLetter } from "@/utils/strings"; import LoadingSpan from "../LoadingSpan.vue"; import HelpText from "@/components/Help/HelpText.vue"; -const VegaWrapper = () => import("./VegaWrapper.vue"); +const VegaWrapper = () => import("@/components/Common/VegaWrapper.vue"); interface Props { invocationId: string; From 014342a0516bfb6c4006d4122edd24e9f176a3e9 Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 2 Dec 2024 11:43:59 +0300 Subject: [PATCH 006/158] Add vitessce wrapper template --- client/src/components/Markdown/Markdown.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/src/components/Markdown/Markdown.vue b/client/src/components/Markdown/Markdown.vue index de357e8be6bc..59de831e6167 100644 --- a/client/src/components/Markdown/Markdown.vue +++ b/client/src/components/Markdown/Markdown.vue @@ -47,6 +47,7 @@
+ Date: Mon, 2 Dec 2024 13:18:29 +0300 Subject: [PATCH 007/158] Add plugin container --- .../Sections/Elements/PluginContainer.vue | 49 +++++++++++++++++++ .../Markdown/Sections/MarkdownVitessce.vue | 19 +++++++ 2 files changed, 68 insertions(+) create mode 100644 client/src/components/Markdown/Sections/Elements/PluginContainer.vue create mode 100644 client/src/components/Markdown/Sections/MarkdownVitessce.vue diff --git a/client/src/components/Markdown/Sections/Elements/PluginContainer.vue b/client/src/components/Markdown/Sections/Elements/PluginContainer.vue new file mode 100644 index 000000000000..270e2bf09ef1 --- /dev/null +++ b/client/src/components/Markdown/Sections/Elements/PluginContainer.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/client/src/components/Markdown/Sections/MarkdownVitessce.vue b/client/src/components/Markdown/Sections/MarkdownVitessce.vue new file mode 100644 index 000000000000..09e723be0585 --- /dev/null +++ b/client/src/components/Markdown/Sections/MarkdownVitessce.vue @@ -0,0 +1,19 @@ + + + From f04ae6881d79386039ef5edc18fee3d67be015ff Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 2 Dec 2024 18:55:25 +0300 Subject: [PATCH 008/158] Add Vitessce to Markdown options? --- .../Sections/Elements/PluginContainer.vue | 49 --------------- .../Sections/Elements/PluginWrapper.ts | 61 +++++++++++++++++++ .../Markdown/Sections/MarkdownVitessce.vue | 11 ++-- 3 files changed, 67 insertions(+), 54 deletions(-) delete mode 100644 client/src/components/Markdown/Sections/Elements/PluginContainer.vue create mode 100644 client/src/components/Markdown/Sections/Elements/PluginWrapper.ts diff --git a/client/src/components/Markdown/Sections/Elements/PluginContainer.vue b/client/src/components/Markdown/Sections/Elements/PluginContainer.vue deleted file mode 100644 index 270e2bf09ef1..000000000000 --- a/client/src/components/Markdown/Sections/Elements/PluginContainer.vue +++ /dev/null @@ -1,49 +0,0 @@ - - - - - diff --git a/client/src/components/Markdown/Sections/Elements/PluginWrapper.ts b/client/src/components/Markdown/Sections/Elements/PluginWrapper.ts new file mode 100644 index 000000000000..e56404f0c457 --- /dev/null +++ b/client/src/components/Markdown/Sections/Elements/PluginWrapper.ts @@ -0,0 +1,61 @@ +import { getAppRoot } from "@/onload/loadConfig" + +class PluginWrapper extends HTMLElement { + constructor() { + super(); + } + + connectedCallback() { + const pluginName = this.getAttribute("plugin-name"); + const pluginData = this.getAttribute("plugin-data") || ""; + + const pluginPath = `${getAppRoot()}static/plugins/visualizations/${pluginName}/static/dist/index`; + const pluginSrc = `${pluginPath}.js`; + const pluginCss = `${pluginPath}.css`; + + if (!pluginSrc) { + console.error("Plugin source not provided!"); + return; + } + + // Create and append the iframe + const iframe = document.createElement("iframe"); + iframe.style.border = "none"; + iframe.style.width = "100%"; + iframe.style.height = this.getAttribute("height") || "100%"; + + // Load content into the iframe once it's ready + iframe.onload = () => { + const iframeDocument = iframe.contentDocument; + if (!iframeDocument) { + console.error("Failed to access iframe document."); + return; + } + + // Create the container for the plugin + const container = iframeDocument.createElement("div"); + container.id = "app"; + container.setAttribute("data-incoming", pluginData); + iframeDocument.body.appendChild(container); + + // Inject the script tag for the plugin + const script = iframeDocument.createElement("script"); + script.type = "module"; + script.src = pluginSrc; + iframeDocument.body.appendChild(script); + + // Add a CSS link to the iframe document + const link = iframeDocument.createElement('link'); + link.rel = 'stylesheet'; + link.href = pluginCss; + iframeDocument.head.appendChild(link); + }; + + this.appendChild(iframe); + } +} + +// Register the custom element +customElements.define("plugin-wrapper", PluginWrapper); + +export default PluginWrapper; diff --git a/client/src/components/Markdown/Sections/MarkdownVitessce.vue b/client/src/components/Markdown/Sections/MarkdownVitessce.vue index 09e723be0585..19c8fe0e88f0 100644 --- a/client/src/components/Markdown/Sections/MarkdownVitessce.vue +++ b/client/src/components/Markdown/Sections/MarkdownVitessce.vue @@ -1,19 +1,20 @@ From af4e2e5b1d7868b3f3aeca3adeed38a04f551e02 Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 2 Dec 2024 20:28:02 +0300 Subject: [PATCH 009/158] Move visualization wrapper to visualizations --- .../Sections/Elements/PluginWrapper.ts | 61 ----------------- .../Markdown/Sections/MarkdownVitessce.vue | 8 +-- .../Visualizations/VisualizationWrapper.vue | 65 +++++++++++++++++++ 3 files changed, 69 insertions(+), 65 deletions(-) delete mode 100644 client/src/components/Markdown/Sections/Elements/PluginWrapper.ts create mode 100644 client/src/components/Visualizations/VisualizationWrapper.vue diff --git a/client/src/components/Markdown/Sections/Elements/PluginWrapper.ts b/client/src/components/Markdown/Sections/Elements/PluginWrapper.ts deleted file mode 100644 index e56404f0c457..000000000000 --- a/client/src/components/Markdown/Sections/Elements/PluginWrapper.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { getAppRoot } from "@/onload/loadConfig" - -class PluginWrapper extends HTMLElement { - constructor() { - super(); - } - - connectedCallback() { - const pluginName = this.getAttribute("plugin-name"); - const pluginData = this.getAttribute("plugin-data") || ""; - - const pluginPath = `${getAppRoot()}static/plugins/visualizations/${pluginName}/static/dist/index`; - const pluginSrc = `${pluginPath}.js`; - const pluginCss = `${pluginPath}.css`; - - if (!pluginSrc) { - console.error("Plugin source not provided!"); - return; - } - - // Create and append the iframe - const iframe = document.createElement("iframe"); - iframe.style.border = "none"; - iframe.style.width = "100%"; - iframe.style.height = this.getAttribute("height") || "100%"; - - // Load content into the iframe once it's ready - iframe.onload = () => { - const iframeDocument = iframe.contentDocument; - if (!iframeDocument) { - console.error("Failed to access iframe document."); - return; - } - - // Create the container for the plugin - const container = iframeDocument.createElement("div"); - container.id = "app"; - container.setAttribute("data-incoming", pluginData); - iframeDocument.body.appendChild(container); - - // Inject the script tag for the plugin - const script = iframeDocument.createElement("script"); - script.type = "module"; - script.src = pluginSrc; - iframeDocument.body.appendChild(script); - - // Add a CSS link to the iframe document - const link = iframeDocument.createElement('link'); - link.rel = 'stylesheet'; - link.href = pluginCss; - iframeDocument.head.appendChild(link); - }; - - this.appendChild(iframe); - } -} - -// Register the custom element -customElements.define("plugin-wrapper", PluginWrapper); - -export default PluginWrapper; diff --git a/client/src/components/Markdown/Sections/MarkdownVitessce.vue b/client/src/components/Markdown/Sections/MarkdownVitessce.vue index 19c8fe0e88f0..10f2872cf40f 100644 --- a/client/src/components/Markdown/Sections/MarkdownVitessce.vue +++ b/client/src/components/Markdown/Sections/MarkdownVitessce.vue @@ -1,20 +1,20 @@ diff --git a/client/src/components/Visualizations/VisualizationWrapper.vue b/client/src/components/Visualizations/VisualizationWrapper.vue new file mode 100644 index 000000000000..938d91123f79 --- /dev/null +++ b/client/src/components/Visualizations/VisualizationWrapper.vue @@ -0,0 +1,65 @@ + + + + + From 78e1a649baaf10072895180ae78322042ab03cea Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 2 Dec 2024 20:29:02 +0300 Subject: [PATCH 010/158] Fix naming for consistency --- client/src/components/Markdown/Sections/MarkdownVitessce.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/components/Markdown/Sections/MarkdownVitessce.vue b/client/src/components/Markdown/Sections/MarkdownVitessce.vue index 10f2872cf40f..4d79dc55ae6d 100644 --- a/client/src/components/Markdown/Sections/MarkdownVitessce.vue +++ b/client/src/components/Markdown/Sections/MarkdownVitessce.vue @@ -6,7 +6,7 @@ const props = defineProps<{ content: string; }>(); -const pluginData = computed(() => ({ +const dataIncoming = computed(() => ({ visualization_config: { dataset_content: { ...JSON.parse(props.content) }, }, @@ -15,6 +15,6 @@ const pluginData = computed(() => ({ From a669cb53d0fc1fa4838bcc5136d17c2654cc0847 Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 2 Dec 2024 20:34:50 +0300 Subject: [PATCH 011/158] Move markdown galaxy section components to subdirectory --- client/src/components/Markdown/Markdown.vue | 6 +++--- .../{ => Sections}/Elements/HistoryDatasetAsImage.vue | 0 .../{ => Sections}/Elements/HistoryDatasetAsTable.vue | 0 .../Elements/HistoryDatasetCollection/CollectionDisplay.vue | 0 .../Elements/HistoryDatasetCollection/CollectionTree.vue | 0 .../{ => Sections}/Elements/HistoryDatasetDetails.vue | 0 .../{ => Sections}/Elements/HistoryDatasetDisplay.test.js | 0 .../{ => Sections}/Elements/HistoryDatasetDisplay.vue | 0 .../{ => Sections}/Elements/HistoryDatasetIndex.vue | 0 .../Markdown/{ => Sections}/Elements/HistoryDatasetLink.vue | 0 .../Markdown/{ => Sections}/Elements/HistoryLink.vue | 0 .../Markdown/{ => Sections}/Elements/InstanceUrl.vue | 0 .../Markdown/{ => Sections}/Elements/InvocationTime.vue | 0 .../Markdown/{ => Sections}/Elements/JobMetrics.vue | 0 .../Markdown/{ => Sections}/Elements/JobParameters.vue | 0 .../Markdown/{ => Sections}/Elements/JobSelection.vue | 0 .../components/Markdown/{ => Sections}/Elements/ToolStd.vue | 0 .../Markdown/{ => Sections}/Elements/Visualization.vue | 0 .../Elements/Workflow/WorkflowDisplay.test.js | 0 .../{ => Sections}/Elements/Workflow/WorkflowDisplay.vue | 0 .../{ => Sections}/Elements/Workflow/WorkflowImage.vue | 0 .../{ => Sections}/Elements/Workflow/WorkflowLicense.vue | 0 .../{ => Sections}/Elements/Workflow/WorkflowTree.vue | 0 .../Markdown/{ => Sections}/Elements/handlesMappingJobs.ts | 0 .../MarkdownGalaxy.test.js} | 2 +- .../{MarkdownContainer.vue => Sections/MarkdownGalaxy.vue} | 2 +- 26 files changed, 5 insertions(+), 5 deletions(-) rename client/src/components/Markdown/{ => Sections}/Elements/HistoryDatasetAsImage.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/HistoryDatasetAsTable.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/HistoryDatasetCollection/CollectionDisplay.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/HistoryDatasetCollection/CollectionTree.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/HistoryDatasetDetails.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/HistoryDatasetDisplay.test.js (100%) rename client/src/components/Markdown/{ => Sections}/Elements/HistoryDatasetDisplay.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/HistoryDatasetIndex.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/HistoryDatasetLink.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/HistoryLink.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/InstanceUrl.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/InvocationTime.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/JobMetrics.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/JobParameters.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/JobSelection.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/ToolStd.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/Visualization.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/Workflow/WorkflowDisplay.test.js (100%) rename client/src/components/Markdown/{ => Sections}/Elements/Workflow/WorkflowDisplay.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/Workflow/WorkflowImage.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/Workflow/WorkflowLicense.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/Workflow/WorkflowTree.vue (100%) rename client/src/components/Markdown/{ => Sections}/Elements/handlesMappingJobs.ts (100%) rename client/src/components/Markdown/{MarkdownContainer.test.js => Sections/MarkdownGalaxy.test.js} (98%) rename client/src/components/Markdown/{MarkdownContainer.vue => Sections/MarkdownGalaxy.vue} (99%) diff --git a/client/src/components/Markdown/Markdown.vue b/client/src/components/Markdown/Markdown.vue index 59de831e6167..76e9141af735 100644 --- a/client/src/components/Markdown/Markdown.vue +++ b/client/src/components/Markdown/Markdown.vue @@ -48,7 +48,7 @@ - Date: Mon, 2 Dec 2024 20:41:29 +0300 Subject: [PATCH 012/158] Convert Markdown main component to composition api --- client/src/components/Markdown/Markdown.vue | 248 +++++++++----------- 1 file changed, 113 insertions(+), 135 deletions(-) diff --git a/client/src/components/Markdown/Markdown.vue b/client/src/components/Markdown/Markdown.vue index 76e9141af735..d3d75ecd8687 100644 --- a/client/src/components/Markdown/Markdown.vue +++ b/client/src/components/Markdown/Markdown.vue @@ -1,3 +1,115 @@ + + - - From eaf33d557a6c83d6c722fbc1318592609a4c0a7a Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 2 Dec 2024 20:47:00 +0300 Subject: [PATCH 013/158] Adjust loading flag --- client/src/components/Markdown/Markdown.vue | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/src/components/Markdown/Markdown.vue b/client/src/components/Markdown/Markdown.vue index d3d75ecd8687..1115196098e4 100644 --- a/client/src/components/Markdown/Markdown.vue +++ b/client/src/components/Markdown/Markdown.vue @@ -1,5 +1,6 @@ + + + + + diff --git a/client/src/components/Markdown/MarkdownEditor.vue b/client/src/components/Markdown/MarkdownEditor.vue index 0ace2e5a3b6d..066310115244 100644 --- a/client/src/components/Markdown/MarkdownEditor.vue +++ b/client/src/components/Markdown/MarkdownEditor.vue @@ -24,12 +24,7 @@
-