From 59e7cbd081b53799a8d854f1d43f06d53e65db51 Mon Sep 17 00:00:00 2001 From: salam Date: Thu, 18 Jun 2026 12:15:43 +0200 Subject: [PATCH] wip --- app/Filament/Widgets/Data/LoadEvents.php | 68 ++++++++++++--------- app/Filament/Widgets/StatsMedianAverage.php | 22 ++++--- 2 files changed, 52 insertions(+), 38 deletions(-) diff --git a/app/Filament/Widgets/Data/LoadEvents.php b/app/Filament/Widgets/Data/LoadEvents.php index 3cac17e8..c60c42b6 100644 --- a/app/Filament/Widgets/Data/LoadEvents.php +++ b/app/Filament/Widgets/Data/LoadEvents.php @@ -524,13 +524,16 @@ class LoadEvents } else { $season = date('y') - 1 . '/' . date('Y'); } + $res = StatistikoEvent::where('league_id', $league_id) ->where('season', $season) ->orderBy('starttime', 'ASC') ->get(); + if ($res) { - $media_team = []; + $media_team_h = []; + $media_team_a = []; $media_league_h = []; $media_league_a = []; @@ -546,32 +549,32 @@ class LoadEvents if ($team_id == $value['home_id'] or $team_id == $value['away_id']) { switch ($statistic_type) { case 'gls': - $media_team[] = (int) $value['gls_h']; - $media_team[] = (int) $value['gls_a']; + $media_team_h[] = (int) $value['gls_h']; + $media_team_a[] = (int) $value['gls_a']; break; case 'crn': - $media_team[] = (int) $value['crn_h']; - $media_team[] = (int) $value['crn_a']; + $media_team_h[] = (int) $value['crn_h']; + $media_team_a[] = (int) $value['crn_a']; break; case 'fls': - $media_team[] = (int) $value['fls_h']; - $media_team[] = (int) $value['fls_a']; + $media_team_h[] = (int) $value['fls_h']; + $media_team_a[] = (int) $value['fls_a']; break; case 'ofs': - $media_team[] = (int) $value['ofs_h']; - $media_team[] = (int) $value['ofs_a']; + $media_team_h[] = (int) $value['ofs_h']; + $media_team_a[] = (int) $value['ofs_a']; break; case 'crd': - $media_team[] = (int) $value['crd_h']; - $media_team[] = (int) $value['crd_a']; + $media_team_h[] = (int) $value['crd_h']; + $media_team_a[] = (int) $value['crd_a']; break; case 'snt': - $media_team[] = (int) $value['snt_h']; - $media_team[] = (int) $value['snt_a']; + $media_team_h[] = (int) $value['snt_h']; + $media_team_a[] = (int) $value['snt_a']; break; case 'tsh': - $media_team[] = (int) $value['tsh_h']; - $media_team[] = (int) $value['tsh_a']; + $media_team_h[] = (int) $value['tsh_h']; + $media_team_a[] = (int) $value['tsh_a']; break; } } @@ -607,21 +610,21 @@ class LoadEvents break; } } - $average_team = 0; - if ($team_id && $media_team) - $average_team = round(array_sum($media_team) / \count($media_team), 2); - switch ($team_position) { - case 'home': - $average_league = $media_league_h ? round(array_sum($media_league_h) / \count($media_league_h), 2):0; - break; - case 'away': - $average_league = $media_league_a ? round(array_sum($media_league_a) / \count($media_league_a), 2):0; - break; - default: - $media_league = array_merge($media_league_a, $media_league_h); - $average_league = $media_league ? round(array_sum($media_league) / \count($media_league), 2) : 0; - break; + $average_team = 0; + $average_league = 0; + if ($team_id && $media_team_h){ + $sum = array_sum($media_team_h) + array_sum($media_team_a); + $count = count($media_team_h) + count($media_team_a); + $average_team = round($sum / $count, 2); + $average_team_h = round(array_sum($media_team_h) / count($media_team_h), 2); + $average_team_a = round(array_sum($media_team_a) / count($media_team_a), 2); + + $average_league_h = $media_league_h ? round(array_sum($media_league_h) / \count($media_league_h), 2):0; + $average_league_a = $media_league_a ? round(array_sum($media_league_a) / \count($media_league_a), 2):0; + + $media_league = array_merge($media_league_a, $media_league_h); + $average_league = $media_league ? round(array_sum($media_league) / \count($media_league), 2) : 0; } @@ -639,9 +642,11 @@ class LoadEvents 'borderDash' => [5, 5], 'pointStyle' => false, 'hidden' => false, + 'average_team_h' => $average_team_h, + 'average_team_a' => $average_team_a, ]; } - if ($average_league) + if ($average_league){ $data['datasets'][] = [ 'label' => 'Average League', 'events' => $events, @@ -652,7 +657,10 @@ class LoadEvents 'borderDash' => [5, 5], 'pointStyle' => false, 'hidden' => false, + 'average_league_h' => $average_league_h, + 'average_league_a' => $average_league_a, ]; + } } } diff --git a/app/Filament/Widgets/StatsMedianAverage.php b/app/Filament/Widgets/StatsMedianAverage.php index c01a4608..8cff42e4 100644 --- a/app/Filament/Widgets/StatsMedianAverage.php +++ b/app/Filament/Widgets/StatsMedianAverage.php @@ -93,16 +93,22 @@ class StatsMedianAverage extends StatsOverviewWidget $boxes = []; $boxes[] = Stat::make('Number', new HtmlString('
' . $total_home . '
'))->description('Events')->extraAttributes(['x-init' => "animate('number-of-events', $total_home, 0)"]); - $boxes[] = Stat::make('Average ' . $statistic_type, self::template('avhome', 'avaway', $home_team, $away_team))->description('Team ' . $team_position)->extraAttributes(['x-init' => "animate('avhome', $value_home); animate('avaway', $value_away, 0)"]); + $boxes[] = Stat::make('Average ' . $statistic_type, self::template('avhome', 'avaway', $home_team, $away_team))->description('Team ' . $team_position)->extraAttributes(['x-init' => "animate('avhome', $value_home); animate('avaway', $value_away)"]); foreach ($data['datasets'] as $value) { + if ($value['label'] == "Average Team") { + $av_home = $value['average_team_h'] ?? 0; + $av_away = $value['average_team_a'] ?? 0; + $boxes[] = Stat::make('Average ' . $statistic_type, self::template('av_team_home', 'av_team_away', 'Home', 'Away'))->description('League Season')->extraAttributes(['x-init' => "animate('av_team_home', $av_home); animate('av_team_away', $av_away)"]); + $max_boxes++; + } if ($value['label'] == "Average League") { - $str = $value['data'][0] ?? 0; - $boxes[] = Stat::make('Average ' . $statistic_type, new HtmlString('
' . $str . '
'))->description('League ' . $team_position)->extraAttributes(['x-init' => "animate('number-of-events', $str, 0)"]); - $max_boxes = 5; + $av_home = $value['average_league_h'] ?? 0; + $av_away = $value['average_league_a'] ?? 0; + $boxes[] = Stat::make('Average ' . $statistic_type, self::template('av_league_home', 'av_league_away', 'Home', 'Away'))->description('League Season')->extraAttributes(['x-init' => "animate('av_league_home', $av_home); animate('av_league_away', $av_away)"]); + $max_boxes++; } } $boxes[] = Stat::make('Median ' . $statistic_type, self::template('mehome', 'meaway', $home_team, $away_team))->description($team_position)->extraAttributes(['x-init' => "animate('mehome', $median_home); animate('meaway', $median_away, 0)"]); - $boxes[] = Stat::make('Odds', self::templateOdds($data, $win, $draw, $lost))->description($team_position)->extraAttributes(['x-init' => "animate('mehome', $median_home); animate('meaway', $median_away, 0)"]); // $boxes[] = Stat::make($data['similar_past_matches'] != 'none' ? '1' : 'Win: ' . $data['results']['w'], new HtmlString('
' . $win . '
'))->extraAttributes(['x-init' => "animate('number-of-win', $win, 1)"]); @@ -131,9 +137,9 @@ class StatsMedianAverage extends StatsOverviewWidget $name_lost = 'Lost ('.$data['results']['l'].')'; } return new HtmlString('
- '.number_format($win, 2).' - '.number_format($draw, 2).' - '.number_format($lost, 2).' + '.number_format($win, 2).' + '.number_format($draw, 2).' + '.number_format($lost, 2).' '.$name_win.' '.$name_draw.' '.$name_lost.'