From f51849e3e3d1f4cec6ba9ffe3308b9bdbee9e26e Mon Sep 17 00:00:00 2001 From: Diego Imbert Date: Mon, 12 Jan 2026 13:59:18 +0100 Subject: [PATCH] more refactor --- frontend/src/lib/components/RunsPage.svelte | 100 ++++++------------ .../src/lib/components/runs/JobsLoader.svelte | 4 +- .../src/lib/components/runs/RunsFilter.svelte | 20 ++-- .../src/lib/components/runs/RunsQueue.svelte | 2 +- 4 files changed, 45 insertions(+), 81 deletions(-) diff --git a/frontend/src/lib/components/RunsPage.svelte b/frontend/src/lib/components/RunsPage.svelte index 048d6272f4..bcbeb3e087 100644 --- a/frontend/src/lib/components/RunsPage.svelte +++ b/frontend/src/lib/components/RunsPage.svelte @@ -67,7 +67,13 @@ concurrency_key: z.string().nullable().default(null), tag: z.string().nullable().default(null), allow_wildcards: z.boolean().default(false), - show_future_jobs: z.boolean().default(true) + show_future_jobs: z.boolean().default(true), + success: z + .enum(['running', 'suspended', 'waiting', 'success', 'failure']) + .nullable() + .default(null), + show_skipped: z.boolean().default(false), + show_schedules: z.boolean().default(true) }) ) let jobs: Job[] | undefined = $state() @@ -77,28 +83,6 @@ let batchReRunOptions: BatchReRunOptions = $state({ flow: {}, script: {} }) - // Rest of filters handled by RunsFilter - let success: 'running' | 'suspended' | 'waiting' | 'success' | 'failure' | undefined = $state( - (page.url.searchParams.get('success') ?? undefined) as - | 'running' - | 'success' - | 'failure' - | undefined - ) - let showSkipped: boolean | undefined = $state( - page.url.searchParams.get('show_skipped') != undefined - ? page.url.searchParams.get('show_skipped') == 'true' - : false - ) - - let showSchedules: boolean = $state( - page.url.searchParams.get('show_schedules') != undefined - ? page.url.searchParams.get('show_schedules') == 'true' - : localStorage.getItem('show_schedules_in_run') == 'false' - ? false - : true - ) - let argFilter: any = $state( page.url.searchParams.get('arg') ? JSON.parse(decodeURIComponent(page.url.searchParams.get('arg') ?? '{}')) @@ -123,24 +107,6 @@ let lastFetchWentToEnd = $state(false) function loadFromQuery() { - // Rest of filters handled by RunsFilter - success = (page.url.searchParams.get('success') ?? undefined) as - | 'running' - | 'success' - | 'failure' - | undefined - showSkipped = - page.url.searchParams.get('show_skipped') != undefined - ? page.url.searchParams.get('show_skipped') == 'true' - : false - - showSchedules = - page.url.searchParams.get('show_schedules') != undefined - ? page.url.searchParams.get('show_schedules') == 'true' - : localStorage.getItem('show_schedules_in_run') == 'false' - ? false - : true - argFilter = page.url.searchParams.get('arg') ? JSON.parse(decodeURIComponent(page.url.searchParams.get('arg') ?? '{}')) : undefined @@ -170,7 +136,7 @@ let extendedJobs: ExtendedJobs | undefined = $state(undefined) let argError = $state('') let resultError = $state('') - let filterTimeout: number | undefined = undefined + let filterTimeout: ReturnType | undefined = undefined let selectedManualDate = $state(0) let autoRefresh: boolean = $state(getAutoRefresh()) let runDrawer: Drawer | undefined = $state(undefined) @@ -338,7 +304,7 @@ schedulePath = undefined } - let calendarChangeTimeout: number | undefined = $state(undefined) + let calendarChangeTimeout: ReturnType | undefined = $state(undefined) function typeOfChart(s: string | null): 'RunChart' | 'ConcurrencyChart' { switch (s) { @@ -382,14 +348,15 @@ createdBy: filters.user || undefined, scriptPathStart: filters.folder ? `f/${filters.folder}/` : undefined, jobKinds: jobKinds == '' ? undefined : jobKinds, - success: success == 'success' ? true : success == 'failure' ? false : undefined, + success: + filters.success == 'success' ? true : filters.success == 'failure' ? false : undefined, running: - success == 'running' || success == 'suspended' + filters.success == 'running' || filters.success == 'suspended' ? true - : success == 'waiting' + : filters.success == 'waiting' ? false : undefined, - isSkipped: showSkipped ? undefined : false, + isSkipped: filters.show_skipped ? undefined : false, // isFlowStep: jobKindsCat != 'all' ? false : undefined, hasNullParent: filters.path != undefined || filters.path != undefined || jobKindsCat != 'all' @@ -397,10 +364,13 @@ : undefined, label: filters.label || undefined, tag: filters.tag || undefined, - isNotSchedule: showSchedules == false ? true : undefined, - suspended: success == 'waiting' ? false : success == 'suspended' ? true : undefined, + isNotSchedule: filters.show_schedules == false ? true : undefined, + suspended: + filters.success == 'waiting' ? false : filters.success == 'suspended' ? true : undefined, scheduledForBeforeNow: - filters.show_future_jobs == false || success == 'waiting' || success == 'suspended' + filters.show_future_jobs == false || + filters.success == 'waiting' || + filters.success == 'suspended' ? true : undefined, args: @@ -416,8 +386,8 @@ } $effect(() => { - if (jobTriggerKind === 'schedule' && !showSchedules) { - showSchedules = true + if (jobTriggerKind === 'schedule' && !filters.show_schedules) { + filters.show_schedules = true } }) @@ -585,10 +555,10 @@ filters.tag = null filters.worker = null schedulePath = undefined - if (success == f) { - success = undefined + if (filters.success == f) { + filters.success = null } else { - success = f + filters.success = f } jobKindsCat = 'all' } @@ -659,12 +629,12 @@ concurrencyKey={filters.concurrency_key} tag={filters.tag} path={filters.path} - {success} - {showSkipped} + success={filters.success} + showSkipped={filters.show_skipped} {argFilter} {resultFilter} {jobTriggerKind} - {showSchedules} + showSchedules={filters.show_schedules} showFutureJobs={filters.show_future_jobs} {schedulePath} {jobKindsCat} @@ -776,7 +746,7 @@ { @@ -873,9 +843,9 @@ bind:concurrencyKey={filters.concurrency_key} bind:tag={filters.tag} bind:worker={filters.worker} - bind:showSkipped + bind:showSkipped={filters.show_skipped} bind:path={filters.path} - bind:success + bind:success={filters.success} bind:argFilter bind:resultFilter bind:jobTriggerKind @@ -1051,13 +1021,7 @@
{ - localStorage.setItem( - 'show_schedules_in_run', - showSchedules ? 'true' : 'false' - ) - }} + bind:checked={filters.show_schedules} options={tableTopBarWidth < 800 || selectionMode ? {} : { right: 'Schedules' }} diff --git a/frontend/src/lib/components/runs/JobsLoader.svelte b/frontend/src/lib/components/runs/JobsLoader.svelte index 2868390c9f..6c1f684675 100644 --- a/frontend/src/lib/components/runs/JobsLoader.svelte +++ b/frontend/src/lib/components/runs/JobsLoader.svelte @@ -26,7 +26,7 @@ worker?: string | null folder: string | null path: string | null - success?: 'success' | 'suspended' | 'waiting' | 'failure' | 'running' | undefined + success?: 'success' | 'suspended' | 'waiting' | 'failure' | 'running' | null showSchedules?: boolean showFutureJobs?: boolean argFilter: string | undefined @@ -96,7 +96,7 @@ perPage = $bindable(1000), allowWildcards = false }: Props = $props() - let intervalId: number | undefined = $state() + let intervalId: ReturnType | undefined = $state() let sync = true function onParamChanges() { diff --git a/frontend/src/lib/components/runs/RunsFilter.svelte b/frontend/src/lib/components/runs/RunsFilter.svelte index 25d94e78a8..02192bd7ab 100644 --- a/frontend/src/lib/components/runs/RunsFilter.svelte +++ b/frontend/src/lib/components/runs/RunsFilter.svelte @@ -27,7 +27,7 @@ concurrencyKey?: string | null worker?: string | null tag?: string | null - success?: 'running' | 'waiting' | 'suspended' | 'queued' | 'success' | 'failure' | undefined + success?: 'running' | 'waiting' | 'suspended' | 'queued' | 'success' | 'failure' | null showSkipped?: boolean | undefined argFilter: string argError: string @@ -64,8 +64,8 @@ concurrencyKey = $bindable(), worker = $bindable(), tag = $bindable(), - success = $bindable(undefined), - showSkipped = $bindable(undefined), + success = $bindable(), + showSkipped = $bindable(), argFilter = $bindable(), argError = $bindable(), resultFilter = $bindable(), @@ -76,12 +76,12 @@ folder = $bindable(), mobile = false, schedulePath = $bindable(), - allowWildcards = $bindable(false), + allowWildcards = $bindable(), paths = [], usernames = [], folders = [], - allWorkspaces = $bindable(false), - filterBy = $bindable('path'), + allWorkspaces = $bindable(), + filterBy = $bindable(), small = false, calendarSmall = false }: Props = $props() @@ -111,10 +111,10 @@ } } - let labelTimeout: number | undefined = $state(undefined) - let concurrencyKeyTimeout: number | undefined = $state(undefined) - let tagTimeout: number | undefined = $state(undefined) - let workerTimeout: number | undefined = $state(undefined) + let labelTimeout: ReturnType | undefined = $state() + let concurrencyKeyTimeout: ReturnType | undefined = $state(undefined) + let tagTimeout: ReturnType | undefined = $state(undefined) + let workerTimeout: ReturnType | undefined = $state(undefined) let allWorkspacesValue = $state(allWorkspaces ? 'all' : 'admins') let displayedLabel = $derived(label) diff --git a/frontend/src/lib/components/runs/RunsQueue.svelte b/frontend/src/lib/components/runs/RunsQueue.svelte index 1a7f7ff410..b0c5ed5adb 100644 --- a/frontend/src/lib/components/runs/RunsQueue.svelte +++ b/frontend/src/lib/components/runs/RunsQueue.svelte @@ -8,7 +8,7 @@ interface Props { queue_count?: Tweened | undefined suspended_count?: Tweened | undefined - success: string | undefined + success: string | null small?: boolean onJobsWaiting?: () => void onJobsSuspended?: () => void