From f9324a2e89a042b8a83a212d4e0e6ed825e20062 Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Wed, 31 Jul 2024 17:27:38 +0200 Subject: [PATCH] fix(frontend): fix recompute all (#4161) * fix(frontend): wip * fix(frontend): wip * fix(frontend): fix recompute all * fix(frontend): fix recompute all * fix(frontend): clean up * fix(frontend): fix how the onClick callback is called --- .../components/apps/editor/AppEditor.svelte | 8 +- .../components/apps/editor/AppPreview.svelte | 14 +- .../components/apps/editor/GridEditor.svelte | 4 +- .../apps/editor/RecomputeAllButton.svelte | 113 ++++++++++++ .../apps/editor/RecomputeAllComponents.svelte | 164 ++++-------------- .../apps/editor/RecomputeAllWrapper.svelte | 16 +- frontend/src/lib/components/apps/types.ts | 10 ++ 7 files changed, 194 insertions(+), 135 deletions(-) create mode 100644 frontend/src/lib/components/apps/editor/RecomputeAllButton.svelte diff --git a/frontend/src/lib/components/apps/editor/AppEditor.svelte b/frontend/src/lib/components/apps/editor/AppEditor.svelte index 4ff2c31a91..f8af568761 100644 --- a/frontend/src/lib/components/apps/editor/AppEditor.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditor.svelte @@ -168,7 +168,13 @@ previewTheme, debuggingComponents: writable({}), replaceStateFn: (path) => replaceState(path, $page.state), - policy: policy + policy: policy, + recomputeAllContext: writable({ + loading: false, + componentNumber: 0, + refreshing: [], + progress: 100 + }) }) let scale = writable(100) diff --git a/frontend/src/lib/components/apps/editor/AppPreview.svelte b/frontend/src/lib/components/apps/editor/AppPreview.svelte index 4d916ad0c6..7688d2d796 100644 --- a/frontend/src/lib/components/apps/editor/AppPreview.svelte +++ b/frontend/src/lib/components/apps/editor/AppPreview.svelte @@ -118,7 +118,13 @@ debuggingComponents: writable({}), replaceStateFn, gotoFn, - policy + policy, + recomputeAllContext: writable({ + loading: false, + componentNumber: 0, + refreshing: [], + progress: 100 + }) }) let previousSelectedIds: string[] | undefined = undefined @@ -200,11 +206,13 @@ : 'max-w-7xl'} mx-auto" id="app-content" > - {#if $appStore.grid && $appStore.hideLegacyTopBar !== true} + {#if $appStore.grid}
- {#if $app.hideLegacyTopBar !== true} +
+ import { Loader2, RefreshCw, TimerReset } from 'lucide-svelte' + import Button from '../../common/button/Button.svelte' + import ButtonDropdown from '$lib/components/common/button/ButtonDropdown.svelte' + import { MenuItem } from '@rgossiaux/svelte-headlessui' + import { classNames } from '$lib/utils' + import { twMerge } from 'tailwind-merge' + import Badge from '$lib/components/common/badge/Badge.svelte' + import { createEventDispatcher } from 'svelte' + + export let componentNumber: number = 0 + export let interval: number | undefined = undefined + export let refreshing: string[] = [] + export let progress: number = 100 + export let loading: boolean | undefined = false + + const dispatch = createEventDispatcher() + + const items = [ + { + displayName: 'Once', + action: () => dispatch('setInter', undefined) + }, + ...[1, 2, 3, 4, 5, 6].map((i) => ({ + displayName: `Every ${i * 5} seconds`, + action: () => dispatch('setInter', i * 5000) + })) + ] + + +
+
+ + + + +
+ {#if interval} + + {interval ? `Every ${interval / 1000}s` : 'Once'} + + {/if} + +
+ +
+
+
+ + + {interval ? `${interval / 1000}s` : 'Once'} + + + + {#each items ?? [] as { }, index} + { + if (index === 0) { + dispatch('setInter', undefined) + } else { + dispatch('setInter', index * 5000) + } + }} + > +
+ {#if index === 0} + Once + {:else} + {`Every ${index * 5} seconds`} + {/if} +
+
+ {/each} +
+
+
+ {#if interval} +
+
+
+ {/if} +
diff --git a/frontend/src/lib/components/apps/editor/RecomputeAllComponents.svelte b/frontend/src/lib/components/apps/editor/RecomputeAllComponents.svelte index 2bd51a6e4e..c20b97010e 100644 --- a/frontend/src/lib/components/apps/editor/RecomputeAllComponents.svelte +++ b/frontend/src/lib/components/apps/editor/RecomputeAllComponents.svelte @@ -1,22 +1,11 @@ - - - - - - - -
-
- - - - -
- {#if interval} - - {interval ? `Every ${interval / 1000}s` : 'Once'} - - {/if} - -
- -
-
-
- - - {interval ? `${interval / 1000}s` : 'Once'} - - - - {#each items ?? [] as { }, index} - { - if (index === 0) { - setInter(undefined) - } else { - setInter(index * 5000) - } - }} - > -
- {#if index === 0} - Once - {:else} - {`Every ${index * 5} seconds`} - {/if} -
-
- {/each} -
-
-
- {#if interval} -
-
-
- {/if} -
+ onClick()} + {interval} + {refreshing} + componentNumber={$recomputeAllContext.componentNumber ?? 0} + loading={$recomputeAllContext.loading} + progress={$recomputeAllContext.progress} + on:setInter={(e) => { + setInter(e.detail) + onClick(false) + }} +/> diff --git a/frontend/src/lib/components/apps/editor/RecomputeAllWrapper.svelte b/frontend/src/lib/components/apps/editor/RecomputeAllWrapper.svelte index a28aa5bdb3..83c1fef5be 100644 --- a/frontend/src/lib/components/apps/editor/RecomputeAllWrapper.svelte +++ b/frontend/src/lib/components/apps/editor/RecomputeAllWrapper.svelte @@ -1,17 +1,17 @@