diff --git a/app/Livewire/BoardDispatcher.php b/app/Livewire/BoardDispatcher.php index f1062338..1ff8edf8 100644 --- a/app/Livewire/BoardDispatcher.php +++ b/app/Livewire/BoardDispatcher.php @@ -39,6 +39,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa use RestrictsFileUploadsToSchemaComponents; public array $sourceRecords = []; + public array $calculationVariables = []; public array $filters = []; @@ -248,27 +249,27 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa ->modalWidth(Width::ExtraLarge) ->modalSubmitAction(false) ->modalCancelAction(false) - ->modalContent(fn() => view('filament.modals.position-abbreviation')), + ->modalContent(fn () => view('filament.modals.position-abbreviation')), Action::make('reset') ->hiddenLabel() ->size(Size::Small) ->tooltip('Remove all players from field') ->icon('phosphor-arrows-clockwise') - ->action(fn() => $this->clearResultTable()), + ->action(fn () => $this->clearResultTable()), Action::make('copy_results') ->tooltip('Copy results for pasting into a spread sheet') ->hiddenLabel() ->size(Size::Small) ->icon('phosphor-copy') - ->action(fn() => $this->copyResult()), + ->action(fn () => $this->copyResult()), Action::make('copy_development') ->tooltip('Copy calculation variables') ->hiddenLabel() ->size(Size::Small) - ->hidden(fn() => !in_array(Auth::user()->id, [1, 2])) + ->hidden(fn () => ! in_array(Auth::user()->id, [1, 2])) ->color('warning') ->icon('phosphor-copy') - ->action(fn() => $this->copyDevelopment()), + ->action(fn () => $this->copyDevelopment()), ]) /** * WICHTIG: Da Filament v5 zwingend eine Query braucht, nutzen wir ein @@ -281,7 +282,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa ->columns([ ViewColumn::make('drag_card') ->columnSpanFull() - ->label(fn() => $this->getHeadingTable()) + ->label(fn () => $this->getHeadingTable()) ->view('filament.tables.columns.drag-card'), ]) ->filters([ @@ -297,7 +298,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa 'midfield' => 'Midfield', 'defence' => 'Defence', 'goalkeeper' => 'Goalkeeper', - ])->modifyFormFieldUsing(fn(Select $component) => $component->allowHtml()) + ])->modifyFormFieldUsing(fn (Select $component) => $component->allowHtml()) ->query(function ($query) { return $query; })->indicateUsing(function (array $data): array { @@ -420,7 +421,11 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa $copystring = ''; foreach ($this->calculationVariables as $row) { - $copystring .= implode("\t", $row) . "\n"; + if (! $copystring) { + $row = array_keys($row); + $copystring .= implode("\t", $row)."\n"; + } + $copystring .= implode("\t", $row)."\n"; } $this->js("navigator.clipboard.writeText(`$copystring`)"); @@ -436,7 +441,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa return; } $header = ['name', 'foot', 'events', 'average min', 'position', 'on field', 'gls', 'fls', 'ofs', 'snt', 'tsh', 'crd']; - $copystring = implode("\t", $header) . "\n"; + $copystring = implode("\t", $header)."\n"; foreach ($this->sourceRecords as $row) { $tmp = []; $tmp[] = $row['name']; @@ -456,7 +461,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa $tmp[] = $row['tsh']; $tmp[] = $row['crd']; - $copystring .= implode("\t", $tmp) . "\n"; + $copystring .= implode("\t", $tmp)."\n"; } $this->js("navigator.clipboard.writeText(`$copystring`)"); @@ -576,19 +581,19 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa $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); + $asp_statistica = (float) SofaScorePlayerPosition::where('ss_code', $position)->value('exp_'.$bettype); - $tmp['asp_statistica_' . $bettype] = $asp_statistica; + $tmp['asp_statistica_'.$bettype] = $asp_statistica; if ($val->total_min < $this->y_value) { // Se la SMG è < Y per quel Player prenderemo in considerazione solo l'Aspettativa Statistica (AS). - $tmp['asp_teorica_' . $bettype] = $asp_statistica; + $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); + $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) @@ -603,11 +608,11 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa $bettypes = ['goals', 'cards', 'fouls', 'offsides', 'total_shots', 'shots_on_target']; foreach ($bettypes as $bettype) { - $total_bettype = array_sum(array_column($results, 'asp_teorica_' . $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; + $results[$key]['asp_total_'.$bettype] = $total_bettype; + $results[$key]['asp_player_'.$bettype] = ((float) $value['asp_team'] * (float) $value['asp_teorica_'.$bettype]) / $total_bettype; } }