diff --git a/frontend/src/lib/components/runs/JobRunsPreview.svelte b/frontend/src/lib/components/runs/JobRunsPreview.svelte index e28e20f8df..3c3f4ec370 100644 --- a/frontend/src/lib/components/runs/JobRunsPreview.svelte +++ b/frontend/src/lib/components/runs/JobRunsPreview.svelte @@ -35,6 +35,8 @@ } let currentJob: Job | undefined = $state(undefined) + let loadError: string | undefined = $state(undefined) + let isLoadingJobDetails: boolean = $state(false) let lastJobId: string | undefined = $state(undefined) let concurrencyKey: string | undefined = $state(undefined) @@ -67,15 +69,27 @@ } }) $effect(() => { - id && - jobLoader && + if (id && jobLoader) { + loadError = undefined + isLoadingJobDetails = true untrack(() => jobLoader?.watchJob(id, { done(x) { onDone(x) + loadError = undefined + isLoadingJobDetails = false + }, + doneError({ error }) { + loadError = error?.body || error?.message || 'Failed to load job details' + currentJob = undefined + isLoadingJobDetails = false + }, + change() { + isLoadingJobDetails = false } }) ) + } }) $effect(() => { @@ -111,7 +125,21 @@
- {#if job} + {#if isLoadingJobDetails} +
+
+ +
Loading job details...
+
+
+ {:else if loadError} +
+
+
Error loading job
+
{loadError}
+
+
+ {:else if job} {@const isFlow = job?.job_kind == 'flow' || isFlowPreview(job?.job_kind)}