document.addEventListener("DOMContentLoaded", () => { // ===================================================== // OUTILS MODALES // ===================================================== function openModal(modal) { if (!modal) return; modal.showModal(); // Force le centrage avec le CSS dialog modal.style.transform = "translate(-50%, -50%)"; } function closeModal(modal) { if (!modal) return; modal.close(); modal.style.transform = ""; } // Fermeture par clic en dehors de la fenêtre document.querySelectorAll("dialog").forEach((dialog) => { dialog.addEventListener("click", (e) => { const rect = dialog.getBoundingClientRect(); const inside = e.clientX >= rect.left && e.clientX <= rect.right && e.clientY >= rect.top && e.clientY <= rect.bottom; if (!inside) { closeModal(dialog); } }); }); // ===================================================== // MODAL CREATION ORDRE // ===================================================== const modalCreerOrdre = document.getElementById("modalCreerOrdre"); const btnCreer = document.querySelector(".ordregf-btn-creer"); if (modalCreerOrdre && btnCreer) { btnCreer.addEventListener("click", () => { openModal(modalCreerOrdre); }); document.getElementById("btnAnnuler")?.addEventListener("click", () => { document.getElementById("formCreerOrdre")?.reset(); closeModal(modalCreerOrdre); const btnValider = document.getElementById("btnValider"); if (btnValider) { btnValider.disabled = true; } }); } // ===================================================== // RECHERCHE ACTION // ===================================================== const btnRechercher = document.getElementById("btnRechercher"); btnRechercher?.addEventListener("click", async () => { const isin = document.getElementById("isinRecherche").value; if (!isin) { alert("Veuillez entrer un code ISIN"); return; } const response = await fetch( `/php/api_rechercher_action.php?isin=${encodeURIComponent(isin)}`, ); const data = await response.json(); if (data.success) { document.getElementById("Nom").value = data.company_name; document.getElementById("ticker").value = data.ticker; document.getElementById("code_yahoo").value = data.yahoo_code; document.getElementById("btnValider").disabled = false; } else { alert("Action non trouvée"); } }); // ===================================================== // ENREGISTREMENT ORDRE // ===================================================== document .getElementById("formCreerOrdre") ?.addEventListener("submit", async (e) => { e.preventDefault(); const formData = new FormData(e.target); const response = await fetch("/php/api_enregistrer_ordre.php", { method: "POST", body: formData, }); const result = await response.json(); if (result.success) { location.reload(); } else { alert( "Erreur lors de l'enregistrement : " + (result.message || "Erreur inconnue"), ); } }); // ===================================================== // ENREGISTREMENT DETAIL // ===================================================== document .getElementById("formCreerDetail") ?.addEventListener("submit", async (e) => { e.preventDefault(); const response = await fetch("/php/api_enregistrer_detail.php", { method: "POST", body: new FormData(e.target), }); const result = await response.json(); if (result.success) { location.reload(); } else { alert( "Erreur lors de l'enregistrement du détail : " + (result.message || ""), ); } }); // ===================================================== // MODIFICATION DETAIL // ===================================================== document.addEventListener("click", (e) => { const button = e.target.closest(".ordregf-btn-modifier-petit"); if (!button) return; const detail = JSON.parse(button.getAttribute("data-detail")); const modal = document.getElementById("modalModifierDetail"); if (!modal) return; document.getElementById("edit_id").value = detail.Id; document.getElementById("edit_Id_entete").value = detail.Id_entete; document.getElementById("edit_date").value = detail.Date_op; document.getElementById("edit_quantite").value = detail.Quantite; document.getElementById("edit_prix").value = detail.Prix_brut; document.getElementById("edit_frais_broker").value = detail.Frais_brocker || 0; document.getElementById("edit_frais_etat").value = detail.Frais_etat || 0; document.getElementById("edit_frais_autre").value = detail.Frais_autre || 0; document.getElementById("edit_type").value = ( detail.Type || "" ).toLowerCase(); document.getElementById("edit_etat").value = ( detail.Etat || "" ).toLowerCase(); document.getElementById("edit_ordre").value = ( detail.Ordre || "" ).toLowerCase(); openModal(modal); }); // ===================================================== // ENREGISTREMENT MODIFICATION // ===================================================== document .getElementById("formModifierDetail") ?.addEventListener("submit", async (e) => { e.preventDefault(); const response = await fetch("/php/api_modifier_detail.php", { method: "POST", body: new FormData(e.target), }); const result = await response.json(); if (result.success) { location.reload(); } else { alert("Erreur : " + result.message); } }); //fermer la popup en cliquant à côté document.querySelectorAll("dialog").forEach((dialog) => { dialog.addEventListener("click", (e) => { const rect = dialog.getBoundingClientRect(); const inside = e.clientX >= rect.left && e.clientX <= rect.right && e.clientY >= rect.top && e.clientY <= rect.bottom; if (!inside) { dialog.close(); } }); }); });