document.addEventListener("DOMContentLoaded", () => { console.log("export_to_lims.js loaded"); // Debug: verifica che i pulsanti siano trovati const exportButtons = document.querySelectorAll(".export-lims-btn"); console.log(`Found ${exportButtons.length} export-lims-btn buttons`); if (exportButtons.length === 0) { console.warn("No .export-lims-btn buttons found in the DOM"); return; } exportButtons.forEach((btn) => { btn.addEventListener("click", (e) => { e.preventDefault(); const rowIndex = btn.dataset.row; const iddatadb = btn.dataset.iddatadb; console.log( `Export to LIMS clicked for row ${rowIndex}, iddatadb: ${iddatadb}`, ); // Mostra il modale di conferma const confirmModalElement = document.getElementById("exportConfirmModal"); if (!confirmModalElement) { console.error("exportConfirmModal not found in the DOM"); alert("Errore: Modale di conferma non trovato"); return; } const confirmModal = new bootstrap.Modal(confirmModalElement, { keyboard: false, }); document.getElementById("exportIddatadb").textContent = iddatadb; confirmModal.show(); // Gestisci il click su "Conferma" const confirmBtn = document.getElementById("exportConfirmBtn"); if (!confirmBtn) { console.error("exportConfirmBtn not found in the DOM"); confirmModal.hide(); alert("Errore: Pulsante di conferma non trovato"); return; } const confirmHandler = async () => { console.log(`Confirmed export for iddatadb: ${iddatadb}`); confirmModal.hide(); const formData = new FormData(); formData.append("iddatadb", iddatadb); try { const response = await fetch("export_to_lims.php", { method: "POST", body: formData, }); if (!response.ok) throw new Error( `HTTP error! status: ${response.status}`, ); const data = await response.json(); console.log("Export response:", data); // Mostra il modale di risposta const responseModalElement = document.getElementById( "exportResponseModal", ); if (!responseModalElement) { console.error( "exportResponseModal not found in the DOM", ); alert("Errore: Modale di risposta non trovato"); return; } const responseModal = new bootstrap.Modal( responseModalElement, { keyboard: false, }, ); const responseMessage = document.getElementById( "exportResponseMessage", ); if (data.success) { responseMessage.innerHTML = `${data.message.replace(/\n/g, "
")}
ID CommessaWeb: ${data.idcommessaweb}`; document.getElementById( "exportResponseModalLabel", ).textContent = "Esportazione Completata"; responseModal.show(); // Aggiorna la UI per riflettere lo stato 'To LIMS' const statusCell = btn .closest(".grid-row") .querySelector( '.grid-cell[data-col="status"] .status-badge', ); if (statusCell) { statusCell.classList.remove("status-i", "status-P"); statusCell.classList.add("status-l"); statusCell.textContent = "To LIMS"; } // Gestisci la chiusura del modale di risposta responseModalElement.addEventListener( "hidden.bs.modal", () => { console.log( "exportResponseModal closed, cleaning up", ); // Rimuovi tutti i backdrop residui document .querySelectorAll(".modal-backdrop") .forEach((backdrop) => { console.log( "Removing backdrop:", backdrop, ); backdrop.remove(); }); // Ripristina il body document.body.classList.remove("modal-open"); document.body.style.paddingRight = ""; // Nascondi l'overlay const overlay = document.querySelector( ".overlay.toggle-icon", ); if (overlay) { overlay.style.display = "none"; } }, { once: true }, ); } else { responseMessage.textContent = `Errore durante la generazione dei payload: ${data.message}`; document.getElementById( "exportResponseModalLabel", ).textContent = "Errore Esportazione"; responseModal.show(); // Gestisci la chiusura del modale di risposta anche in caso di errore responseModalElement.addEventListener( "hidden.bs.modal", () => { console.log( "exportResponseModal closed, cleaning up", ); // Rimuovi tutti i backdrop residui document .querySelectorAll(".modal-backdrop") .forEach((backdrop) => { console.log( "Removing backdrop:", backdrop, ); backdrop.remove(); }); // Ripristina il body document.body.classList.remove("modal-open"); document.body.style.paddingRight = ""; // Nascondi l'overlay const overlay = document.querySelector( ".overlay.toggle-icon", ); if (overlay) { overlay.style.display = "none"; } }, { once: true }, ); } } catch (error) { console.error("Export error:", error); const responseModalElement = document.getElementById( "exportResponseModal", ); if (!responseModalElement) { console.error( "exportResponseModal not found in the DOM", ); alert("Errore: Modale di risposta non trovato"); return; } const responseModal = new bootstrap.Modal( responseModalElement, { keyboard: false, }, ); document.getElementById( "exportResponseMessage", ).textContent = `Errore durante la generazione dei payload: ${error.message}`; document.getElementById( "exportResponseModalLabel", ).textContent = "Errore Esportazione"; responseModal.show(); // Gestisci la chiusura del modale di risposta in caso di errore responseModalElement.addEventListener( "hidden.bs.modal", () => { console.log( "exportResponseModal closed, cleaning up", ); // Rimuovi tutti i backdrop residui document .querySelectorAll(".modal-backdrop") .forEach((backdrop) => { console.log("Removing backdrop:", backdrop); backdrop.remove(); }); // Ripristina il body document.body.classList.remove("modal-open"); document.body.style.paddingRight = ""; // Nascondi l'overlay const overlay = document.querySelector( ".overlay.toggle-icon", ); if (overlay) { overlay.style.display = "none"; } }, { once: true }, ); } // Rimuovi il listener dopo l'esecuzione confirmBtn.removeEventListener("click", confirmHandler); }; // Rimuovi eventuali listener precedenti confirmBtn.removeEventListener("click", confirmHandler); confirmBtn.addEventListener("click", confirmHandler); }); }); });