diff --git a/frontend/src/lib/components/FlowPreviewContent.svelte b/frontend/src/lib/components/FlowPreviewContent.svelte index b383878758..1d2a90ae35 100644 --- a/frontend/src/lib/components/FlowPreviewContent.svelte +++ b/frontend/src/lib/components/FlowPreviewContent.svelte @@ -9,7 +9,7 @@ import { mapJobResultsToFlowState } from './flows/flowStateUtils' import { flowStore } from './flows/flowStore' import type { FlowEditorContext } from './flows/types' - import { runFlowPreview } from './flows/utils' + import { runFlowPreview, selectedIdToIndexes } from './flows/utils' import SchemaForm from './SchemaForm.svelte' import FlowStatusViewer from '../components/FlowStatusViewer.svelte' @@ -25,7 +25,7 @@ if (previewMode === 'whole') { return $flowStore } else { - const [parentIndex, childIndex] = $selectedId.split('-') + const [parentIndex, childIndex] = selectedIdToIndexes($selectedId) const modules = $flowStore.value.modules.slice(0, Number(parentIndex) + 1) const flow = JSON.parse(JSON.stringify($flowStore)) @@ -132,7 +132,7 @@ {jobId} on:jobsLoaded={(e) => { intervalState = 'done' - const [parentIndex] = $selectedId.split('-') + const parentIndex = selectedIdToIndexes($selectedId)[0] const upToIndex = previewMode === 'upTo' ? Number(parentIndex) + 1 : $flowStateStore.modules.length mapJobResultsToFlowState(e.detail, upToIndex) diff --git a/frontend/src/lib/components/flows/content/FlowLoop.svelte b/frontend/src/lib/components/flows/content/FlowLoop.svelte index 8c7d1becbc..9efa9f7328 100644 --- a/frontend/src/lib/components/flows/content/FlowLoop.svelte +++ b/frontend/src/lib/components/flows/content/FlowLoop.svelte @@ -9,12 +9,16 @@ import { getStepPropPicker } from '../flowStateUtils' import { flowStateStore } from '../flowState' import PropPickerWrapper from '../propPicker/PropPickerWrapper.svelte' + import { selectedIdToIndexes, selectedIdToModule } from '../utils' + import { Button } from '$lib/components/common' const { selectedId, previewArgs } = getContext('FlowEditorContext') + $: mod = selectedIdToModule($selectedId, $flowStore) + let editor: SimpleEditor | undefined = undefined - $: index = $selectedId.split('-')[1] + $: index = selectedIdToIndexes($selectedId)[1] $: pickableProperties = getStepPropPicker( [Number(index)], @@ -26,11 +30,11 @@
- +
- {#if $flowStore.value.modules[index].value.type === 'forloopflow'} + {#if mod.value.type === 'forloopflow'} Iterator expression @@ -39,26 +43,35 @@ -
- { - editor?.insertAtCursor(detail) + {#if mod.value.iterator.type == 'javascript'} +
+ { + editor?.insertAtCursor(detail) + }} + > + + +
+ {:else} +
+ /> + {/if} + Skip failures ('FlowEditorContext') @@ -47,7 +48,7 @@ export let flowModuleState: FlowModuleState export let failureModule: boolean - $: [parentIndex, childIndex] = $selectedId.split('-').map(Number) + $: [parentIndex, childIndex] = selectedIdToIndexes($selectedId) let editor: Editor let modulePreview: ModulePreview @@ -57,12 +58,7 @@ $: shouldPick = isEmptyFlowModule(flowModule) $: stepPropPicker = failureModule ? { pickableProperties: { previous_result: { error: 'the error message' } }, extraLib: '' } - : getStepPropPicker( - $selectedId.split('-').map(Number), - $flowStore.schema, - $flowStateStore, - $previewArgs - ) + : getStepPropPicker([parentIndex, childIndex], $flowStore.schema, $flowStateStore, $previewArgs) function onKeyDown(event: KeyboardEvent) { if ((event.ctrlKey || event.metaKey) && event.key == 'Enter') { @@ -112,6 +108,7 @@ (selected = 'retries')} on:toggleStopAfterIf={() => (selected = 'early-stop')} on:fork={() => apply(fork, flowModule)} on:createScriptFromInlineScript={() => { @@ -188,6 +185,7 @@ Inputs Test + Retries {#if !$selectedId.includes('failure')} Early Stop Suspend @@ -216,6 +214,12 @@ /> + +
+ +
+
+
diff --git a/frontend/src/lib/components/flows/content/FlowModuleEarlyStop.svelte b/frontend/src/lib/components/flows/content/FlowModuleEarlyStop.svelte index 9613af1ae4..b81a658368 100644 --- a/frontend/src/lib/components/flows/content/FlowModuleEarlyStop.svelte +++ b/frontend/src/lib/components/flows/content/FlowModuleEarlyStop.svelte @@ -10,6 +10,7 @@ import { flowStateStore } from '../flowState' import type { FlowEditorContext } from '../types' import { getContext } from 'svelte' + import { selectedIdToIndexes } from '../utils' const { selectedId, previewArgs } = getContext('FlowEditorContext') @@ -21,7 +22,7 @@ let pickableProperties: Object = {} $: { - let indices = $selectedId.split('-').map(Number) + let indices = selectedIdToIndexes($selectedId) if (indices[1]) { indices[1] += 1 } else { diff --git a/frontend/src/lib/components/flows/content/FlowModuleHeader.svelte b/frontend/src/lib/components/flows/content/FlowModuleHeader.svelte index 1a196757ac..e8950e9baf 100644 --- a/frontend/src/lib/components/flows/content/FlowModuleHeader.svelte +++ b/frontend/src/lib/components/flows/content/FlowModuleHeader.svelte @@ -35,7 +35,19 @@ on:click={() => dispatch('toggleStopAfterIf')} > - {module.stop_after_if ? `Early stop` : 'Early stop'} + {module.stop_after_if ? `Early stop o` : 'Early stop x'} + + dispatch('toggleRetry')} + > + + {module.retry ? `Retry o` : 'Retry x'} {#if module.value.type === 'script' && !shouldPick}