/**
 * EveAI Tabulator Setup
 * Standaard Tabulator configuratie voor consistente tabelweergaven
 */

document.addEventListener('DOMContentLoaded', function() {
    // Controleer of Tabulator is geladen
    if (typeof Tabulator !== 'function') {
        console.warn('Tabulator is niet geladen - overslaan van initialisatie');
        return;
    }

    // Zorg ervoor dat de modules correct zijn gedefinieerd
    if (!Tabulator.modules) {
        Tabulator.modules = {};
    }

    if (!Tabulator.modules.format) {
        Tabulator.modules.format = { formatters: {} };
    } else if (!Tabulator.modules.format.formatters) {
        Tabulator.modules.format.formatters = {};
    }

    // Registreer algemene Tabulator opties en formatters
    // Gebruik rechtstreekse toewijzing i.p.v. extendModule indien deze functie niet beschikbaar is
    if (typeof Tabulator.extendModule === 'function') {
        try {
            Tabulator.extendModule("format", "formatters", {
                // Aangepaste formatter voor boolean waarden met mooie iconen
                "boolean": function(cell, formatterParams){
                    const value = cell.getValue();
                    if (value === true || value === 'true' || value === 1 || value === '1') {
                        return '<i class="fas fa-check text-success"></i>';
                    } else if (value === false || value === 'false' || value === 0 || value === '0') {
                        return '<i class="fas fa-times text-danger"></i>';
                    }
                    return ''; // Geef lege string terug voor null/undefined waarden
                }
            });
        } catch (e) {
            console.warn('Fout bij extendModule:', e);
            // Fallback: rechtstreeks formatters toevoegen
            Tabulator.modules.format.formatters.boolean = function(cell, formatterParams){
                const value = cell.getValue();
                if (value === true || value === 'true' || value === 1 || value === '1') {
                    return '<i class="fas fa-check text-success"></i>';
                } else if (value === false || value === 'false' || value === 0 || value === '0') {
                    return '<i class="fas fa-times text-danger"></i>';
                }
                return '';
            };
        }
    } else {
        // Directe toewijzing als extendModule niet beschikbaar is
        Tabulator.modules.format.formatters.boolean = function(cell, formatterParams){
            const value = cell.getValue();
            if (value === true || value === 'true' || value === 1 || value === '1') {
                return '<i class="fas fa-check text-success"></i>';
            } else if (value === false || value === 'false' || value === 0 || value === '0') {
                return '<i class="fas fa-times text-danger"></i>';
            }
            return '';
        };
    }

    // Definieer standaard tabelconfiguratie
    Tabulator.defaultOptions = {
        ...Tabulator.defaultOptions,
        layout: "fitColumns",
        responsiveLayout: false,
        pagination: "local",
        paginationSize: 25,
        paginationSizeSelector: [10, 25, 50, 100],
        movableColumns: true,
        tooltips: false,
        placeholder: "No Data Available",
        // Verbeterde virtuele DOM-instellingen voor betere prestaties
        renderVerticalBuffer: 20,
        virtualDomBuffer: 80
    };

    console.log('EveAI Tabulator Setup successfully loaded');
});
