// Once the doc loads, find #import-status div, and start polling /admin/api/uploads to get full list /* example response {"51e4dd908c4d6dcffad46bc4b939712d":{"completed":true,"total":1,"processed":0},"b35467b9295d51c38d6cc4681cd18d02":{"completed":false,"total":18933,"processed":3383}} */ const poll = async function () { try { const pollResponse = await fetch(`/admin/api/uploads`); const pollResult = await pollResponse.json(); const importStatus = document.getElementById('import-status'); importStatus.innerHTML = ''; for (const [uploadId, uploadData] of Object.entries(pollResult)) { const div = document.createElement('div'); div.textContent = `${uploadId}: ${uploadData.processed}/${uploadData.total} Imported. ${((uploadData.processed / uploadData.total) * 100).toFixed(2)}% done.`; importStatus.appendChild(div); } } catch (pollError) { console.error('An error occurred while polling the upload status.'); } setTimeout(poll, 250); }; document.addEventListener('DOMContentLoaded', poll);