From 9bedf0dcd9260859b04de2f0cd1b2fd26af0d466 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 29 Jun 2023 15:03:48 +0200 Subject: [PATCH] fix reactive issue on expr triggered manally --- .../apps/components/helpers/InputValue.svelte | 5 +++++ .../helpers/RunnableComponent.svelte | 21 ++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/frontend/src/lib/components/apps/components/helpers/InputValue.svelte b/frontend/src/lib/components/apps/components/helpers/InputValue.svelte index 2bb6dfd265..765184d59a 100644 --- a/frontend/src/lib/components/apps/components/helpers/InputValue.svelte +++ b/frontend/src/lib/components/apps/components/helpers/InputValue.svelte @@ -49,6 +49,11 @@ let firstDebounce = true const debounce_ms = 50 + export async function computeExpr() { + value = await evalExpr(lastInput) + return value + } + function debounce(cb: () => Promise) { if (firstDebounce) { firstDebounce = false diff --git a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte index 677033d34d..80b3e4bda8 100644 --- a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte +++ b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte @@ -216,19 +216,21 @@ } try { - let njob = await resultJobLoader?.abstractRun(() => { + let njob = await resultJobLoader?.abstractRun(async () => { const nonStaticRunnableInputs = {} const staticRunnableInputs = {} - Object.keys(fields ?? {}).forEach((k) => { + for (const k of Object.keys(fields ?? {})) { let field = fields[k] if (field?.type == 'static' && fields[k]) { staticRunnableInputs[k] = field.value } else if (field?.type == 'user') { nonStaticRunnableInputs[k] = args?.[k] + } else if (field?.type == 'eval' && inputValues[k]) { + nonStaticRunnableInputs[k] = await inputValues[k]?.computeExpr() } else { nonStaticRunnableInputs[k] = runnableInputValues[k] } - }) + } const requestBody = { args: nonStaticRunnableInputs, @@ -388,19 +390,24 @@ onDestroy(() => { $initialized.initializedComponents = $initialized.initializedComponents.filter((c) => c !== id) $errorByComponent = clearErrorByComponentId(id, $errorByComponent) - $runnableComponents[id] = { - ...$runnableComponents[id], - cb: $runnableComponents[id].cb.filter((cb) => cb !== cancellableRun) + if ($runnableComponents[id]) { + $runnableComponents[id] = { + ...$runnableComponents[id], + cb: $runnableComponents[id].cb.filter((cb) => cb !== cancellableRun) + } + $runnableComponents = $runnableComponents } - $runnableComponents = $runnableComponents }) let lastJobId: string | undefined = undefined + + let inputValues: Record = {} {#each Object.entries(fields ?? {}) as [key, v] (key)} {#if v.type != 'static' && v.type != 'user'}