<?php
/**
 * Example 05 — Global Search & Column Filtering
 *
 * Shows how to enable a global search box, per-column header filters,
 * and how to configure debounce and minimum search length.
 */

declare(strict_types=1);

require __DIR__ . '/../vendor/autoload.php';

use Italix\DataSets\DataSet;
use Italix\DataSets\Drivers\Tabulator\TabulatorDriver;

$ds = new DataSet($usersTable);

$ds->columns(['name', 'email', 'role', 'created_at']);
$ds->ajax_url('/api/users');

// ---- Global Search ---------------------------------------------------------
// Creates a search input above the table that triggers a server reload.

$ds->global_search(true, 'Search users by name or email...')
    ->search_debounce(400)     // Wait 400ms after typing before searching
    ->search_min_length(2);    // Don't search until at least 2 chars typed

// Mark which columns the server should search in.
// These column names are sent as search_columns[] in the AJAX request.
$ds->column('name')->searchable(true);
$ds->column('email')->searchable(true);

// ---- Column Header Filters -------------------------------------------------
// These add a filter input directly inside the column header.
// For server-side mode they are sent as filters[column]=value.

// Free-text filter
$ds->column('name')
    ->sortable(true)
    ->header_filter('input');

// Dropdown filter
$ds->column('role')
    ->sortable(true)
    ->header_filter('select');

// ---- Render ----------------------------------------------------------------

$driver = new TabulatorDriver();
$script = $driver->render_script($ds, '#users-table');