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")
{
console.log("tyson"+columnIndex);
let actionButtons = dataTableColumnsConfig[columnIndex].actionButtons;
let renderBody = '';
renderBody = `if (type === "display") {console.log(row);`;
renderBody += `return '`;
actionButtons.forEach(function (actionButton){
let buttonUrl = actionButton.buttonUrl;
let parameters = actionButton.querystring_parameters;
console.log(parameters);
renderBody += ` ";
});
renderBody += "'}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($('