This commit is contained in:
KONE SOREL 2026-03-07 17:07:02 +00:00
parent 23fe5db9fd
commit 2c46150adb

View File

@ -47513,60 +47513,41 @@ function afficheDonneesTableChoisie(fichier) {
if (!fichier || fichier === '') return;
const racineWeb = $("#racineWeb").val();
const codeLangue = $("#codeLangue").val();
const $divLister = $('#div_lister_table');
const $divLister = $('#div_lister_table'); // Ton conteneur principal
// 1. NETTOYAGE RADICAL DU DOM (Anti-doublon)
// On détruit tout ce qui est lié aux plugins avant de vider le div
if ($.fn.DataTable.isDataTable('#tableLister')) {
$('#tableLister').DataTable().destroy();
// 1. On récupère les valeurs AVANT de vider le div
const valPays = $('#codePays').val();
const valAnnee = $('#annee').val();
// 2. Nettoyage impératif pour éviter les IDs en double dans le DOM
if ($.fn.selectpicker) {
$('.selectpicker').selectpicker('destroy');
$('.bootstrap-select').remove();
}
$('.selectpicker').selectpicker('destroy');
$('.bootstrap-select').remove(); // Supprime les résidus graphiques
$divLister.empty(); // Vide proprement le conteneur
$divLister.empty();
// 2. RÉCUPÉRATION DES PARAMÈTRES
let donnees = {};
if (fichier === "Ajaxtblisterjoursferiers") {
// On cible les IDs précisément
donnees.codePays = $('#codePays').val();
donnees.annee = $('#annee').val();
}
// 3. LOADER
$divLister.html(`
<div class="text-center p-5">
<div class="spinner-border text-primary" role="status"></div>
<p class="mt-2 text-muted fw-bold italic">${(codeLangue === "en_US") ? "Loading..." : "Chargement..."}</p>
</div>
`);
// 4. APPEL AJAX
// 3. Appel AJAX
$.ajax({
url: racineWeb + fichier + "/",
type: 'post',
data: donnees,
data: { codePays: valPays, annee: valAnnee },
success: function(data) {
// Injection des nouvelles données (le PHP doit filtrer via les $_POST reçus)
// 4. On injecte TOUT le bloc (Filtres + Table)
$divLister.html(data);
// 5. RÉ-INITIALISATION DES COMPOSANTS
// 5. RÉ-INITIALISATION (L'ordre est vital ici)
// Pour le SelectPicker (Filtre Pays)
if ($('#codePays').length > 0) {
// On ré-initialise proprement
actualiserSelectPicker('#codePays', false);
// On remet la valeur et on rafraîchit l'affichage
$('#codePays').val(donnees.codePays).selectpicker('refresh');
}
// On ré-habille le SelectPicker injecté
actualiserSelectPicker('#codePays', false);
// On FORCE la valeur récupérée et on rafraîchit l'affichage
// C'est ce qui fait que le pays choisi reste affiché
$('#codePays').val(valPays).selectpicker('refresh');
$('#annee').val(valAnnee);
// Pour la DataTable
const nomTable = $("#listetables option:selected").text() || 'Export';
initDataTableReference('#tableLister', 'Export_' + nomTable.replace(/\s+/g, '_'));
},
error: function(xhr) {
toastr.error("Erreur AJAX");
$divLister.html(`<div class="alert alert-danger">${xhr.statusText}</div>`);
// 6. On initialise la DataTable
const nomTableRaw = $("#listetables option:selected").text() || 'Jours_Feriers';
initDataTableReference('#tableLister', 'Export_' + nomTableRaw.trim().replace(/\s+/g, '_'));
}
});
}