From d519cfdb405a508b943df4b0dac78ddfef6d4092 Mon Sep 17 00:00:00 2001 From: salam Date: Sat, 23 May 2026 18:25:25 +0200 Subject: [PATCH] wip --- app/Filament/Widgets/StatsMedianAverage.php | 7 +- app/Utilities/Round.php | 82 +++++++++++++++++++++ 2 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 app/Utilities/Round.php diff --git a/app/Filament/Widgets/StatsMedianAverage.php b/app/Filament/Widgets/StatsMedianAverage.php index 961823da..9c1372e9 100644 --- a/app/Filament/Widgets/StatsMedianAverage.php +++ b/app/Filament/Widgets/StatsMedianAverage.php @@ -3,6 +3,7 @@ namespace App\Filament\Widgets; use App\Filament\Widgets\Data\LoadEvents; +use App\Utilities\Round; use Filament\Widgets\Concerns\InteractsWithPageFilters; use Filament\Widgets\StatsOverviewWidget; use Filament\Widgets\StatsOverviewWidget\Stat; @@ -58,9 +59,9 @@ class StatsMedianAverage extends StatsOverviewWidget Stat::make('Number of events', $total), Stat::make('Average', round($summe / $total, 1)), Stat::make('Median', $median), - Stat::make('Win', $data['results']['w']), - Stat::make('Draw', $data['results']['d']), - Stat::make('Lost', $data['results']['l']), + Stat::make('Win', $data['results']['w'])->description(Round::odd($total / $data['results']['w'])), + Stat::make('Draw', $data['results']['d'])->description(Round::odd($total / $data['results']['d'])), + Stat::make('Lost', $data['results']['l'])->description(Round::odd($total / $data['results']['l'])), ]; } } diff --git a/app/Utilities/Round.php b/app/Utilities/Round.php new file mode 100644 index 00000000..a95f0b8b --- /dev/null +++ b/app/Utilities/Round.php @@ -0,0 +1,82 @@ + 1 && $value <= 3) { + // to 0.01 + $fac = pow(10, 2); + $value = round($value * $fac) / $fac; + } elseif ($value > 3 && $value <= 5) { + // to 0.05, + $value *= 20; + $value = ($value - floor($value) > 0.5) ? ceil($value) : floor($value); + $value /= 20; + $fac = pow(10, 2); + $value = round($value * $fac) / $fac; + } elseif ($value > 5 && $value <= 10) { + // to 0.1 + $fac = pow(10, 1); + $value = round($value * $fac) / $fac; + } elseif ($value > 10 && $value <= 20) { + // to 0.25 + $value *= 4; + $value = ($value - floor($value) > 0.5) ? ceil($value) : floor($value); + $value /= 4; + $fac = pow(10, 2); + $value = round($value * $fac) / $fac; + } elseif ($value > 20 && $value < 30) { + // to 0.5 + $value *= 2; + $value = ($value - floor($value) > 0.5) ? ceil($value) : floor($value); + $value /= 2; + $fac = pow(10, 2); + $value = round($value * $fac) / $fac; + } elseif ($value > 30 && $value < 75) { + // to => 1 + $value = ($value - floor($value) > 0.5) ? ceil($value) : floor($value); + } elseif ($value > 75 && $value < 150) { + // to => 5 + $value /= 5; + $value = ($value - floor($value) > 0.5) ? ceil($value) : floor($value); + $value *= 5; + } elseif ($value > 150 && $value < 300) { + // to => 10 + $value /= 10; + $value = ($value - floor($value) > 0.5) ? ceil($value) : floor($value); + $value *= 10; + } elseif ($value > 300 && $value < 500) { + // to => 25 + $value /= 25; + $value = ($value - floor($value) > 0.5) ? ceil($value) : floor($value); + $value *= 25; + } elseif ($value > 500 && $value < 1000) { + // to => 50 + $value /= 50; + $value = ($value - floor($value) > 0.5) ? ceil($value) : floor($value); + $value *= 50; + } else { + // to => 50 + $value /= 100; + $value = ($value - floor($value) > 0.5) ? ceil($value) : floor($value); + $value *= 100; + } + } + $value = round($value * 100) / 100; + // min max quote + if ($value < 1.01) { + $value = 1; + } + + return $value; + } +}