Files

239 lines
6.2 KiB
JavaScript

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();
}
});
});
});