wip add wfl

This commit is contained in:
salam committed 2026-10-30 09:26:37 +01:00
1 parent a125dddb4c
commit bf5e06848a
17 files changed
+188 -43

No files matched your search

@@ -22,6 +22,7 @@ class StatistikoConfigsTable
'crd' => 'Cards', 'crd' => 'Cards',
'snt' => 'Shots On Target', 'snt' => 'Shots On Target',
'tsh' => 'Total Shots', 'tsh' => 'Total Shots',
'wfl' => 'Was Fouled',
'all' => 'Method B', 'all' => 'Method B',
}), }),
TextColumn::make('team')->badge() TextColumn::make('team')->badge()
@@ -54,6 +55,7 @@ class StatistikoConfigsTable
'crd' => 'Cards', 'crd' => 'Cards',
'snt' => 'Shots On Target', 'snt' => 'Shots On Target',
'tsh' => 'Total Shots', 'tsh' => 'Total Shots',
'wfl' => 'Was Fouled',
]), ]),
SelectFilter::make('team') SelectFilter::make('team')
->options([ ->options([
@@ -36,6 +36,8 @@ class EventsHistoryExporter extends Exporter
ExportColumn::make('tsh_a'), ExportColumn::make('tsh_a'),
ExportColumn::make('crd_h'), ExportColumn::make('crd_h'),
ExportColumn::make('crd_a'), ExportColumn::make('crd_a'),
ExportColumn::make('wfl_h'),
ExportColumn::make('wfl_a'),
ExportColumn::make('exp_home'), ExportColumn::make('exp_home'),
ExportColumn::make('exp_away'), ExportColumn::make('exp_away'),
ExportColumn::make('exp_handicap'), ExportColumn::make('exp_handicap'),
+14
View File
@@ -298,6 +298,18 @@ class Statistic extends BaseDashboard
$row[] = $data['tsh_liga_season']['home']; $row[] = $data['tsh_liga_season']['home'];
$row[] = $data['tsh_liga_season']['away']; $row[] = $data['tsh_liga_season']['away'];
$copystring .= implode(';', $row)."\n"; $copystring .= implode(';', $row)."\n";
$row = [];
$row = array_fill(0, 5, '');
$row[] = 'Was Fouled';
$row[] = $data['wfl']['home'];
$row[] = $data['wfl']['away'];
$row[] = $data['wfl_team']['home'];
$row[] = $data['wfl_team']['away'];
$row[] = $data['wfl_team_season']['home'];
$row[] = $data['wfl_team_season']['away'];
$row[] = $data['wfl_liga_season']['home'];
$row[] = $data['wfl_liga_season']['away'];
$copystring .= implode(';', $row)."\n";
return $copystring; return $copystring;
} }
@@ -479,6 +491,7 @@ class Statistic extends BaseDashboard
'crd' => 'phosphor-cards', 'crd' => 'phosphor-cards',
'snt' => 'phosphor-target', 'snt' => 'phosphor-target',
'tsh' => 'phosphor-chart-polar', 'tsh' => 'phosphor-chart-polar',
'wfl' => 'phosphor-first-aid-kit',
default => 'phosphor-soccer-ball', default => 'phosphor-soccer-ball',
}; };
}) })
@@ -492,6 +505,7 @@ class Statistic extends BaseDashboard
'crd' => 'Cards', 'crd' => 'Cards',
'snt' => 'Shots On Target', 'snt' => 'Shots On Target',
'tsh' => 'Total Shots', 'tsh' => 'Total Shots',
'wfl' => 'Was Fouled',
]); ]);
} }
@@ -34,9 +34,10 @@ class AverageLeagueSeason
ExpectationAverage::filter($result, 'liga', 'crd', $val->crd_h, $val->crd_a); ExpectationAverage::filter($result, 'liga', 'crd', $val->crd_h, $val->crd_a);
ExpectationAverage::filter($result, 'liga', 'snt', $val->snt_h, $val->snt_a); ExpectationAverage::filter($result, 'liga', 'snt', $val->snt_h, $val->snt_a);
ExpectationAverage::filter($result, 'liga', 'tsh', $val->tsh_h, $val->tsh_a); ExpectationAverage::filter($result, 'liga', 'tsh', $val->tsh_h, $val->tsh_a);
ExpectationAverage::filter($result, 'liga', 'wfl', $val->wfl_h, $val->wfl_a);
} }
$bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh']; $bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh', 'wfl'];
if ($result) { if ($result) {
foreach ($bets as $bet) { foreach ($bets as $bet) {
$expectations[$bet.'_liga_season']['home'] = round(array_sum($result['liga'][$bet]['home']) / \count($result['liga'][$bet]['home']), 1); $expectations[$bet.'_liga_season']['home'] = round(array_sum($result['liga'][$bet]['home']) / \count($result['liga'][$bet]['home']), 1);
@@ -55,6 +56,7 @@ class AverageLeagueSeason
$expectations['crd_liga_season']['name'] = 'Cards'; $expectations['crd_liga_season']['name'] = 'Cards';
$expectations['snt_liga_season']['name'] = 'Shots on Target'; $expectations['snt_liga_season']['name'] = 'Shots on Target';
$expectations['tsh_liga_season']['name'] = 'Total Shots'; $expectations['tsh_liga_season']['name'] = 'Total Shots';
$expectations['wfl_liga_season']['name'] = 'Was Fouled';
$expectations['active_season'] = $active_season; $expectations['active_season'] = $active_season;
} }
} }
@@ -72,6 +72,7 @@ class AverageTeam
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a); ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a); ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a); ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a);
ExpectationAverage::filter($result, 'team', 'wfl', $val->wfl_h, $val->wfl_a);
} elseif ($team_position == 'away' && $team_id == $val->away_id) { } elseif ($team_position == 'away' && $team_id == $val->away_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h); ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h); ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h);
@@ -80,6 +81,7 @@ class AverageTeam
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h); ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h); ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h); ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h);
ExpectationAverage::filter($result, 'team', 'wfl', $val->wfl_a, $val->wfl_h);
} else { } else {
if ($team_id == $val->home_id) { if ($team_id == $val->home_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_h, $val->gls_a); ExpectationAverage::filter($result, 'team', 'gls', $val->gls_h, $val->gls_a);
@@ -89,6 +91,7 @@ class AverageTeam
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a); ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a); ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a); ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a);
ExpectationAverage::filter($result, 'team', 'wfl', $val->wfl_h, $val->wfl_a);
} elseif ($team_id == $val->away_id) { } elseif ($team_id == $val->away_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h); ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h); ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h);
@@ -97,6 +100,7 @@ class AverageTeam
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h); ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h); ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h); ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h);
ExpectationAverage::filter($result, 'team', 'wfl', $val->wfl_a, $val->wfl_h);
} }
} }
} }
@@ -120,6 +124,7 @@ class AverageTeam
$expectations['crd_team']['name'] = 'Cards'; $expectations['crd_team']['name'] = 'Cards';
$expectations['snt_team']['name'] = 'Shots on Target'; $expectations['snt_team']['name'] = 'Shots on Target';
$expectations['tsh_team']['name'] = 'Total Shots'; $expectations['tsh_team']['name'] = 'Total Shots';
$expectations['wfl_team']['name'] = 'Was Fouled';
} }
} }
} }
@@ -47,6 +47,7 @@ class AverageTeamSeason
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a); ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a); ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a); ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a);
ExpectationAverage::filter($result, 'team', 'wfl', $val->wfl_h, $val->wfl_a);
} elseif ($team_position == 'away' && $team_id == $val->away_id) { } elseif ($team_position == 'away' && $team_id == $val->away_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h); ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h); ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h);
@@ -55,6 +56,7 @@ class AverageTeamSeason
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h); ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h); ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h); ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h);
ExpectationAverage::filter($result, 'team', 'wfl', $val->wfl_a, $val->wfl_h);
} else { } else {
if ($team_id == $val->home_id) { if ($team_id == $val->home_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_h, $val->gls_a); ExpectationAverage::filter($result, 'team', 'gls', $val->gls_h, $val->gls_a);
@@ -64,6 +66,7 @@ class AverageTeamSeason
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a); ExpectationAverage::filter($result, 'team', 'crd', $val->crd_h, $val->crd_a);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a); ExpectationAverage::filter($result, 'team', 'snt', $val->snt_h, $val->snt_a);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a); ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_h, $val->tsh_a);
ExpectationAverage::filter($result, 'team', 'wfl', $val->wfl_h, $val->wfl_a);
} elseif ($team_id == $val->away_id) { } elseif ($team_id == $val->away_id) {
ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h); ExpectationAverage::filter($result, 'team', 'gls', $val->gls_a, $val->gls_h);
ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h); ExpectationAverage::filter($result, 'team', 'crn', $val->crn_a, $val->crn_h);
@@ -72,11 +75,12 @@ class AverageTeamSeason
ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h); ExpectationAverage::filter($result, 'team', 'crd', $val->crd_a, $val->crd_h);
ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h); ExpectationAverage::filter($result, 'team', 'snt', $val->snt_a, $val->snt_h);
ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h); ExpectationAverage::filter($result, 'team', 'tsh', $val->tsh_a, $val->tsh_h);
ExpectationAverage::filter($result, 'team', 'wfl', $val->wfl_a, $val->wfl_h);
} }
} }
} }
$bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh']; $bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh', 'wfl'];
if ($result) { if ($result) {
foreach ($bets as $bet) { foreach ($bets as $bet) {
$expectations[$bet.'_team_season']['home'] = round(array_sum($result['team'][$bet]['home']) / \count($result['team'][$bet]['home']), 1); $expectations[$bet.'_team_season']['home'] = round(array_sum($result['team'][$bet]['home']) / \count($result['team'][$bet]['home']), 1);
@@ -95,6 +99,7 @@ class AverageTeamSeason
$expectations['crd_team_season']['name'] = 'Cards'; $expectations['crd_team_season']['name'] = 'Cards';
$expectations['snt_team_season']['name'] = 'Shots on Target'; $expectations['snt_team_season']['name'] = 'Shots on Target';
$expectations['tsh_team_season']['name'] = 'Total Shots'; $expectations['tsh_team_season']['name'] = 'Total Shots';
$expectations['wfl_team_season']['name'] = 'Was Fouled';
$expectations['active_season'] = $season; $expectations['active_season'] = $season;
} }
} }
@@ -50,6 +50,9 @@ class ExpectationsBox3
// TSH // TSH
$tmp['tsh']['home'] += $val->tsh_h; $tmp['tsh']['home'] += $val->tsh_h;
$tmp['tsh']['away'] += $val->tsh_a; $tmp['tsh']['away'] += $val->tsh_a;
// WFL
$tmp['wfl']['home'] += $val->wfl_h;
$tmp['wfl']['away'] += $val->wfl_a;
} }
foreach ($bets as $bet) { foreach ($bets as $bet) {
$expectations[$bet]['home'] = round($tmp[$bet]['home'] / $events, 1); $expectations[$bet]['home'] = round($tmp[$bet]['home'] / $events, 1);
@@ -89,6 +92,10 @@ class ExpectationsBox3
$tmp['tsh']['home']['events']['home']++; $tmp['tsh']['home']['events']['home']++;
$tmp['tsh']['home']['scored']['home'] += $val->tsh_h; $tmp['tsh']['home']['scored']['home'] += $val->tsh_h;
$tmp['tsh']['home']['conceded']['home'] += $val->tsh_a; $tmp['tsh']['home']['conceded']['home'] += $val->tsh_a;
// TSH
$tmp['wfl']['home']['events']['home']++;
$tmp['wfl']['home']['scored']['home'] += $val->wfl_h;
$tmp['wfl']['home']['conceded']['home'] += $val->wfl_a;
} }
// away home // away home
@@ -121,6 +128,10 @@ class ExpectationsBox3
$tmp['tsh']['away']['events']['home']++; $tmp['tsh']['away']['events']['home']++;
$tmp['tsh']['away']['scored']['home'] += $val->tsh_h; $tmp['tsh']['away']['scored']['home'] += $val->tsh_h;
$tmp['tsh']['away']['conceded']['home'] += $val->tsh_a; $tmp['tsh']['away']['conceded']['home'] += $val->tsh_a;
// WFL
$tmp['wfl']['away']['events']['home']++;
$tmp['wfl']['away']['scored']['home'] += $val->wfl_h;
$tmp['wfl']['away']['conceded']['home'] += $val->wfl_a;
} }
// home away // home away
if ($match->home_id == $val->away_id) { if ($match->home_id == $val->away_id) {
@@ -152,6 +163,10 @@ class ExpectationsBox3
$tmp['tsh']['home']['events']['away']++; $tmp['tsh']['home']['events']['away']++;
$tmp['tsh']['home']['scored']['away'] += $val->tsh_a; $tmp['tsh']['home']['scored']['away'] += $val->tsh_a;
$tmp['tsh']['home']['conceded']['away'] += $val->tsh_h; $tmp['tsh']['home']['conceded']['away'] += $val->tsh_h;
// WFL
$tmp['wfl']['home']['events']['away']++;
$tmp['wfl']['home']['scored']['away'] += $val->wfl_a;
$tmp['wfl']['home']['conceded']['away'] += $val->wfl_h;
} }
// away away // away away
@@ -184,6 +199,10 @@ class ExpectationsBox3
$tmp['tsh']['away']['events']['away']++; $tmp['tsh']['away']['events']['away']++;
$tmp['tsh']['away']['scored']['away'] += $val->tsh_a; $tmp['tsh']['away']['scored']['away'] += $val->tsh_a;
$tmp['tsh']['away']['conceded']['away'] += $val->tsh_h; $tmp['tsh']['away']['conceded']['away'] += $val->tsh_h;
// WFL
$tmp['wfl']['away']['events']['away']++;
$tmp['wfl']['away']['scored']['away'] += $val->wfl_a;
$tmp['wfl']['away']['conceded']['away'] += $val->wfl_h;
} }
} }
@@ -221,7 +240,7 @@ class ExpectationsBox3
public static function sceleton() public static function sceleton()
{ {
$tmp = []; $tmp = [];
$bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh']; $bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh', 'wfl'];
foreach ($bets as $bet) { foreach ($bets as $bet) {
$tmp[$bet]['home']['events']['home'] = 0; $tmp[$bet]['home']['events']['home'] = 0;
$tmp[$bet]['home']['scored']['home'] = 0; $tmp[$bet]['home']['scored']['home'] = 0;
@@ -12,7 +12,7 @@ class ExpectationsMinMax
* get min and max for each bettype from all DB for liga * get min and max for each bettype from all DB for liga
* make average * make average
*/ */
$bets = ['crn', 'fls', 'ofs', 'crd', 'snt', 'tsh']; $bets = ['crn', 'fls', 'ofs', 'crd', 'snt', 'tsh', 'wfl'];
$Y = 0.25; $Y = 0.25;
$res = StatistikoEvent::where('league_id', $match->league_id)->get(); $res = StatistikoEvent::where('league_id', $match->league_id)->get();
@@ -43,6 +43,9 @@ class ExpectationsMinMax
$data['crd']['home'] += $val->crd_h; $data['crd']['home'] += $val->crd_h;
$data['crd']['away'] += $val->crd_a; $data['crd']['away'] += $val->crd_a;
$data['wfl']['home'] += $val->wfl_h;
$data['wfl']['away'] += $val->wfl_a;
} }
foreach ($data as $key => $value) { foreach ($data as $key => $value) {
@@ -41,6 +41,7 @@ class LoadEventsBoxes
$expectations['crd']['name'] = 'Cards'; $expectations['crd']['name'] = 'Cards';
$expectations['snt']['name'] = 'Shots on Target'; $expectations['snt']['name'] = 'Shots on Target';
$expectations['tsh']['name'] = 'Total Shots'; $expectations['tsh']['name'] = 'Total Shots';
$expectations['wfl']['name'] = 'Was Fouled';
$expectations['home'] = $home_team; $expectations['home'] = $home_team;
$expectations['away'] = $away_team; $expectations['away'] = $away_team;
@@ -69,7 +70,7 @@ class LoadEventsBoxes
public static function template() public static function template()
{ {
$arr = []; $arr = [];
$bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh']; $bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh', 'wfl'];
foreach ($bets as $bet) { foreach ($bets as $bet) {
foreach (['team_home', 'team_away'] as $team) { foreach (['team_home', 'team_away'] as $team) {
foreach (['scored', 'conceded'] as $sc) { foreach (['scored', 'conceded'] as $sc) {
+1 -1
View File
@@ -139,7 +139,7 @@ class BoxesBettypeAll extends StatsOverviewWidget
// TEAMPLATE BOX 1 // TEAMPLATE BOX 1
protected function template_tabelle_1(array $data): HtmlString protected function template_tabelle_1(array $data): HtmlString
{ {
$bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh']; $bets = ['gls', 'crn', 'fls', 'ofs', 'crd', 'snt', 'tsh', 'wfl'];
$str = '<div class="grid grid-cols-4 gap-0.5 text-xs">'; $str = '<div class="grid grid-cols-4 gap-0.5 text-xs">';
// $str .= '<div class="col-span-2"></div><div>Home</div><div>Away</div>'; // $str .= '<div class="col-span-2"></div><div>Home</div><div>Away</div>';
foreach ($bets as $name) { foreach ($bets as $name) {
@@ -81,6 +81,10 @@ class LoadEventsAverages
$league_home[] = (int) $value['tsh_h']; $league_home[] = (int) $value['tsh_h'];
$league_away[] = (int) $value['tsh_a']; $league_away[] = (int) $value['tsh_a'];
break; break;
case 'wfl':
$league_home[] = (int) $value['wfl_h'];
$league_away[] = (int) $value['wfl_a'];
break;
} }
if ((! $team_position || $team_position == 'all') && ($team_id == $value['home_id'] or $team_id == $value['away_id'])) { if ((! $team_position || $team_position == 'all') && ($team_id == $value['home_id'] or $team_id == $value['away_id'])) {
@@ -148,6 +152,15 @@ class LoadEventsAverages
$team_away[] = (int) $value['tsh_h']; $team_away[] = (int) $value['tsh_h'];
} }
break; break;
case 'wfl':
if ($team_id == $value['home_id']) {
$team_home[] = (int) $value['wfl_h'];
$team_away[] = (int) $value['wfl_a'];
} else {
$team_home[] = (int) $value['wfl_a'];
$team_away[] = (int) $value['wfl_h'];
}
break;
} }
} elseif ($team_position == 'home' && $team_id == $value['home_id']) { } elseif ($team_position == 'home' && $team_id == $value['home_id']) {
switch ($statistic_type) { switch ($statistic_type) {
@@ -179,6 +192,10 @@ class LoadEventsAverages
$team_home[] = (int) $value['tsh_h']; $team_home[] = (int) $value['tsh_h'];
$team_away[] = (int) $value['tsh_a']; $team_away[] = (int) $value['tsh_a'];
break; break;
case 'wfl':
$team_home[] = (int) $value['wfl_h'];
$team_away[] = (int) $value['wfl_a'];
break;
} }
} elseif ($team_position == 'away' && $team_id == $value['away_id']) { } elseif ($team_position == 'away' && $team_id == $value['away_id']) {
switch ($statistic_type) { switch ($statistic_type) {
@@ -210,6 +227,10 @@ class LoadEventsAverages
$team_home[] = (int) $value['tsh_a']; $team_home[] = (int) $value['tsh_a'];
$team_away[] = (int) $value['tsh_h']; $team_away[] = (int) $value['tsh_h'];
break; break;
case 'wfl':
$team_home[] = (int) $value['wfl_a'];
$team_away[] = (int) $value['wfl_h'];
break;
} }
} }
} }
@@ -187,6 +187,10 @@ class LoadEventsQuery
$tmp['val_home'] = $value->tsh_h; $tmp['val_home'] = $value->tsh_h;
$tmp['val_away'] = $value->tsh_a; $tmp['val_away'] = $value->tsh_a;
break; break;
case 'wfl':
$tmp['val_home'] = $value->wfl_h;
$tmp['val_away'] = $value->wfl_a;
break;
} }
$arr['all'][] = $tmp; $arr['all'][] = $tmp;
@@ -16,7 +16,7 @@ class Expectations
})->get(); })->get();
$work = []; $work = [];
$bettypes = ['gls', 'fls', 'crn', 'ofs', 'crd', 'snt', 'tsh']; $bettypes = ['gls', 'fls', 'crn', 'ofs', 'crd', 'snt', 'tsh', 'wfl'];
foreach ($data as $value) { foreach ($data as $value) {
foreach ($bettypes as $type) { foreach ($bettypes as $type) {
if ($value['home_id'] == $home_id) { if ($value['home_id'] == $home_id) {
@@ -69,8 +69,10 @@ class Expectations
$num_away_snt = 0; $num_away_snt = 0;
$num_home_tsh = 0; $num_home_tsh = 0;
$num_away_tsh = 0; $num_away_tsh = 0;
$num_home_wfl = 0;
$num_away_wfl = 0;
$bettypes = ['gls', 'crd', 'fls', 'ofs', 'snt', 'tsh']; $bettypes = ['gls', 'crd', 'fls', 'ofs', 'snt', 'tsh', 'wfl'];
foreach ($work as $type => $value) { foreach ($work as $type => $value) {
switch ($type) { switch ($type) {
@@ -224,6 +226,31 @@ class Expectations
$sum_away_tsh += array_sum($value['away_got_away']); $sum_away_tsh += array_sum($value['away_got_away']);
$num_away_tsh += \count($value['away_got_away']); $num_away_tsh += \count($value['away_got_away']);
break; break;
case 'wfl':
$sum_home_wfl = array_sum($value['home_made_total']);
$num_home_wfl = \count($value['home_made_total']);
$sum_home_wfl += array_sum($value['home_made_home']);
$num_home_wfl += \count($value['home_made_home']);
$sum_home_wfl += array_sum($value['home_got_total']);
$num_home_wfl += \count($value['home_got_total']);
$sum_home_wfl += array_sum($value['home_got_home']);
$num_home_wfl += \count($value['home_got_home']);
$sum_away_wfl = array_sum($value['away_made_total']);
$num_away_wfl = \count($value['away_made_total']);
$sum_away_wfl += array_sum($value['away_made_away']);
$num_away_wfl += \count($value['away_made_away']);
$sum_away_wfl += array_sum($value['away_got_total']);
$num_away_wfl += \count($value['away_got_total']);
$sum_away_wfl += array_sum($value['away_got_away']);
$num_away_wfl += \count($value['away_got_away']);
break;
} }
} }
@@ -234,6 +261,7 @@ class Expectations
$aspettativa['home']['ofs'] = round($sum_home_ofs / $num_home_ofs, 1); $aspettativa['home']['ofs'] = round($sum_home_ofs / $num_home_ofs, 1);
$aspettativa['home']['snt'] = round($sum_home_snt / $num_home_snt, 1); $aspettativa['home']['snt'] = round($sum_home_snt / $num_home_snt, 1);
$aspettativa['home']['tsh'] = round($sum_home_tsh / $num_home_tsh, 1); $aspettativa['home']['tsh'] = round($sum_home_tsh / $num_home_tsh, 1);
$aspettativa['home']['wfl'] = round($sum_home_wfl / $num_home_wfl, 1);
$aspettativa['away']['gls'] = round($sum_away_gls / $sum_away_gls, 1); $aspettativa['away']['gls'] = round($sum_away_gls / $sum_away_gls, 1);
$aspettativa['away']['crd'] = round($sum_away_crd / $num_away_crd, 1); $aspettativa['away']['crd'] = round($sum_away_crd / $num_away_crd, 1);
@@ -241,6 +269,7 @@ class Expectations
$aspettativa['away']['ofs'] = round($sum_away_ofs / $num_away_ofs, 1); $aspettativa['away']['ofs'] = round($sum_away_ofs / $num_away_ofs, 1);
$aspettativa['away']['snt'] = round($sum_away_snt / $num_away_snt, 1); $aspettativa['away']['snt'] = round($sum_away_snt / $num_away_snt, 1);
$aspettativa['away']['tsh'] = round($sum_away_tsh / $num_away_tsh, 1); $aspettativa['away']['tsh'] = round($sum_away_tsh / $num_away_tsh, 1);
$aspettativa['away']['wfl'] = round($sum_away_wfl / $num_away_wfl, 1);
return $aspettativa; return $aspettativa;
} }
+34 -4
View File
@@ -155,6 +155,7 @@ class PlayerPropsDrop extends Widget
$tmp['crd'] = $val['cards']; $tmp['crd'] = $val['cards'];
$tmp['snt'] = $val['shots_on_target']; $tmp['snt'] = $val['shots_on_target'];
$tmp['tsh'] = $val['shots_off_target']; $tmp['tsh'] = $val['shots_off_target'];
$tmp['wfl'] = $val['was_fouled'];
$level = round($val['total_events'] / 3); $level = round($val['total_events'] / 3);
if ($val['total_events']) { if ($val['total_events']) {
@@ -383,6 +384,7 @@ class PlayerPropsDrop extends Widget
$this->players[$k]['crd'] = ''; $this->players[$k]['crd'] = '';
$this->players[$k]['snt'] = ''; $this->players[$k]['snt'] = '';
$this->players[$k]['tsh'] = ''; $this->players[$k]['tsh'] = '';
$this->players[$k]['wfl'] = '';
} }
$this->storePlacement(); $this->storePlacement();
@@ -407,6 +409,7 @@ class PlayerPropsDrop extends Widget
$this->players[$k]['crd'] = ''; $this->players[$k]['crd'] = '';
$this->players[$k]['snt'] = ''; $this->players[$k]['snt'] = '';
$this->players[$k]['tsh'] = ''; $this->players[$k]['tsh'] = '';
$this->players[$k]['wfl'] = '';
} }
$this->player_on_field_counter = 0; $this->player_on_field_counter = 0;
@@ -450,7 +453,7 @@ class PlayerPropsDrop extends Widget
return; return;
} }
$header = ['name', 'foot', 'events', 'average min', 'position', 'on field', 'gls', 'fls', 'ofs', 'crd', 'snt', 'tsh']; $header = ['name', 'foot', 'events', 'average min', 'position', 'on field', 'gls', 'fls', 'ofs', 'crd', 'snt', 'tsh', 'wfl'];
$copystring = implode(';', $header)."\n"; $copystring = implode(';', $header)."\n";
foreach ($this->players as $row) { foreach ($this->players as $row) {
$tmp = []; $tmp = [];
@@ -470,6 +473,7 @@ class PlayerPropsDrop extends Widget
$tmp[] = $row['crd']; $tmp[] = $row['crd'];
$tmp[] = $row['snt']; $tmp[] = $row['snt'];
$tmp[] = $row['tsh']; $tmp[] = $row['tsh'];
$tmp[] = $row['wfl'];
$copystring .= implode(';', $tmp)."\n"; $copystring .= implode(';', $tmp)."\n";
} }
@@ -491,6 +495,7 @@ class PlayerPropsDrop extends Widget
$this->players[$k]['crd'] = ''; $this->players[$k]['crd'] = '';
$this->players[$k]['snt'] = ''; $this->players[$k]['snt'] = '';
$this->players[$k]['tsh'] = ''; $this->players[$k]['tsh'] = '';
$this->players[$k]['wfl'] = '';
} }
$this->dispatch('update-players', players: $this->players); $this->dispatch('update-players', players: $this->players);
@@ -597,7 +602,7 @@ class PlayerPropsDrop extends Widget
// exp_total_shots // exp_total_shots
// exp_shots_on_target // exp_shots_on_target
$bettypes = ['goals', 'cards', 'fouls', 'offsides', 'total_shots', 'shots_on_target']; $bettypes = ['goals', 'cards', 'fouls', 'offsides', 'total_shots', 'shots_on_target', 'was_fouled'];
foreach ($bettypes as $bettype) { foreach ($bettypes as $bettype) {
$asp_statistica = (float) SofaScorePlayerPosition::where('ss_code', $position)->value('exp_'.$bettype); $asp_statistica = (float) SofaScorePlayerPosition::where('ss_code', $position)->value('exp_'.$bettype);
@@ -673,6 +678,16 @@ class PlayerPropsDrop extends Widget
$tmp['asp_teorica_'.$bettype] = ($this->x_value * $asp_gioco + $asp_statistica) / (1 + $this->x_value); $tmp['asp_teorica_'.$bettype] = ($this->x_value * $asp_gioco + $asp_statistica) / (1 + $this->x_value);
} }
break; break;
case 'was_fouled':
$asp_gioco = $val['was_fouled'] / $val['total_min'] * 90;
if ($asp_gioco == 0 || $val['total_min'] < $this->y_value) {
$tmp['asp_gioco_'.$bettype] = 0;
$tmp['asp_teorica_'.$bettype] = $asp_statistica;
} else {
$tmp['asp_gioco_'.$bettype] = $asp_gioco;
$tmp['asp_teorica_'.$bettype] = ($this->x_value * $asp_gioco + $asp_statistica) / (1 + $this->x_value);
}
break;
} }
} }
@@ -689,7 +704,7 @@ class PlayerPropsDrop extends Widget
// (ATR) = Aspettativa Team * Numero di Giocatori di Team in Rosters (esclusi i portieri) / 10. // (ATR) = Aspettativa Team * Numero di Giocatori di Team in Rosters (esclusi i portieri) / 10.
// Ad esempio per Remo (supponiamo 24 giocatori nel Roster esclusi i portieri): ATR = 1.2 * 24 / 10 = 2.88 // Ad esempio per Remo (supponiamo 24 giocatori nel Roster esclusi i portieri): ATR = 1.2 * 24 / 10 = 2.88
$bettypes = ['goals', 'cards', 'fouls', 'offsides', 'total_shots', 'shots_on_target']; $bettypes = ['goals', 'cards', 'fouls', 'offsides', 'total_shots', 'shots_on_target', 'was_fouled'];
foreach ($bettypes as $bettype) { foreach ($bettypes as $bettype) {
$total_bettype = array_sum(array_column($results, 'asp_teorica_'.$bettype)); $total_bettype = array_sum(array_column($results, 'asp_teorica_'.$bettype));
@@ -736,6 +751,12 @@ class PlayerPropsDrop extends Widget
$results[$key]['asp_total_'.$bettype] = $total_bettype; $results[$key]['asp_total_'.$bettype] = $total_bettype;
$results[$key]['asp_player_'.$bettype] = $value['asp_teorica_'.$bettype] * $asp_team_riferimento / $total_bettype; $results[$key]['asp_player_'.$bettype] = $value['asp_teorica_'.$bettype] * $asp_team_riferimento / $total_bettype;
break; break;
case 'was_fouled':
$asp_team_riferimento = (float) $asp_team_all[$team_home_away]['wfl'] * $count_player / 10;
$results[$key]['asp_team_riferimento_wfl'] = $asp_team_riferimento;
$results[$key]['asp_total_'.$bettype] = $total_bettype;
$results[$key]['asp_player_'.$bettype] = $value['asp_teorica_'.$bettype] * $asp_team_riferimento / $total_bettype;
break;
} }
} }
} }
@@ -749,9 +770,10 @@ class PlayerPropsDrop extends Widget
$map[$val->position]['ofs'] = $val->ofs; $map[$val->position]['ofs'] = $val->ofs;
$map[$val->position]['tsh'] = $val->tsh; $map[$val->position]['tsh'] = $val->tsh;
$map[$val->position]['snt'] = $val->snt; $map[$val->position]['snt'] = $val->snt;
$map[$val->position]['wfl'] = $val->wfl;
} }
// stesso ordine di prima: GLS, CRD, FLS, OFS, TSH, SNT // stesso ordine di prima: GLS, CRD, FLS, OFS, TSH, SNT, WFL
foreach ($this->players as $k => $player) { foreach ($this->players as $k => $player) {
foreach ($results as $key => $result) { foreach ($results as $key => $result) {
@@ -800,6 +822,12 @@ class PlayerPropsDrop extends Widget
$results[$key]['finale_tamx_snt'] = $tamx; $results[$key]['finale_tamx_snt'] = $tamx;
$results[$key]['finale_calc_snt'] = $final; $results[$key]['finale_calc_snt'] = $final;
$this->players[$k]['snt'] = (float) $final > (float) $tamx ? $final : $tamx; $this->players[$k]['snt'] = (float) $final > (float) $tamx ? $final : $tamx;
$tamx = number_format($map[$pos]['wfl'], 3);
$final = number_format($result['asp_player_was_fouled'], 3);
$results[$key]['finale_tamx_wfl'] = $tamx;
$results[$key]['finale_calc_wfl'] = $final;
$this->players[$k]['wfl'] = (float) $final > (float) $tamx ? $final : $tamx;
} }
} }
} }
@@ -1106,6 +1134,7 @@ class PlayerPropsDrop extends Widget
$arr[$ss_player_id]['shots_off_target'] += $val->shots_off_target; $arr[$ss_player_id]['shots_off_target'] += $val->shots_off_target;
$arr[$ss_player_id]['shots_blocked'] += $val->shots_blocked; $arr[$ss_player_id]['shots_blocked'] += $val->shots_blocked;
$arr[$ss_player_id]['total_shots'] += $val->shots_on_target + $val->shots_off_target + $val->shots_blocked; $arr[$ss_player_id]['total_shots'] += $val->shots_on_target + $val->shots_off_target + $val->shots_blocked;
$arr[$ss_player_id]['was_fouled'] += $val->was_fouled;
} }
foreach ($players as $value) { foreach ($players as $value) {
@@ -1138,6 +1167,7 @@ class PlayerPropsDrop extends Widget
$arr[$ss_player_id]['shots_off_target'] = 0; $arr[$ss_player_id]['shots_off_target'] = 0;
$arr[$ss_player_id]['shots_blocked'] = 0; $arr[$ss_player_id]['shots_blocked'] = 0;
$arr[$ss_player_id]['total_shots'] = 0; $arr[$ss_player_id]['total_shots'] = 0;
$arr[$ss_player_id]['was_fouled'] = 0;
$arr[$ss_player_id]['cards'] = 0; $arr[$ss_player_id]['cards'] = 0;
} }
} }
+9 -5
View File
@@ -33,16 +33,20 @@ class PlayerPropsTable extends TableWidget
{ {
return new HtmlString(' return new HtmlString('
<div class="w-full grid grid-cols-15 text-[10px] items-center gap-1" style="position: relative; left: -10px; bottom: -13px;"> <div class="w-full grid grid-cols-16 text-xxs items-center gap-1">
<div>Gls</div> <div class="text-green-600 dark:text-green-500">Gls</div>
<div>Fls</div> <div>Fls</div>
<div>Ofs</div> <div class="text-green-600 dark:text-green-500">Ofs</div>
<div>Crd</div> <div>Crd</div>
<div>Snt</div> <div class="text-green-600 dark:text-green-500">Snt</div>
<div>Tsh</div> <div>Tsh</div>
<div>Foot</div> <div class="text-green-600 dark:text-green-500">Wfl</div>
<div class="text-blue-600 dark:text-blue-500">Foot</div>
<div>Evt</div> <div>Evt</div>
<div>Min</div> <div>Min</div>
<div></div>
<div></div>
<div></div>
</div>'); </div>');
} }
+4
View File
@@ -27,6 +27,10 @@
} }
} }
.text-xxs {
font-size: 9.5px;
}
/* Reduce gap between widgets and content */ /* Reduce gap between widgets and content */
.fi-page-content { .fi-page-content {
@apply gap-y-5; @apply gap-y-5;
@@ -3,19 +3,19 @@
@endphp @endphp
@if ($record['active']) @if ($record['active'])
<div draggable="false" <div draggable="false"
class="w-full mt-1 border dark:border-gray-600 border-gray-200 text-xs select-none rounded transition-colors grid grid-cols-16 gap-1 items-center"> class="w-full mt-1 p-1 border dark:border-gray-600 border-gray-200 text-xxs select-none rounded transition-colors grid grid-cols-18 gap-1 items-center">
<div class="col-span-10 text-[10px] text-center grid grid-cols-10 content-center items-center gap-1"> <div class="text-green-600 dark:text-green-500">{{ $record['gls'] }}</div>
<div class="text-green-600 dark:text-green-500">{{ $record['gls'] }}</div> <div>{{ $record['fls'] }}</div>
<div>{{ $record['fls'] }}</div> <div class="text-green-600 dark:text-green-500"><div class="text-green-600 dark:text-green-500"></div>{{ $record['ofs'] }}</div>
<div class="text-green-600 dark:text-green-500"><div class="text-green-600 dark:text-green-500"></div>{{ $record['ofs'] }}</div> <div>{{ $record['crd'] }}</div>
<div>{{ $record['crd'] }}</div> <div class="text-green-600 dark:text-green-500">{{ $record['snt'] }}</div>
<div class="text-green-600 dark:text-green-500">{{ $record['snt'] }}</div> <div>{{ $record['tsh'] }}</div>
<div>{{ $record['tsh'] }}</div> <div class="text-green-600 dark:text-green-500">{{ $record['snt'] }}</div>
<div class="text-blue-600 dark:text-blue-500">{{ $record['foot'] }}</div> <div>{{ $record['wfl'] }}</div>
<div>{{ $record['tot_evt'] }}</div> <div class="text-blue-600 dark:text-blue-500">{{ $record['foot'] }}</div>
<div>{{ $record['ave_min'] }}</div> <div>{{ $record['tot_evt'] }}</div>
<div class="border border-gray-400 rounded font-bold p-0.5">{{ $record['pos'] }}</div> <div>{{ $record['ave_min'] }}</div>
</div> <div class="border border-gray-400 rounded font-bold p-0.5 text-center">{{ $record['pos'] }}</div>
<div class="text-center"> <div class="text-center">
<div class="{{ $record['color_pos'] }}"> <div class="{{ $record['color_pos'] }}">
{{ ucfirst($record['pos_ori']) }} {{ ucfirst($record['pos_ori']) }}
@@ -33,19 +33,19 @@
e.dataTransfer.effectAllowed = 'copy'; e.dataTransfer.effectAllowed = 'copy';
e.dataTransfer.setData('text/plain', JSON.stringify({ id: {{ $record['id'] }} })); e.dataTransfer.setData('text/plain', JSON.stringify({ id: {{ $record['id'] }} }));
}" }"
class="w-full mt-1 border dark:border-gray-600 border-gray-200 hover:border-blue-500 text-xs select-none cursor-grab active:cursor-grabbing rounded transition-colors grid grid-cols-16 gap-1 items-center"> class="w-full mt-1 p-1 border dark:border-gray-600 border-gray-200 hover:border-blue-500 text-xxs select-none cursor-grab active:cursor-grabbing rounded transition-colors grid grid-cols-18 gap-1 items-center">
<div class="col-span-10 text-[10px] text-center grid grid-cols-10 content-center items-center gap-1"> <div class="text-green-600 dark:text-green-500">{{ $record['gls'] }}</div>
<div class="text-green-600 dark:text-green-500">{{ $record['gls'] }}</div> <div>{{ $record['fls'] }}</div>
<div>{{ $record['fls'] }}</div> <div class="text-green-600 dark:text-green-500"><div class="text-green-600 dark:text-green-500"></div>{{ $record['ofs'] }}</div>
<div class="text-green-600 dark:text-green-500">{{ $record['ofs'] }}</div> <div>{{ $record['crd'] }}</div>
<div>{{ $record['crd'] }}</div> <div class="text-green-600 dark:text-green-500">{{ $record['snt'] }}</div>
<div class="text-green-600 dark:text-green-500">{{ $record['snt'] }}</div> <div>{{ $record['tsh'] }}</div>
<div>{{ $record['tsh'] }}</div> <div class="text-green-600 dark:text-green-500">{{ $record['snt'] }}</div>
<div class="text-blue-600 dark:text-blue-500">{{ $record['foot'] }}</div> <div>{{ $record['wfl'] }}</div>
<div>{{ $record['tot_evt'] }}</div> <div class="text-blue-600 dark:text-blue-500">{{ $record['foot'] }}</div>
<div>{{ $record['ave_min'] }}</div> <div>{{ $record['tot_evt'] }}</div>
<div></div> <div>{{ $record['ave_min'] }}</div>
</div> <div></div>
<div class="text-center"> <div class="text-center">
<div class="{{ $record['color_pos'] }}"> <div class="{{ $record['color_pos'] }}">
{{ ucfirst($record['pos_ori']) }} {{ ucfirst($record['pos_ori']) }}