240 lines
11 KiB
JavaScript
240 lines
11 KiB
JavaScript
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, "<br>")}<br>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);
|
|
});
|
|
});
|
|
});
|