Files
nuhodds_fi4/app/Filament/Widgets/MedianAverageWidget.php
T
2026-05-21 16:39:34 +02:00

50 lines
1.1 KiB
PHP

<?php
namespace App\Filament\Widgets;
use App\Actions\Statistics\LoadEvents;
use Filament\Widgets\Concerns\InteractsWithPageFilters;
use Filament\Widgets\StatsOverviewWidget;
use Filament\Widgets\StatsOverviewWidget\Stat;
class MedianAverageWidget extends StatsOverviewWidget
{
use InteractsWithPageFilters;
protected function getStats(): array
{
$data = LoadEvents::load($this->filters);
if (! isset($data['datasets'][0])) {
return [];
}
$arr = $data['datasets'][0]['data'];
$total = count($arr);
$summe = array_sum($arr);
if (! $total) {
return [];
}
if ($total % 2 == 0) {
// even
$m = $total / 2;
$m1 = floor($m);
$m2 = ceil($m);
$median = round(($arr[$m1] + $arr[$m2]) / 2, 2);
} else {
// odd
$m = floor($total / 2) + 1;
$median = $arr[$m];
}
return [
Stat::make('Number of events', $total),
Stat::make('Average', round($summe / $total, 2)),
Stat::make('Median', $median),
];
}
}