<?php

declare(strict_types=1);

use Fisharebest\Webtrees\I18N;

/**
 * @var array<int,string>                $colors
 * @var array<int,array{0:string,1:int}> $data
 * @var string                           $language
 * @var string                           $title
 */

$id   = 'google-chart-' . bin2hex(random_bytes(8));
$name = 'callback_' . bin2hex(random_bytes(12));

?>

<?php if (array_sum(array_map(intval(...), array_column($data, 1))) === 0) : ?>
    <?= I18N::translate('This information is not available.') ?>
<?php else : ?>
    <div id="<?= $id ?>"></div>
    <script>

    let <?= $name ?> = function () {
        statistics.drawPieChart(
            <?= json_encode($id, JSON_THROW_ON_ERROR) ?>,
            <?= json_encode($data, JSON_THROW_ON_ERROR) ?>,
            {
                title: <?= json_encode($title, JSON_THROW_ON_ERROR) ?>,

                // Note: "legend" needs to be defined completely as Object.assign does only a shallow merge
                legend: {
                    alignment: 'center',
                    labeledValueText: <?= json_encode($labeledValueText ?? 'value', JSON_THROW_ON_ERROR) ?>,
                    position: 'labeled'
                },
                colors: <?= json_encode($colors, JSON_THROW_ON_ERROR) ?>
            }
        );
    };

    if (document.readyState === "complete"
        || (document.readyState !== "loading" && !document.documentElement.doScroll)
    ) {
        statistics.init(<?= json_encode($language, JSON_THROW_ON_ERROR) ?>);
        statistics.addCallback(<?= $name ?>);
    } else {
        document.addEventListener("DOMContentLoaded", function () {
            statistics.init(<?= json_encode($language, JSON_THROW_ON_ERROR) ?>);
            statistics.addCallback(<?= $name ?>);
        });
    }

    </script>
<?php endif; ?>
