import 'tailwindcss'; import $ from 'jquery'; import 'laravel-datatables-vite'; import JSZip from 'jszip'; // Required for Excel and CSV export import 'datatables.net'; import 'datatables.net-buttons'; import 'datatables.net-buttons/js/buttons.html5.js'; // For HTML5 export buttons import 'datatables.net-buttons/js/buttons.print.min.js'; // For the print button import 'datatables.net-responsive'; import 'pdfmake/build/pdfmake.js'; // Required for PDF export import 'pdfmake/build/vfs_fonts.js'; // Required for PDF export import './dataTables.tailwindcss.js'; import 'datatables.net-responsive-dt'; // Ensure jQuery is available globally window.$ = window.jQuery = $; window.JSZip = JSZip; // Initialize DataTable let dataTableInstance; var searchTerms ={}; function initializeDataTable() { var dataTableName = document.getElementById('datatable-config').dataset.datatableName; var dataTableColumnsConfig = JSON.parse(document.getElementById('datatable-config').dataset.datatableColumnsConfig); var dataTableHeadersConfig = JSON.parse(document.getElementById('datatable-config').dataset.datatableHeadersConfig); if ($.fn.DataTable.isDataTable(`#${dataTableName}-table`)) { dataTableInstance.destroy(); $(`#${dataTableName}-table tbody`).empty(); // Clear rows to prevent residue } dataTableInstance = $(`#${dataTableName}-table`).DataTable({ responsive: true, retrieve: true, searching: false, processing: true, serverSide: true, orderCellsTop: true, fixedHeader: true, ajax: { url: '/api/report-data/' + dataTableName, type: 'POST', dataSrc: function (json) { //console.log('Returned data:', json); //populate any dropdown headers //console.log(dataTableHeadersConfig); dataTableHeadersConfig.forEach(function(headerConfig, index){ if(headerConfig.searchtype == "dropdown") { //console.log('Tyson here'); var dropdown = $('#'+headerConfig.header.replace(' ', '-')+'FilterDropdown'); //console.log(dropdown); dropdown.empty().append($('