diff --git a/app/Filament/Pages/Statistic.php b/app/Filament/Pages/Statistic.php index 016749eb..9c1876fb 100644 --- a/app/Filament/Pages/Statistic.php +++ b/app/Filament/Pages/Statistic.php @@ -233,6 +233,7 @@ class Statistic extends BaseDashboard 'all' => 'All', 'lineup' => 'Lineup', 'substituted' => 'Substituted', + 'notplayed' => 'Not Played', ]) ->live(), Select::make('season') diff --git a/app/Filament/Widgets/Data/LoadEvents.php b/app/Filament/Widgets/Data/LoadEvents.php index 4d29a413..3cac17e8 100644 --- a/app/Filament/Widgets/Data/LoadEvents.php +++ b/app/Filament/Widgets/Data/LoadEvents.php @@ -111,10 +111,14 @@ class LoadEvents return $query->where('lineup', 'T'); case 'substituted': return $query->where('lineup', 'P'); + case 'notplayed': + return $query->where('minutes_played', 0); } }) ->pluck('match_id')->toArray(); + // dd($matches_played); + $description = ' with ' . StatistikoDetail::where('tm_player_id', (int) $tm_player_id)->value('name') . ' (' . \count($matches_played) . ')'; if (! $matches_played) { @@ -612,10 +616,10 @@ class LoadEvents $average_league = $media_league_h ? round(array_sum($media_league_h) / \count($media_league_h), 2):0; break; case 'away': - $average_league = $media_league_h ? round(array_sum($media_league_a) / \count($media_league_a), 2):0; + $average_league = $media_league_a ? round(array_sum($media_league_a) / \count($media_league_a), 2):0; break; default: - $media_league = $media_league_a + $media_league_h; + $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; } diff --git a/app/Filament/Widgets/StatsMedianAverage.php b/app/Filament/Widgets/StatsMedianAverage.php index 4dda5316..c01a4608 100644 --- a/app/Filament/Widgets/StatsMedianAverage.php +++ b/app/Filament/Widgets/StatsMedianAverage.php @@ -39,20 +39,6 @@ class StatsMedianAverage extends StatsOverviewWidget $arr_home = []; $arr_away = []; - $max_boxes = 6; - foreach ($data['datasets'] as $value) { - if ($value['label'] == "Average League") { - $max_boxes = 7; - } - } - - $this->columns = [ - 'default' => 1, - 'sm' => 2, - 'lg' => 4, - 'xl' => $max_boxes, - ]; - $statistic_type = HelperStatisticType::get($this->filters); if (! isset($data['datasets'][0])) { @@ -103,26 +89,60 @@ class StatsMedianAverage extends StatsOverviewWidget else $value_away = 0; + $max_boxes = 4; + $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)"]); foreach ($data['datasets'] as $value) { 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', $total_home, 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; } } $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($data['similar_past_matches'] != 'none' ? '1' : 'Win: ' . $data['results']['w'], new HtmlString('
' . $win . '
'))->extraAttributes(['x-init' => "animate('number-of-win', $win, 1)"]); - $boxes[] = Stat::make($data['similar_past_matches'] != 'none' ? 'X' : 'Draw: ' . $data['results']['d'], new HtmlString('
' . $draw . '
'))->extraAttributes(['x-init' => "animate('number-of-draw', $draw, 1)"]); - $boxes[] = Stat::make($data['similar_past_matches'] != 'none' ? '2' : 'Lost: ' . $data['results']['l'], new HtmlString('
' . $lost . '
'))->extraAttributes(['x-init' => "animate('number-of-lost', $lost, 1)"]); + + $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)"]); + // $boxes[] = Stat::make($data['similar_past_matches'] != 'none' ? 'X' : 'Draw: ' . $data['results']['d'], new HtmlString('
' . $draw . '
'))->extraAttributes(['x-init' => "animate('number-of-draw', $draw, 1)"]); + // $boxes[] = Stat::make($data['similar_past_matches'] != 'none' ? '2' : 'Lost: ' . $data['results']['l'], new HtmlString('
' . $lost . '
'))->extraAttributes(['x-init' => "animate('number-of-lost', $lost, 1)"]); + + $this->columns = [ + 'default' => 1, + 'sm' => 3, + 'xl' => $max_boxes, + ]; return $boxes; } + protected function templateOdds(&$data, float $win, float $draw, float $lost): HtmlString + { + if($data['similar_past_matches'] != 'none') { + $name_win = '1 ('.$data['results']['w'].')'; + $name_draw = 'X ('.$data['results']['d'].')'; + $name_lost = '2 ('.$data['results']['l'].')'; + } + else { + $name_win = 'Win ('.$data['results']['w'].')'; + $name_draw = 'Draw ('.$data['results']['d'].')'; + $name_lost = 'Lost ('.$data['results']['l'].')'; + } + return new HtmlString('
+ '.number_format($win, 2).' + '.number_format($draw, 2).' + '.number_format($lost, 2).' + '.$name_win.' + '.$name_draw.' + '.$name_lost.' +
'); + } + protected function template(string $home_id, string $away_id, string $home_name, string $away_name): HtmlString { - return new HtmlString('
+ return new HtmlString('
0 0 ' . $home_name . '