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 var 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); var dataTablesButtonsConfig = JSON.parse(document.getElementById('datatable-config').dataset.datatableButtonsConfig); var dataTablesColumnDefsConfig = JSON.parse(document.getElementById('datatable-config').dataset.datatableColumnDefsConfig); //Set up any action columns function doActionButton(url, id) { window.open(url, "_blank"); } window.doActionButton=doActionButton; var renderFunctions = []; dataTableHeadersConfig.forEach(function (headerColumn, columnIndex){ if(headerColumn.type === "action") { let buttonUrl = dataTableColumnsConfig[columnIndex].buttonUrl; let parameters = dataTableColumnsConfig[columnIndex].querystring_parameters; console.log(parameters); let renderBody = `if (type === "display") {console.log(row);`; renderBody += `return ''}return data;"; renderFunctions[columnIndex] = new Function('data', 'type', 'row', 'meta', renderBody); console.log(renderFunctions[columnIndex]); dataTableColumnsConfig[columnIndex].searchable = false; dataTableColumnsConfig[columnIndex].orderable = false; dataTableColumnsConfig[columnIndex].render = renderFunctions[columnIndex]; } }) 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($('