diff --git a/Js/fonctions.js b/Js/fonctions.js index 0d73434..5eedba1 100755 --- a/Js/fonctions.js +++ b/Js/fonctions.js @@ -367,10 +367,8 @@ function changer_langue_connexion() { * @param {string} message - Informations de police/contexte sous le titre (messageTop) */ function appliquerDataTable(selector = '.tabliste', options = {}, titreDoc = "Rapport", message = "") { - // 1. Détection de la langue via un champ caché dans votre header const codeLangue = $("#codeLangue").val() || 'fr_FR'; - // 2. Dictionnaire de traduction const translations = { fr_FR: { lengthMenu: "Affiche _MENU_ par page", @@ -379,10 +377,7 @@ function appliquerDataTable(selector = '.tabliste', options = {}, titreDoc = "Ra infoEmpty: "Aucun enregistrement disponible", infoFiltered: "(filtré de _MAX_ total)", search: "Recherche rapide :", - paginate: { - next: "Suivant ►", - previous: "◄ Précédent" - } + paginate: { next: "Suivant ►", previous: "◄ Précédent" } }, en_US: { lengthMenu: "Display _MENU_ records", @@ -391,63 +386,53 @@ function appliquerDataTable(selector = '.tabliste', options = {}, titreDoc = "Ra infoEmpty: "No records available", infoFiltered: "(filtered from _MAX_ total)", search: "Quick Search:", - paginate: { - next: "Next ►", - previous: "◄ Previous" - } + paginate: { next: "Next ►", previous: "◄ Previous" } } }; $(selector).each(function() { const $table = $(this); - // 3. Gestion automatique des colonnes masquées (via l'attribut data-hidden="true" sur le TH) const hiddenTargets = []; $table.find('thead th').each((idx, th) => { - if ($(th).data('hidden')) { - hiddenTargets.push(idx); - } + if ($(th).data('hidden')) hiddenTargets.push(idx); }); - // 4. Configuration des boutons d'export avec Titre et Message Contextuel const exportConfig = { title: titreDoc, messageTop: message, - exportOptions: { - columns: ':visible' // Exporte uniquement ce qui est affiché à l'écran - } + exportOptions: { columns: ':visible' } }; - // 5. Initialisation de l'instance DataTable + // --- CORRECTION ICI --- + // On définit les boutons par défaut uniquement SI aucun bouton n'est fourni dans 'options' + const defaultButtons = [ + $.extend(true, {}, exportConfig, { extend: 'copy', className: 'btn btn-sm btn-light' }), + $.extend(true, {}, exportConfig, { extend: 'excel', className: 'btn btn-sm btn-success' }), + $.extend(true, {}, exportConfig, { + extend: 'pdf', + className: 'btn btn-sm btn-danger', + orientation: 'landscape', + pageSize: 'A4' + }), + $.extend(true, {}, exportConfig, { extend: 'print', className: 'btn btn-sm btn-dark' }) + ]; + + // On vérifie si l'utilisateur a passé ses propres boutons + const finalButtons = (options && options.buttons) ? options.buttons : defaultButtons; + const instance = $table.DataTable($.extend(true, { - destroy: true, // Permet de réinitialiser la table si elle existe déjà - responsive: true, // Adaptation mobile - pageLength: 25, // Nombre de lignes par défaut - order: [[0, "desc"]], // Tri par défaut sur la 1ère colonne - dom: 'Bfrtip', // Positionnement des éléments (Buttons, filter, processing, table, info, pagination) + destroy: true, + responsive: true, + pageLength: 25, + order: [[0, "desc"]], + dom: 'Bfrtip', language: translations[codeLangue] || translations.fr_FR, - columnDefs: [ - { targets: hiddenTargets, visible: false } // Masque les colonnes techniques - ], - // Activation du Header et Footer collants (Nécessite l'extension FixedHeader) - fixedHeader: { - header: true, - footer: true - }, - buttons: [ - $.extend(true, {}, exportConfig, { extend: 'copy', className: 'btn btn-sm btn-light' }), - $.extend(true, {}, exportConfig, { extend: 'excel', className: 'btn btn-sm btn-success' }), - $.extend(true, {}, exportConfig, { - extend: 'pdf', - className: 'btn btn-sm btn-danger', - orientation: 'landscape', - pageSize: 'A4' - }), - $.extend(true, {}, exportConfig, { extend: 'print', className: 'btn btn-sm btn-dark' }) - ] + columnDefs: [{ targets: hiddenTargets, visible: false }], + fixedHeader: { header: true, footer: true }, + buttons: finalButtons // On utilise la liste filtrée }, options)); - // 6. Recalcul de la largeur des colonnes après le rendu initial $table.on('init.dt', function () { if (instance && instance.responsive) { instance.columns.adjust(); diff --git a/Vue/gabarit.php b/Vue/gabarit.php index bf11286..fab1197 100755 --- a/Vue/gabarit.php +++ b/Vue/gabarit.php @@ -710,7 +710,7 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte']; - +