diff --git a/frontend/src/lib/components/FlowPreviewContent.svelte b/frontend/src/lib/components/FlowPreviewContent.svelte index 9cd44286bb..3435a69dde 100644 --- a/frontend/src/lib/components/FlowPreviewContent.svelte +++ b/frontend/src/lib/components/FlowPreviewContent.svelte @@ -17,7 +17,7 @@ let jobId: string | undefined = undefined let isValid: boolean = false - let intervalState: 'idle' | 'canceled' | 'done' | 'running' = 'idle' + let isRunning: boolean = false const { selectedId, previewArgs } = getContext('FlowEditorContext') @@ -49,15 +49,27 @@ export async function runPreview(args: Record) { const newFlow = extractFlow(previewMode) jobId = await runFlowPreview(args, newFlow) - - intervalState = 'running' + isRunning = true } - onDestroy(() => { - intervalState = 'done' - }) + function onKeyDown(event: KeyboardEvent) { + switch (event.key) { + case 'Enter': + if (event.ctrlKey) { + event.preventDefault() + runPreview($previewArgs) + } + break + + case 'Escape': + dispatch('close') + break + } + } + +
@@ -77,8 +89,6 @@ color="dark" btnClasses="!p-0 !w-8 !h-8" on:click={() => { - jobId = undefined - intervalState = 'idle' dispatch('close') }} > @@ -93,12 +103,12 @@ bind:args={$previewArgs} />
- {#if intervalState === 'running'} + {#if isRunning} {/if} @@ -132,7 +142,7 @@ { - intervalState = 'done' + isRunning = false const parentIndex = selectedIdToIndexes($selectedId)[0] const upToIndex = previewMode === 'upTo' ? Number(parentIndex) + 1 : $flowStateStore.modules.length diff --git a/frontend/src/lib/components/FlowStatusViewer.svelte b/frontend/src/lib/components/FlowStatusViewer.svelte index a18886e3a3..383c12bbb1 100644 --- a/frontend/src/lib/components/FlowStatusViewer.svelte +++ b/frontend/src/lib/components/FlowStatusViewer.svelte @@ -23,7 +23,7 @@ let forloop_selected = '' let timeout: NodeJS.Timeout - $: innerModules = jobResult.job?.flow_status?.modules ?? [] + $: innerModules = jobResult?.job?.flow_status?.modules ?? [] async function loadJobInProgress() { const job = await JobService.getJob({ @@ -39,10 +39,7 @@ } } - $: jobResult && - jobResult.job?.type === 'CompletedJob' && - jobResult.job.flow_status?.modules.length == jobResult.innerJobs?.length && - dispatch('jobsLoaded', jobResult) + $: jobResult && jobResult.job?.type === 'CompletedJob' && dispatch('jobsLoaded', jobResult) function updateJobId() { if (jobId !== jobResult.job?.id) { diff --git a/frontend/src/lib/components/flows/content/FlowLoop.svelte b/frontend/src/lib/components/flows/content/FlowLoop.svelte index 0b5142a7c7..f8972c4c7c 100644 --- a/frontend/src/lib/components/flows/content/FlowLoop.svelte +++ b/frontend/src/lib/components/flows/content/FlowLoop.svelte @@ -23,8 +23,12 @@ export let index: number let editor: SimpleEditor | undefined = undefined + let monacos: { [id: string]: SimpleEditor } = {} + let selected: string = 'retries' + let inputTransformName = '' + $: mod = $flowStore.value.modules[index] $: pickableProperties = getStepPropPicker( @@ -86,6 +90,62 @@ right: 'Skip failures' }} /> + Pass specific flow context as loop flow input +
+ + {#each Object.keys(mod.input_transforms) as key} +
+ {key} + + +
+
+ {#if mod.input_transforms[key].type == 'javascript'} + { + monacos[key]?.insertAtCursor(detail) + }} + > + + + {:else} +
+ {/each} {/if}