From d9c766968153827edfc6013ecc99940c68a99ca4 Mon Sep 17 00:00:00 2001 From: KONE SOREL Date: Thu, 9 Apr 2026 14:50:01 +0000 Subject: [PATCH] der --- Js/fonctions.js | 64 +++++++++++++------------------------------------ 1 file changed, 17 insertions(+), 47 deletions(-) diff --git a/Js/fonctions.js b/Js/fonctions.js index ed632cd8..6a147cb4 100755 --- a/Js/fonctions.js +++ b/Js/fonctions.js @@ -92894,24 +92894,20 @@ function actualiser_bareme_acte_lettre_cle() { } /** - * Récupère et affiche le détail des actes liés à une lettre clé dans une modale - * @param {number} idActesbaremeinitiallettrecle - * @param {string} lettreCle + * Version corrigée : On charge le contenu AVANT d'ouvrir pour éviter l'erreur Bootstrap */ async function detail_baremeacte_lettre_cle(idInitial, lettre) { - // 1. On ouvre la modale vide avec un loader une seule fois + // 1. On charge le contenu (qui va injecter le HTML dans la div) + // On attend que le HTML soit injecté avant de demander à Bootstrap d'afficher la modale + await chargerContenuDetailActe(idInitial, lettre); + + // 2. Une fois le contenu chargé, on ouvre la modale + // On utilise le sélecteur jQuery standard pour éviter "Illegal invocation" $("#div_detail_bareme_actes").modal("show"); - - // 2. On appelle la fonction de chargement de contenu - chargerContenuDetailActe(idInitial, lettre); } - /** - * Charge ou actualise uniquement le contenu interne de la modale de détail - * sans manipuler l'état d'ouverture de la modale Bootstrap. - * * @param {number|string} idInitial - ID du barème initial (idActesbaremeinitiallettrecle) - * @param {string} lettre - La lettre clé concernée (ex: 'K', 'B', 'V') + * Charge le contenu interne */ async function chargerContenuDetailActe(idInitial, lettre) { const racineWeb = document.getElementById("racineWeb").value; @@ -92919,37 +92915,25 @@ async function chargerContenuDetailActe(idInitial, lettre) { const modalContainer = document.getElementById("div_detail_bareme_actes"); const url = `${racineWeb}Ajaxbaremelettrecle/detailactes/`; - // 1. Préparation des paramètres pour l'appel Fetch const formData = new FormData(); formData.append("idActesbaremeinitiallettrecle", idInitial); formData.append("lettreCle", lettre); try { - // 2. Exécution de la requête asynchrone - const response = await fetch(url, { - method: "POST", - body: formData - }); - - if (!response.ok) { - throw new Error(`Erreur réseau : ${response.status}`); - } + const response = await fetch(url, { method: "POST", body: formData }); + if (!response.ok) throw new Error(`Erreur réseau : ${response.status}`); const html = await response.text(); - - // 3. Injection du HTML dans le conteneur de la modale - // On remplace le contenu actuel (le tableau) par le nouveau contenu mis à jour + + // Injection du HTML modalContainer.innerHTML = html; - // 4. Réinitialisation de DataTable - // On utilise un court délai pour s'assurer que le navigateur a fini de rendre le HTML + // Réinitialisation de DataTable setTimeout(() => { - // Destruction de l'instance précédente si elle existe pour éviter les conflits if ($.fn.DataTable.isDataTable('#table_detail_actes')) { $('#table_detail_actes').DataTable().destroy(); } - // Initialisation de la nouvelle instance DataTable $('#table_detail_actes').DataTable({ "language": { "url": codeLangue === "en_US" @@ -92957,28 +92941,14 @@ async function chargerContenuDetailActe(idInitial, lettre) { : "//cdn.datatables.net/plug-ins/1.13.6/i18n/fr-FR.json" }, "pageLength": 10, - "lengthMenu": [5, 10, 25, 50], - "order": [[0, "asc"]], // Tri par libellé d'acte - "columnDefs": [ - { "orderable": false, "targets": 5 } // Désactive le tri sur la colonne 'Actions' - ], - "dom": "<'row mb-3'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" + - "<'row'<'col-sm-12'tr>>" + - "<'row mt-3 text-muted small'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>", "responsive": true, - "drawCallback": function() { - // Optionnel : s'exécute à chaque fois que le tableau est redessiné (pagination, tri) - console.log("Tableau actualisé avec succès."); - } + "dom": "<'row mb-3'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>rtip" }); - }, 150); + }, 50); // Délai réduit pour plus de réactivité } catch (error) { - console.error("Erreur lors du chargement du contenu :", error); - - // En cas d'erreur, on affiche un message dans la modale sans la fermer - const errorMsg = codeLangue === "en_US" ? "Update failed." : "Échec de la mise à jour."; - alert_ebene(errorMsg, errorMsg); + console.error("Erreur chargement :", error); + alert_ebene("Erreur de chargement", "Loading error"); } }