Добавлен фитбек переноса файлов
This commit is contained in:
@@ -222,21 +222,23 @@
|
||||
const previewBtn = job.state === 'finished'
|
||||
? `<button class="btn btn-outline btn-sm" onclick="playVideo('${escapeHtml(job.outfile_name)}')"><i class="fas fa-play"></i></button>`
|
||||
: '';
|
||||
const moveBtn = job.state === 'finished'
|
||||
? `<button class="btn btn-primary btn-sm" onclick="moveVideo('${escapeHtml(job.outfile_name)}')"><i class="fas fa-share"></i></button>`
|
||||
// Заглушка‑иконка, обновится асинхронно
|
||||
const moveIcon = job.state === 'finished'
|
||||
? `<span class="move-icon" data-file="${escapeHtml(job.outfile_name)}"><i class="fas fa-spinner fa-spin"></i></span>`
|
||||
: '';
|
||||
return `<tr>
|
||||
<td><div class="job-filename" title="${escapeHtml(job.outfile_name)}">${escapeHtml(job.outfile_name)}</div></td>
|
||||
<td><span class="badge ${stateClass}">${escapeHtml(job.state)}</span></td>
|
||||
<td class="datetime">${created}</td>
|
||||
<td class="datetime">${updated}</td>
|
||||
<td class="uid" title="${escapeHtml(job.uid)}">${job.uid.substring(0, 10)}...</td>
|
||||
<td>${previewBtn}</td>
|
||||
<td>${moveBtn}</td>
|
||||
</tr>`;
|
||||
<td><div class="job-filename" title="${escapeHtml(job.outfile_name)}">${escapeHtml(job.outfile_name)}</div></td>
|
||||
<td><span class="badge ${stateClass}">${escapeHtml(job.state)}</span></td>
|
||||
<td class="datetime">${created}</td>
|
||||
<td class="datetime">${updated}</td>
|
||||
<td class="uid" title="${escapeHtml(job.uid)}">${job.uid.substring(0, 10)}...</td>
|
||||
<td>${previewBtn}</td>
|
||||
<td>${moveIcon}</td>
|
||||
</tr>`;
|
||||
}).join('');
|
||||
// Запускаем проверку статусов после рендера
|
||||
updateMoveStatuses();
|
||||
}
|
||||
|
||||
function escapeHtml(text) { if (!text) return ''; const div = document.createElement('div'); div.textContent = text; return div.innerHTML; }
|
||||
function getStateClass(state) {
|
||||
const classes = { 'finished': 'badge-finished', 'started': 'badge-started', 'processing': 'badge-processing', 'queued': 'badge-queued', 'error': 'badge-error', 'pending': 'badge-pending' };
|
||||
@@ -375,6 +377,26 @@
|
||||
}
|
||||
}
|
||||
|
||||
async function updateMoveStatuses() {
|
||||
const icons = document.querySelectorAll('.move-icon');
|
||||
for (const icon of icons) {
|
||||
const filename = icon.dataset.file;
|
||||
try {
|
||||
const resp = await fetch('/api/videos/' + encodeURIComponent(filename) + '/status');
|
||||
const status = await resp.json();
|
||||
const exists = status.exists_in_dest;
|
||||
const subfolder = status.subfolder;
|
||||
if (exists) {
|
||||
icon.innerHTML = `<i class="fas fa-check-circle" style="color: var(--accent-success);" title="Already in ${subfolder}"></i>`;
|
||||
} else {
|
||||
icon.innerHTML = `<button class="btn btn-primary btn-sm" onclick="moveVideo('${escapeHtml(filename)}')"><i class="fas fa-share"></i></button>`;
|
||||
}
|
||||
} catch (e) {
|
||||
icon.innerHTML = `<i class="fas fa-question-circle" title="Status unknown"></i>`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ========== ИНИЦИАЛИЗАЦИЯ ==========
|
||||
initTheme();
|
||||
refreshJobs();
|
||||
|
||||
Reference in New Issue
Block a user