Show pending Studio 2 jobs and freeze finished timers
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { jobView } from '~/shared/studio2/queue-view.mjs';
|
||||
import { getJob } from '../../utils/jobs';
|
||||
import { records } from '../../utils/studio2/store';
|
||||
import { listStudioJobs } from '../../utils/studioQueue';
|
||||
export default defineEventHandler(event => { const { owner } = assertLibraryOwner(event); const rows = listStudioJobs(owner); return records(owner).filter(r => !r.dismissed).filter(r => { try {
|
||||
@@ -6,4 +8,4 @@ export default defineEventHandler(event => { const { owner } = assertLibraryOwne
|
||||
}
|
||||
catch {
|
||||
return false;
|
||||
} }).map(r => { const q = rows.find(q => q.id === r.queueId); return { ...r, state: q?.status === 'complete' ? 'complete' : q?.status === 'cancelled' ? 'cancelled' : q?.status === 'error' ? 'failed' : r.state, error: r.error || q?.lastError }; }); });
|
||||
} }).map(r => { const q = rows.find(q => q.id === r.queueId); const live=r.liveId?getJob(r.liveId):null; if (['waiting','queued','held'].includes(r.state) && !q && !live) return null; return jobView(r,q,live); }).filter(Boolean); });
|
||||
|
||||
@@ -28,7 +28,7 @@ type DiskFile = {
|
||||
subfolder: string;
|
||||
type: string;
|
||||
};
|
||||
function update(r: any, state: string) { r.state = state; r.updatedAt = Date.now(); saveRecord(r); }
|
||||
function update(r: any, state: string) { r.state = state; r.updatedAt = Date.now(); if (['complete','failed','cancelled'].includes(state)) r.finishedAt ??= r.updatedAt; saveRecord(r); }
|
||||
// Labels whose pixels must never be resampled: the hero identity still, and the
|
||||
// extend/video start frame (which is either the exact anchor PNG or an already-canvas-sized
|
||||
// extracted last frame). Fitting these every hop is what destroys identity across chained extends.
|
||||
@@ -281,6 +281,7 @@ export async function startStudio2Job(item: StudioJob) {
|
||||
job.library = { ownerKey: item.ownerKey, folderId: r.request.folderId, extensions: [], queueAutoRun: false } as any;
|
||||
job.status = 'running';
|
||||
r.startedAt = Date.now();
|
||||
delete r.finishedAt;
|
||||
r.liveId = job.id;
|
||||
r.clientId = job.clientId;
|
||||
saveRecord(r);
|
||||
|
||||
Reference in New Issue
Block a user