Show Failure Cause block and add Retry button for failed jobs in queue UI

This commit is contained in:
2026-06-28 18:53:59 -04:00
parent 2d2138b1cd
commit 934a508508
+15 -4
View File
@@ -1369,8 +1369,13 @@ async function loadQueue() {
<span><i class="fa-solid fa-file-video"></i> Source: ${job.video_path.split('/').pop()}</span> <span><i class="fa-solid fa-file-video"></i> Source: ${job.video_path.split('/').pop()}</span>
`; `;
let errorHtml = "";
if (job.status === "failed" && job.error) { if (job.status === "failed" && job.error) {
metaHtml += `<span style="color: var(--danger);"><i class="fa-solid fa-triangle-exclamation"></i> Error: ${job.error}</span>`; errorHtml = `
<div class="queue-item-error" style="margin-top: 0.5rem; padding: 0.5rem 0.75rem; background: rgba(255, 0, 85, 0.08); border-left: 3px solid var(--danger); border-radius: 4px; font-size: 0.78rem; color: var(--danger); width: 100%; word-break: break-word;">
<i class="fa-solid fa-triangle-exclamation" style="margin-right: 0.25rem;"></i> <strong>Failure Cause:</strong> ${job.error}
</div>
`;
} else if (job.status !== "queued" && job.status !== "failed" && job.status !== "cancelled" && job.status !== "completed" && job.status !== "interrupted") { } else if (job.status !== "queued" && job.status !== "failed" && job.status !== "cancelled" && job.status !== "completed" && job.status !== "interrupted") {
metaHtml += `<span><i class="fa-solid fa-clock"></i> ETA: ${job.eta || 'Calculating...'}</span>`; metaHtml += `<span><i class="fa-solid fa-clock"></i> ETA: ${job.eta || 'Calculating...'}</span>`;
} }
@@ -1393,10 +1398,15 @@ async function loadQueue() {
`; `;
} }
if (job.status === "interrupted") { if (job.status === "interrupted" || job.status === "failed") {
const btnLabel = job.status === "failed" ? "Retry" : "Resume";
const btnIcon = job.status === "failed" ? "fa-rotate-right" : "fa-play";
actionsHtml = ` actionsHtml = `
<button class="btn btn-primary btn-small btn-resume-job" data-id="${job.job_id}"> <button class="btn btn-primary btn-small btn-resume-job" data-id="${job.job_id}">
<i class="fa-solid fa-play"></i> Resume <i class="fa-solid ${btnIcon}"></i> ${btnLabel}
</button>
<button class="btn btn-secondary btn-small btn-view-job" data-id="${job.job_id}">
<i class="fa-solid fa-eye"></i> View
</button> </button>
<button class="btn btn-secondary btn-small btn-delete-job" data-id="${job.job_id}"> <button class="btn btn-secondary btn-small btn-delete-job" data-id="${job.job_id}">
<i class="fa-solid fa-trash"></i> Clear <i class="fa-solid fa-trash"></i> Clear
@@ -1427,7 +1437,7 @@ async function loadQueue() {
const progressStyle = showProgress ? "display: block;" : "display: none;"; const progressStyle = showProgress ? "display: block;" : "display: none;";
item.innerHTML = ` item.innerHTML = `
<div class="queue-item-details"> <div class="queue-item-details" style="width: 100%;">
<div class="queue-item-title"> <div class="queue-item-title">
${titleLabel} ${titleLabel}
<span class="status-badge ${job.status}" style="font-size: 0.7rem; padding: 0.15rem 0.5rem; margin-left: 0.5rem;">${job.status}</span> <span class="status-badge ${job.status}" style="font-size: 0.7rem; padding: 0.15rem 0.5rem; margin-left: 0.5rem;">${job.status}</span>
@@ -1435,6 +1445,7 @@ async function loadQueue() {
<div class="queue-item-meta"> <div class="queue-item-meta">
${metaHtml} ${metaHtml}
</div> </div>
${errorHtml}
</div> </div>
<div class="queue-item-status-bar"> <div class="queue-item-status-bar">
<div class="queue-item-progress-container" style="${progressStyle}"> <div class="queue-item-progress-container" style="${progressStyle}">