<?php
/**
 * Example 06 — Multi-column Sorting
 *
 * Shows how to set up default multi-column sorting. Users can also
 * hold Shift and click column headers to sort by multiple columns
 * interactively.
 */

declare(strict_types=1);

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

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

$ds = new DataSet($ordersTable);

$ds->columns(['order_number', 'customer', 'status', 'total', 'created_at']);
$ds->ajax_url('/api/orders');

// Make columns sortable
$ds->column('customer')->sortable(true);
$ds->column('status')->sortable(true);
$ds->column('total')->sortable(true);
$ds->column('created_at')->sortable(true);

// Default multi-column sort: first by status ascending, then by date descending.
// Call default_sort() multiple times to add sort levels.
$ds->default_sort('status', 'asc');
$ds->default_sort('created_at', 'desc');

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

$driver = new TabulatorDriver();
$config = $driver->render($ds);

// The config will contain:
//   "initialSort": [
//       { "column": "status", "dir": "asc" },
//       { "column": "created_at", "dir": "desc" }
//   ]

$script = $driver->render_script($ds, '#orders-table');