mirror of
https://github.com/wukko/cobalt.git
synced 2025-05-24 18:42:09 +02:00
web/queue: fix total progress
the issue was caused by currentTasks state dependence in ProcessingQueue, now it's properly updated just like before :3
This commit is contained in:
parent
b96b57c216
commit
b6693cd4b2
@ -5,9 +5,10 @@
|
|||||||
|
|
||||||
import { clearFileStorage } from "$lib/storage/opfs";
|
import { clearFileStorage } from "$lib/storage/opfs";
|
||||||
|
|
||||||
import { queueVisible } from "$lib/state/queue-visibility";
|
|
||||||
import { clearQueue, queue as readableQueue } from "$lib/state/task-manager/queue";
|
|
||||||
import { getProgress } from "$lib/task-manager/queue";
|
import { getProgress } from "$lib/task-manager/queue";
|
||||||
|
import { queueVisible } from "$lib/state/queue-visibility";
|
||||||
|
import { currentTasks } from "$lib/state/task-manager/current-tasks";
|
||||||
|
import { clearQueue, queue as readableQueue } from "$lib/state/task-manager/queue";
|
||||||
|
|
||||||
import SectionHeading from "$components/misc/SectionHeading.svelte";
|
import SectionHeading from "$components/misc/SectionHeading.svelte";
|
||||||
import PopoverContainer from "$components/misc/PopoverContainer.svelte";
|
import PopoverContainer from "$components/misc/PopoverContainer.svelte";
|
||||||
@ -24,7 +25,7 @@
|
|||||||
let queue = $derived(Object.entries($readableQueue));
|
let queue = $derived(Object.entries($readableQueue));
|
||||||
|
|
||||||
let totalProgress = $derived(queue.length ? queue.map(
|
let totalProgress = $derived(queue.length ? queue.map(
|
||||||
([, item]) => getProgress(item) * 100
|
([, item]) => getProgress(item, $currentTasks) * 100
|
||||||
).reduce((a, b) => a + b) / (100 * queue.length) : 0);
|
).reduce((a, b) => a + b) / (100 * queue.length) : 0);
|
||||||
|
|
||||||
let indeterminate = $derived(queue.length > 0 && totalProgress === 0);
|
let indeterminate = $derived(queue.length > 0 && totalProgress === 0);
|
||||||
|
@ -64,7 +64,7 @@
|
|||||||
const generateStatusText = ({ info, retrying, currentTasks }: StatusText) => {
|
const generateStatusText = ({ info, retrying, currentTasks }: StatusText) => {
|
||||||
switch (info.state) {
|
switch (info.state) {
|
||||||
case "running":
|
case "running":
|
||||||
const progress = getProgress(info);
|
const progress = getProgress(info, currentTasks);
|
||||||
|
|
||||||
const runningWorkers = info.pipeline.filter(w => w.workerId in currentTasks);
|
const runningWorkers = info.pipeline.filter(w => w.workerId in currentTasks);
|
||||||
const running = [...new Set(runningWorkers.map(task => $t(`queue.state.running.${task.worker}`)))].join(', ');
|
const running = [...new Set(runningWorkers.map(task => $t(`queue.state.running.${task.worker}`)))].join(', ');
|
||||||
|
@ -4,11 +4,11 @@ import { ffmpegMetadataArgs } from "$lib/util";
|
|||||||
import { createDialog } from "$lib/state/dialogs";
|
import { createDialog } from "$lib/state/dialogs";
|
||||||
import { addItem } from "$lib/state/task-manager/queue";
|
import { addItem } from "$lib/state/task-manager/queue";
|
||||||
import { openQueuePopover } from "$lib/state/queue-visibility";
|
import { openQueuePopover } from "$lib/state/queue-visibility";
|
||||||
import { currentTasks } from "$lib/state/task-manager/current-tasks";
|
|
||||||
|
|
||||||
|
import type { CobaltQueueItem } from "$lib/types/queue";
|
||||||
|
import type { CobaltCurrentTasks } from "$lib/types/task-manager";
|
||||||
import type { CobaltPipelineItem, CobaltPipelineResultFileType } from "$lib/types/workers";
|
import type { CobaltPipelineItem, CobaltPipelineResultFileType } from "$lib/types/workers";
|
||||||
import type { CobaltLocalProcessingResponse, CobaltSaveRequestBody } from "$lib/types/api";
|
import type { CobaltLocalProcessingResponse, CobaltSaveRequestBody } from "$lib/types/api";
|
||||||
import type { CobaltQueueItem } from "$lib/types/queue";
|
|
||||||
|
|
||||||
export const getMediaType = (type: string) => {
|
export const getMediaType = (type: string) => {
|
||||||
const kind = type.split('/')[0];
|
const kind = type.split('/')[0];
|
||||||
@ -204,20 +204,19 @@ export const createSavePipeline = (info: CobaltLocalProcessingResponse, request:
|
|||||||
openQueuePopover();
|
openQueuePopover();
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getProgress = (item: CobaltQueueItem): number => {
|
export const getProgress = (item: CobaltQueueItem, currentTasks: CobaltCurrentTasks): number => {
|
||||||
if (item.state === 'done' || item.state === 'error') {
|
if (item.state === 'done' || item.state === 'error') {
|
||||||
return 1;
|
return 1;
|
||||||
} else if (item.state === 'waiting') {
|
} else if (item.state === 'waiting') {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const runningTasks = get(currentTasks);
|
|
||||||
let sum = 0;
|
let sum = 0;
|
||||||
for (const worker of item.pipeline) {
|
for (const worker of item.pipeline) {
|
||||||
if (item.completedWorkers.has(worker.workerId)) {
|
if (item.completedWorkers.has(worker.workerId)) {
|
||||||
sum += 1;
|
sum += 1;
|
||||||
} else {
|
} else {
|
||||||
const task = runningTasks[worker.workerId];
|
const task = currentTasks[worker.workerId];
|
||||||
sum += (task?.progress?.percentage || 0) / 100;
|
sum += (task?.progress?.percentage || 0) / 100;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user