Show pending Studio 2 jobs and freeze finished timers

This commit is contained in:
Towsty
2026-09-12 10:39:33 -05:00
parent 3e90d2ff45
commit 3da3656140
6 changed files with 43 additions and 5 deletions
+16
View File
@@ -0,0 +1,16 @@
const terminal = new Set(['complete','failed','cancelled'])
const running = new Set(['waking','submitting','rendering','saving'])
export function queueJobs(jobs) {
return jobs.filter(j=>running.has(j.state)||['waiting','queued','held'].includes(j.state)).sort((a,b)=>Number(running.has(b.state))-Number(running.has(a.state)) || (a.queuedAt||0)-(b.queuedAt||0))
}
export function jobView(record, queue, live) {
const statuses={complete:'complete',error:'failed',cancelled:'cancelled'}
const state=statuses[queue?.status] || (!live?.saving && statuses[live?.status]) || (queue?.status==='held'?'held':record.state)
const finishedAt=terminal.has(state)?record.finishedAt || (statuses[queue?.status]?queue.updatedAt:0) || (state==='complete'?record.savedAt:0) || record.updatedAt || record.startedAt || record.queuedAt:undefined
return {...record,state,finishedAt,error:record.error || queue?.lastError || live?.error}
}
export function elapsedSeconds(job, now) {
const start=job.startedAt || job.queuedAt
const end=terminal.has(job.state)?job.finishedAt || job.savedAt || job.updatedAt || start:now
return Number.isFinite(start)&&Number.isFinite(end)?Math.max(0,Math.floor((end-start)/1000)):0
}