From 45172c848769fbd00fd520af5c35e21d95812ccf Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 31 Oct 2023 13:15:11 +0100 Subject: [PATCH] fix: add on success events to triggers list --- .../lib/components/apps/editor/appUtils.ts | 6 ++++ .../script/BackgroundScriptSettings.svelte | 1 + .../shared/BackgroundScriptTriggerBy.svelte | 3 ++ .../shared/ComponentScriptTriggerBy.svelte | 2 ++ .../script/shared/ScriptTriggers.svelte | 30 +++++++++++++++---- 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/frontend/src/lib/components/apps/editor/appUtils.ts b/frontend/src/lib/components/apps/editor/appUtils.ts index 6722c662d6..5f0bdd6f76 100644 --- a/frontend/src/lib/components/apps/editor/appUtils.ts +++ b/frontend/src/lib/components/apps/editor/appUtils.ts @@ -424,6 +424,12 @@ export function getAllSubgridsAndComponentIds( return [subgrids, components] } +export function getAllGridItems( + app: App + ): GridItem[] { + return app.grid.concat(Object.values(app.subgrids ?? {}).flat()) +} + export function deleteGridItem( app: App, component: AppComponent, diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte index 8b8e495a9e..9213ba69d2 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/script/BackgroundScriptSettings.svelte @@ -38,6 +38,7 @@ on:updateAutoRefresh={updateAutoRefresh} > diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/script/shared/BackgroundScriptTriggerBy.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/script/shared/BackgroundScriptTriggerBy.svelte index 778c3c8c7b..69097fa752 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/script/shared/BackgroundScriptTriggerBy.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/script/shared/BackgroundScriptTriggerBy.svelte @@ -6,6 +6,7 @@ export let script: HiddenRunnable export let recomputeOnInputChanged: boolean | undefined = undefined + export let id: string $: isFrontend = script.type == 'runnableByName' && script.inlineScript?.language === 'frontend' $: triggerEvents = script.autoRefresh ? ['start', 'refresh'] : [] @@ -13,6 +14,7 @@ {#if script.type == 'runnableByName' && script.inlineScript} {:else if script.type === 'runnableByName'} {:else} ('AppViewerContext') + + let onSuccessEvents: string[] = [] + + $: computeOnSuccessEvents($app, id) + + function computeOnSuccessEvents(app: App, _id: string) { + const nr: string[] = [] + getAllGridItems(app).forEach((x) => { + if (`recomputeIds` in x.data) { + if (x.data.recomputeIds?.includes(id)) { + nr.push(`success of ${x.id}`) + } + } + }) + onSuccessEvents = nr + } $: changeEvents = isFrontend ? inlineScript?.refreshOn ? inlineScript.refreshOn.map((x) => `${x.id}.${x.key}`) @@ -22,7 +41,9 @@ : dependencies $: hasNoTriggers = - triggerEvents.length === 0 && (changeEvents.length === 0 || !shoudlDisplayChangeEvents) + triggerEvents.length === 0 && + (changeEvents.length === 0 || !shoudlDisplayChangeEvents) && + onSuccessEvents.length == 0 const badgeClass = 'inline-flex items-center rounded-md px-2 py-0.5 text-xs font-medium border' const colors = { @@ -30,7 +51,6 @@ indigo: 'text-indigo-800 border-indigo-600 bg-indigo-100', blue: 'text-blue-800 border-blue-600 bg-blue-100' } - const { connectingInput, app, stateId } = getContext('AppViewerContext') function applyConnection(connection: InputConnection) { const refresh = { @@ -61,10 +81,10 @@ This script has no triggers. It will never run. {:else} - {#if triggerEvents.length > 0} + {#if triggerEvents.length > 0 || onSuccessEvents.length > 0}
Events
- {#each triggerEvents as triggerEvent} + {#each triggerEvents.concat(onSuccessEvents) as triggerEvent} {triggerEvent} {/each}