statistic filter player grafics wip
This commit is contained in:
1 parent
4de73f9275
commit
3bc956e0b9
5 files changed
+93
-29
No files matched your search
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Actions;
|
||||
|
||||
use App\Models\StatisticFixtures;
|
||||
|
||||
class LoadStatisticFixturesMatchOptions
|
||||
{
|
||||
public static function load($league_id)
|
||||
{
|
||||
if (! $league_id) {
|
||||
return [];
|
||||
}
|
||||
$res = StatisticFixtures::where('league_id', $league_id)->get();
|
||||
|
||||
foreach ($res as $val) {
|
||||
$arr[$val->id] = $val->home->name.' vs '.$val->away->name;
|
||||
}
|
||||
|
||||
return $arr;
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Filament\Pages;
|
||||
|
||||
use App\Actions\LoadStatisticFixturesLeaguesOptions;
|
||||
use App\Actions\LoadStatisticFixturesMatchOptions;
|
||||
use App\Filament\Widgets\ChartMovingAverageEvent;
|
||||
use App\Filament\Widgets\ChartMovingAveragePlayer;
|
||||
use App\Filament\Widgets\ChartPunctualEvent;
|
||||
@@ -58,34 +59,39 @@ class Statistic extends BaseDashboard
|
||||
Select::make('league_id')
|
||||
->prefixIcon('phosphor-trophy')
|
||||
->options(fn () => LoadStatisticFixturesLeaguesOptions::load(1))
|
||||
->preload()
|
||||
->searchable()
|
||||
->live()
|
||||
->label('League')
|
||||
->afterStateUpdated(function (callable $set) {
|
||||
$set('team_id', null);
|
||||
$set('match_id', null);
|
||||
}),
|
||||
Select::make('match_id')
|
||||
->prefixIcon('icon-team')
|
||||
->options(function (Get $get) {
|
||||
return LoadStatisticFixturesMatchOptions::load($get('league_id'));
|
||||
})
|
||||
->afterStateUpdated(function (callable $set) {
|
||||
$set('team_id', null);
|
||||
$set('tm_player_id', null);
|
||||
})
|
||||
->live()
|
||||
->label('Events'),
|
||||
Select::make('team_id')
|
||||
->prefixIcon('icon-team')
|
||||
->options(function (Get $get) {
|
||||
if ($get('league_id')) {
|
||||
$res = StatisticFixtures::where('league_id', $get('league_id'))->get();
|
||||
if ($get('match_id')) {
|
||||
$res = StatisticFixtures::where('id', $get('match_id'))->get();
|
||||
$arr = [];
|
||||
foreach ($res as $value) {
|
||||
$arr[] = $value->home_id;
|
||||
$arr[] = $value->away_id;
|
||||
}
|
||||
|
||||
$arr = array_unique($arr);
|
||||
|
||||
return Element::query()->whereIn('id', $arr)->orderBy('name')->pluck('name', 'id');
|
||||
return Element::query()->whereIn('id', $arr)->pluck('name', 'id');
|
||||
}
|
||||
})
|
||||
->afterStateUpdated(function (callable $set) {
|
||||
$set('tm_player_id', null);
|
||||
})
|
||||
->preload()
|
||||
->searchable()
|
||||
->live()
|
||||
->label('Team'),
|
||||
|
||||
@@ -118,7 +124,7 @@ class Statistic extends BaseDashboard
|
||||
->color('gray')
|
||||
->action(fn (Set $set) => $set('end_date', null))
|
||||
),
|
||||
])->columns(5)
|
||||
])->columns(6)
|
||||
->columnSpanFull(),
|
||||
Grid::make([
|
||||
'default' => 2,
|
||||
@@ -233,8 +239,8 @@ class Statistic extends BaseDashboard
|
||||
StatsMedianAverage::make(),
|
||||
ChartPunctualEvent::make(),
|
||||
ChartMovingAverageEvent::make(),
|
||||
// ChartPunctualPlayer::make(),
|
||||
// ChartMovingAveragePlayer::make(),
|
||||
ChartPunctualPlayer::make(),
|
||||
ChartMovingAveragePlayer::make(),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ class LoadEvents
|
||||
|
||||
$league_id = (int) $filter['league_id'] ?? 0;
|
||||
|
||||
$match_id = (int) $filter['match_id'] ?? 0;
|
||||
|
||||
$team_id = (int) $filter['team_id'] ?? 0;
|
||||
|
||||
$tm_player_id = (int) $filter['tm_player_id'] ?? 0;
|
||||
@@ -28,20 +30,23 @@ class LoadEvents
|
||||
|
||||
$end = $filter['end_date'] ?? 0;
|
||||
|
||||
$statistic_type = $filter['statistic_type'] ?? 'gls';
|
||||
$statistic_type = $filter['statistic_type'];
|
||||
|
||||
$team_position = $filter['team_position'];
|
||||
|
||||
$player_on_field = $filter['player_on_field'];
|
||||
|
||||
$accuracy = (float) $filter['accuracy'];
|
||||
|
||||
if (! $league_id) {
|
||||
return [];
|
||||
}
|
||||
if (! $team_id) {
|
||||
return [];
|
||||
}
|
||||
if (! $statistic_type) {
|
||||
return [];
|
||||
|
||||
if ($statistic_type == 'none') {
|
||||
$statistic_type = 'gls';
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -18,23 +18,25 @@ class LoadPlayer
|
||||
|
||||
$league_id = (int) $filter['league_id'] ?? 0;
|
||||
|
||||
$match_id = (int) $filter['match_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'];
|
||||
|
||||
$player_on_field = $filter['player_on_field'];
|
||||
|
||||
$statistic_type = $filter['statistic_type'] ?? 0;
|
||||
|
||||
$accuracy = (float) $filter['accuracy'];
|
||||
|
||||
$similar_past_matches = $filter['similar_past_matches'] ?? 0;
|
||||
|
||||
$start = $filter['start_date'] ?? 0;
|
||||
|
||||
$end = $filter['end_date'] ?? 0;
|
||||
$similar_past_matches = $filter['similar_past_matches'];
|
||||
|
||||
if (! $league_id) {
|
||||
return [];
|
||||
@@ -46,6 +48,31 @@ class LoadPlayer
|
||||
return [];
|
||||
}
|
||||
|
||||
if ($statistic_type == 'none') {
|
||||
$statistic_type = 'gls';
|
||||
}
|
||||
|
||||
/**
|
||||
* IF WITH SIMILAR_PAST_MATCHES
|
||||
*
|
||||
* 'none' => 'None',
|
||||
* 'league' => 'League',
|
||||
* 'all' => 'All Database',
|
||||
*/
|
||||
// $handicap_range = 0;
|
||||
// $total_range = 0;
|
||||
// if ($similar_past_matches != 'none') {
|
||||
// $res = StatisticFixtures::where('id', (int) $match_id)->first();
|
||||
|
||||
// $exp_handicap = $res->exp_away - $res->exp_home;
|
||||
|
||||
// $exp_total = $res->exp_away + $res->exp_home;
|
||||
|
||||
// $handicap_range = [$exp_handicap - $accuracy, $exp_handicap + $accuracy];
|
||||
|
||||
// $total_range = [$exp_total - $accuracy, $exp_total + $accuracy];
|
||||
// }
|
||||
|
||||
/**
|
||||
* STATTISTIC DATA
|
||||
*/
|
||||
@@ -60,9 +87,9 @@ class LoadPlayer
|
||||
return $query->where('home_id', '=', $team_id)
|
||||
->orWhere('away_id', '=', $team_id);
|
||||
}
|
||||
})
|
||||
->when($matches_played, function ($query) use ($matches_played) {
|
||||
return $query->whereIn('match_id', $matches_played);
|
||||
// })
|
||||
// ->when($matches_played, function ($query) use ($matches_played) {
|
||||
// return $query->whereIn('match_id', $matches_played);
|
||||
})->when($start, function ($query) use ($start) {
|
||||
return $query->where('starttime', '>=', $start);
|
||||
})->when($end, function ($query) use ($end) {
|
||||
|
||||
@@ -55,13 +55,17 @@ class StatsMedianAverage extends StatsOverviewWidget
|
||||
$median = $arr[$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;
|
||||
|
||||
return [
|
||||
Stat::make('Number of events', $total),
|
||||
Stat::make('Average', round($summe / $total, 1)),
|
||||
Stat::make('Median', $median),
|
||||
Stat::make('Win: '.$data['results']['w'], number_format(Round::odd($total / $data['results']['w']), 2)),
|
||||
Stat::make('Draw: '.$data['results']['d'], number_format(Round::odd($total / $data['results']['d']), 2)),
|
||||
Stat::make('Lost: '.$data['results']['l'], number_format(Round::odd($total / $data['results']['l']), 2)),
|
||||
Stat::make('Win: '.$data['results']['w'], $win),
|
||||
Stat::make('Draw: '.$data['results']['d'], $draw),
|
||||
Stat::make('Lost: '.$data['results']['l'], $lost),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user