resources/views/statistics/other/charts/geo.phtml
<?php
declare(strict_types=1);
use Fisharebest\Webtrees\I18N;
/**
* @var string $chart_color2
* @var string $chart_color3
* @var string $chart_title
* @var array<int,array<int|string|array<string,string>>> $data
* @var string $language
* @var string $region
*/
$id = 'google-chart-' . bin2hex(random_bytes(8));
$name = 'callback_' . bin2hex(random_bytes(12));
?>
<?php if (count($data) === 1) : ?>
<?= I18N::translate('This information is not available.') ?>
<?php else : ?>
<div class="d-grid mb-3">
<div class="card">
<div class="card-header">
<?= $chart_title ?>
</div>
<div class="card-body">
<div id="<?= $id ?>" title="<?= $chart_title ?>"></div>
</div>
</div>
</div>
<script>
let <?= $name ?> = function () {
statistics.drawGeoChart(
<?= json_encode($id, JSON_THROW_ON_ERROR) ?>,
<?= json_encode($data, JSON_THROW_ON_ERROR) ?>,
{
title: <?= json_encode($chart_title, JSON_THROW_ON_ERROR) ?>,
region: <?= json_encode($region, JSON_THROW_ON_ERROR) ?>,
colorAxis: {
colors: [
<?= json_encode('#' . $chart_color3, JSON_THROW_ON_ERROR) ?>,
<?= json_encode('#' . $chart_color2, 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; ?>