//! jclients.js let idClient; let oldIdLn; let oldColorLn; window.addEventListener('DOMContentLoaded', (event) => { console.log('#'); //let elLigClients = document.getElementsByClassName("ligClient"); let elCelClients = document.getElementsByClassName("celClient"); //let elBtnModClient = document.getElementsByClassName("btnModClient"); let elBtnQuitModClient = document.getElementById("btnQuitModClient"); let elBtnImport = document.getElementById("btnImport"); let elBtnCancelImport = document.getElementById("btnCancelImport"); let elBtnSubmitImport = document.getElementById("btnSubmitImport"); let elBtnSearch = document.getElementById("btnSearch"); let clickLigClient = function (e) { //! Event Click sur une cellule d'une ligne d'un client qui a la classe celClient idClient = e.getAttribute("data-rowid"); console.log("idClient = " + idClient); let thisColor; Array.from(elCelClients).forEach(function (lngClient) { if (lngClient.getAttribute("data-rowid") == oldIdLn) { lngClient.style.backgroundColor = oldColorLn; } else if (lngClient.getAttribute("data-rowid") == idClient) { thisColor = lngClient.style.backgroundColor; lngClient.style.backgroundColor = "#9bbce7"; } }); oldColorLn = thisColor; oldIdLn = idClient; }; function clickModClient(e) { //! Fonction appelée lors du click sur un bouton de modification du tableau des Clients idClient = e.getAttribute("data-rowid"); console.log("idClient = " + idClient); document.getElementById("loadingDiv").style.display = "block"; // Va chercher la 1ère cellule de la ligne pour lancer la function click() => clickLigClient let firstCellOfRow = this.parentNode.parentNode.cells[0]; firstCellOfRow.click(); let xhttp = new XMLHttpRequest(); xhttp.open("POST", "/jxpost/load_client", true); xhttp.setRequestHeader("Content-Type", "application/json"); xhttp.onreadystatechange = function () { if (this.readyState == XMLHttpRequest.DONE && this.status == 200) { // Response let ret = JSON.parse(this.responseText); if (ret.length == 1) { // 1 marché récupéré let Client = ret[0]; document.getElementById("rowid").value = Client.rowid; document.getElementById("libelle").value = Client.libelle; document.getElementById("type_client").value = Client.type_client; document.getElementById("adresse1").value = Client.adresse1; document.getElementById("cp").value = Client.cp; document.getElementById("ville").value = Client.ville; } else { showNotification("Consultation", "Erreur lors de la récupération du Client", "error"); } document.getElementById("loadingDiv").style.display = "none"; } }; xhttp.send(JSON.stringify({cid: idClient})); showModal(document.getElementById("modalModClient")); } //! Fonction appelée lors du click sur le bouton de fermeture de la fenêtre de modification d'un Client function clickQuitModClient() { hideModal(document.getElementById("modalModClient")); } //! Fonction appelée lors du click sur le bouton d'importation des produits function clickImport() { showModal(document.getElementById("modalImport")); } //! Fonction appelée lors du click sur le bouton d'annulation de l'importation des clients function clickCancelImport() { hideModal(document.getElementById("modalImport")); } //! Fonction appelée lors du click sur le bouton de soumission de l'importation des clients function clickSubmitImport() { // TODO: prévoir une progress bar hideModal(document.getElementById("modalImport")); showLoading(); let xhttp = new XMLHttpRequest(); xhttp.open("POST", "/jximport/upload_clients", true); xhttp.onreadystatechange = function () { if (this.readyState == XMLHttpRequest.DONE && this.status == 200) { let retour = JSON.parse(this.responseText); let msg = ""; hideLoading(); if (retour.ret == "ok") { msg = (retour.msg) ? retour.msg : "L'importation des clients a été effectuée avec succès"; showNotification("Importation", msg, "success"); } else { msg = (retour.msg) ? retour.msg : "Erreur lors de l'importation des clients"; showNotification("Importation", msg, "error"); } } }; let frmData = new FormData(); frmData.append("file1", document.getElementById("importFile").files[0]); xhttp.send(frmData); return false; } document.getElementById("schClients").addEventListener("keypress", function (event) { if (event.key === "Enter") { // Traitement de la touche "entrée" clickSearchClients(); } }); let clickSearchClients = function () { document.getElementById("loadingDiv").style.display = "block"; let search = document.getElementById("schClients").value; let xhttp = new XMLHttpRequest(); xhttp.open("POST", "/jxpost/search_clients", true); xhttp.setRequestHeader("Content-Type", "application/json"); xhttp.onreadystatechange = function () { if (this.readyState == XMLHttpRequest.DONE && this.status == 200) { let retour = JSON.parse(this.responseText); document.getElementById("loadingDiv").style.display = "none"; if (retour.ret) { showNotification("Recherche", "La recherche ne s'est pas déroulée correctement", "error"); } else { let tblBody = document.getElementById("tblClients").getElementsByTagName("tbody")[0]; // on vide le body de cette table tblBody.innerHTML = ""; if (retour.length > 0) { // au moins un client trouvé dans cette recherche let nbClients = retour.length; for (let key in retour) { if (retour.hasOwnProperty(key)) { // Récupération des valeurs de la ligne let val = retour[key]; // Insertion d'une nouvelle ligne et création de ses colonnes let newRow = tblBody.insertRow(0); newRow.className = "clickable ligClient"; newRow.setAttribute("data-rowid", val['rowid']); let celEtab = newRow.insertCell(0); celEtab.className = "clickable celClient"; celEtab.setAttribute("data-rowid", val['rowid']); celEtab.innerHTML = val['libelle']; let celType = newRow.insertCell(1); celType.className = "clickable celClient text-center"; celType.setAttribute("data-rowid", val['rowid']); celType.innerHTML = val['type_client']; let celCP = newRow.insertCell(2); celCP.className = "clickable celClient text-center"; celCP.setAttribute("data-rowid", val['rowid']); celCP.innerHTML = val['cp']; let celVille = newRow.insertCell(3); celVille.className = "clickable celClient"; celVille.setAttribute("data-rowid", val['rowid']); celVille.innerHTML = val['ville']; let celAdresse = newRow.insertCell(4); celAdresse.className = "clickable celClient"; celAdresse.setAttribute("data-rowid", val['rowid']); celAdresse.innerHTML = val['adresse1']; let celActions = newRow.insertCell(5); celActions.className = "text-center"; celActions.innerHTML = ''; } } document.getElementById("pnlClientsTitre").innerHTML = ' Liste des ' + nbClients + ' clients trouvés'; } else { // Aucun produit trouvé dans cette recherche document.getElementById("pnlClientsTitre").innerHTML = ' Liste des clients'; let newRow = tblBody.insertRow(0); let celCode = newRow.insertCell(0); celCode.innerHTML = "Aucun client trouvé"; celCode.setAttribute("colspan", "4"); celCode.setAttribute("class", "text-center"); } showNotification("Recherche", "Recherche terminée", "success"); } } } let data = {search: search}; xhttp.send(JSON.stringify(data)); return false; }; let mutationObserver = new MutationObserver(function (mutations) { }); // Starts listening for changes in the root HTML element of the page. mutationObserver.observe(document.getElementById("tblClients"), { childList: true, subtree: true, attributes: true, }); document.getElementById("tblClientsBody").addEventListener("click", function (event) { if (event.target && event.target.nodeName == "TD") { clickLigClient(event.target); } else if (event.target && event.target.nodeName == "BUTTON") { clickModClient(event.target); } }); //! Sur chaque cellule du tableau des clients ayant la classe celClient, on affecte un événement click qui appelle la fonction clickLigClient() //Array.from(elCelClients).forEach(function (lnClient) { //lnClient.addEventListener('click', clickLigClient); //}); //! Sur chaque bouton de modification du tableau des clients, on affecte un événement click qui appelle la fonction clickModClient() //Array.from(elBtnModClient).forEach(function (modClient) { // modClient.addEventListener('click', clickModClient); //}); elBtnImport.addEventListener('click', clickImport); elBtnCancelImport.addEventListener('click', clickCancelImport); elBtnSubmitImport.addEventListener('click', clickSubmitImport); elBtnQuitModClient.addEventListener('click', clickQuitModClient); elBtnSearch.addEventListener('click', clickSearchClients); });