der
This commit is contained in:
parent
18cd14e65a
commit
d9c7669681
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user