From 0b0e5640d8fa9682ad0a4349c863b743321be1f4 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 31 Jan 2025 19:25:50 +0100 Subject: [PATCH] fix: improve history and saved inputs rever mechanism --- backend/windmill-api/openapi.yaml | 2 +- .../lib/components/FlowPreviewContent.svelte | 7 ++++++- .../src/lib/components/HistoricInputs.svelte | 18 ++---------------- .../lib/components/SavedInputsPicker.svelte | 14 +------------- .../src/lib/components/SavedInputsV2.svelte | 5 +++++ .../components/SchemaFormWithArgPicker.svelte | 11 +++++++++++ .../components/flows/content/FlowInput.svelte | 7 ++++++- .../schema/InputSelectedBadge.svelte | 2 +- .../(logged)/flows/get/[...path]/+page.svelte | 10 ++++++++-- .../scripts/get/[...hash]/+page.svelte | 10 +++++++++- 10 files changed, 50 insertions(+), 36 deletions(-) diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 5fee4cd50271a..0f3765793e36c 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -4444,7 +4444,7 @@ paths: /w/{workspace}/scripts/delete/p/{path}: post: - summary: delete all scripts at a given path (require admin) + summary: delete script at a given path (require admin) operationId: deleteScriptByPath tags: - script diff --git a/frontend/src/lib/components/FlowPreviewContent.svelte b/frontend/src/lib/components/FlowPreviewContent.svelte index c9ab9c04f09a1..50732cc8e2bc7 100644 --- a/frontend/src/lib/components/FlowPreviewContent.svelte +++ b/frontend/src/lib/components/FlowPreviewContent.svelte @@ -161,6 +161,7 @@ $: selectedJobStep !== undefined && onSelectedJobStepChange() let renderCount: number = 0 + let schemaFormWithArgPicker: SchemaFormWithArgPicker | undefined = undefined @@ -324,6 +325,7 @@
- + schemaFormWithArgPicker?.resetSelected()} + {inputSelected} + />
{ - return Array.from( - document.querySelectorAll('[data-schema-picker], [data-schema-picker] *') - ) as HTMLElement[] - } - async function loadArgsFromHistory( id: string | undefined, input: boolean | undefined, @@ -126,6 +119,7 @@ } export function resetSelected(dispatchEvent?: boolean) { + console.log('resetSelected') selected = undefined if (dispatchEvent) { dispatch('select', undefined) @@ -159,15 +153,7 @@ /> {/if} -
{ - if (selected) { - resetSelected(true) - } - }} -> +
{#if loading && (jobs == undefined || jobs?.length == 0)} diff --git a/frontend/src/lib/components/SavedInputsPicker.svelte b/frontend/src/lib/components/SavedInputsPicker.svelte index 2fbb7ca143139..5eaf67e3aa9c0 100644 --- a/frontend/src/lib/components/SavedInputsPicker.svelte +++ b/frontend/src/lib/components/SavedInputsPicker.svelte @@ -7,7 +7,6 @@ import { Edit, Trash2, Save, Eye } from 'lucide-svelte' import Toggle from './Toggle.svelte' import { Cell } from './table/index' - import { clickOutside } from '$lib/utils' import SaveInputsButton from '$lib/components/SaveInputsButton.svelte' import Popover from '$lib/components/Popover.svelte' import InfiniteList from './InfiniteList.svelte' @@ -133,11 +132,6 @@ resetSelected(true) }) - async function getPropPickerElements(): Promise { - const elements = document.querySelectorAll('[data-schema-picker], [data-schema-picker] *') - return elements ? (Array.from(elements) as HTMLElement[]) : [] - } - function handleKeydown(event: KeyboardEvent) { if (event.key === 'Escape' && isEditing) { setEditing(null) @@ -191,13 +185,7 @@ -
{ - resetSelected(true) - }} -> +
{#if !noButton}
diff --git a/frontend/src/lib/components/SavedInputsV2.svelte b/frontend/src/lib/components/SavedInputsV2.svelte index 536d35a04348a..627959573da57 100644 --- a/frontend/src/lib/components/SavedInputsV2.svelte +++ b/frontend/src/lib/components/SavedInputsV2.svelte @@ -18,6 +18,11 @@ export let isValid: boolean export let args: object + export function resetSelected() { + historicInputs?.resetSelected(true) + savedInputsPicker?.resetSelected(true) + } + let savedArgs: any = undefined let runnableType: RunnableType | undefined = undefined let savedInputsPicker: SavedInputsPicker | undefined = undefined diff --git a/frontend/src/lib/components/SchemaFormWithArgPicker.svelte b/frontend/src/lib/components/SchemaFormWithArgPicker.svelte index 176221497ca9a..320591e557615 100644 --- a/frontend/src/lib/components/SchemaFormWithArgPicker.svelte +++ b/frontend/src/lib/components/SchemaFormWithArgPicker.svelte @@ -19,6 +19,13 @@ const dispatch = createEventDispatcher() + export function resetSelected() { + console.log('resetSelected') + historicInputs?.resetSelected(true) + savedInputsPicker?.resetSelected(true) + captureTable?.resetSelected(true) + } + const getDropdownItems = () => { return [ { @@ -71,7 +78,9 @@ let dropdownItems: any let rightPanelOpen = false + let savedInputsPicker: SavedInputsPicker | undefined = undefined let loading = false + let captureTable: CaptureTable | undefined = undefined let historicInputs: HistoricInputs | undefined = undefined $: selectedTab, (dropdownItems = getDropdownItems()) @@ -119,6 +128,7 @@ {runnableId} {runnableType} {previewArgs} + bind:this={savedInputsPicker} on:select={(e) => { dispatch('select', { payload: e.detail, type: 'saved' }) }} @@ -138,6 +148,7 @@ on:select={(e) => { dispatch('select', { payload: e.detail, type: 'captures' }) }} + bind:this={captureTable} isFlow={true} headless={true} addButton={false} diff --git a/frontend/src/lib/components/flows/content/FlowInput.svelte b/frontend/src/lib/components/flows/content/FlowInput.svelte index 8c76412bbd3c6..ddd10204d76d8 100644 --- a/frontend/src/lib/components/flows/content/FlowInput.svelte +++ b/frontend/src/lib/components/flows/content/FlowInput.svelte @@ -308,6 +308,7 @@ savedPreviewArgs = undefined } } + let historicInputs: HistoricInputs | undefined = undefined @@ -348,6 +349,7 @@ {diff} disableDnd={!!previewSchema} on:rejectChange={(e) => { + console.log('rejectChange') rejectChange(e.detail).then(() => { updatePreviewSchema(selectedSchema) }) @@ -422,7 +424,9 @@ size="xs" startIcon={{ icon: X }} shortCut={{ key: 'esc', withoutModifier: true }} - nonCaptureEvent + on:click={() => { + historicInputs?.resetSelected(true) + }} />
{:else} @@ -460,6 +464,7 @@ }} > { diff --git a/frontend/src/lib/components/schema/InputSelectedBadge.svelte b/frontend/src/lib/components/schema/InputSelectedBadge.svelte index 493235294cc7e..fce85ccf5deae 100644 --- a/frontend/src/lib/components/schema/InputSelectedBadge.svelte +++ b/frontend/src/lib/components/schema/InputSelectedBadge.svelte @@ -24,7 +24,7 @@ size="xs2" startIcon={{ icon: X }} shortCut={{ key: 'esc', withoutModifier: true }} - nonCaptureEvent + on:click />
diff --git a/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte index aa26013684ae5..6425c3d5a3cdd 100644 --- a/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte @@ -344,7 +344,7 @@ let stepDetail: FlowModule | string | undefined = undefined let token = 'TOKEN_TO_CREATE' let rightPaneSelected = 'saved_inputs' - + let savedInputsV2: SavedInputsV2 | undefined = undefined let flowHistory: FlowHistory | undefined = undefined @@ -449,7 +449,12 @@
- + { + savedInputsV2?.resetSelected() + }} + {inputSelected} + />
- + { + savedInputsV2?.resetSelected() + }} + {inputSelected} + /> {#if args}