more refactor

This commit is contained in:
Diego Imbert
2026-01-12 13:59:18 +01:00
parent 094475698d
commit f51849e3e3
4 changed files with 45 additions and 81 deletions
+32 -68
View File
@@ -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<typeof setInterval> | 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<typeof setInterval> | 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 @@
<!-- Queue -->
<RunsQueue
{success}
success={filters.success}
{queue_count}
{suspended_count}
onJobsWaiting={() => {
@@ -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 @@
<div class="flex flex-row gap-1 items-center">
<Toggle
id="cron-schedules"
bind:checked={showSchedules}
on:change={() => {
localStorage.setItem(
'show_schedules_in_run',
showSchedules ? 'true' : 'false'
)
}}
bind:checked={filters.show_schedules}
options={tableTopBarWidth < 800 || selectionMode
? {}
: { right: 'Schedules' }}
@@ -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<typeof setInterval> | undefined = $state()
let sync = true
function onParamChanges() {
@@ -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<typeof setInterval> | undefined = $state()
let concurrencyKeyTimeout: ReturnType<typeof setInterval> | undefined = $state(undefined)
let tagTimeout: ReturnType<typeof setInterval> | undefined = $state(undefined)
let workerTimeout: ReturnType<typeof setInterval> | undefined = $state(undefined)
let allWorkspacesValue = $state(allWorkspaces ? 'all' : 'admins')
let displayedLabel = $derived(label)
@@ -8,7 +8,7 @@
interface Props {
queue_count?: Tweened<number> | undefined
suspended_count?: Tweened<number> | undefined
success: string | undefined
success: string | null
small?: boolean
onJobsWaiting?: () => void
onJobsSuspended?: () => void