Visualizer work
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

97 lines
3.0 KiB

import {
modalCancelBtn,
modalContainer,
modalOverlay,
modalContent,
modalText,
modalOkBtn,
modalProgressContainer,
modalProgressBar,
modalProgressText,
} from "./dom.js";
let modalResolve = null;
// The showModal function is now simpler.
/* export function showModal(message, isConfirm = false) {
return new Promise((resolve) => {
modalText.textContent = message;
modalCancelBtn.classList.toggle("hidden");
modalOkBtn.classList.toggle("hidden", isConfirm);
modalProgressContainer.classList.add("hidden"); // Hide progress by default
modalContainer.classList.remove("hidden");
setTimeout(() => {
modalOverlay.classList.remove("opacity-0");
modalContent.classList.remove("scale-95");
}, 10);
modalResolve = resolve;
});
} */
export function showModal(message, isConfirm = false) {
return new Promise((resolve) => {
modalText.textContent = message;
// This line correctly shows the "Cancel" button only when needed.
modalCancelBtn.classList.toggle("hidden", !isConfirm);
// --- THIS IS THE FIX ---
// This ensures the "OK" button is always visible for this modal.
modalOkBtn.classList.remove("hidden");
modalProgressContainer.classList.add("hidden");
modalContainer.classList.remove("hidden");
setTimeout(() => {
modalOverlay.classList.remove("opacity-0");
modalContent.classList.remove("scale-95");
}, 10);
modalResolve = resolve;
});
}
// A new function specifically for the loading modal
export function showLoadingModal(message) {
modalText.textContent = message;
modalOkBtn.classList.add('hidden');
modalCancelBtn.classList.add('hidden');
modalProgressContainer.classList.remove('hidden');
modalProgressBar.style.width = '0%';
modalProgressText.textContent = 'Initializing...';
modalContainer.classList.remove("hidden");
setTimeout(() => {
modalOverlay.classList.remove("opacity-0");
modalContent.classList.remove("scale-95");
}, 10);
}
// A new function to update the progress bar and text
export function updateLoadingModal(percent, message) {
if (modalProgressBar && modalProgressText) {
const p = Math.max(0, Math.min(100, Math.round(percent))); // Clamp between 0-100
modalProgressBar.style.width = `${p}%`;
modalProgressText.textContent = message;
}
}
// The hideModal function now also resets the progress bar
export function hideModal(value) {
modalOverlay.classList.add("opacity-0");
modalContent.classList.add("scale-95");
setTimeout(() => {
modalContainer.classList.add("hidden");
if (modalProgressContainer && modalProgressBar && modalProgressText) {
modalProgressContainer.classList.add("hidden");
modalProgressBar.style.width = "0%";
modalProgressText.textContent = "";
}
if (modalResolve) modalResolve(value);
}, 200);
}
// Event listeners remain the same
modalOkBtn.addEventListener("click", () => hideModal(true));
modalCancelBtn.addEventListener("click", () => hideModal(false));
modalOverlay.addEventListener("click", () => hideModal(false));