convertor/public/results.js
2025-03-23 16:45:11 -06:00

65 lines
1.8 KiB
JavaScript

const webroot = document.querySelector("meta[name='webroot']").content;
window.downloadAll = function () {
// Get all download links
const downloadLinks = document.querySelectorAll("a[download]");
// Trigger download for each link
downloadLinks.forEach((link, index) => {
// We add a delay for each download to prevent them from starting at the same time
setTimeout(() => {
const event = new MouseEvent("click");
link.dispatchEvent(event);
}, index * 100);
});
};
window.downloadZip = function () {
const jobId = window.location.pathname.split("/").pop();
const userId = document.querySelector("meta[name='user-id']").content;
fetch(`${webroot}/zip/${userId}/${jobId}`, {
method: "GET",
})
.then((res) => {
if (res.ok) {
return res.blob();
}
return Promise.reject(new Error("Failed to download zip"));
})
.then((blob) => {
const url = window.URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = `convertx-${userId}-${jobId}.zip`;
document.body.appendChild(a);
a.click();
a.remove();
})
.catch((err) => console.log(err));
};
const jobId = window.location.pathname.split("/").pop();
const main = document.querySelector("main");
let progressElem = document.querySelector("progress");
const refreshData = () => {
// console.log("Refreshing data...", progressElem.value, progressElem.max);
if (progressElem.value !== progressElem.max) {
fetch(`${webroot}/progress/${jobId}`, {
method: "POST",
})
.then((res) => res.text())
.then((html) => {
main.innerHTML = html;
})
.catch((err) => console.log(err));
setTimeout(refreshData, 1000);
}
progressElem = document.querySelector("progress");
};
refreshData();