From d5fa998c7c270993ae1050e6dc4a4e68df1c4e48 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 7 Nov 2023 22:07:10 +0100 Subject: [PATCH] improve vscode flow editor --- frontend/src/lib/components/Dev.svelte | 40 +++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/components/Dev.svelte b/frontend/src/lib/components/Dev.svelte index 5e50ed6b10..d00b834112 100644 --- a/frontend/src/lib/components/Dev.svelte +++ b/frontend/src/lib/components/Dev.svelte @@ -30,6 +30,8 @@ import type { FlowState } from './flows/flowState' import { initHistory } from '$lib/history' import type { FlowEditorContext } from './flows/types' + import { dfs } from './flows/dfs' + import { loadSchemaFromModule } from './flows/flowInfers' $: token = $page.url.searchParams.get('wm_token') ?? undefined $: workspace = $page.url.searchParams.get('workspace') ?? undefined @@ -252,6 +254,7 @@ try { if (!deepEqual(lastEdit.flow, $flowStore)) { $flowStore = lastEdit.flow + inferModuleArgs($selectedIdStore) } } catch (e) { console.error('issue setting new flowstore', e) @@ -301,7 +304,40 @@ } } + $: $selectedIdStore && inferModuleArgs($selectedIdStore) + let flowPreviewButtons: FlowPreviewButtons + let reload = 0 + + async function inferModuleArgs(selectedIdStore: string) { + if (selectedIdStore == '') { + return + } + dfs($flowStore.value.modules, async (mod) => { + if (mod.id == selectedIdStore) { + if ( + mod.value.type == 'rawscript' || + mod.value.type === 'script' || + mod.value.type === 'flow' + ) { + const { input_transforms, schema } = await loadSchemaFromModule(mod) + if (mod.value.type == 'rawscript' && mod.value.lock != undefined) { + mod.value.lock = undefined + } + + mod.value.input_transforms = input_transforms + if (!deepEqual(schema, $flowStateStore[mod.id]?.schema)) { + if (!$flowStateStore[mod.id]) { + $flowStateStore[mod.id] = { schema } + } else { + $flowStateStore[mod.id].schema = schema + } + reload++ + } + } + } + }) + } @@ -417,7 +453,9 @@ {/if} - + {#key reload} + + {/key}