From 22b8fed9d904a37aae66f6d957f4987f6ca9955c Mon Sep 17 00:00:00 2001 From: Faton Ramadani Date: Mon, 23 Jan 2023 18:03:31 +0100 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20Display=20error=20as=20an=20i?= =?UTF-8?q?con=20in=20order=20to=20avoid=20clutter=20wh=E2=80=A6=20(#1143)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(frontend): Display error as an icon in order to avoid clutter when an error occures * feat(frontend): Fix build * feat(frontend): Fix error icon position --- .../apps/components/form/AppForm.svelte | 1 - .../apps/components/form/AppFormButton.svelte | 1 - .../helpers/RunnableComponent.svelte | 36 +++++++++++-------- .../components/helpers/RunnableWrapper.svelte | 2 -- .../components/apps/editor/AppEditor.svelte | 4 ++- .../apps/editor/AppEditorHeader.svelte | 13 ++++--- .../components/apps/editor/AppPreview.svelte | 13 ++++--- .../apps/editor/ComponentHeader.svelte | 35 ++++++++++++++++-- frontend/src/lib/components/apps/types.ts | 1 + 9 files changed, 74 insertions(+), 32 deletions(-) diff --git a/frontend/src/lib/components/apps/components/form/AppForm.svelte b/frontend/src/lib/components/apps/components/form/AppForm.svelte index df2dd78688..ad6e61ed6a 100644 --- a/frontend/src/lib/components/apps/components/form/AppForm.svelte +++ b/frontend/src/lib/components/apps/components/form/AppForm.svelte @@ -54,7 +54,6 @@ ('AppEditorContext') + const { + worldStore, + runnableComponents, + workspace, + appPath, + isEditor, + jobs, + noBackend, + errorByComponent + } = getContext('AppEditorContext') onMount(() => { if (autoRefresh) { @@ -245,7 +252,14 @@ export async function runComponent() { await executeComponent() } + let lastStartedAt: number = Date.now() + + function recordError(error: string) { + $errorByComponent[id] = error + } + + $: result?.error && recordError(result.error) {#each Object.entries(fields ?? {}) as [key, v]} @@ -268,6 +282,11 @@ lastStartedAt = startedAt outputs.result?.set(testJob?.result) result = testJob.result + + if ($errorByComponent[id] && !result?.error) { + delete $errorByComponent[id] + $errorByComponent = $errorByComponent + } } } }} @@ -299,17 +318,6 @@ Please select a runnable - {:else if result?.error} -
- - See "Debug Runs" on the top right for more details -
{JSON.stringify(result.error, null, 4)}
-
- -
{:else}
diff --git a/frontend/src/lib/components/apps/components/helpers/RunnableWrapper.svelte b/frontend/src/lib/components/apps/components/helpers/RunnableWrapper.svelte index e144020d2e..40162bd156 100644 --- a/frontend/src/lib/components/apps/components/helpers/RunnableWrapper.svelte +++ b/frontend/src/lib/components/apps/components/helpers/RunnableWrapper.svelte @@ -9,7 +9,6 @@ export let componentInput: AppInput | undefined export let id: string export let result: any = undefined - export let noMinH = false export let extraQueryParams: Record = {} export let autoRefresh: boolean = true @@ -47,7 +46,6 @@ {id} {extraQueryParams} {forceSchemaDisplay} - {noMinH} wrapperClass={runnableClass} > diff --git a/frontend/src/lib/components/apps/editor/AppEditor.svelte b/frontend/src/lib/components/apps/editor/AppEditor.svelte index 2c291cad89..c920d3c51b 100644 --- a/frontend/src/lib/components/apps/editor/AppEditor.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditor.svelte @@ -54,6 +54,7 @@ }) const runnableComponents = writable Promise>>({}) + const errorByComponent = writable>({}) setContext('AppEditorContext', { worldStore, @@ -72,7 +73,8 @@ isEditor: true, jobs: writable([]), staticExporter: writable({}), - noBackend: false + noBackend: false, + errorByComponent }) let timeout: NodeJS.Timeout | undefined = undefined diff --git a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte index fa9e67719f..a6f1da4f6d 100644 --- a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte @@ -57,7 +57,7 @@ export let policy: Policy - const { app, summary, mode, breakpoint, appPath, jobs, staticExporter } = + const { app, summary, mode, breakpoint, appPath, jobs, staticExporter, errorByComponent } = getContext('AppEditorContext') const loading = { publish: false, @@ -183,6 +183,7 @@ let testIsLoading = false $: selectedJobId && testJobLoader?.watchJob(selectedJobId) + $: hasErrors = Object.keys($errorByComponent).length > 0 @@ -243,12 +244,14 @@ {:else}
{#if job?.['running']} -
testJobLoader?.cancelJob()} > + Cancel +
{/if}
@@ -436,7 +439,7 @@