import $ from 'jquery';
import 'datatables.net-bs5';

$(function () {
    const $table = $('#admUsedResourcesTable');
    if (!$table.length) {
        return;
    }

    const dataUrl = String($table.data('url') ?? '');

    const formatBytes = (bytes: number): string => {
        if (!Number.isFinite(bytes) || bytes <= 0) {
            return '0 B';
        }

        const units = ['B', 'KB', 'MB', 'GB', 'TB'];
        const exponent = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
        const value = bytes / (1024 ** exponent);
        const fractionDigits = exponent === 0 ? 0 : 2;

        return `${value.toFixed(fractionDigits)} ${units[exponent]}`;
    };

    $table.DataTable({
        processing: true,
        serverSide: true,
        paging: true,
        ordering: true,
        searching: true,
        order: [[7, 'desc']],
        ajax: {
            url: dataUrl,
            method: 'GET',
        },
        columns: [
            {data: 'company'},
            {data: 'name'},
            {data: 'license'},
            {data: 'sms_sent'},
            {
                data: 'upload_storage_bytes',
                render: (data: number) => formatBytes(Number(data || 0)),
            },
            {
                data: 'collection_storage_bytes',
                render: (data: number) => formatBytes(Number(data || 0)),
            },
            {
                data: 'sign_storage_bytes',
                render: (data: number) => formatBytes(Number(data || 0)),
            },
            {
                data: 'total_storage_bytes',
                render: (data: number) => formatBytes(Number(data || 0)),
            },
        ],
    });
});

