From 668ca4d9b10cbfed7695537cb24b583ee200c68e Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 26 Jul 2022 12:45:00 +0200 Subject: [PATCH] feat: prop picker functional for pull flows --- .../src/lib/components/FlowBuilder.svelte | 2 +- frontend/src/lib/components/ModuleStep.svelte | 13 ++++++-- frontend/src/lib/components/flows/utils.ts | 31 ++++++++++++++----- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index f414a2582c..fe4e201a24 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -54,7 +54,7 @@ } flowStore.subscribe((flow: Flow) => { - //setQueryWithoutLoad($page.url, 'state', btoa(JSON.stringify(flowToMode(flow, mode)))) + setQueryWithoutLoad($page.url, 'state', btoa(JSON.stringify(flowToMode(flow, mode)))) }) onMount(() => { diff --git a/frontend/src/lib/components/ModuleStep.svelte b/frontend/src/lib/components/ModuleStep.svelte index db6edd9df7..6e33b7c45d 100644 --- a/frontend/src/lib/components/ModuleStep.svelte +++ b/frontend/src/lib/components/ModuleStep.svelte @@ -37,6 +37,16 @@ $: extraLib = buildExtraLib( i === 0 ? schemaToTsType($flowStore?.schema) : objectToTsType($previewResults[i]) ) + + function toResults(jobs: any) { + return jobs.map((x) => { + if (x.result) { + return x.result + } else if (x.length) { + return toResults(x) + } + }) + }
  • @@ -125,8 +135,7 @@ {mode} schemas={$schemasStore} on:change={(e) => { - const results = e.detail.map((x) => x.result) - previewResults.set(results) + previewResults.set(toResults(e.detail)) }} /> diff --git a/frontend/src/lib/components/flows/utils.ts b/frontend/src/lib/components/flows/utils.ts index 419aafe7b7..e695e04da6 100644 --- a/frontend/src/lib/components/flows/utils.ts +++ b/frontend/src/lib/components/flows/utils.ts @@ -174,21 +174,38 @@ export function getPickableProperties( ) { const flowInputAsObject = schemaToObject(schema, args) const flowInput = - mode === 'pull' - ? Object.assign( + mode === 'pull' && i >= 1 + ? Object.assign(Object.assign( { _value: 'The current value of the iteration.', _index: 'The current index of the iteration.' }, - flowInputAsObject - ) + flowInputAsObject), previewResults[0]) + : flowInputAsObject - console.log(previewResults) + + let previous_result + if (i === 0 || (i == 1 && mode == 'pull')) { + previous_result = flowInput + } else if (mode == 'pull') { + previous_result = previewResults[1] ? previewResults[1][i - 2] : undefined + } else { + previous_result = previewResults[i - 1] + } + + let step + if (i >= 1 && mode == 'push') { + step = Object.values(previewResults).slice(0, i) + } else if (i >= 2 && mode == 'pull') { + step = Object.values(previewResults[1] ?? {}).slice(0, i - 1) + } else { + step = [] + } const pickableProperties = { flow_input: flowInput, - previous_result: i === 0 ? flowInput : previewResults[i - 1], - step: i >= 1 ? Object.values(previewResults).slice(0, i) : [] + previous_result, + step } return pickableProperties