This commit is contained in:
salam committed 2026-09-10 08:34:30 +02:00
1 parent 919ad14a9d
commit d947f40888
9 files changed
+520 -165

No files matched your search

+54 -3
View File
@@ -6,17 +6,24 @@ use App\Models\SofaScorePlayerCache;
use App\Models\SofaScorePlayerPerSeason;
use App\Models\StatistikoDetail;
use App\Models\StatistikoPlayer;
use App\Utilities\Notice;
class PlayerPerSeason
{
public static function run()
{
// when data changes clear player chche
$debug = 0;
// when data changes clear player cache
SofaScorePlayerCache::truncate();
$res = StatistikoDetail::query()->where('is_active', 1)->select('ss_player_id', 'ss_team_id')->get();
foreach ($res as $val) {
foreach ($res as $key => $val) {
if ($debug) {
Notice::note($val->ss_player_id.' - '.$res->count().'/'.$key + 1, 'g');
}
$collection = [];
@@ -25,29 +32,67 @@ class PlayerPerSeason
foreach ($res2 as $val2) {
if (isset($val2->event->season)) {
if (! isset($collection['total'])) {
$collection['total']['events_played_home'] = 0;
$collection['total']['events_played_away'] = 0;
$collection['total']['minutes_played_home'] = 0;
$collection['total']['minutes_played_away'] = 0;
$collection['total']['goals'] = 0;
$collection['total']['fouls'] = 0;
$collection['total']['offsides'] = 0;
$collection['total']['shots_on_target'] = 0;
$collection['total']['shots_off_target'] = 0;
$collection['total']['cards'] = 0;
}
if (! isset($collection[$val2->event->season])) {
$collection[$val2->event->season]['events_played_home'] = 0;
$collection[$val2->event->season]['events_played_away'] = 0;
$collection[$val2->event->season]['minutes_played_home'] = 0;
$collection[$val2->event->season]['minutes_played_away'] = 0;
$collection[$val2->event->season]['goals'] = 0;
$collection[$val2->event->season]['fouls'] = 0;
$collection[$val2->event->season]['cards'] = 0;
$collection[$val2->event->season]['offsides'] = 0;
$collection[$val2->event->season]['shots_on_target'] = 0;
$collection[$val2->event->season]['shots_off_target'] = 0;
}
if ((int) $val2->minutes_played > 0) {
if ($val2->activeteam_id == $val2->event->home_id) {
$collection[$val2->event->season]['events_played_home'] += 1;
$collection[$val2->event->season]['minutes_played_home'] += $val2->minutes_played;
$collection['total']['events_played_home'] += 1;
$collection['total']['minutes_played_home'] += $val2->minutes_played;
} elseif ($val2->activeteam_id == $val2->event->away_id) {
$collection[$val2->event->season]['events_played_away'] += 1;
$collection[$val2->event->season]['minutes_played_away'] += $val2->minutes_played;
$collection['total']['minutes_played_away'] += 1;
$collection['total']['minutes_played_away'] += $val2->minutes_played;
}
$cards = $val2->card_yellow + $val2->card_yellowred + $val2->card_red;
$collection[$val2->event->season]['goals'] += $val2->goals;
$collection[$val2->event->season]['fouls'] += $val2->fouls;
$collection[$val2->event->season]['cards'] += $cards;
$collection[$val2->event->season]['offsides'] += $val2->offsides;
$collection[$val2->event->season]['shots_on_target'] += $val2->shots_on_target;
$collection[$val2->event->season]['shots_off_target'] += $val2->shots_off_target;
$collection['total']['goals'] += $val2->goals;
$collection['total']['fouls'] += $val2->fouls;
$collection['total']['cards'] += $cards;
$collection['total']['offsides'] += $val2->offsides;
$collection['total']['shots_on_target'] += $val2->shots_on_target;
$collection['total']['shots_off_target'] += $val2->shots_off_target;
}
}
}
foreach ($collection as $season => $row) {
if ($val->ss_team_id && $val->ss_player_id) {
SofaScorePlayerPerSeason::updateOrCreate(
[
'ss_player_id' => $val->ss_player_id,
@@ -59,6 +104,12 @@ class PlayerPerSeason
'events_played_away' => $row['events_played_away'],
'minutes_played_home' => $row['minutes_played_home'],
'minutes_played_away' => $row['minutes_played_away'],
'goals' => $row['goals'],
'fouls' => $row['fouls'],
'cards' => $row['cards'],
'offsides' => $row['offsides'],
'shots_on_target' => $row['shots_on_target'],
'shots_off_target' => $row['shots_off_target'],
]
);
}
+271 -33
View File
@@ -2,7 +2,11 @@
namespace App\Livewire;
use App\Models\SofaScorePlayerPerSeason;
use App\Models\SofaScorePlayerPosition;
use App\Models\SofaScoreRosa;
use App\Models\StatisticFixtures;
use App\Models\StatistikoDetail;
use App\Models\User;
use Filament\Actions\Action;
use Filament\Actions\Concerns\InteractsWithActions;
@@ -34,6 +38,14 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
public array $sourceRecords = [];
public array $filters = [];
// slider
public float $x_value = 3;
// min
public float $y_value = 180;
public array $lists = [];
public array $results = [];
@@ -44,6 +56,8 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
public bool $calculationDisabled = true;
public bool $rangeXDisabled = true;
public string $ss_team_name = '';
public array $lineupsMap = [
@@ -160,6 +174,8 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
public function mount(array $filters)
{
$this->filters = $filters;
$this->ss_team_name = SofaScoreRosa::where('ss_team_id', $filters['team_id'])->value('ss_team_name');
$this->sourceRecords = PlayerCalculator::load($filters);
@@ -178,31 +194,33 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
// Log::debug('beschriftung', $this->beschriftung);
}
public function updateXvalue()
{
$this->calculationChecker();
}
public function getHeadingTable(): HtmlString
{
return new HtmlString('<div class="text-[11px] p-0 flex flex-row gap-4 font-bold font-mono" style="position: relative; left: -2px; bottom: -13px;">
<div>Gls</div>
<div>Fls</div>
<div>Ofs</div>
<div>Snt</div>
<div>Tsh</div>
<div>Crd</div>
<div>Foot</div>
<div>Evt</div>
<div>Ømin</div>
</div>');
<div>Gls</div>
<div>Fls</div>
<div>Ofs</div>
<div>Snt</div>
<div>Tsh</div>
<div>Crd</div>
<div>Foot</div>
<div>Evt</div>
<div>Ømin</div>
</div>');
}
public function form(Schema $schema): Schema
{
return $schema
->columns(4)
->components([
Select::make('lineup_selected')
->label('Lineup')
->live()
->hiddenLabel()
->columnSpan(2)
->prefix('Lineup')
->prefixIcon('icon-soccerplayer')
->searchable()
->options($this->lineup_options)
@@ -243,13 +261,13 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
->tooltip('Remove all players from field')
->icon('phosphor-arrows-clockwise')
->action(fn () => $this->clearAll()),
Action::make('calculate')
->hiddenLabel()
->tooltip('Calculate expected values')
->size(Size::Small)
->icon('phosphor-calculator')
->disabled($this->calculationDisabled)
->action(fn () => $this->calculateAspg()),
// Action::make('calculate')
// ->hiddenLabel()
// ->tooltip('Calculate expected values')
// ->size(Size::Small)
// ->icon('phosphor-calculator')
// ->disabled($this->calculationDisabled)
// ->action(fn () => $this->calculateAspg()),
Action::make('copy')
->tooltip('Copy results for pasting into a spread sheet')
->hiddenLabel()
@@ -317,9 +335,6 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
foreach ($this->sourceRecords as $k => $record) {
if ($record['id'] == (int) $player['id']) {
$this->calculationDisabled = false;
if ($this->boxes[$boxNumber]) {
$this->clearBox($boxNumber);
}
@@ -328,11 +343,34 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
$this->sourceRecords[$k]['position'] = $this->activeBoxes[$boxNumber];
}
}
$this->calculationChecker();
}
public function calculationChecker()
{
$count = 0;
foreach ($this->sourceRecords as $record) {
if (count($record)) {
$count++;
}
}
if ($count >= 9) {
$this->copyDisabled = false;
$this->rangeXDisabled = false;
$this->calculateAspg();
} else {
$this->copyDisabled = true;
$this->rangeXDisabled = true;
$this->clearAll();
}
}
public function updateLineup(?string $state)
{
$this->clearAll();
$this->calculationChecker();
if (isset($this->lineupsMap[$state])) {
$this->lineup = $this->lineupsMap[$state];
@@ -343,6 +381,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
public function clearBox(int $boxNumber): void
{
if (isset($this->boxes[$boxNumber])) {
$tmp = $this->boxes[$boxNumber];
$player_id = 0;
@@ -358,12 +397,9 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
$this->sourceRecords[$k]['active'] = 0;
}
}
}
}
public function calculateAspg(): void
{
$this->copyDisabled = false;
$this->calculationChecker();
}
}
public function clearAll(): void
@@ -374,18 +410,22 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
foreach ($this->sourceRecords as $k => $record) {
$this->sourceRecords[$k]['position'] = '';
$this->sourceRecords[$k]['active'] = 0;
$this->sourceRecords[$k]['gls'] = 0;
$this->sourceRecords[$k]['fls'] = 0;
$this->sourceRecords[$k]['ofs'] = 0;
$this->sourceRecords[$k]['snt'] = 0;
$this->sourceRecords[$k]['tsh'] = 0;
$this->sourceRecords[$k]['crd'] = 0;
}
$this->copyDisabled = true;
$this->calculationDisabled = true;
$this->calculationChecker();
}
public function copyResult()
{
return;
$copystring = '';
foreach ($this->results as $row) {
dd($row);
unset($row['origin']);
unset($row['pcolor']);
unset($row['ecolor']);
@@ -395,6 +435,204 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
$this->js("navigator.clipboard.writeText(`$copystring`)");
}
public function calculateAspg(): void
{
// Calcolare Aspettativa Team per GOALS
// (il valore che appare quando viene selezionato un Evento): nell' esempio,
// se scegliamo come Team il Remo (Home) il valore di riferimento sarà 1.2
$team_id = $this->filters['team_id'];
$res = StatisticFixtures::where('id', $this->filters['match_id'])->first();
$asp_team = 0;
if ((int) $res->home_id == (int) $team_id) {
$asp_team = $res->exp_home;
} elseif ((int) $res->away_id == (int) $team_id) {
$asp_team = $res->exp_away;
}
// "atr" => 2.8868026211843
// "id" => 44691
// "name" => "Maicon"
// "on_field" => 0
// "position" => "DC"
// "sgf" => 1044
// "smg" => 1044
// "adg" => 90
// "as_goals" => 0.044
// "at_goals" => 67.511
// "as_cards" => 0.195
// "at_cards" => 67.54875
// "as_fouls" => 0.959
// "at_fouls" => 67.73975
// "as_offsides" => 0.036
// "at_offsides" => 67.509
// "as_total_shots" => 0.525
// "at_total_shots" => 67.63125
// "as_shots_on_target" => 0.263
// "at_shots_on_target" => 67.56575
$player = StatistikoDetail::where('ss_team_id', (int) $team_id)->where('position', '!=', 'GK')->where('is_active', 1)->get();
// Aspettativa Team di Riferimento
// (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
$asp_team_riferimento = $asp_team * $player->count() / 10;
$player_totals = SofaScorePlayerPerSeason::with('details')->where('season', 'total')->where('ss_team_id', $team_id)->get();
$results = [];
foreach ($player_totals as $val) {
if ($val->details && $val->details->is_active) {
$ss_player_id = $val->ss_player_id;
$position = $val->details->position;
$tmp = [];
$tmp['id'] = $ss_player_id;
$tmp['name'] = $val->details->player_name;
$tmp['asp_team'] = $asp_team;
$tmp['asp_team_riferimento'] = $asp_team_riferimento;
$position_field = $this->get_position($ss_player_id);
if ($position_field) {
$position = $position_field;
$tmp['active'] = 1;
} else {
$tmp['active'] = 0;
}
$tmp['position'] = $position;
// Aspettativa di Gioco (AdG) = Somma Goals fatti da Player nel DB / Somma Minuti Giocati da Player (SMG) nel DB * 90.
// Se la SMG è < Y per quel Player prenderemo in considerazione solo l'Aspettativa Statistica (AS).
// Il valore Y dovrebbe essere configurabile in una interfaccia. Il valore iniziale lo fissiamo a Y = 180
// Somma Goals fatti da Player nel DB
$somma_goals = $val->goals;
$tmp['somma_goals'] = $val->goals;
// Somma Minuti Giocati da Player (SMG) nel DB
$somma_minuti = $val->minutes_played_home + $val->minutes_played_away;
$tmp['somma_minuti'] = $somma_minuti;
// Aspettativa di Gioco
// (AdG)
$asp_gioco = $somma_goals / $somma_minuti * 90;
$tmp['asp_gioco'] = $asp_gioco;
// il valore corrispondente al ruolo del Player (esempio un giocatore in Details ha ruolo = RW
// quindi Aspettativa Statistica (AS) per RW = 0.219)
$bettypes = ['goals', 'cards', 'fouls', 'offsides', 'total_shots', 'shots_on_target'];
foreach ($bettypes as $bettype) {
$asp_statistica = (float) SofaScorePlayerPosition::where('ss_code', $position)->value('exp_'.$bettype);
$tmp['asp_statistica_'.$bettype] = $asp_statistica;
if ($somma_minuti < $this->y_value) {
// Se la SMG è < Y per quel Player prenderemo in considerazione solo l'Aspettativa Statistica (AS).
$tmp['asp_teorica_'.$bettype] = $asp_statistica;
} else {
// Aspettativa Teorica (AT) Goals = (X * AdG + AS) / (1 + X)
// dove X è un valore che dovrebbe essere parametrizzabile da una interfaccia.
// Il valore iniziale lo fissiamo a X = 3
// (AT)
$tmp['asp_teorica_'.$bettype] = ($this->x_value * $asp_gioco + $asp_statistica) / (1 + $this->x_value);
}
}
// Calcolare la Somma di tutte le AT (colonna G della Tabella)
// Considerare la ATR calcolata allo Step 1 (colonna I della Tabella)
// Aspettativa per Player: AP = AT * ATR / TOT AT
$results[] = $tmp;
}
}
$bettypes = ['goals', 'cards', 'fouls', 'offsides', 'total_shots', 'shots_on_target'];
foreach ($bettypes as $bettype) {
$total_bettype = array_sum(array_column($results, 'asp_teorica_'.$bettype));
foreach ($results as $key => $value) {
// Aspettativa per Player: AP = AT * ATR / TOT AT
$results[$key]['asp_total_'.$bettype] = $total_bettype;
$results[$key]['asp_player_'.$bettype] = ((float) $value['asp_team'] * (float) $value['asp_teorica_'.$bettype]) / $total_bettype;
}
}
// dd($results);
// update frontend
foreach ($this->sourceRecords as $k => $record) {
// "id" => 787607
// "name" => "Keno"
// "preferred_foot" => "Right"
// "player_position" => "LW"
// "position_area" => "attack"
// "player_color" => "warning"
// "timed_color" => "danger"
// "events_played" => 7
// "everage_minutes" => 11
// "position" => "DC"
// "active" => 1
// "gls" => 0
// "fls" => 0
// "ofs" => 0
// "snt" => 0
// "tsh" => 0
// "crd" => 0
foreach ($results as $key => $result) {
// "id" => 44691
// "name" => "Maicon"
// "asp_team" => "1.11030870045550"
// "asp_team_riferimento" => 2.8868026211843
// "active" => 0
// "position" => "DC"
// "somma_goals" => 1044
// "somma_minuti" => 1044
// "asp_gioco" => 90
// "asp_statistica_goals" => 0.044
// "asp_teorica_goals" => 67.511
// "asp_statistica_cards" => 0.195
// "asp_teorica_cards" => 67.54875
// "asp_statistica_fouls" => 0.959
// "asp_teorica_fouls" => 67.73975
// "asp_statistica_offsides" => 0.036
// "asp_teorica_offsides" => 67.509
// "asp_statistica_total_shots" => 0.525
// "asp_teorica_total_shots" => 67.63125
// "asp_statistica_shots_on_target" => 0.263
// "asp_teorica_shots_on_target" => 67.56575
// "asp_player_goals" => 0.041110675617421
// "asp_player_cards" => 0.041126169295623
// "asp_player_fouls" => 0.041104958293849
// "asp_player_offsides" => 0.041105354678332
// "asp_player_total_shots" => 0.041028401589513
// "asp_player_shots_on_target" => 0.041094150075013
if ($record['id'] == $result['id']) {
// dd($result);
$this->sourceRecords[$k]['active'] = $result['active'];
$this->sourceRecords[$k]['gls'] = number_format($result['asp_player_goals'], 3);
$this->sourceRecords[$k]['fls'] = number_format($result['asp_player_fouls'], 3);
$this->sourceRecords[$k]['ofs'] = number_format($result['asp_player_offsides'], 3);
$this->sourceRecords[$k]['snt'] = number_format($result['asp_player_total_shots'], 3);
$this->sourceRecords[$k]['tsh'] = number_format($result['asp_player_shots_on_target'], 3);
$this->sourceRecords[$k]['crd'] = number_format($result['asp_player_cards'], 3);
}
}
}
}
public function get_position(int $ss_player_id)
{
// see if player is in field and if yes get new position
foreach ($this->sourceRecords as $record) {
if ($record['id'] == $ss_player_id) {
return $record['position'];
}
}
return false;
}
public function render()
{
return view('livewire.board-dispatcher');
-1
View File
@@ -135,7 +135,6 @@ class PlayerCalculator extends Component
'position' => '',
'active' => 0,
'gls' => 0,
'crn' => 0,
'fls' => 0,
'ofs' => 0,
'snt' => 0,
+6
View File
@@ -14,6 +14,12 @@ class SofaScorePlayerPerSeason extends Model
'events_played_away',
'minutes_played_home',
'minutes_played_away',
'goals',
'fouls',
'cards',
'offsides',
'shots_on_target',
'shots_off_target',
];
public function details()
+16
View File
@@ -15,5 +15,21 @@ class SofaScorePlayerPosition extends Model
'ss_code',
'name',
'generalposition',
'exp_goals',
'exp_assists',
'exp_cards',
'exp_fouls',
'exp_was_fouled',
'exp_offsides',
'exp_total_shots',
'exp_shots_on_target',
'minexp_goals',
'minexp_assists',
'minexp_cards',
'minexp_fouls',
'minexp_was_fouled',
'minexp_offsides',
'minexp_total_shots',
'minexp_shots_on_target',
];
}
@@ -20,6 +20,12 @@ return new class extends Migration
$table->integer('events_played_away')->default(0)->nullable();
$table->integer('minutes_played_home')->default(0)->nullable();
$table->integer('minutes_played_away')->default(0)->nullable();
$table->integer('goals')->default(0)->nullable();
$table->integer('fouls')->default(0)->nullable();
$table->integer('cards')->default(0)->nullable();
$table->integer('offsides')->default(0)->nullable();
$table->integer('shots_on_target')->default(0)->nullable();
$table->integer('shots_off_target')->default(0)->nullable();
$table->timestamps();
});
}
@@ -16,6 +16,23 @@ return new class extends Migration
$table->string('ss_code')->index();
$table->string('name');
$table->string('generalposition');
$table->decimal('exp_goals', 4, 3)->default(0);
$table->decimal('exp_assists', 4, 3)->default(0);
$table->decimal('exp_cards', 4, 3)->default(0);
$table->decimal('exp_fouls', 4, 3)->default(0);
$table->decimal('exp_was_fouled', 4, 3)->default(0);
$table->decimal('exp_offsides', 4, 3)->default(0);
$table->decimal('exp_total_shots', 4, 3)->default(0);
$table->decimal('exp_shots_on_target', 4, 3)->default(0);
$table->decimal('minexp_goals', 4, 3)->default(0);
$table->decimal('minexp_assists', 4, 3)->default(0);
$table->decimal('minexp_cards', 4, 3)->default(0);
$table->decimal('minexp_fouls', 4, 3)->default(0);
$table->decimal('minexp_was_fouled', 4, 3)->default(0);
$table->decimal('minexp_offsides', 4, 3)->default(0);
$table->decimal('minexp_total_shots', 4, 3)->default(0);
$table->decimal('minexp_shots_on_target', 4, 3)->default(0);
$table->timestamps();
});
}
+126 -124
View File
@@ -12,131 +12,133 @@ class SofaScorePlayerPositionSeeder extends Seeder
/**
* SofaScore Player Positions
*/
$sql = "INSERT INTO `sofa_score_player_positions` (`ss_code`, `name`, `generalposition`)
$sql = "INSERT INTO `sofa_score_player_positions` (`id`, `ss_code`, `name`, `generalposition`, `exp_goals`, `exp_assists`, `exp_cards`, `exp_fouls`, `exp_was_fouled`, `exp_offsides`, `exp_total_shots`, `exp_shots_on_target`, `minexp_goals`, `minexp_assists`, `minexp_cards`, `minexp_fouls`, `minexp_was_fouled`, `minexp_offsides`, `minexp_total_shots`, `minexp_shots_on_target`, `created_at`, `updated_at`)
VALUES
('LW', 'Left Winger', 'ATTACK'),
('RW', 'Right Winger', 'ATTACK'),
('ST', 'Centre-Forward', 'ATTACK'),
('LW-AM', 'Left Winger, Attacking Midfield', 'ATTACK'),
('RW-AM', 'Right Winger, Attacking Midfield', 'ATTACK'),
('ST-AM', 'Centre-Forward, Attacking Midfield', 'ATTACK'),
('LW-DC', 'Left Winger, Centre-Back', 'ATTACK'),
('RW-DC', 'Right Winger, Centre-Back', 'ATTACK'),
('ST-DC', 'Centre-Forward, Centre-Back', 'ATTACK'),
('LW-DL', 'Left Winger, Left-Back', 'ATTACK'),
('RW-DL', 'Right Winger, Left-Back', 'ATTACK'),
('ST-DL', 'Centre-Forward, Left-Back', 'ATTACK'),
('LW-DM', 'Left Winger, Defensive Midfield', 'ATTACK'),
('RW-DM', 'Right Winger, Defensive Midfield', 'ATTACK'),
('ST-DM', 'Centre-Forward, Defensive Midfield', 'ATTACK'),
('LW-DR', 'Left Winger, Right-Back', 'ATTACK'),
('RW-DR', 'Right Winger, Right-Back', 'ATTACK'),
('ST-DR', 'Centre-Forward, Right-Back', 'ATTACK'),
('RW-LW', 'Right Winger, Left Winger', 'ATTACK'),
('ST-LW', 'Centre-Forward, Left Winger', 'ATTACK'),
('LW-MC', 'Left Winger, Central Midfield', 'ATTACK'),
('RW-MC', 'Right Winger, Central Midfield', 'ATTACK'),
('ST-MC', 'Centre-Forward, Central Midfield', 'ATTACK'),
('LW-ML', 'Left Winger, Left Midfield', 'ATTACK'),
('RW-ML', 'Right Winger, Left Midfield', 'ATTACK'),
('ST-ML', 'Centre-Forward, Left Midfield', 'ATTACK'),
('LW-MR', 'Left Winger, Right Midfield', 'ATTACK'),
('RW-MR', 'Right Winger, Right Midfield', 'ATTACK'),
('ST-MR', 'Centre-Forward, Right Midfield', 'ATTACK'),
('LW-RW', 'Left Winger, Right Winger', 'ATTACK'),
('ST-RW', 'Centre-Forward, Right Winger', 'ATTACK'),
('LW-ST', 'Left Winger, Centre-Forward', 'ATTACK'),
('RW-ST', 'Right Winger, Centre-Forward', 'ATTACK'),
('DC', 'Centre-Back', 'DEFENCE'),
('DL', 'Left-Back', 'DEFENCE'),
('DR', 'Right-Back', 'DEFENCE'),
('DC-AM', 'Centre-Back, Attacking Midfield', 'DEFENCE'),
('DL-AM', 'Left-Back, Attacking Midfield', 'DEFENCE'),
('DR-AM', 'Right-Back, Attacking Midfield', 'DEFENCE'),
('DL-DC', 'Left-Back, Centre-Back', 'DEFENCE'),
('DR-DC', 'Right-Back, Centre-Back', 'DEFENCE'),
('DC-DL', 'Centre-Back, Left-Back', 'DEFENCE'),
('DR-DL', 'Right-Back, Left-Back', 'DEFENCE'),
('DC-DM', 'Centre-Back, Defensive Midfield', 'DEFENCE'),
('DL-DM', 'Left-Back, Defensive Midfield', 'DEFENCE'),
('DR-DM', 'Right-Back, Defensive Midfield', 'DEFENCE'),
('DC-DR', 'Centre-Back, Right-Back', 'DEFENCE'),
('DL-DR', 'Left-Back, Right-Back', 'DEFENCE'),
('DC-LW', 'Centre-Back, Left Winger', 'DEFENCE'),
('DL-LW', 'Left-Back, Left Winger', 'DEFENCE'),
('DR-LW', 'Right-Back, Left Winger', 'DEFENCE'),
('DC-MC', 'Centre-Back, Central Midfield', 'DEFENCE'),
('DL-MC', 'Left-Back, Central Midfield', 'DEFENCE'),
('DR-MC', 'Right-Back, Central Midfield', 'DEFENCE'),
('DC-ML', 'Centre-Back, Left Midfield', 'DEFENCE'),
('DL-ML', 'Left-Back, Left Midfield', 'DEFENCE'),
('DR-ML', 'Right-Back, Left Midfield', 'DEFENCE'),
('DC-MR', 'Centre-Back, Right Midfield', 'DEFENCE'),
('DL-MR', 'Left-Back, Right Midfield', 'DEFENCE'),
('DR-MR', 'Right-Back, Right Midfield', 'DEFENCE'),
('DC-RW', 'Centre-Back, Right Winger', 'DEFENCE'),
('DL-RW', 'Left-Back, Right Winger', 'DEFENCE'),
('DR-RW', 'Right-Back, Right Winger', 'DEFENCE'),
('DC-ST', 'Centre-Back, Centre-Forward', 'DEFENCE'),
('DL-ST', 'Left-Back, Centre-Forward', 'DEFENCE'),
('DR-ST', 'Right-Back, Centre-Forward', 'DEFENCE'),
('GK', 'Goalkeeper', 'GOALKEEPER'),
('AM', 'Attacking Midfield', 'MIDFIELD'),
('DM', 'Defensive Midfield', 'MIDFIELD'),
('MC', 'Central Midfield', 'MIDFIELD'),
('ML', 'Left Midfield', 'MIDFIELD'),
('MR', 'Right Midfield', 'MIDFIELD'),
('DM-AM', 'Defensive Midfield, Attacking Midfield', 'MIDFIELD'),
('MC-AM', 'Central Midfield, Attacking Midfield', 'MIDFIELD'),
('ML-AM', 'Left Midfield, Attacking Midfield', 'MIDFIELD'),
('MR-AM', 'Right Midfield, Attacking Midfield', 'MIDFIELD'),
('AM-DC', 'Attacking Midfield, Centre-Back', 'MIDFIELD'),
('DM-DC', 'Defensive Midfield, Centre-Back', 'MIDFIELD'),
('MC-DC', 'Central Midfield, Centre-Back', 'MIDFIELD'),
('ML-DC', 'Left Midfield, Centre-Back', 'MIDFIELD'),
('MR-DC', 'Right Midfield, Centre-Back', 'MIDFIELD'),
('AM-DL', 'Attacking Midfield, Left-Back', 'MIDFIELD'),
('DM-DL', 'Defensive Midfield, Left-Back', 'MIDFIELD'),
('MC-DL', 'Central Midfield, Left-Back', 'MIDFIELD'),
('ML-DL', 'Left Midfield, Left-Back', 'MIDFIELD'),
('MR-DL', 'Right Midfield, Left-Back', 'MIDFIELD'),
('AM-DM', 'Attacking Midfield, Defensive Midfield', 'MIDFIELD'),
('MC-DM', 'Central Midfield, Defensive Midfield', 'MIDFIELD'),
('ML-DM', 'Left Midfield, Defensive Midfield', 'MIDFIELD'),
('MR-DM', 'Right Midfield, Defensive Midfield', 'MIDFIELD'),
('AM-DR', 'Attacking Midfield, Right-Back', 'MIDFIELD'),
('DM-DR', 'Defensive Midfield, Right-Back', 'MIDFIELD'),
('MC-DR', 'Central Midfield, Right-Back', 'MIDFIELD'),
('ML-DR', 'Left Midfield, Right-Back', 'MIDFIELD'),
('MR-DR', 'Right Midfield, Right-Back', 'MIDFIELD'),
('AM-LW', 'Attacking Midfield, Left Winger', 'MIDFIELD'),
('DM-LW', 'Defensive Midfield, Left Winger', 'MIDFIELD'),
('MC-LW', 'Central Midfield, Left Winger', 'MIDFIELD'),
('ML-LW', 'Left Midfield, Left Winger', 'MIDFIELD'),
('MR-LW', 'Right Midfield, Left Winger', 'MIDFIELD'),
('AM-MC', 'Attacking Midfield, Central Midfield', 'MIDFIELD'),
('DM-MC', 'Defensive Midfield, Central Midfield', 'MIDFIELD'),
('ML-MC', 'Left Midfield, Central Midfield', 'MIDFIELD'),
('MR-MC', 'Right Midfield, Central Midfield', 'MIDFIELD'),
('AM-ML', 'Attacking Midfield, Left Midfield', 'MIDFIELD'),
('DM-ML', 'Defensive Midfield, Left Midfield', 'MIDFIELD'),
('MC-ML', 'Central Midfield, Left Midfield', 'MIDFIELD'),
('MR-ML', 'Right Midfield, Left Midfield', 'MIDFIELD'),
('AM-MR', 'Attacking Midfield, Right Midfield', 'MIDFIELD'),
('DM-MR', 'Defensive Midfield, Right Midfield', 'MIDFIELD'),
('MC-MR', 'Central Midfield, Right Midfield', 'MIDFIELD'),
('ML-MR', 'Left Midfield, Right Midfield', 'MIDFIELD'),
('AM-RW', 'Attacking Midfield, Right Winger', 'MIDFIELD'),
('DM-RW', 'Defensive Midfield, Right Winger', 'MIDFIELD'),
('MC-RW', 'Central Midfield, Right Winger', 'MIDFIELD'),
('ML-RW', 'Left Midfield, Right Winger', 'MIDFIELD'),
('MR-RW', 'Right Midfield, Right Winger', 'MIDFIELD'),
('AM-ST', 'Attacking Midfield, Centre-Forward', 'MIDFIELD'),
('DM-ST', 'Defensive Midfield, Centre-Forward', 'MIDFIELD'),
('MC-ST', 'Central Midfield, Centre-Forward', 'MIDFIELD'),
('ML-ST', 'Left Midfield, Centre-Forward', 'MIDFIELD'),
('MR-ST', 'Right Midfield, Centre-Forward', 'MIDFIELD');
";
(1, 'AM', 'Attacking Midfield', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(2, 'DC', 'Centre-Back', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(3, 'DL', 'Left-Back', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(4, 'DM', 'Defensive Midfield', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(5, 'DR', 'Right-Back', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(6, 'GK', 'Goalkeeper', 'GOALKEEPER', 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, NULL, NULL),
(7, 'LW', 'Left Winger', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(8, 'MC', 'Central Midfield', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(9, 'ML', 'Left Midfield', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(10, 'MR', 'Right Midfield', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(11, 'RW', 'Right Winger', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(12, 'ST', 'Centre-Forward', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(13, 'SS', 'Second Striker', 'ATTACK', 0.286, 0.183, 0.157, 1.230, 1.634, 0.339, 2.331, 0.849, 0.134, 0.087, 0.134, 1.189, 1.678, 0.405, 1.507, 0.588, NULL, NULL),
(14, 'SW', 'Sweeper', 'DEFENCE', 0.050, 0.027, 0.186, 0.877, 0.624, 0.053, 0.585, 0.306, 0.034, 0.020, 0.182, 0.981, 0.693, 0.034, 0.368, 0.182, NULL, NULL),
(15, 'DC-AM', 'Centre-Back / Attacking Midfield', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(16, 'DL-AM', 'Left-Back / Attacking Midfield', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(17, 'DM-AM', 'Defensive Midfield / Attacking Midfield', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(18, 'DR-AM', 'Right-Back / Attacking Midfield', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(19, 'LW-AM', 'Left Winger / Attacking Midfield', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(20, 'MC-AM', 'Central Midfield / Attacking Midfield', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(21, 'ML-AM', 'Left Midfield / Attacking Midfield', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(22, 'MR-AM', 'Right Midfield / Attacking Midfield', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(23, 'RW-AM', 'Right Winger / Attacking Midfield', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(24, 'ST-AM', 'Centre-Forward / Attacking Midfield', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(25, 'AM-DC', 'Attacking Midfield / Centre-Back', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(26, 'DL-DC', 'Left-Back / Centre-Back', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(27, 'DM-DC', 'Defensive Midfield / Centre-Back', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(28, 'DR-DC', 'Right-Back / Centre-Back', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(29, 'LW-DC', 'Left Winger / Centre-Back', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(30, 'MC-DC', 'Central Midfield / Centre-Back', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(31, 'ML-DC', 'Left Midfield / Centre-Back', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(32, 'MR-DC', 'Right Midfield / Centre-Back', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(33, 'RW-DC', 'Right Winger / Centre-Back', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(34, 'ST-DC', 'Centre-Forward / Centre-Back', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(35, 'AM-DL', 'Attacking Midfield / Left-Back', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(36, 'DC-DL', 'Centre-Back / Left-Back', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(37, 'DM-DL', 'Defensive Midfield / Left-Back', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(38, 'DR-DL', 'Right-Back / Left-Back', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(39, 'LW-DL', 'Left Winger / Left-Back', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(40, 'MC-DL', 'Central Midfield / Left-Back', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(41, 'ML-DL', 'Left Midfield / Left-Back', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(42, 'MR-DL', 'Right Midfield / Left-Back', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(43, 'RW-DL', 'Right Winger / Left-Back', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(44, 'ST-DL', 'Centre-Forward / Left-Back', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(45, 'AM-DM', 'Attacking Midfield / Defensive Midfield', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(46, 'DC-DM', 'Centre-Back / Defensive Midfield', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(47, 'DL-DM', 'Left-Back / Defensive Midfield', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(48, 'DR-DM', 'Right-Back / Defensive Midfield', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(49, 'LW-DM', 'Left Winger / Defensive Midfield', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(50, 'MC-DM', 'Central Midfield / Defensive Midfield', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(51, 'ML-DM', 'Left Midfield / Defensive Midfield', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(52, 'MR-DM', 'Right Midfield / Defensive Midfield', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(53, 'RW-DM', 'Right Winger / Defensive Midfield', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(54, 'ST-DM', 'Centre-Forward / Defensive Midfield', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(55, 'AM-DR', 'Attacking Midfield / Right-Back', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(56, 'DC-DR', 'Centre-Back / Right-Back', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(57, 'DL-DR', 'Left-Back / Right-Back', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(58, 'DM-DR', 'Defensive Midfield / Right-Back', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(59, 'LW-DR', 'Left Winger / Right-Back', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(60, 'MC-DR', 'Central Midfield / Right-Back', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(61, 'ML-DR', 'Left Midfield / Right-Back', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(62, 'MR-DR', 'Right Midfield / Right-Back', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(63, 'RW-DR', 'Right Winger / Right-Back', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(64, 'ST-DR', 'Centre-Forward / Right-Back', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(65, 'AM-LW', 'Attacking Midfield / Left Winger', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(66, 'DC-LW', 'Centre-Back / Left Winger', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(67, 'DL-LW', 'Left-Back / Left Winger', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(68, 'DM-LW', 'Defensive Midfield / Left Winger', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(69, 'DR-LW', 'Right-Back / Left Winger', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(70, 'MC-LW', 'Central Midfield / Left Winger', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(71, 'ML-LW', 'Left Midfield / Left Winger', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(72, 'MR-LW', 'Right Midfield / Left Winger', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(73, 'RW-LW', 'Right Winger / Left Winger', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(74, 'ST-LW', 'Centre-Forward / Left Winger', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(75, 'AM-MC', 'Attacking Midfield / Central Midfield', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(76, 'DC-MC', 'Centre-Back / Central Midfield', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(77, 'DL-MC', 'Left-Back / Central Midfield', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(78, 'DM-MC', 'Defensive Midfield / Central Midfield', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(79, 'DR-MC', 'Right-Back / Central Midfield', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(80, 'LW-MC', 'Left Winger / Central Midfield', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(81, 'ML-MC', 'Left Midfield / Central Midfield', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(82, 'MR-MC', 'Right Midfield / Central Midfield', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(83, 'RW-MC', 'Right Winger / Central Midfield', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(84, 'ST-MC', 'Centre-Forward / Central Midfield', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(85, 'AM-ML', 'Attacking Midfield / Left Midfield', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(86, 'DC-ML', 'Centre-Back / Left Midfield', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(87, 'DL-ML', 'Left-Back / Left Midfield', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(88, 'DM-ML', 'Defensive Midfield / Left Midfield', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(89, 'DR-ML', 'Right-Back / Left Midfield', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(90, 'LW-ML', 'Left Winger / Left Midfield', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(91, 'MC-ML', 'Central Midfield / Left Midfield', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(92, 'MR-ML', 'Right Midfield / Left Midfield', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(93, 'RW-ML', 'Right Winger / Left Midfield', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(94, 'ST-ML', 'Centre-Forward / Left Midfield', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(95, 'AM-MR', 'Attacking Midfield / Right Midfield', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(96, 'DC-MR', 'Centre-Back / Right Midfield', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(97, 'DL-MR', 'Left-Back / Right Midfield', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(98, 'DM-MR', 'Defensive Midfield / Right Midfield', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(99, 'DR-MR', 'Right-Back / Right Midfield', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(100, 'LW-MR', 'Left Winger / Right Midfield', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(101, 'MC-MR', 'Central Midfield / Right Midfield', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(102, 'ML-MR', 'Left Midfield / Right Midfield', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(103, 'RW-MR', 'Right Winger / Right Midfield', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(104, 'ST-MR', 'Centre-Forward / Right Midfield', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(105, 'AM-RW', 'Attacking Midfield / Right Winger', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(106, 'DC-RW', 'Centre-Back / Right Winger', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(107, 'DL-RW', 'Left-Back / Right Winger', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(108, 'DM-RW', 'Defensive Midfield / Right Winger', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(109, 'DR-RW', 'Right-Back / Right Winger', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(110, 'LW-RW', 'Left Winger / Right Winger', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(111, 'MC-RW', 'Central Midfield / Right Winger', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(112, 'ML-RW', 'Left Midfield / Right Winger', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(113, 'MR-RW', 'Right Midfield / Right Winger', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(114, 'ST-RW', 'Centre-Forward / Right Winger', 'ATTACK', 0.374, 0.129, 0.154, 1.417, 1.397, 0.586, 2.477, 0.930, 0.182, 0.069, 0.134, 1.376, 1.507, 0.588, 1.678, 0.626, NULL, NULL),
(115, 'AM-ST', 'Attacking Midfield / Centre-Forward', 'MIDFIELD', 0.208, 0.165, 0.169, 1.208, 1.485, 0.172, 1.880, 0.676, 0.118, 0.087, 0.134, 1.273, 1.507, 0.182, 1.273, 0.452, NULL, NULL),
(116, 'DC-ST', 'Centre-Back / Centre-Forward', 'DEFENCE', 0.044, 0.028, 0.195, 0.959, 0.665, 0.036, 0.525, 0.263, 0.029, 0.020, 0.223, 0.981, 0.693, 0.034, 0.336, 0.182, NULL, NULL),
(117, 'DL-ST', 'Left-Back / Centre-Forward', 'DEFENCE', 0.042, 0.093, 0.190, 1.041, 0.976, 0.073, 0.652, 0.285, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(118, 'DM-ST', 'Defensive Midfield / Centre-Forward', 'MIDFIELD', 0.059, 0.071, 0.239, 1.392, 1.144, 0.028, 0.899, 0.382, 0.041, 0.034, 0.182, 1.507, 1.189, 0.041, 0.588, 0.251, NULL, NULL),
(119, 'DR-ST', 'Right-Back / Centre-Forward', 'DEFENCE', 0.041, 0.086, 0.192, 1.097, 0.986, 0.063, 0.610, 0.271, 0.029, 0.041, 0.134, 1.118, 0.980, 0.069, 0.405, 0.182, NULL, NULL),
(120, 'LW-ST', 'Left Winger / Centre-Forward', 'ATTACK', 0.233, 0.176, 0.155, 1.138, 1.553, 0.314, 2.114, 0.745, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL),
(121, 'MC-ST', 'Central Midfield / Centre-Forward', 'MIDFIELD', 0.099, 0.104, 0.214, 1.353, 1.257, 0.058, 1.201, 0.474, 0.051, 0.051, 0.134, 1.377, 1.273, 0.069, 0.778, 0.310, NULL, NULL),
(122, 'ML-ST', 'Left Midfield / Centre-Forward', 'MIDFIELD', 0.117, 0.137, 0.163, 1.064, 1.214, 0.182, 1.315, 0.493, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(123, 'MR-ST', 'Right Midfield / Centre-Forward', 'MIDFIELD', 0.115, 0.130, 0.170, 1.118, 1.207, 0.161, 1.229, 0.471, 0.057, 0.069, 0.134, 1.118, 1.273, 0.167, 0.778, 0.310, NULL, NULL),
(124, 'RW-ST', 'Right Winger / Centre-Forward', 'ATTACK', 0.219, 0.184, 0.155, 1.159, 1.468, 0.286, 1.992, 0.709, 0.118, 0.087, 0.134, 1.189, 1.507, 0.310, 1.377, 0.511, NULL, NULL);
";
DB::unprepared($sql);
}
}
@@ -2,10 +2,30 @@
<div class="fixed left-0 top-0 h-screen dispatcher-board-root w-146 max-w-146 overflow-y-auto no-scrollbar">
{{ $this->table }}
</div>
<div class="fixed left-147 top-0 right-0 bottom-0 h-screen py-21 max-w-4xl">
<div class="m-4 flex flex-row">
<div>{{ $this->form }}</div>
<div class="font-black text-xl">{{ $ss_team_name }}</div>
<div class="fixed left-147 top-5 right-0 bottom-0 h-screen max-w-4xl">
<div>
<div class="font-black text-2xl text-center">{{ $ss_team_name }}</div>
<div class="grid grid-cols-2">
<div class="m-4">{{ $this->form }}</div>
<div class="w-full max-w-md mx-auto p-4" x-data="{ x_value: {{ $x_value }} }">
<div class="flex justify-between items-center mb-2">
<label for="volume-slider" class="text-sm font-medium text-gray-700 dark:text-gray-300">
Factor X
</label>
<!-- Zeigt den Wert live an -->
<span class="text-sm font-semibold text-gray-900 dark:text-white bg-gray-100 dark:bg-gray-800 px-2 py-0.5 rounded" x-text="x_value"></span>
</div>
<input
type="range"
wire:model.live="x_value"
wire:change="updateXvalue"
@disabled($rangeXDisabled)
min="0"
max="10"
class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer accent-primary-600"
>
</div>
</div>
</div>
<div class="mx-3 p-5 rounded col-span-5 grid grid-cols-7 grid-rows-5 gap-2 bg-cover bg-center bg-no-repeat aspect-7/5"
style="background-image: url({{ asset('images/soccerfield-cleand.jpg') }});">