design changes to save space

This commit is contained in:
salam committed 2026-05-31 12:13:22 +02:00
1 parent 4b06f98bee
commit fcbf718492
10 files changed
+319 -304

No files matched your search

+5 -1
View File
@@ -2,6 +2,7 @@
namespace App\Filament\Widgets;
use App\Filament\Widgets\Data\HelperStatisticType;
use App\Filament\Widgets\Data\LoadPlayer;
use Filament\Support\RawJs;
use Filament\Widgets\ChartWidget;
@@ -25,7 +26,10 @@ class ChartPlayer extends ChartWidget
$data = LoadPlayer::load($this->filters);
if ($data) {
$this->description = $data['player_name'];
$this->description = ucfirst(HelperStatisticType::get($this->filters));
if ($data['player_name']) {
$this->description .= ' '.$data['player_name'];
}
}
return $data;
+41 -78
View File
@@ -28,6 +28,8 @@ class LoadPlayer
$end = $filter['end_date'] ?? 0;
$statistic_type = $filter['statistic_type'];
$team_position = $filter['team_position'];
if (! $league_id) {
@@ -40,101 +42,62 @@ class LoadPlayer
return [];
}
if ($statistic_type == 'none') {
$statistic_type = 'gls';
}
$player_name = StatistikoDetail::where('tm_player_id', (int) $tm_player_id)->value('name');
$res = StatistikoPlayer::with('event.home')->with('event.away')->where('tm_player_id', (int) $tm_player_id)->get();
$res = StatistikoPlayer::with('event')->where('tm_player_id', (int) $tm_player_id)->get();
$labels = [];
$playing_date = [];
$events = [];
$datasets_goals = [];
$datasets_fouls = [];
$datasets_offside = [];
$datasets_card = [];
$datasets_shots_on = [];
$datasets_shots_off = [];
$datasets = [];
foreach ($res as $value) {
// dd($value);
$val = 0;
if (isset($value->event->starttime)) {
// $labels[] = $value->event->starttime->format('d.M.y');
$labels[] = round($value->event->starttime->diffInDays(Carbon::now()));
$events[] = $value->event->home->name.' vs '.$value->event->away->name;
$playing_date[] = $value->event->starttime->format('d. F Y H:i');
$datasets_goals[] = (int) $value->goals;
$datasets_fouls[] = (int) $value->fouls;
$datasets_offside[] = (int) $value->offsides;
$datasets_card[] = (int) $value->card_yellow + $value->card_red + $value->card_yellowred;
$datasets_shots_on[] = (int) $value->shots_on_target;
$datasets_shots_off[] = (int) $value->shots_off_target;
switch ($statistic_type) {
case 'gls':
$val = (int) $value->goals;
break;
case 'crn':
$val = (int) 0;
break;
case 'fls':
$val = (int) $value->fouls;
break;
case 'ofs':
$val = (int) $value->offsides;
break;
case 'crd':
$val = (int) $value->card_yellow + $value->card_red + $value->card_yellowred;
break;
case 'snt':
$val = (int) $value->shots_on_target;
break;
case 'tsh':
$val = (int) $value->shots_off_target;
break;
}
}
$datasets[] = $val;
}
$data = [
'datasets' => [
[
'label' => 'Goals',
'data' => $datasets_goals,
'dates' => $playing_date,
'events' => $events,
'label' => ucfirst($team_position),
'data' => $datasets,
'tension' => 0.5,
'borderColor' => '#fb2c36',
'backgroundColor' => '#fb2c36',
],
[
'label' => 'Fouls Commited',
'data' => $datasets_fouls,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#f0b100',
'backgroundColor' => '#f0b100',
'dates' => $playing_date,
'events' => $events,
],
[
'label' => 'Offside',
'data' => $datasets_offside,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#7ccf00',
'backgroundColor' => '#7ccf00',
],
[
'label' => 'Cards',
'data' => $datasets_card,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#00b8db',
'backgroundColor' => '#00b8db',
],
[
'label' => 'Shots On Target',
'data' => $datasets_shots_on,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#615fff',
'backgroundColor' => '#615fff',
],
[
'label' => 'Shots Off Target',
'data' => $datasets_shots_off,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#e12afb',
'backgroundColor' => '#e12afb',
'borderColor' => '#36A2EB',
],
],
'labels' => $labels,
@@ -1,107 +0,0 @@
<?php
namespace App\Filament\Widgets\Data;
use App\Models\StatistikoPlayer;
use Illuminate\Support\Carbon;
class LoadPlayer
{
public static $last_query = [];
public static function load($filter)
{
// dd($filter);
if (self::$last_query) {
return self::$last_query;
}
$league_id = (int) $filter['league_id'] ?? 0;
$team_id = (int) $filter['team_id'] ?? 0;
$tm_player_id = (int) $filter['tm_player_id'] ?? 0;
$start = $filter['start_date'] ?? 0;
$end = $filter['end_date'] ?? 0;
$statistic_type = $filter['statistic_type'];
$team_position = $filter['team_position'];
if (! $league_id) {
return [];
}
if (! $team_id) {
return [];
}
if (! $tm_player_id) {
return [];
}
if ($statistic_type == 'none') {
$statistic_type = 'gls';
}
$res = StatistikoPlayer::with('event')->where('tm_player_id', (int) $tm_player_id)->get();
$labels = [];
$datasets = [];
foreach ($res as $value) {
// dd($value);
$val = 0;
if (isset($value->event->starttime)) {
// $labels[] = $value->event->starttime->format('d.M.y');
$labels[] = round($value->event->starttime->diffInDays(Carbon::now()));
switch ($statistic_type) {
case 'gls':
$val = (int) $value->goals;
break;
case 'crn':
$val = (int) 0;
break;
case 'fls':
$val = (int) $value->fouls;
break;
case 'ofs':
$val = (int) $value->offsides;
break;
case 'crd':
$val = (int) $value->card_yellow + $value->card_red + $value->card_yellowred;
break;
case 'snt':
$val = (int) $value->shots_on_target;
break;
case 'tsh':
$val = (int) $value->shots_off_target;
break;
}
}
$datasets[] = $val;
}
$data = [
'datasets' => [
[
'label' => ucfirst($team_position),
'data' => $datasets,
'tension' => 0.5,
'borderColor' => '#36A2EB',
],
],
'labels' => $labels,
];
self::$last_query = $data;
return $data;
}
}
@@ -0,0 +1,148 @@
<?php
namespace App\Filament\Widgets\Data;
use App\Models\StatistikoDetail;
use App\Models\StatistikoPlayer;
use Illuminate\Support\Carbon;
class LoadPlayerMulti
{
public static $last_query = [];
public static function load($filter)
{
// dd($filter);
if (self::$last_query) {
return self::$last_query;
}
$league_id = (int) $filter['league_id'] ?? 0;
$team_id = (int) $filter['team_id'] ?? 0;
$tm_player_id = (int) $filter['tm_player_id'] ?? 0;
$start = $filter['start_date'] ?? 0;
$end = $filter['end_date'] ?? 0;
$team_position = $filter['team_position'];
if (! $league_id) {
return [];
}
if (! $team_id) {
return [];
}
if (! $tm_player_id) {
return [];
}
$player_name = StatistikoDetail::where('tm_player_id', (int) $tm_player_id)->value('name');
$res = StatistikoPlayer::with('event.home')->with('event.away')->where('tm_player_id', (int) $tm_player_id)->get();
$labels = [];
$playing_date = [];
$events = [];
$datasets_goals = [];
$datasets_fouls = [];
$datasets_offside = [];
$datasets_card = [];
$datasets_shots_on = [];
$datasets_shots_off = [];
foreach ($res as $value) {
if (isset($value->event->starttime)) {
$labels[] = round($value->event->starttime->diffInDays(Carbon::now()));
$events[] = $value->event->home->name.' vs '.$value->event->away->name;
$playing_date[] = $value->event->starttime->format('d. F Y H:i');
$datasets_goals[] = (int) $value->goals;
$datasets_fouls[] = (int) $value->fouls;
$datasets_offside[] = (int) $value->offsides;
$datasets_card[] = (int) $value->card_yellow + $value->card_red + $value->card_yellowred;
$datasets_shots_on[] = (int) $value->shots_on_target;
$datasets_shots_off[] = (int) $value->shots_off_target;
}
}
$data = [
'datasets' => [
[
'label' => 'Goals',
'data' => $datasets_goals,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#fb2c36',
'backgroundColor' => '#fb2c36',
],
[
'label' => 'Fouls Commited',
'data' => $datasets_fouls,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#f0b100',
'backgroundColor' => '#f0b100',
'dates' => $playing_date,
'events' => $events,
],
[
'label' => 'Offside',
'data' => $datasets_offside,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#7ccf00',
'backgroundColor' => '#7ccf00',
],
[
'label' => 'Cards',
'data' => $datasets_card,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#00b8db',
'backgroundColor' => '#00b8db',
],
[
'label' => 'Shots On Target',
'data' => $datasets_shots_on,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#615fff',
'backgroundColor' => '#615fff',
],
[
'label' => 'Shots Off Target',
'data' => $datasets_shots_off,
'dates' => $playing_date,
'events' => $events,
'tension' => 0.5,
'borderColor' => '#e12afb',
'backgroundColor' => '#e12afb',
],
],
'labels' => $labels,
'player_name' => $player_name,
];
self::$last_query = $data;
return $data;
}
}
+47 -35
View File
@@ -24,7 +24,8 @@ class StatsMedianAverage extends StatsOverviewWidget
public function getColumns(): int|array
{
return [
'md' => 3,
'default' => 2,
'sm' => 3,
'xl' => 6,
];
}
@@ -39,67 +40,78 @@ class StatsMedianAverage extends StatsOverviewWidget
return [];
}
$arr = $data['datasets'][0]['data'];
$arr2 = $data['datasets'][1]['data'];
$total = count($arr);
$summe = array_sum($arr);
$summe2 = array_sum($arr2);
$arr_home = $data['datasets'][0]['data'];
$arr_away = $data['datasets'][1]['data'];
$total_home = count($arr_home);
$total_away = count($arr_away);
$summe_home = array_sum($arr_home);
$summe_away = array_sum($arr_away);
$home_team = $data['home_team'];
$away_team = $data['away_team'];
if (! $total) {
if (! $total_home) {
return [];
}
// if (! $total_home || ! $total_away) {
// return [];
// }
sort($arr);
sort($arr2);
sort($arr_home);
sort($arr_away);
if ($total % 2 == 0) {
if ($total_home % 2 == 0) {
// even
$m = $total / 2;
$m = $total_home / 2;
$m1 = floor($m);
$m2 = ceil($m);
$median = round(($arr[$m1] + $arr[$m2]) / 2, 2);
$median2 = round(($arr2[$m1] + $arr2[$m2]) / 2, 2);
$median_home = round(($arr_home[$m1] + $arr_home[$m2]) / 2, 2);
$m = $total_away / 2;
$m1 = floor($m);
$m2 = ceil($m);
$median_away = round(($arr_away[$m1] + $arr_away[$m2]) / 2, 2);
} else {
// odd
$m = floor($total / 2);
$median = $arr[$m];
$median2 = $arr2[$m];
$m = $total_home / 2;
$median_home = $arr_home[$m];
$m = floor($total_away / 2);
$median_away = $arr_away[$m];
}
$win = $data['results']['w'] ? number_format(Round::odd($total / $data['results']['w']), 2) : 0;
$draw = $data['results']['d'] ? number_format(Round::odd($total / $data['results']['d']), 2) : 0;
$lost = $data['results']['l'] ? number_format(Round::odd($total / $data['results']['l']), 2) : 0;
$win = $data['results']['w'] ? number_format(Round::odd($total_home / $data['results']['w']), 2) : 0;
$draw = $data['results']['d'] ? number_format(Round::odd($total_home / $data['results']['d']), 2) : 0;
$lost = $data['results']['l'] ? number_format(Round::odd($total_home / $data['results']['l']), 2) : 0;
return [
Stat::make('Number of events', $total)->extraAttributes([
'class' => 'text-xl bg-green-100 dark:bg-green-950 border border-green-300 dark:border-green-800',
Stat::make('stat1', 'stat1')->view('filament.resources.events.widgets.statistic-regular', [
'titel' => 'Number of events',
'value' => $total_home,
]),
Stat::make('Average', 'Average')->view('filament.resources.events.widgets.statistic-average', [
Stat::make('stat2', 'stat2')->view('filament.resources.events.widgets.statistic-average', [
'titel' => 'Average '.$statistic_type,
'infavour' => number_format($summe / $total, 1),
'against' => number_format($summe2 / $total, 1),
'value1' => number_format($summe_home / $total_home, 1),
'value2' => number_format($summe_away / $total_away, 1),
'home' => $home_team,
'away' => $away_team,
]),
Stat::make('Median', 'Median')->view('filament.resources.events.widgets.statistic-average', [
Stat::make('stat3', 'stat3')->view('filament.resources.events.widgets.statistic-average', [
'titel' => 'Median '.$statistic_type,
'infavour' => $median,
'against' => $median2,
'value1' => $median_home,
'value2' => $median_away,
'home' => $home_team,
'away' => $away_team,
]),
Stat::make('Win: '.$data['results']['w'], $win)
->extraAttributes([
'class' => 'bg-green-100 dark:bg-green-950 border border-green-300 dark:border-green-800',
]),
Stat::make('Draw: '.$data['results']['d'], $draw)->extraAttributes([
'class' => 'bg-green-100 dark:bg-green-950 border border-green-300 dark:border-green-800',
Stat::make('stat4', 'stat4')->view('filament.resources.events.widgets.statistic-regular', [
'titel' => 'Win: '.$data['results']['w'],
'value' => $win,
]),
Stat::make('Lost: '.$data['results']['l'], $lost)->extraAttributes([
'class' => 'bg-green-100 dark:bg-green-950 border border-green-300 dark:border-green-800',
Stat::make('stat5', 'stat5')->view('filament.resources.events.widgets.statistic-regular', [
'titel' => 'Draw: '.$data['results']['d'],
'value' => $draw,
]),
Stat::make('stat6', 'stat6')->view('filament.resources.events.widgets.statistic-regular', [
'titel' => 'Lost: '.$data['results']['l'],
'value' => $lost,
]),
];
}