From 1f9045d152896f8f14483fb55778817821b007f8 Mon Sep 17 00:00:00 2001 From: KONE SOREL Date: Fri, 6 Mar 2026 17:29:47 +0000 Subject: [PATCH] gdf --- Js/fonctions.js | 297 ++++++++++++++++++--------------- Vue/Ajaxtblisterpays/index.php | 27 ++- 2 files changed, 182 insertions(+), 142 deletions(-) diff --git a/Js/fonctions.js b/Js/fonctions.js index c13f7e20..ab1afee9 100755 --- a/Js/fonctions.js +++ b/Js/fonctions.js @@ -47466,142 +47466,105 @@ function medecinsprestataire() * AUTRE TABLE DE REFERENCES *******************************************************************/ -// Récupère les fichiers contenu dans la table autrestablesreference -function chargerFichiersTable(){ - - - var $id = $('#listetables').val(); +function chargerFichiersTable() { + const idTable = $('#listetables').val(); + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); - if ($id !=''){ - donnees = 'id='+$id; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxaccesfichiersautrestables/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - fermeFormulaire(); - $('#div_fichiers_table').html(data); - afficheDonneesTableChoisie($('#fichier_lister').val()); - }, - complete: function() { - - } - }); - }else{ - $('#div_fichiers_table').empty(); - $('#div_entete_table').empty(); - $('#div_lister_table').empty(); - - } + // 1. Si aucune table n'est sélectionnée, on nettoie tout + if (!idTable || idTable === "") { + $('#div_fichiers_table, #div_entete_table, #div_lister_table, #div_maj_table').empty(); + return; + } + + // 2. Feedback visuel global + const loadingHtml = ` +
+
+

${(codeLangue === "en_US") ? "Loading table data..." : "Chargement des données..."}

+
`; + + $('#div_lister_table').html(loadingHtml); + $('#div_maj_table').html(""); // On vide la zone de saisie pour le nouveau contexte + + // 3. Appel AJAX pour récupérer les fichiers/paramètres de la table + $.ajax({ + url: racineWeb + "Ajaxaccesfichiersautrestables/", + type: 'post', + data: { id: idTable }, + success: function(data) { + // Fermeture de tout formulaire d'édition ouvert + if (typeof fermeFormulaire === "function") fermeFormulaire(); + + // Injection des données cachées (nom du fichier lister, etc.) + $('#div_fichiers_table').html(data); + + // 4. Lancement de l'affichage du formulaire et de la liste + // On récupère le nom du fichier depuis le champ caché injecté dans 'data' + const fichierLister = $('#fichier_lister').val(); + + // Affiche le formulaire de saisie (à gauche) et la liste (à droite) + afficheDonneesTableChoisie(fichierLister); + }, + error: function(xhr) { + toastr.error((codeLangue === "en_US") ? "Error accessing table files" : "Erreur d'accès aux fichiers de la table"); + console.error(xhr.responseText); + } + }); } -// Affiche les données de la table selectionnée dans un tableau -function afficheDonneesTableChoisie(fichier){ - - var codeLangue = $("#codeLangue").val(); - - - if(fichier=="Ajaxtblisterjoursferiers"){ - codePays = $('#codePays').val(); - annee = $('#annee').val(); - - if(codePays==undefined){ - codePays ="CI" - } - - if(annee==undefined){ - var ladate=new Date(); - annee =ladate.getFullYear(); - } - - donnees = 'codePays='+codePays+'&annee='+annee; - }else{ - donnees = ''; - } - - if(fichier !=''){ - $.ajax({ - url: $("#racineWeb").val()+fichier+"/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - - $('#div_lister_table').html(data); - // - - - if(fichier=="Ajaxtblisterjoursferiers"){ - $('#codePays').val(codePays); - $('#annee').val(annee); - } - if(fichier=="Ajaxtblistertableauajustementgarant"){ - appliquerDataTable(); - }else{ - - if(codeLangue=="en_US") - { - $('#tableLister').DataTable({ - "lengthMenu": [ 20, 50, 100], - "language": { - "lengthMenu":"Display _MENU_ records per page", - "zeroRecords": "Nothing found - sorry", - "info": "Showing page _PAGE_ of _PAGES_", - "infoEmpty": "No records available", - "search": "Search:", - "paginate": { - "next": "►", - "previous": "◄", - "first": "|◄", - "last": "►|" - }, - "infoFiltered": "(filtered from _MAX_ total records)", - "aoColumnDefs": [ - { "bSearchable": false, "aTargets": [ 0 ] } - ] - } - }); - } - else - { - $('#tableLister').DataTable({ - "lengthMenu": [ 20, 50, 100], - "language": { - "lengthMenu":"Affiche _MENU_ par page", - "zeroRecords": "Désolé - Aucune donnée trouvée", - "info": "_PAGE_ sur _PAGES_ pages", - "infoEmpty": "Pas d'enregistrement valable", - "search": "Recherche:", - "paginate": { - "next": "►", - "previous": "◄", - "first": "|◄", - "last": "►|" - }, - "infoFiltered": "(filtré de _MAX_ total enregistrements)", - "aoColumnDefs": [ - { "bSearchable": false, "aTargets": [ 0 ] } - ] - } - }); - } - - } - - }, - complete: function() { - - } - }); - } +function afficheDonneesTableChoisie(fichier) { + if (!fichier || fichier === '') return; + + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); + const $divLister = $('#div_lister_table'); + let donnees = {}; + + // 1. Gestion des cas particuliers (ex: Jours fériés) + if (fichier === "Ajaxtblisterjoursferiers") { + const codePays = $('#codePays').val() || "CI"; + const annee = $('#annee').val() || new Date().getFullYear(); + donnees = { codePays: codePays, annee: annee }; + } + + // 2. Affichage d'un loader pendant le chargement + $divLister.html(` +
+
+

${(codeLangue === "en_US") ? "Synchronizing..." : "Synchronisation..."}

+
+ `); + + // 3. Appel AJAX + $.ajax({ + url: racineWeb + fichier + "/", + type: 'post', + data: donnees, + success: function(data) { + $divLister.html(data); + + // 4. Post-traitement selon le fichier + if (fichier === "Ajaxtblisterjoursferiers") { + $('#codePays').val(donnees.codePays); + $('#annee').val(donnees.annee); + } + + // 5. Initialisation de la DataTable + if (fichier === "Ajaxtblistertableauajustementgarant") { + // Appel de votre fonction spécifique si elle existe toujours + if (typeof appliquerDataTable === "function") appliquerDataTable(); + } else { + // Utilisation de la fonction générique avec exports Excel/PDF + const nomTable = $("#listetables option:selected").text(); + initDataTableReference('#tableLister', 'Export_' + nomTable.replace(/\s+/g, '_')); + } + }, + error: function(xhr) { + toastr.error((codeLangue === "en_US") ? "Data loading error" : "Erreur de chargement des données"); + $divLister.html(`
${xhr.statusText}
`); + } + }); } // Gère l'affichage des boutons en entête des formulaires @@ -91709,5 +91672,73 @@ function initSmartTable(selector = '.datatable-inter', pageTitle = 'Export Donn }); } + return table; +} + +/** + * Initialise une DataTable standard pour les tables de référence + * @param {string} selector - L'ID ou la classe de la table (ex: '#tableLister') + * @param {string} exportTitle - Le nom du fichier lors de l'export + */ +function initDataTableReference(selector, exportTitle = 'Export_Donnees') { + const codeLangue = $("#codeLangue").val(); + + // Objet de traduction interne + const langConfig = (codeLangue === "en_US") ? { + search: "Search:", + lengthMenu: "Show _MENU_ entries", + info: "Showing _START_ to _END_ of _TOTAL_ entries", + infoEmpty: "Showing 0 to 0 of 0 entries", + infoFiltered: "(filtered from _MAX_ total entries)", + zeroRecords: "No matching records found", + paginate: { next: "Next", previous: "Previous" } + } : { + search: "Recherche :", + lengthMenu: "Afficher _MENU_ lignes", + info: "Affichage de _START_ à _END_ sur _TOTAL_ lignes", + infoEmpty: "Affichage de 0 à 0 sur 0 ligne", + infoFiltered: "(filtré de _MAX_ lignes au total)", + zeroRecords: "Aucune donnée trouvée", + paginate: { next: "Suivant", previous: "Précédent" } + }; + + if ($.fn.DataTable.isDataTable(selector)) { + $(selector).DataTable().destroy(); + } + + const table = $(selector).DataTable({ + dom: 'frtip', + responsive: true, + pageLength: 10, + language: langConfig, // On utilise l'objet défini au-dessus + buttons: [ + { + extend: 'excelHtml5', + text: ' Excel', + className: 'btn btn-sm btn-success-light border-success fw-bold text-success rounded-pill shadow-xs', + title: exportTitle, + exportOptions: { columns: ':not(:last-child)' } + }, + { + extend: 'pdfHtml5', + text: ' PDF', + className: 'btn btn-sm btn-danger-light border-danger fw-bold text-danger rounded-pill shadow-xs', + title: exportTitle, + exportOptions: { columns: ':not(:last-child)' }, + customize: function (doc) { + doc.styles.tableHeader.fillColor = '#212e53'; + doc.styles.tableHeader.color = 'white'; + doc.content[1].table.widths = Array(doc.content[1].table.body[0].length + 1).join('*').split(''); + } + } + ], + drawCallback: function() { + const info = this.api().page.info(); + const label = (codeLangue === "en_US") ? " Lines" : " Lignes"; + $("#badge-total").text(info.recordsTotal + label); + } + }); + + table.buttons().container().appendTo('#table-buttons'); return table; } \ No newline at end of file diff --git a/Vue/Ajaxtblisterpays/index.php b/Vue/Ajaxtblisterpays/index.php index 41653816..d191e89c 100755 --- a/Vue/Ajaxtblisterpays/index.php +++ b/Vue/Ajaxtblisterpays/index.php @@ -1,18 +1,21 @@
-
-
- -
- - 0 - +
+
+
+ +
+ + 0 + +
+
- +
@@ -48,7 +51,13 @@ \ No newline at end of file