diff --git a/README.md b/README.md index 057c91e2aa..ea3642aec3 100644 --- a/README.md +++ b/README.md @@ -70,10 +70,10 @@ https://user-images.githubusercontent.com/275584/218350457-bc2fdc3b-e667-4da5-a2 3. Make it flow! You can chain your scripts or scripts made by the community shared on [WindmillHub](https://hub.windmill.dev). - ![Step 4](./imgs/windmill-flow.png) + ![Step 3](./imgs/windmill-flow.png) 4. Build complex UI on top of your scripts and flows. - ![Step 5](./imgs/windmill-builder.png) + ![Step 4](./imgs/windmill-builder.png) Scripts and flows can also be triggered by a cron schedule '_/5 _ \* \* \*' or through webhooks. @@ -123,7 +123,7 @@ instance from local commands. See ### Running scripts locally You can run your script locally easily, you simply need to pass the right -environment variables for the `wmill` client library to fetch resource and +environment variables for the `wmill` client library to fetch resources and variables from your instance if necessary. See more: diff --git a/frontend/src/lib/components/apps/components/buttons/AppButton.svelte b/frontend/src/lib/components/apps/components/buttons/AppButton.svelte index 220bab3abb..007432bd82 100644 --- a/frontend/src/lib/components/apps/components/buttons/AppButton.svelte +++ b/frontend/src/lib/components/apps/components/buttons/AppButton.svelte @@ -67,8 +67,6 @@ } } - $: resolvedConfig?.triggerOnAppLoad && runnableComponent?.runComponent() - let errors: Record = {} $: errorsMessage = Object.values(errors) .filter((x) => x != '') @@ -119,6 +117,7 @@ {render} {outputs} {extraKey} + refreshOnStart={resolvedConfig.triggerOnAppLoad} > {#if errorsMessage} diff --git a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte index a2ad55a79e..cd39fee424 100644 --- a/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte +++ b/frontend/src/lib/components/apps/components/helpers/RunnableComponent.svelte @@ -34,6 +34,7 @@ export let recomputeOnInputChanged: boolean = false export let loading = false export let recomputableByRefreshButton: boolean = true + export let refreshOnStart: boolean = false const { worldStore, @@ -54,13 +55,13 @@ $runnableComponents[id] = { autoRefresh: autoRefresh && recomputableByRefreshButton, + refreshOnStart, cb: async (inlineScript?: InlineScript) => { await executeComponent(true, inlineScript) } } if (!$worldStore.initializedComponents.includes(id)) { - console.log('adding', id) $worldStore.initializedComponents = [...$worldStore.initializedComponents, id] } diff --git a/frontend/src/lib/components/apps/components/helpers/RunnableWrapper.svelte b/frontend/src/lib/components/apps/components/helpers/RunnableWrapper.svelte index c2392111e8..311bdf279a 100644 --- a/frontend/src/lib/components/apps/components/helpers/RunnableWrapper.svelte +++ b/frontend/src/lib/components/apps/components/helpers/RunnableWrapper.svelte @@ -40,6 +40,7 @@ export let recomputeIds: string[] = [] export let outputs: { result: Output; loading: Output } export let extraKey: string | undefined = undefined + export let refreshOnStart: boolean = false const { staticExporter, noBackend, componentControl, runnableComponents } = getContext('AppViewerContext') @@ -101,6 +102,7 @@ {:else if componentInput.type === 'runnable' && isRunnableDefined(componentInput)} { - if (!$runnableComponents?.[id]?.autoRefresh) { + if ( + !$runnableComponents?.[id]?.autoRefresh && + (!isFirstLoad || !$runnableComponents?.[id]?.refreshOnStart) + ) { return } return $runnableComponents?.[id]?.cb?.() diff --git a/frontend/src/lib/components/apps/types.ts b/frontend/src/lib/components/apps/types.ts index 5b4f5555d7..fe80803b69 100644 --- a/frontend/src/lib/components/apps/types.ts +++ b/frontend/src/lib/components/apps/types.ts @@ -138,7 +138,14 @@ export type AppViewerContext = { connectingInput: Writable breakpoint: Writable runnableComponents: Writable< - Record Promise }> + Record< + string, + { + autoRefresh: boolean + refreshOnStart?: boolean + cb: (inlineScript?: InlineScript) => Promise + } + > > staticExporter: Writable any>> appPath: string diff --git a/frontend/src/routes/(root)/(logged)/+page.svelte b/frontend/src/routes/(root)/(logged)/+page.svelte index 7eafd4536b..5a1a8a3f4f 100644 --- a/frontend/src/routes/(root)/(logged)/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/+page.svelte @@ -23,7 +23,9 @@ type Tab = 'hubscripts' | 'hubflows' | 'hubapps' | 'workspace' - let tab: Tab = (window.location.hash?.replace('#', '') as Tab | undefined) ?? 'workspace' + let tab: Tab = window.location.hash?.includes('#') + ? (window.location.hash?.replace('#', '') as Tab) + : 'workspace' let filter: string = '' let flowViewer: Drawer