32 lines
850 B
JavaScript
32 lines
850 B
JavaScript
let scanInterval = null;
|
|
|
|
async function scan() {
|
|
startScanStatusPolling();
|
|
await apiGet(`/scan`);
|
|
}
|
|
|
|
|
|
function startScanStatusPolling() {
|
|
if (scanInterval) clearInterval(scanInterval);
|
|
|
|
scanInterval = setInterval(async () => {
|
|
const res = await fetch(`/photos/scan_status.json?ts=${Date.now()}`);
|
|
if (!res.ok) return;
|
|
|
|
const data = await res.json();
|
|
|
|
document.getElementById("scanProgress").textContent =
|
|
`Progresso: ${data.current}/${data.total} (${data.percent}%)`;
|
|
|
|
document.getElementById("scanEta").textContent =
|
|
`ETA: ${data.eta}`;
|
|
|
|
document.getElementById("progressBar").style.width = data.percent + "%";
|
|
|
|
if (data.current >= data.total && data.total > 0) {
|
|
clearInterval(scanInterval);
|
|
scanInterval = null;
|
|
await readDB();
|
|
}
|
|
}, 1000);
|
|
}
|