From 3830dfe66937eadbb90da831d0f27bfb2be87313 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 17 Nov 2023 21:02:28 +0100 Subject: [PATCH] fix: restore flow local storage --- .../lib/components/InputTransformForm.svelte | 2 + .../src/lib/components/TemplateEditor.svelte | 148 +++++++++--------- .../flows/edit/[...path]/+page.svelte | 9 +- 3 files changed, 83 insertions(+), 76 deletions(-) diff --git a/frontend/src/lib/components/InputTransformForm.svelte b/frontend/src/lib/components/InputTransformForm.svelte index 684bb6d4ed..7b0ae2083e 100644 --- a/frontend/src/lib/components/InputTransformForm.svelte +++ b/frontend/src/lib/components/InputTransformForm.svelte @@ -267,6 +267,8 @@ Connect input → {/if} + {#if isStaticTemplate(inputCat) && propertyType == 'static' && !noDynamicToggle}
{#if arg} diff --git a/frontend/src/lib/components/TemplateEditor.svelte b/frontend/src/lib/components/TemplateEditor.svelte index c90808bce0..e1a2b9b681 100644 --- a/frontend/src/lib/components/TemplateEditor.svelte +++ b/frontend/src/lib/components/TemplateEditor.svelte @@ -486,85 +486,89 @@ jsLoader = setTimeout(async () => { jsLoader = undefined - const worker = await languages.typescript.getJavaScriptWorker() - const client = await worker(extraModel.uri) + try { + const worker = await languages.typescript.getJavaScriptWorker() + const client = await worker(extraModel.uri) - cip = languages.registerCompletionItemProvider('template', { - triggerCharacters: ['.'], + cip = languages.registerCompletionItemProvider('template', { + triggerCharacters: ['.'], - provideCompletionItems: async (model, position) => { - extraModel.setValue('`' + model.getValue() + '`') + provideCompletionItems: async (model, position) => { + extraModel.setValue('`' + model.getValue() + '`') - const offset = model.getOffsetAt(position) + 1 - const info = await client.getCompletionsAtPosition(extraModel.uri.toString(), offset) - if (!info) { - return { suggestions: [] } - } - const wordInfo = model.getWordUntilPosition(position) - const wordRange = new Range( - position.lineNumber, - wordInfo.startColumn, - position.lineNumber, - wordInfo.endColumn - ) + const offset = model.getOffsetAt(position) + 1 + const info = await client.getCompletionsAtPosition(extraModel.uri.toString(), offset) + if (!info) { + return { suggestions: [] } + } + const wordInfo = model.getWordUntilPosition(position) + const wordRange = new Range( + position.lineNumber, + wordInfo.startColumn, + position.lineNumber, + wordInfo.endColumn + ) - const suggestions = info.entries - .filter((x) => x.kind != 'keyword' && x.kind != 'var') - .map((entry) => { - let range = wordRange - if (entry.replacementSpan) { - const p1 = model.getPositionAt(entry.replacementSpan.start) - const p2 = model.getPositionAt( - entry.replacementSpan.start + entry.replacementSpan.length - ) - range = new Range(p1.lineNumber, p1.column, p2.lineNumber, p2.column) + const suggestions = info.entries + .filter((x) => x.kind != 'keyword' && x.kind != 'var') + .map((entry) => { + let range = wordRange + if (entry.replacementSpan) { + const p1 = model.getPositionAt(entry.replacementSpan.start) + const p2 = model.getPositionAt( + entry.replacementSpan.start + entry.replacementSpan.length + ) + range = new Range(p1.lineNumber, p1.column, p2.lineNumber, p2.column) + } + + const tags: languages.CompletionItemTag[] = [] + if (entry.kindModifiers?.indexOf('deprecated') !== -1) { + tags.push(languages.CompletionItemTag.Deprecated) + } + return { + uri: model.uri, + position: position, + offset: offset, + range: range, + label: entry.name, + insertText: entry.name, + sortText: entry.sortText, + kind: convertKind(entry.kind), + tags + } + }) + return { suggestions } + }, + resolveCompletionItem: async (item: languages.CompletionItem, token: any) => { + extraModel.setValue('`' + model.getValue() + '`') + + const myItem = item + const position = myItem.position + const offset = myItem.offset + + const details = await client.getCompletionEntryDetails( + extraModel.uri.toString(), + offset, + myItem.label + ) + if (!details) { + return myItem + } + return { + uri: model.uri, + position: position, + label: details.name, + kind: convertKind(details.kind), + detail: displayPartsToString(details.displayParts), + documentation: { + value: createDocumentationString(details) } - - const tags: languages.CompletionItemTag[] = [] - if (entry.kindModifiers?.indexOf('deprecated') !== -1) { - tags.push(languages.CompletionItemTag.Deprecated) - } - return { - uri: model.uri, - position: position, - offset: offset, - range: range, - label: entry.name, - insertText: entry.name, - sortText: entry.sortText, - kind: convertKind(entry.kind), - tags - } - }) - return { suggestions } - }, - resolveCompletionItem: async (item: languages.CompletionItem, token: any) => { - extraModel.setValue('`' + model.getValue() + '`') - - const myItem = item - const position = myItem.position - const offset = myItem.offset - - const details = await client.getCompletionEntryDetails( - extraModel.uri.toString(), - offset, - myItem.label - ) - if (!details) { - return myItem - } - return { - uri: model.uri, - position: position, - label: details.name, - kind: convertKind(details.kind), - detail: displayPartsToString(details.displayParts), - documentation: { - value: createDocumentationString(details) } } - } - }) + }) + } catch (e) { + console.error('Error setting template js worker', e) + } }, 300) } diff --git a/frontend/src/routes/(root)/(logged)/flows/edit/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/flows/edit/[...path]/+page.svelte index bcac71baaf..7ce48445a7 100644 --- a/frontend/src/routes/(root)/(logged)/flows/edit/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/flows/edit/[...path]/+page.svelte @@ -54,18 +54,19 @@ async function loadFlow(): Promise { loading = true let flow: Flow - if (stateLoadedFromUrl != undefined && stateLoadedFromUrl?.flow?.path == $page.params.path) { + let statePath = stateLoadedFromUrl?.path + if (stateLoadedFromUrl != undefined && statePath == $page.params.path) { savedFlow = await FlowService.getFlowByPathWithDraft({ workspace: $workspaceStore!, - path: stateLoadedFromUrl.flow.path + path: statePath }) const draftOrDeployed = cleanValueProperties(savedFlow?.draft || savedFlow) - const urlScript = cleanValueProperties(stateLoadedFromUrl.flow) + const urlScript = cleanValueProperties(statePath) flow = stateLoadedFromUrl.flow const reloadAction = () => { stateLoadedFromUrl = undefined - goto(`/flows/edit/${flow!.path}`) + goto(`/flows/edit/${statePath}`) loadFlow() } if (orderedJsonStringify(draftOrDeployed) === orderedJsonStringify(urlScript)) {