Show pending Studio 2 jobs and freeze finished timers
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user