diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index cd09f9c4ee..0d59ba7b98 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -319,7 +319,11 @@ loadingDraft = false } + let loadingJobs: 'wait' | 'loading' | 'done' = $state('wait') onMount(() => { + setTimeout(() => { + loadingJobs = 'loading' + }, 2000) setSavedraftCb?.(() => saveDraft()) }) @@ -987,6 +991,7 @@ }} bind:this={flowPreviewButtons} {loading} + bind:loadingJobs /> {:else} Loading... diff --git a/frontend/src/lib/components/FlowPreviewContent.svelte b/frontend/src/lib/components/FlowPreviewContent.svelte index ff7bc3591d..705eb84fc6 100644 --- a/frontend/src/lib/components/FlowPreviewContent.svelte +++ b/frontend/src/lib/components/FlowPreviewContent.svelte @@ -41,6 +41,7 @@ export let localModuleStates: Writable> = writable({}) export let localDurationStatuses: Writable> = writable({}) + export let onJobsLoaded: (() => void) | undefined = undefined let restartBranchNames: [number, string][] = [] @@ -552,6 +553,7 @@ on:jobsLoaded={() => { if (initial) { loadIndividualStepsStates() + onJobsLoaded?.() } }} bind:selectedJobStep diff --git a/frontend/src/lib/components/ModulePreviewResultViewer.svelte b/frontend/src/lib/components/ModulePreviewResultViewer.svelte index ec203979c9..35b4df1ebb 100644 --- a/frontend/src/lib/components/ModulePreviewResultViewer.svelte +++ b/frontend/src/lib/components/ModulePreviewResultViewer.svelte @@ -24,6 +24,7 @@ disableMock?: boolean disableHistory?: boolean onUpdateMock?: (mock: { enabled: boolean; return_value?: unknown }) => void + loadingHistory?: boolean } let { @@ -38,7 +39,8 @@ testIsLoading = false, disableMock = false, disableHistory = false, - onUpdateMock + onUpdateMock, + loadingHistory = false }: Props = $props() const { testSteps } = getContext('FlowEditorContext') @@ -82,7 +84,7 @@ mock={mod.mock} bind:forceJson bind:selectedJob - isLoading={(testIsLoading && !scriptProgress) || fetchingLastJob} + isLoading={(testIsLoading && !scriptProgress) || fetchingLastJob || loadingHistory} bind:preview path={`path` in mod.value ? mod.value.path : ''} {loopStatus} @@ -112,7 +114,9 @@ duration={selectedJob?.['duration_ms']} mem={selectedJob?.['mem_peak']} content={selectedJob?.logs} - isLoading={(testIsLoading && selectedJob?.['running'] == false) || fetchingLastJob} + isLoading={(testIsLoading && selectedJob?.['running'] == false) || + fetchingLastJob || + loadingHistory} tag={selectedJob?.tag} /> {/if} diff --git a/frontend/src/lib/components/flows/FlowEditor.svelte b/frontend/src/lib/components/flows/FlowEditor.svelte index d9bce7c83d..b7f5a9fb29 100644 --- a/frontend/src/lib/components/flows/FlowEditor.svelte +++ b/frontend/src/lib/components/flows/FlowEditor.svelte @@ -36,6 +36,7 @@ onEditInput?: ((moduleId: string, key: string) => void) | undefined forceTestTab?: Record highlightArg?: Record + loadingJobs?: 'wait' | 'loading' | 'done' } let { @@ -52,7 +53,8 @@ onTestUpTo = undefined, onEditInput = undefined, forceTestTab, - highlightArg + highlightArg, + loadingJobs }: Props = $props() let flowModuleSchemaMap: FlowModuleSchemaMap | undefined = $state() @@ -125,6 +127,7 @@ {onDeployTrigger} {forceTestTab} {highlightArg} + {loadingJobs} /> {/if} diff --git a/frontend/src/lib/components/flows/content/FlowEditorPanel.svelte b/frontend/src/lib/components/flows/content/FlowEditorPanel.svelte index 41b3d15827..9ba99e1a7b 100644 --- a/frontend/src/lib/components/flows/content/FlowEditorPanel.svelte +++ b/frontend/src/lib/components/flows/content/FlowEditorPanel.svelte @@ -27,6 +27,7 @@ onDeployTrigger?: (trigger: Trigger) => void forceTestTab?: Record highlightArg?: Record + loadingJobs?: 'wait' | 'loading' | 'done' } let { @@ -37,7 +38,8 @@ savedFlow = undefined, onDeployTrigger = () => {}, forceTestTab, - highlightArg + highlightArg, + loadingJobs }: Props = $props() const { @@ -144,6 +146,7 @@ savedModule={savedFlow?.value.modules[index]} {forceTestTab} {highlightArg} + {loadingJobs} /> {/each} {/key} diff --git a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte index 984e8d7d73..86d427b275 100644 --- a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte +++ b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte @@ -79,6 +79,7 @@ savedModule?: FlowModule | undefined forceTestTab?: boolean highlightArg?: string + loadingJobs?: 'wait' | 'loading' | 'done' } let { @@ -93,7 +94,8 @@ enableAi, savedModule = undefined, forceTestTab = false, - highlightArg = undefined + highlightArg = undefined, + loadingJobs }: Props = $props() let tag: string | undefined = $state(undefined) @@ -821,20 +823,32 @@ {#if selected === 'test'} {#if $flowStateStore[flowModule.id]?.initial} - - - { - $flowStateStore[flowModule.id]!.initial = false - }} - class="cursor-pointer h-full hover:bg-gray-500/20 dark:hover:bg-gray-500/20 dark:bg-gray-500/80 bg-gray-500/40 absolute top-0 left-0 w-full z-50" - > - Run loaded from history - + + + Loading history... + + + + {:else} + + + { + $flowStateStore[flowModule.id]!.initial = false + }} + class="cursor-pointer h-full hover:bg-gray-500/20 dark:hover:bg-gray-500/20 dark:bg-gray-500/80 bg-gray-500/40 absolute top-0 left-0 w-full z-50" + > + Run loaded from history + + {/if} {/if} {/if} diff --git a/frontend/src/lib/components/flows/content/FlowModuleWrapper.svelte b/frontend/src/lib/components/flows/content/FlowModuleWrapper.svelte index a61d1dbdb9..8984c00b7f 100644 --- a/frontend/src/lib/components/flows/content/FlowModuleWrapper.svelte +++ b/frontend/src/lib/components/flows/content/FlowModuleWrapper.svelte @@ -42,6 +42,7 @@ previousModule?: FlowModule | undefined forceTestTab?: Record highlightArg?: Record + loadingJobs?: 'wait' | 'loading' | 'done' } let { @@ -52,7 +53,8 @@ parentModule = $bindable(), previousModule = undefined, forceTestTab, - highlightArg + highlightArg, + loadingJobs }: Props = $props() function initializePrimaryScheduleForTriggerScript(module: FlowModule) { @@ -202,6 +204,7 @@ {savedModule} forceTestTab={forceTestTab?.[flowModule.id]} highlightArg={highlightArg?.[flowModule.id]} + {loadingJobs} /> {/if} {:else if flowModule.value.type === 'forloopflow' || flowModule.value.type == 'whileloopflow'} diff --git a/frontend/src/lib/components/flows/header/FlowPreviewButtons.svelte b/frontend/src/lib/components/flows/header/FlowPreviewButtons.svelte index c3e80d836f..55e5402dff 100644 --- a/frontend/src/lib/components/flows/header/FlowPreviewButtons.svelte +++ b/frontend/src/lib/components/flows/header/FlowPreviewButtons.svelte @@ -27,6 +27,7 @@ } flowPreviewContent?.test() } + export let loadingJobs: 'wait' | 'loading' | 'done' = 'wait' const dispatch = createEventDispatcher() @@ -111,7 +112,7 @@ {#if !loading} - + { + loadingJobs = 'done' + }} on:close={() => { previewOpen = false }}