This commit is contained in:
KONE SOREL 2026-04-09 14:50:01 +00:00
parent 18cd14e65a
commit d9c7669681

View File

@ -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");
}
}