diff --git a/app/Actions/PlayerPerSeason.php b/app/Actions/PlayerPerSeason.php index 99ec477f..0da1b774 100644 --- a/app/Actions/PlayerPerSeason.php +++ b/app/Actions/PlayerPerSeason.php @@ -14,7 +14,7 @@ class PlayerPerSeason // when data changes clear player chche SofaScorePlayerCache::truncate(); - $res = StatistikoDetail::query()->select('ss_player_id', 'ss_team_id')->get(); + $res = StatistikoDetail::query()->where('is_active', 1)->select('ss_player_id', 'ss_team_id')->get(); foreach ($res as $val) { @@ -25,7 +25,7 @@ class PlayerPerSeason foreach ($res2 as $val2) { if (isset($val2->event->season)) { - if (!isset($collection[$val2->event->season])) { + 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; @@ -37,7 +37,7 @@ class PlayerPerSeason $collection[$val2->event->season]['events_played_home'] += 1; $collection[$val2->event->season]['minutes_played_home'] += $val2->minutes_played; - } else if ($val2->activeteam_id == $val2->event->away_id) { + } 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; @@ -52,7 +52,7 @@ class PlayerPerSeason [ 'ss_player_id' => $val->ss_player_id, 'ss_team_id' => $val->ss_team_id, - 'season' => $season + 'season' => $season, ], [ 'events_played_home' => $row['events_played_home'], diff --git a/app/Console/Commands/Grapper/Sofascore/Rose.php b/app/Console/Commands/Grapper/Sofascore/Rose.php index 263f18a3..b6011f7f 100644 --- a/app/Console/Commands/Grapper/Sofascore/Rose.php +++ b/app/Console/Commands/Grapper/Sofascore/Rose.php @@ -2,10 +2,10 @@ namespace App\Console\Commands\Grapper\Sofascore; +use App\Console\Commands\Grap; use App\Console\Commands\Grapper\Sofascore\Helper\CurlSofa; use App\Console\Commands\Grapper\Sofascore\Helper\Sleeper; use App\Console\Commands\Grapper\Sofascore\Helper\Strings; -use App\Console\Commands\Grap; use App\Models\SofaScoreRosa; use App\Utilities\Notice; use Illuminate\Support\Facades\File; @@ -17,13 +17,12 @@ class Rose $debug = Grap::$options['d'] ?? 0; $restart = Grap::$options['r'] ?? 0; - - if ($debug && !$restart) { - Notice::note("RESTART ?", 'bb'); + if ($debug && ! $restart) { + Notice::note('RESTART ?', 'bb'); sleep(5); } - File::makeDirectory(Grap::$storage . '/' . Grap::$folder, 0775, true, true); + File::makeDirectory(Grap::$storage.'/'.Grap::$folder, 0775, true, true); if ($restart) { SofaScoreRosa::query()->update(['grapped' => 0]); @@ -36,8 +35,7 @@ class Rose } } - $res = SofaScoreRosa::where('grapped', 0)->get(); - + $res = SofaScoreRosa::where('is_active', 1)->where('grapped', 0)->get(); $all = $res->count(); @@ -52,7 +50,7 @@ class Rose echo "\n$key/$all\n"; } - $url = Grap::$options['base_url'] . 'api/v1/team/' . $value->ss_team_id . '/players'; + $url = Grap::$options['base_url'].'api/v1/team/'.$value->ss_team_id.'/players'; $data = CurlSofa::load($url); @@ -63,7 +61,7 @@ class Rose * add team to folder *********************************/ - File::put(Grap::$storage . '/' . Grap::$folder . '/' . Strings::clean($value->ss_team_name) . '.json', json_encode($data)); + File::put(Grap::$storage.'/'.Grap::$folder.'/'.Strings::clean($value->ss_team_name).'.json', json_encode($data)); SofaScoreRosa::where('id', $value->id)->update(['grapped' => 1]); diff --git a/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php b/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php index 5d82e3f1..f67a8ce4 100644 --- a/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php +++ b/app/Console/Commands/Grapper/Sofascore/SettingsToLocal.php @@ -3,6 +3,7 @@ namespace App\Console\Commands\Grapper\Sofascore; use App\Console\Commands\Grap; +use App\Models\SofaScoreRosa; use App\Models\SofaScoreTask; use App\Models\SofaScoreTaskTournament; use App\Models\SofaScoreTournament; @@ -16,17 +17,29 @@ class SettingsToLocal $debug = Grap::$options['d'] ?? 0; if ($debug) { - Notice::note("⚽ settings to local"); - Notice::note("⚽ close all vpn"); + Notice::note('⚽ settings to local'); + Notice::note('⚽ close all vpn'); } exec('killall ssh'); if ($debug) { - Notice::note("⚽ open vpn"); + Notice::note('⚽ open vpn'); } exec('ssh -f -N -L 13306:127.0.0.1:3306 -p 58371 root@162.55.242.190'); - - + /** + * SofaScoreRosa + */ + if ($debug) { + Notice::note('SofaScoreRosa', 'g'); + } + SofaScoreRosa::truncate(); + $rows = DB::connection('remote_mariadb')->table('sofa_score_rosas')->get(); + foreach ($rows as $row) { + SofaScoreRosa::insert((array) $row); + } + /** + * SofaScoreTask + */ if ($debug) { Notice::note('SofaScoreTask', 'g'); } @@ -35,7 +48,9 @@ class SettingsToLocal foreach ($rows as $row) { SofaScoreTask::insert((array) $row); } - + /** + * SofaScoreTaskTournament + */ if ($debug) { Notice::note('SofaScoreTaskTournament', 'g'); } @@ -44,7 +59,9 @@ class SettingsToLocal foreach ($rows as $row) { SofaScoreTaskTournament::insert((array) $row); } - + /** + * SofaScoreTournament + */ if ($debug) { Notice::note('SofaScoreTournament', 'g'); } @@ -55,7 +72,7 @@ class SettingsToLocal } if ($debug) { - Notice::note("⚽ close all vpn"); + Notice::note('⚽ close all vpn'); } exec('killall ssh'); } diff --git a/app/Filament/Imports/Helper/ImportDetails.php b/app/Filament/Imports/Helper/ImportDetails.php index 64ba6d1a..e3a12c40 100644 --- a/app/Filament/Imports/Helper/ImportDetails.php +++ b/app/Filament/Imports/Helper/ImportDetails.php @@ -14,7 +14,7 @@ class ImportDetails { $now = now()->format('Y-m-d H:i:s'); - SimpleExcelReader::create(storage_path('app/public/' . $filePath)) + SimpleExcelReader::create(storage_path('app/public/'.$filePath)) ->getRows() ->chunk(1000) ->each(function (LazyCollection $chunk) use ($now) { @@ -23,11 +23,10 @@ class ImportDetails $row = array_values($row); - // ss_player_id - // + // ss_player_id // ss_team_id // tx_team_id - // player_name + // player_name // ss_national_team_id // birthdate // height @@ -50,7 +49,7 @@ class ImportDetails 'nationality' => $row[6], 'position' => $row[7], 'preferred_foot' => $row[8], - 'last_update' => Carbon::parse($row[9])->format('Y-m-d H:i:s'), + 'last_update' => Carbon::parse($row[9])->format('Y-m-d H:i:s'), 'is_active' => 1, 'created_at' => $now, 'updated_at' => $now, @@ -60,6 +59,8 @@ class ImportDetails } }); + StatistikoDetail::where('updated_at', '!=', $now)->update(['is_active' => 0]); + /**update statistic player tabel */ PlayerPerSeason::run(); } diff --git a/app/Filament/Pages/Statistic.php b/app/Filament/Pages/Statistic.php index 80232927..58c13df5 100644 --- a/app/Filament/Pages/Statistic.php +++ b/app/Filament/Pages/Statistic.php @@ -93,14 +93,14 @@ class Statistic extends BaseDashboard ->label('Calculate') ->icon('icon-player') ->color('indigo') - ->color(fn(): string => $this->filters['team_id'] ? 'primary' : 'gray') - ->disabled(fn(): string => $this->filters['team_id'] ? false : true) + ->color(fn (): string => $this->filters['team_id'] ? 'primary' : 'gray') + ->disabled(fn (): string => $this->filters['team_id'] ? false : true) ->slideOver() ->slideOverPosition(SlideOverPosition::Start) ->modalWidth(Width::Screen) ->modalSubmitAction(false) ->modalCancelAction(false) - ->modalContent(fn(): View => view('livewire.board-dispatcher-modal-wrapper', ['filters' => $this->filters])), + ->modalContent(fn (): View => view('livewire.board-dispatcher-modal-wrapper', ['filters' => $this->filters])), ]; } @@ -138,10 +138,10 @@ class Statistic extends BaseDashboard ->live() ->preload() ->searchable(false) - ->prefixIconColor(fn(Get $get): string => $get('sofascore_category_id') ? 'success' : 'danger') + ->prefixIconColor(fn (Get $get): string => $get('sofascore_category_id') ? 'success' : 'danger') ->prefixIcon('phosphor-globe-fill') ->hiddenLabel() - ->options(fn() => LoadSofaScoreCategory::load()) + ->options(fn () => LoadSofaScoreCategory::load()) ->placeholder('Country') ->afterStateUpdated(function (callable $set, $state) { $set('seasonmode', SofaScoreCategory::where('id', $state)->value('season_mode')); @@ -154,10 +154,10 @@ class Statistic extends BaseDashboard Select::make('league_id') ->live() ->preload() - ->prefixIconColor(fn(Get $get): string => $get('league_id') ? 'success' : 'danger') + ->prefixIconColor(fn (Get $get): string => $get('league_id') ? 'success' : 'danger') ->prefixIcon('phosphor-trophy-fill') ->hiddenLabel() - ->options(fn(Get $get) => LoadStatisticFixturesLeaguesOptions::load($get('sofascore_category_id'))) + ->options(fn (Get $get) => LoadStatisticFixturesLeaguesOptions::load($get('sofascore_category_id'))) ->placeholder('League') ->afterStateUpdated(function (callable $set) { $set('match_id', null); @@ -168,7 +168,7 @@ class Statistic extends BaseDashboard Select::make('match_id') ->live() ->hiddenLabel() - ->prefixIconColor(fn(Get $get): string => $get('match_id') ? 'success' : 'danger') + ->prefixIconColor(fn (Get $get): string => $get('match_id') ? 'success' : 'danger') ->prefixIcon('phosphor-calendar-check-fill') ->options(function (Get $get) { return LoadStatisticFixturesMatchOptions::load($get('league_id')); @@ -193,7 +193,7 @@ class Statistic extends BaseDashboard } }) ->prefixIcon('phosphor-users-three-fill') - ->hidden(fn(Get $get) => $get('similar_past_matches') != 'none') + ->hidden(fn (Get $get) => $get('similar_past_matches') != 'none') ->options(function (Get $get) { if ($get('match_id')) { $res = StatisticFixtures::where('id', $get('match_id'))->first(); @@ -222,9 +222,9 @@ class Statistic extends BaseDashboard Action::make('iconInfo') ->color('success') ->icon('phosphor-question-fill') - ->tooltip(fn() => 'Team Position') + ->tooltip(fn () => 'Team Position') ) - ->hidden(fn(Get $get) => $get('similar_past_matches') != 'none') + ->hidden(fn (Get $get) => $get('similar_past_matches') != 'none') ->default('all') ->selectablePlaceholder(false) ->options([ @@ -280,17 +280,17 @@ class Statistic extends BaseDashboard ->hiddenLabel() ->suffixAction(Action::make('reset') ->icon('phosphor-x-circle') - ->action(fn(callable $set) => $set('similar_past_matches', 'none')) - ->color(fn(Get $get): string => $get('similar_past_matches') != 'none' ? 'info' : 'gray')) + ->action(fn (callable $set) => $set('similar_past_matches', 'none')) + ->color(fn (Get $get): string => $get('similar_past_matches') != 'none' ? 'info' : 'gray')) ->placeholder('Similar Past Matches') - ->suffix(fn(Get $get): string|HtmlString => $get('similar_past_matches') != 'none' ? new HtmlString('
± ' . $get('accuracy') . '
') : '') + ->suffix(fn (Get $get): string|HtmlString => $get('similar_past_matches') != 'none' ? new HtmlString('
± '.$get('accuracy').'
') : '') ->prefix('SPM') ->prefixAction( Action::make('iconInfo') ->icon('phosphor-question-fill') // ->color(fn(Get $get): string => $get('similar_past_matches') != 'none' ? 'success' : 'primary') ->color('success') - ->tooltip(fn() => $this->tooltip_similar_past_matches()) + ->tooltip(fn () => $this->tooltip_similar_past_matches()) ) ->default('none') ->selectablePlaceholder(false) @@ -310,7 +310,7 @@ class Statistic extends BaseDashboard Slider::make('accuracy') ->live() ->hiddenLabel() - ->hidden(fn(Get $get) => $get('similar_past_matches') == 'none') + ->hidden(fn (Get $get) => $get('similar_past_matches') == 'none') ->fillTrack() ->minValue(0) ->maxValue(0.25) @@ -329,17 +329,17 @@ class Statistic extends BaseDashboard ->hiddenLabel() ->allowHtml() ->placeholder('Player') - ->hidden(fn(Get $get) => $get('similar_past_matches') != 'none') - ->prefixIconColor(fn(Get $get): string => $get('similar_past_matches') == 'none' ? 'success' : '') + ->hidden(fn (Get $get) => $get('similar_past_matches') != 'none') + ->prefixIconColor(fn (Get $get): string => $get('similar_past_matches') == 'none' ? 'success' : '') ->prefixIcon('icon-player') ->preload() ->searchable() - ->extraAttributes(fn() => ['id' => 'player_selector']) + ->extraAttributes(fn () => ['id' => 'player_selector']) ->suffixAction( Action::make('iconInfo') ->icon('phosphor-question-fill') ->color('success') - ->tooltip(fn() => $this->tooltip_player_info()) + ->tooltip(fn () => $this->tooltip_player_info()) ) ->options(function (Get $get) { $team_id = $get('team_id'); @@ -356,7 +356,7 @@ class Statistic extends BaseDashboard ->placeholder('Time on field') ->prefixIcon('phosphor-watch-fill') ->default('all') - ->hidden(fn(Get $get) => ! $get('ss_player_id')) + ->hidden(fn (Get $get) => ! $get('ss_player_id')) ->prefixIconColor('success') ->selectablePlaceholder(false) ->options([ @@ -376,7 +376,7 @@ class Statistic extends BaseDashboard ->extraAttributes([ 'class' => 'radio-statistic-group', ]) - ->hidden(fn(Get $get) => $get('similar_past_matches') != 'none') + ->hidden(fn (Get $get) => $get('similar_past_matches') != 'none') ->columnSpan([ 'default' => 4, 'sm' => 4, @@ -400,7 +400,7 @@ class Statistic extends BaseDashboard ->multiple() ->placeholder('Current Season') ->prefixIconColor('success') - ->hidden(fn(Get $get) => $get('seasonmode') == 'halfyear' || $get('season_or_date') == 'date' || $get('similar_past_matches') != 'none') + ->hidden(fn (Get $get) => $get('seasonmode') == 'halfyear' || $get('season_or_date') == 'date' || $get('similar_past_matches') != 'none') ->prefixIcon('phosphor-calendar-star-fill') ->options([ '2026' => '2026', @@ -420,7 +420,7 @@ class Statistic extends BaseDashboard ->multiple() ->placeholder('Current Season') ->prefixIconColor('success') - ->hidden(fn(Get $get) => $get('seasonmode') == 'fullyear' || $get('season_or_date') == 'date' || $get('similar_past_matches') != 'none') + ->hidden(fn (Get $get) => $get('seasonmode') == 'fullyear' || $get('season_or_date') == 'date' || $get('similar_past_matches') != 'none') ->prefixIcon('phosphor-calendar-star-fill') ->options([ '26/27' => '26/27', @@ -436,30 +436,30 @@ class Statistic extends BaseDashboard DatePicker::make('start_date') ->live() ->hiddenLabel() - ->hidden(fn(Get $get) => $get('season_or_date') == 'season') + ->hidden(fn (Get $get) => $get('season_or_date') == 'season') ->native(false) - ->prefixIconColor(fn(Get $get): string => $get('start_date') ? 'success' : 'primary') + ->prefixIconColor(fn (Get $get): string => $get('start_date') ? 'success' : 'primary') ->prefixIcon('phosphor-calendar-fill') ->prefix('Start') ->suffixAction( Action::make('clear_start') ->icon('phosphor-x') ->color('gray') - ->action(fn(Set $set) => $set('start_date', null)) + ->action(fn (Set $set) => $set('start_date', null)) ), DatePicker::make('end_date') ->live() ->hiddenLabel() - ->hidden(fn(Get $get) => $get('season_or_date') == 'season') + ->hidden(fn (Get $get) => $get('season_or_date') == 'season') ->native(false) - ->prefixIconColor(fn(Get $get): string => $get('end_date') ? 'success' : 'primary') + ->prefixIconColor(fn (Get $get): string => $get('end_date') ? 'success' : 'primary') ->prefixIcon('phosphor-calendar-fill') ->prefix('End') ->suffixAction( Action::make('clear_end') ->icon('phosphor-x') ->color('gray') - ->action(fn(Set $set) => $set('end_date', null)) + ->action(fn (Set $set) => $set('end_date', null)) ), ]); } diff --git a/app/Livewire/BoardDispatcher.php b/app/Livewire/BoardDispatcher.php index 461c49c3..53470e7f 100644 --- a/app/Livewire/BoardDispatcher.php +++ b/app/Livewire/BoardDispatcher.php @@ -3,6 +3,7 @@ namespace App\Livewire; use App\Models\SofaScoreRosa; +use App\Models\User; use Filament\Actions\Action; use Filament\Actions\Concerns\InteractsWithActions; use Filament\Actions\Contracts\HasActions; @@ -16,28 +17,33 @@ use Filament\Tables\Enums\FiltersLayout; use Filament\Tables\Filters\SelectFilter; use Filament\Tables\Table; use Illuminate\Support\Facades\Log; +use Illuminate\Support\HtmlString; use Livewire\Attributes\On; use Livewire\Component; class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTable { - use InteractsWithActions; use InteractsWithSchemas; use InteractsWithTable; use RestrictsFileUploadsToSchemaComponents; public array $sourceRecords = []; + public array $lists = []; + public array $results = []; + public array $activeBoxes = [2 => 'DR', 4 => 'MR', 6 => 'RW', 9 => 'DC', 10 => 'DM', 11 => 'MC', 12 => 'AM', 15 => 'SW', 16 => 'DC', 17 => 'DM', 18 => 'MC', 19 => 'AM', 20 => 'SM', 21 => 'ST', 23 => 'DC', 24 => 'DM', 25 => 'MC', 26 => 'AM', 30 => 'DL', 32 => 'ML', 34 => 'LM']; - public bool $copyDisabled = true; + + public bool $downloadDisabled = true; + public bool $calculationDisabled = true; - public string $calculationColor = 'gray'; - public string $copyColor = 'gray'; + public string $ss_team_name = ''; public array $boxes = []; + public array $beschriftung = []; public function mount(array $filters) @@ -48,37 +54,65 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa for ($i = 1; $i <= 35; $i++) { $this->boxes[$i] = []; - if (isset($this->activeBoxes[$i])) + if (isset($this->activeBoxes[$i])) { $this->beschriftung[$i] = $this->activeBoxes[$i]; - else + } else { $this->beschriftung[$i] = ''; + } } Log::debug('boxes', $this->boxes); } + public function getHeadingTable(): HtmlString + { + return new HtmlString('
'.$this->ss_team_name.'
+
+
Foot
+
Evt
+
Øm
+
Gls
+
Crn
+
Fls
+
Ofs
+
Snt
+
Tsh
+
Crd
+
'); + } + public function table(Table $table): Table { return $table ->headerActions([ - Action::make('close')->icon('phosphor-x')->close(), - Action::make('reset')->icon('phosphor-arrows-clockwise'), - Action::make('calculate')->icon('phosphor-calculator')->color('gray'), - Action::make('download')->icon('phosphor-download')->color('gray'), + Action::make('close') + ->icon('phosphor-x') + ->close(), + Action::make('reset') + ->icon('phosphor-arrows-clockwise') + ->action(fn () => $this->clearAll()), + Action::make('calculate') + ->icon('phosphor-calculator') + ->disabled($this->calculationDisabled) + ->action(fn () => $this->calculateAspg()), + Action::make('download') + ->icon('phosphor-download') + ->disabled($this->downloadDisabled) + ->action(fn () => $this->downloadResult()), ]) /** - * WICHTIG: Da Filament v5 zwingend eine Query braucht, nutzen wir ein + * WICHTIG: Da Filament v5 zwingend eine Query braucht, nutzen wir ein * leeres Modell (z.B. ein beliebiges Basis-Modell deines Projekts) NUR als Dummy-Builder. * Alternativ kannst du ein anonymes Model nutzen. */ - ->query(\App\Models\User::query()->whereRaw('1 = 0')) // Verhindert DB-Abfragen + ->query(User::query()->whereRaw('1 = 0')) // Verhindert DB-Abfragen ->paginated(false) - // ->striped() + ->striped() ->defaultSort('name') ->columns([ ViewColumn::make('drag_card') ->columnSpanFull() - ->label('Roster of ' . $this->ss_team_name) + ->label(fn () => $this->getHeadingTable()) ->view('filament.tables.columns.drag-card'), ]) ->filters([ @@ -98,9 +132,10 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa ->records(function () { $collection = collect($this->sourceRecords); $selectedPosition = $this->tableFilters['player_position']['value'] ?? null; - if (!empty($selectedPosition)) { + if (! empty($selectedPosition)) { $collection = $collection->where('player_position', $selectedPosition); } + return $collection; }); } @@ -111,17 +146,21 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa $boxNumber = (int) $boxNumber; $player = is_array($elementData) ? $elementData : json_decode($elementData, true); - if (!$player || !isset($player['id'])) { + if (! $player || ! isset($player['id'])) { return; } foreach ($this->sourceRecords as $k => $record) { if ($record['id'] == (int) $player['id']) { + + $this->calculationDisabled = false; + if ($this->boxes[$boxNumber]) { $this->clearBox($boxNumber); } $this->boxes[$boxNumber] = $record; $this->sourceRecords[$k]['active'] = 1; + $this->sourceRecords[$k]['position'] = $this->activeBoxes[$boxNumber]; } } } @@ -132,207 +171,56 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa $tmp = $this->boxes[$boxNumber]; $player_id = 0; foreach ($tmp as $key => $value) { - if ($key == 'id') + if ($key == 'id') { $player_id = $value; + } } foreach ($this->sourceRecords as $k => $record) { if ($record['id'] == (int) $player_id) { $this->boxes[$boxNumber] = []; + $this->sourceRecords[$k]['position'] = ''; $this->sourceRecords[$k]['active'] = 0; } } } } + public function calculateAspg(): void + { + $this->downloadDisabled = false; + } + + public function clearAll(): void + { + for ($i = 1; $i <= 35; $i++) { + $this->boxes[$i] = []; + } + foreach ($this->sourceRecords as $k => $record) { + $this->sourceRecords[$k]['position'] = ''; + $this->sourceRecords[$k]['active'] = 0; + } + + $this->downloadDisabled = true; + $this->calculationDisabled = true; + } + + public function downloadResult() + { + return; + + $copystring = ''; + foreach ($this->results as $row) { + unset($row['origin']); + unset($row['pcolor']); + unset($row['ecolor']); + unset($row['info']); + $copystring .= implode("\t", $row)."\n"; + } + $this->js("navigator.clipboard.writeText(`$copystring`)"); + } + public function render() { return view('livewire.board-dispatcher'); } - - - // public function setCalculationButton() - // { - // $count = 1; - // for ($i = 1; $i <= 35; $i++) { - // $bayKey = "dest-{$i}"; - - // if (isset($this->lists[$bayKey]) && ! empty($this->lists[$bayKey])) { - // $count++; - // } - // } - // if ($count > 2) { - // $this->calculationDisabled = false; - // $this->calculationColor = 'info'; - // } else { - // $this->calculationDisabled = true; - // $this->calculationColor = 'gray'; - // } - // } - - // public function setCopyButton() - // { - // if (\count($this->results) > 0) { - // $this->copyDisabled = false; - // $this->copyColor = 'info'; - // } else { - // $this->copyDisabled = true; - // $this->copyColor = 'gray'; - // } - // } - - // public function calculate() - // { - // $this->results = []; - // for ($i = 1; $i <= 35; $i++) { - // $bayKey = "dest-{$i}"; - - // if (isset($this->lists[$bayKey]) && ! empty($this->lists[$bayKey])) { - // $this->results[] = $this->lists[$bayKey][0]; - // } - // } - - // $this->setCopyButton(); - // } - - // public function copyResult() - // { - // $copystring = ''; - // foreach ($this->results as $row) { - // unset($row['origin']); - // unset($row['pcolor']); - // unset($row['ecolor']); - // unset($row['info']); - // $copystring .= implode("\t", $row) . "\n"; - // } - // $this->js("navigator.clipboard.writeText(`$copystring`)"); - // } - - - // public function moveItem($itemId, $fromList, $toList, $newIndex) - // { - // $itemId = (string) $itemId; - // $newIndex = (int) $newIndex; - - // if (! $toList || $fromList === $toList || ! isset($this->lists[$fromList]) || ! isset($this->lists[$toList])) { - // $this->boardVersion = uniqid(); - - // return; - // } - - // // Limit-Guard: Wenn das Ziel bereits ein Element enthält, abbrechen - // if (count($this->lists[$toList]) >= 1) { - // $this->boardVersion = uniqid(); - - // return; - // } - - // $foundItem = null; - - // foreach ($this->lists[$fromList] as $key => $item) { - // if ((string) $item['id'] === $itemId) { - // $item['position'] = $this->positions($toList); - // $foundItem = $item; - // unset($this->lists[$fromList][$key]); - // $this->lists[$fromList] = array_values($this->lists[$fromList]); - // break; - // } - // } - - // if ($foundItem) { - // array_splice($this->lists[$toList], $newIndex, 0, [$foundItem]); - // } - - // $this->setCalculationButton(); - - // $this->boardVersion = uniqid(); - // } - - // public function positions(string $pos) - // { - // $pos = (int) str_replace('dest-', '', $pos); - // $options = [2 => 'DR', 4 => 'MR', 6 => 'RW', 9 => 'DC', 10 => 'DM', 11 => 'MC', 12 => 'AM', 15 => 'SW', 16 => 'DC', 17 => 'DM', 18 => 'MC', 19 => 'AM', 20 => 'SM', 21 => 'ST', 23 => 'DC', 24 => 'DM', 25 => 'MC', 26 => 'AM', 30 => 'DL', 32 => 'ML', 34 => 'LM']; - // if (isset($options[$pos])) - // return $options[$pos]; - // else - // return $pos; - // } - - // public function returnToOrigin($itemId, $currentListId) - // { - // $itemId = (string) $itemId; - - // // Log::info($this->boardVersion); - // // Log::info('itemId, currentListId', [$itemId, $currentListId]); - // // Log::info('OLD LIST', $this->lists); - - // if (! isset($this->lists[$currentListId])) { - // $this->boardVersion = uniqid(); - - // return; - // } - - // $foundItem = null; - - // foreach ($this->lists[$currentListId] as $key => $item) { - // if ((string) $item['id'] === $itemId) { - // $foundItem = $item; - // unset($this->lists[$currentListId][$key]); - // $this->lists[$currentListId] = array_values($this->lists[$currentListId]); - // break; - // } - // } - - // if ($foundItem && isset($this->lists[$foundItem['origin']])) { - // // Nur zurücklegen, wenn die Quelle wirklich frei ist - // array_unshift($this->lists[$foundItem['origin']], $foundItem); - // // if (count($this->lists[$foundItem['origin']]) < 2) { - // // Log::info('origin'); - // // array_unshift($this->lists[$foundItem['origin']], $foundItem); - // // } else { - // // // Ausfallsicherheit gegen Datenverlust: Zurück in die Bucht schieben - // // array_unshift($this->lists[$currentListId], $foundItem); - // // Log::info('box'); - // // } - // } - - // $this->setCalculationButton(); - - // $this->boardVersion = uniqid(); - // } - - // public function resetBoard() - // { - // // Alle 21 Zielbays durchlaufen - // for ($i = 1; $i <= 21; $i++) { - // $bayKey = "dest-{$i}"; - - // if (isset($this->lists[$bayKey]) && ! empty($this->lists[$bayKey])) { - // foreach ($this->lists[$bayKey] as $item) { - // $targetOrigin = $item['origin']; - - // // Element zurück in sein Original-Quell-Tab schieben - // if (isset($this->lists[$targetOrigin])) { - // array_unshift($this->lists[$targetOrigin], $item); - // } - // } - - // // Die Zielbucht komplett leeren - // $this->lists[$bayKey] = []; - // } - // } - - // // Falls Sie die boardVersion-Logik nutzen, erneuern wir sie hier für den DOM-Refresh: - // if (property_exists($this, 'boardVersion')) { - // $this->boardVersion = uniqid(); - // } - - // // Falls Sie die Javascript-Event/ignore-Logik nutzen, feuern wir das Refresh-Event: - // $this->dispatch('refreshBoard', lists: $this->lists); - - // $this->results = []; - - // $this->setCalculationButton(); - - // $this->setCopyButton(); - // } } diff --git a/app/Livewire/PlayerCalculator.php b/app/Livewire/PlayerCalculator.php index a6d22aa6..35203e65 100644 --- a/app/Livewire/PlayerCalculator.php +++ b/app/Livewire/PlayerCalculator.php @@ -47,7 +47,7 @@ class PlayerCalculator extends Component $arr = []; foreach ($player as $val) { - if ($val->details) { + if ($val->details && $val->details->is_active) { $player_id = $val->ss_player_id; if (! isset($arr[$player_id])) { $arr[$player_id]['player_name'] = $val->details->player_name; @@ -126,7 +126,15 @@ class PlayerCalculator extends Component 'timed_color' => $timed_color, 'events_played' => $events_played, 'everage_minutes' => $everage_minutes, + 'position' => '', 'active' => 0, + 'gls' => 0, + 'crn' => 0, + 'fls' => 0, + 'ofs' => 0, + 'snt' => 0, + 'tsh' => 0, + 'crd' => 0, ]; } diff --git a/app/Livewire/backup.txt b/app/Livewire/backup.txt deleted file mode 100644 index 13e22cc3..00000000 --- a/app/Livewire/backup.txt +++ /dev/null @@ -1,284 +0,0 @@ -boardVersion = uniqid(); - - $this->filters = $filters; - - $active = [2, 4, 6, 9, 10, 11, 12, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 30, 32, 34]; - - for ($i = 1; $i <= 35; $i++) { - if (in_array($i, $active)) - $this->lists["dest-{$i}"] = []; - else - $this->lists["blind-{$i}"] = []; - } - } - - /* - 'id' => $player_id, - 'name' => $val['player_name'], - 'preferred_foot' => $val['preferred_foot'], - 'player_position' => $player_position, - 'player_color' => $player_color, - 'timed_color' => $timed_color, - 'events_played' => $events_played, - 'everage_minutes' => $everage_minutes, - */ - public function table(Table $table): Table - { - return $table - ->headerActions([ - Action::make('Close')->icon('phosphor-x')->close() - ]) - ->records(fn(): array => PlayerCalculator::load($this->filters)) - ->paginated(false) - ->striped() - ->columns([ - TextColumn::make('name') - ->sortable() - // ->searchable() - ->icon('icon-soccerplayer') - ->extraAttributes(fn($record) => [ - 'data-id' => $record['id'], - 'class' => 'sortable-zone', - 'style' => 'padding: 4px !important; cursor:pointer; user-select: none;', - 'wire:key' => "item-src-" . $record['id'] . "-v-" . $this->boardVersion - ]), - ]) - ->filters([ - // ... - ]) - ->recordActions([ - // ... - ]) - ->toolbarActions([ - // ... - ]); - } - - public function render() - { - return view('livewire.board-dispatcher'); - } - - - public function setCalculationButton() - { - $count = 1; - for ($i = 1; $i <= 35; $i++) { - $bayKey = "dest-{$i}"; - - if (isset($this->lists[$bayKey]) && ! empty($this->lists[$bayKey])) { - $count++; - } - } - if ($count > 2) { - $this->calculationDisabled = false; - $this->calculationColor = 'info'; - } else { - $this->calculationDisabled = true; - $this->calculationColor = 'gray'; - } - } - - public function setCopyButton() - { - if (\count($this->results) > 0) { - $this->copyDisabled = false; - $this->copyColor = 'info'; - } else { - $this->copyDisabled = true; - $this->copyColor = 'gray'; - } - } - - public function calculate() - { - $this->results = []; - for ($i = 1; $i <= 35; $i++) { - $bayKey = "dest-{$i}"; - - if (isset($this->lists[$bayKey]) && ! empty($this->lists[$bayKey])) { - $this->results[] = $this->lists[$bayKey][0]; - } - } - - $this->setCopyButton(); - } - - public function copyResult() - { - $copystring = ''; - foreach ($this->results as $row) { - unset($row['origin']); - unset($row['pcolor']); - unset($row['ecolor']); - unset($row['info']); - $copystring .= implode("\t", $row) . "\n"; - } - $this->js("navigator.clipboard.writeText(`$copystring`)"); - } - - - public function moveItem($itemId, $fromList, $toList, $newIndex) - { - $itemId = (string) $itemId; - $newIndex = (int) $newIndex; - - if (! $toList || $fromList === $toList || ! isset($this->lists[$fromList]) || ! isset($this->lists[$toList])) { - $this->boardVersion = uniqid(); - - return; - } - - // Limit-Guard: Wenn das Ziel bereits ein Element enthält, abbrechen - if (count($this->lists[$toList]) >= 1) { - $this->boardVersion = uniqid(); - - return; - } - - $foundItem = null; - - foreach ($this->lists[$fromList] as $key => $item) { - if ((string) $item['id'] === $itemId) { - $item['position'] = $this->positions($toList); - $foundItem = $item; - unset($this->lists[$fromList][$key]); - $this->lists[$fromList] = array_values($this->lists[$fromList]); - break; - } - } - - if ($foundItem) { - array_splice($this->lists[$toList], $newIndex, 0, [$foundItem]); - } - - $this->setCalculationButton(); - - $this->boardVersion = uniqid(); - } - - public function positions(string $pos) - { - $pos = (int) str_replace('dest-', '', $pos); - $options = [2 => 'DR', 4 => 'MR', 6 => 'RW', 9 => 'DC', 10 => 'DM', 11 => 'MC', 12 => 'AM', 15 => 'SW', 16 => 'DC', 17 => 'DM', 18 => 'MC', 19 => 'AM', 20 => 'SM', 21 => 'ST', 23 => 'DC', 24 => 'DM', 25 => 'MC', 26 => 'AM', 30 => 'DL', 32 => 'ML', 34 => 'LM']; - if (isset($options[$pos])) - return $options[$pos]; - else - return $pos; - } - - public function returnToOrigin($itemId, $currentListId) - { - $itemId = (string) $itemId; - - // Log::info($this->boardVersion); - // Log::info('itemId, currentListId', [$itemId, $currentListId]); - // Log::info('OLD LIST', $this->lists); - - if (! isset($this->lists[$currentListId])) { - $this->boardVersion = uniqid(); - - return; - } - - $foundItem = null; - - foreach ($this->lists[$currentListId] as $key => $item) { - if ((string) $item['id'] === $itemId) { - $foundItem = $item; - unset($this->lists[$currentListId][$key]); - $this->lists[$currentListId] = array_values($this->lists[$currentListId]); - break; - } - } - - if ($foundItem && isset($this->lists[$foundItem['origin']])) { - // Nur zurücklegen, wenn die Quelle wirklich frei ist - array_unshift($this->lists[$foundItem['origin']], $foundItem); - // if (count($this->lists[$foundItem['origin']]) < 2) { - // Log::info('origin'); - // array_unshift($this->lists[$foundItem['origin']], $foundItem); - // } else { - // // Ausfallsicherheit gegen Datenverlust: Zurück in die Bucht schieben - // array_unshift($this->lists[$currentListId], $foundItem); - // Log::info('box'); - // } - } - - $this->setCalculationButton(); - - $this->boardVersion = uniqid(); - } - - public function resetBoard() - { - // Alle 21 Zielbays durchlaufen - for ($i = 1; $i <= 21; $i++) { - $bayKey = "dest-{$i}"; - - if (isset($this->lists[$bayKey]) && ! empty($this->lists[$bayKey])) { - foreach ($this->lists[$bayKey] as $item) { - $targetOrigin = $item['origin']; - - // Element zurück in sein Original-Quell-Tab schieben - if (isset($this->lists[$targetOrigin])) { - array_unshift($this->lists[$targetOrigin], $item); - } - } - - // Die Zielbucht komplett leeren - $this->lists[$bayKey] = []; - } - } - - // Falls Sie die boardVersion-Logik nutzen, erneuern wir sie hier für den DOM-Refresh: - if (property_exists($this, 'boardVersion')) { - $this->boardVersion = uniqid(); - } - - // Falls Sie die Javascript-Event/ignore-Logik nutzen, feuern wir das Refresh-Event: - $this->dispatch('refreshBoard', lists: $this->lists); - - $this->results = []; - - $this->setCalculationButton(); - - $this->setCopyButton(); - } -} diff --git a/composer.lock b/composer.lock index cb9b75df..4f6453ff 100644 --- a/composer.lock +++ b/composer.lock @@ -602,16 +602,16 @@ }, { "name": "carbonphp/carbon-doctrine-types", - "version": "3.2.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + "reference": "5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", - "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc", + "reference": "5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc", "shasum": "" }, "require": { @@ -626,6 +626,11 @@ "phpunit/phpunit": "^10.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" @@ -651,7 +656,7 @@ ], "support": { "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.1" }, "funding": [ { @@ -667,7 +672,7 @@ "type": "tidelift" } ], - "time": "2024-02-09T16:56:22+00:00" + "time": "2026-09-06T14:11:38+00:00" }, { "name": "chillerlan/php-qrcode", @@ -1579,16 +1584,16 @@ }, { "name": "filament/actions", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/actions.git", - "reference": "cc84d88a7318eb1faae39cb5f36191ccc3b81334" + "reference": "2a85c76d75854c5a633ea162ae541af6f9205f21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/cc84d88a7318eb1faae39cb5f36191ccc3b81334", - "reference": "cc84d88a7318eb1faae39cb5f36191ccc3b81334", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/2a85c76d75854c5a633ea162ae541af6f9205f21", + "reference": "2a85c76d75854c5a633ea162ae541af6f9205f21", "shasum": "" }, "require": { @@ -1624,24 +1629,25 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-08-31T17:03:02+00:00" + "time": "2026-09-07T18:43:33+00:00" }, { "name": "filament/filament", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "16adb1532c639739944a2acea959e16ac100e093" + "reference": "dee3b8fb5432420386aa27af06151239200f020e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/16adb1532c639739944a2acea959e16ac100e093", - "reference": "16adb1532c639739944a2acea959e16ac100e093", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/dee3b8fb5432420386aa27af06151239200f020e", + "reference": "dee3b8fb5432420386aa27af06151239200f020e", "shasum": "" }, "require": { "chillerlan/php-qrcode": "^5.0", + "composer-runtime-api": "^2.1", "filament/actions": "self.version", "filament/forms": "self.version", "filament/infolists": "self.version", @@ -1681,20 +1687,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-08-31T17:09:06+00:00" + "time": "2026-09-07T18:43:32+00:00" }, { "name": "filament/forms", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "ea0a0ee11efca648a043f9b3ff4113e54dadb7b0" + "reference": "f066cb545466d5c6a8b208a7485bd21512ffb76e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/ea0a0ee11efca648a043f9b3ff4113e54dadb7b0", - "reference": "ea0a0ee11efca648a043f9b3ff4113e54dadb7b0", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/f066cb545466d5c6a8b208a7485bd21512ffb76e", + "reference": "f066cb545466d5c6a8b208a7485bd21512ffb76e", "shasum": "" }, "require": { @@ -1731,20 +1737,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-08-31T17:04:14+00:00" + "time": "2026-09-07T18:42:41+00:00" }, { "name": "filament/infolists", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/infolists.git", - "reference": "0a8ca9b6cc60f7179de87b0ad9c2f787bbbd2d29" + "reference": "6ebe9b6831c82ca8eab131e41317648d0482fce0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/0a8ca9b6cc60f7179de87b0ad9c2f787bbbd2d29", - "reference": "0a8ca9b6cc60f7179de87b0ad9c2f787bbbd2d29", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/6ebe9b6831c82ca8eab131e41317648d0482fce0", + "reference": "6ebe9b6831c82ca8eab131e41317648d0482fce0", "shasum": "" }, "require": { @@ -1776,20 +1782,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-08-31T17:09:57+00:00" + "time": "2026-09-07T18:43:33+00:00" }, { "name": "filament/notifications", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", - "reference": "95d7d4730152353fbcd7365ee890022707382de7" + "reference": "a42cb3e6b217a5478bf974dbe4880daed2033cfd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/notifications/zipball/95d7d4730152353fbcd7365ee890022707382de7", - "reference": "95d7d4730152353fbcd7365ee890022707382de7", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/a42cb3e6b217a5478bf974dbe4880daed2033cfd", + "reference": "a42cb3e6b217a5478bf974dbe4880daed2033cfd", "shasum": "" }, "require": { @@ -1823,20 +1829,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-08-31T17:08:43+00:00" + "time": "2026-09-07T18:43:33+00:00" }, { "name": "filament/query-builder", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/query-builder.git", - "reference": "900b00b9dd5162c929aee540888c66883e7dd832" + "reference": "311c5015b529043e229beeb1c8a54b95f2180f00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/query-builder/zipball/900b00b9dd5162c929aee540888c66883e7dd832", - "reference": "900b00b9dd5162c929aee540888c66883e7dd832", + "url": "https://api.github.com/repos/filamentphp/query-builder/zipball/311c5015b529043e229beeb1c8a54b95f2180f00", + "reference": "311c5015b529043e229beeb1c8a54b95f2180f00", "shasum": "" }, "require": { @@ -1869,20 +1875,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-08-31T17:03:51+00:00" + "time": "2026-09-07T18:43:22+00:00" }, { "name": "filament/schemas", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/schemas.git", - "reference": "890fa9f369267f8a002ec6ea2313586b1f54cddb" + "reference": "ed0d42475497567a5b32d1b1a49c5ae9cfe3b73d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/schemas/zipball/890fa9f369267f8a002ec6ea2313586b1f54cddb", - "reference": "890fa9f369267f8a002ec6ea2313586b1f54cddb", + "url": "https://api.github.com/repos/filamentphp/schemas/zipball/ed0d42475497567a5b32d1b1a49c5ae9cfe3b73d", + "reference": "ed0d42475497567a5b32d1b1a49c5ae9cfe3b73d", "shasum": "" }, "require": { @@ -1914,24 +1920,25 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-08-31T17:09:38+00:00" + "time": "2026-09-07T18:43:53+00:00" }, { "name": "filament/support", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "db044fa876c998aa55b867f5774a4eb5b42c75ea" + "reference": "1feb02e2535bdcab7e6acbf9e56ca1f5411ed24a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/db044fa876c998aa55b867f5774a4eb5b42c75ea", - "reference": "db044fa876c998aa55b867f5774a4eb5b42c75ea", + "url": "https://api.github.com/repos/filamentphp/support/zipball/1feb02e2535bdcab7e6acbf9e56ca1f5411ed24a", + "reference": "1feb02e2535bdcab7e6acbf9e56ca1f5411ed24a", "shasum": "" }, "require": { "blade-ui-kit/blade-heroicons": "^2.5", + "composer-runtime-api": "^2.1", "danharrin/livewire-rate-limiting": "^2.0", "ext-intl": "*", "illuminate/contracts": "^11.28|^12.0|^13.0", @@ -1972,20 +1979,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-09-01T08:40:00+00:00" + "time": "2026-09-07T18:43:52+00:00" }, { "name": "filament/tables", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "71c498959168c0a60b6cbe754c216a3a1f0ec623" + "reference": "758e62c4f4690a1e1faedd7348e18c44b8145488" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/71c498959168c0a60b6cbe754c216a3a1f0ec623", - "reference": "71c498959168c0a60b6cbe754c216a3a1f0ec623", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/758e62c4f4690a1e1faedd7348e18c44b8145488", + "reference": "758e62c4f4690a1e1faedd7348e18c44b8145488", "shasum": "" }, "require": { @@ -2018,20 +2025,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-08-31T17:09:20+00:00" + "time": "2026-09-07T18:44:28+00:00" }, { "name": "filament/widgets", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/widgets.git", - "reference": "ce0718e8c0aced904fb9f09be03f4fb33f8dcde6" + "reference": "20e52cc560b591d2e3cc01bf4a5e9aca8f176476" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/widgets/zipball/ce0718e8c0aced904fb9f09be03f4fb33f8dcde6", - "reference": "ce0718e8c0aced904fb9f09be03f4fb33f8dcde6", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/20e52cc560b591d2e3cc01bf4a5e9aca8f176476", + "reference": "20e52cc560b591d2e3cc01bf4a5e9aca8f176476", "shasum": "" }, "require": { @@ -2062,7 +2069,7 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-08-31T17:10:07+00:00" + "time": "2026-09-07T18:43:09+00:00" }, { "name": "fruitcake/php-cors", @@ -3357,16 +3364,16 @@ }, { "name": "league/commonmark", - "version": "2.10.0", + "version": "2.10.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "d2d1aa8b35e072966c89bc0c66cf926e56767dc4" + "reference": "9d489ab67a02960fd8ffe624d93f751daf95439e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d2d1aa8b35e072966c89bc0c66cf926e56767dc4", - "reference": "d2d1aa8b35e072966c89bc0c66cf926e56767dc4", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/9d489ab67a02960fd8ffe624d93f751daf95439e", + "reference": "9d489ab67a02960fd8ffe624d93f751daf95439e", "shasum": "" }, "require": { @@ -3460,7 +3467,7 @@ "type": "tidelift" } ], - "time": "2026-08-11T16:06:25+00:00" + "time": "2026-09-07T13:44:26+00:00" }, { "name": "league/config", @@ -4091,16 +4098,16 @@ }, { "name": "livewire/livewire", - "version": "v4.4.3", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "92f1427022714b34024459167aa6a85d4fb4af44" + "reference": "00bf1b9959807d7cbcf38fc088515a7261cb6fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/92f1427022714b34024459167aa6a85d4fb4af44", - "reference": "92f1427022714b34024459167aa6a85d4fb4af44", + "url": "https://api.github.com/repos/livewire/livewire/zipball/00bf1b9959807d7cbcf38fc088515a7261cb6fa8", + "reference": "00bf1b9959807d7cbcf38fc088515a7261cb6fa8", "shasum": "" }, "require": { @@ -4155,7 +4162,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v4.4.3" + "source": "https://github.com/livewire/livewire/tree/v4.4.4" }, "funding": [ { @@ -4163,7 +4170,7 @@ "type": "github" } ], - "time": "2026-08-31T15:40:58+00:00" + "time": "2026-09-07T16:02:43+00:00" }, { "name": "maennchen/zipstream-php", @@ -4705,24 +4712,24 @@ }, { "name": "mongodb/mongodb", - "version": "2.2.0", + "version": "2.3.0", "source": { "type": "git", - "url": "https://github.com/mongodb/mongo-php-library.git", - "reference": "bbb13f969e37e047fd822527543df55fdc1c9298" + "url": "https://github.com/mongodb/mongo-php-library", + "reference": "12e56461166d915e3dd8e4969ad0940ed5207d88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/bbb13f969e37e047fd822527543df55fdc1c9298", - "reference": "bbb13f969e37e047fd822527543df55fdc1c9298", + "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/12e56461166d915e3dd8e4969ad0940ed5207d88", + "reference": "12e56461166d915e3dd8e4969ad0940ed5207d88", "shasum": "" }, "require": { "composer-runtime-api": "^2.0", - "ext-mongodb": "^2.2", + "ext-mongodb": "^2.3", "php": "^8.1", "psr/log": "^1.1.4|^2|^3", - "symfony/polyfill-php85": "^1.32" + "symfony/polyfill-php85": "^1.33" }, "replace": { "mongodb/builder": "*" @@ -4774,11 +4781,7 @@ "mongodb", "persistence" ], - "support": { - "issues": "https://github.com/mongodb/mongo-php-library/issues", - "source": "https://github.com/mongodb/mongo-php-library/tree/2.2.0" - }, - "time": "2026-02-11T11:39:56+00:00" + "time": "2026-04-28T12:50:06+00:00" }, { "name": "monolog/monolog", @@ -10589,19 +10592,20 @@ }, { "name": "filament/upgrade", - "version": "v5.7.8", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/filamentphp/upgrade.git", - "reference": "1dec8fe9a7d36892dfaca9460f640c4c9fb2dc2c" + "reference": "5a53f0e8aea7b76f6641d846b8f44fee78e17dfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/upgrade/zipball/1dec8fe9a7d36892dfaca9460f640c4c9fb2dc2c", - "reference": "1dec8fe9a7d36892dfaca9460f640c4c9fb2dc2c", + "url": "https://api.github.com/repos/filamentphp/upgrade/zipball/5a53f0e8aea7b76f6641d846b8f44fee78e17dfa", + "reference": "5a53f0e8aea7b76f6641d846b8f44fee78e17dfa", "shasum": "" }, "require": { + "composer-runtime-api": "^2.1", "nunomaduro/termwind": "^2.0", "php": "^8.2", "rector/rector": "^2.0" @@ -10625,7 +10629,7 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2026-05-20T17:21:47+00:00" + "time": "2026-09-07T18:43:54+00:00" }, { "name": "filp/whoops", @@ -10895,16 +10899,16 @@ }, { "name": "laravel/pint", - "version": "v1.30.5", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "fe4148c503a0e266353d61396b79bbf7f35122df" + "reference": "0730363418ad06a7b267d8f2a4f87eed0ab7f610" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/fe4148c503a0e266353d61396b79bbf7f35122df", - "reference": "fe4148c503a0e266353d61396b79bbf7f35122df", + "url": "https://api.github.com/repos/laravel/pint/zipball/0730363418ad06a7b267d8f2a4f87eed0ab7f610", + "reference": "0730363418ad06a7b267d8f2a4f87eed0ab7f610", "shasum": "" }, "require": { @@ -10916,13 +10920,13 @@ }, "require-dev": { "composer/semver": "^3.4.4", - "friendsofphp/php-cs-fixer": "^3.95.18", - "illuminate/view": "^13.24.0", - "larastan/larastan": "^3.10.0", + "friendsofphp/php-cs-fixer": "^3.95.24", + "illuminate/view": "^13.30.1", + "larastan/larastan": "^3.11.0", "laravel-zero/framework": "^13.0.0", "laravel/agent-detector": "^2.0.2", - "laravel/prompts": "^0.3.22", - "mockery/mockery": "^1.6.12", + "laravel/prompts": "^0.3.24", + "mockery/mockery": "^1.6.15", "nunomaduro/termwind": "^2.4.0", "pestphp/pest": "^4.7.8" }, @@ -10961,7 +10965,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2026-08-10T15:35:50+00:00" + "time": "2026-09-07T15:03:30+00:00" }, { "name": "laravel/sail", diff --git a/package-lock.json b/package-lock.json index fa33b8d4..d9b35583 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,9 +19,9 @@ } }, "node_modules/@alpinejs/sort": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/@alpinejs/sort/-/sort-3.17.1.tgz", - "integrity": "sha512-Q6qF00WI4cQAZdIxPgbsHnxZIiIv4T1kfSPyEy2QB/SLhLdISuIjzTBa3TQAe1P45BkRtNk5Y8fQuDZuKhN/6w==", + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/@alpinejs/sort/-/sort-3.17.2.tgz", + "integrity": "sha512-72v63zuFkepgO2nwi8wNrD1z6pAY3S+d+lCwSZ9Q39hkIFISxPXKffEh3qtTu7Dzlc98EYLz4kVS/pxp3mdw5g==", "license": "MIT", "dependencies": { "sortablejs": "^1.15.2" @@ -2256,9 +2256,9 @@ } }, "node_modules/prettier-plugin-blade": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier-plugin-blade/-/prettier-plugin-blade-3.3.2.tgz", - "integrity": "sha512-bw5bWD+C0Xj1jd+wcOcU5fh4EVtD0ZzWKeEL276kmA5j7k2KfX5lGQgj/C+SFU9Ga4PcoOdJ7k9dJUCC5DkoNQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier-plugin-blade/-/prettier-plugin-blade-3.3.3.tgz", + "integrity": "sha512-ZjilA3czAFLSdGjM/F+T8jlXv20vSI7zb6ZqfVp3vX/+313mFZspuPz2DHN26xemjgOfW5mnyuOXjBvY399gsA==", "license": "MIT", "dependencies": { "@prettier/html-tags": "^2.2.0", diff --git a/resources/views/filament/tables/columns/drag-card.blade.php b/resources/views/filament/tables/columns/drag-card.blade.php index a41be7b4..cea9c4a4 100644 --- a/resources/views/filament/tables/columns/drag-card.blade.php +++ b/resources/views/filament/tables/columns/drag-card.blade.php @@ -9,33 +9,36 @@ 'timed_color' => $timed_color, 'events_played' => $events_played, 'everage_minutes' => $everage_minutes, + style="opacity:0.25 !important;" */ @endphp @if ($record['active'])
-
- - {{ strtoupper($record['player_position']) }} + class="w-full text-xs mt-1 p-1 select-none border border-gray-300 rounded hover:border-primary-500 transition-colors flex justify-end content-center items-center gap-1"> +
+
{{ $record['preferred_foot'] }}
+
{{ $record['events_played'] }}
+
{{ $record['everage_minutes'] }}
+
{{ $record['gls'] }}
+
{{ $record['crn'] }}
+
{{ $record['fls'] }}
+
{{ $record['ofs'] }}
+
{{ $record['snt'] }}
+
{{ $record['tsh'] }}
+
{{ $record['crd'] }}
+
{{ $record['position'] }}
+
+
+ + {{ ucfirst($record['player_position']) }}
-
+
{{ $record['name'] }}
-
- {{ $record['preferred_foot'] }}, - Ev {{ $record['events_played'] }}, - Av {{ $record['everage_minutes'] }}min +
+
-
-
-
Goal: 0.13
-
Card: 0.41
-
Foul: 0.41
-
Goal: 0.13
-
Card: 0.41
-
Foul: 0.41
@else
-
- - {{ strtoupper($record['player_position']) }} + class="w-full text-xs mt-1 p-1 select-none cursor-grab active:cursor-grabbing border border-gray-300 rounded hover:border-primary-500 transition-colors flex justify-end content-center items-center gap-1"> +
+
{{ $record['preferred_foot'] }}
+
{{ $record['events_played'] }}
+
{{ $record['everage_minutes'] }}
+
{{ $record['gls'] }}
+
{{ $record['crn'] }}
+
{{ $record['fls'] }}
+
{{ $record['ofs'] }}
+
{{ $record['snt'] }}
+
{{ $record['tsh'] }}
+
{{ $record['crd'] }}
+
{{ $record['position'] }}
+
+
+ + {{ ucfirst($record['player_position']) }}
-
+
{{ $record['name'] }}
-
- {{ $record['preferred_foot'] }}, - Ev {{ $record['events_played'] }}, - Av {{ $record['everage_minutes'] }}min -
-
+
-
Goal: 0.13
-
Card: 0.41
-
Foul: 0.41
-
Goal: 0.13
-
Card: 0.41
-
Foul: 0.41
-@endif +@endif \ No newline at end of file diff --git a/resources/views/livewire/board-dispatcher.blade.php b/resources/views/livewire/board-dispatcher.blade.php index f5ccba18..95e87ddc 100644 --- a/resources/views/livewire/board-dispatcher.blade.php +++ b/resources/views/livewire/board-dispatcher.blade.php @@ -1,7 +1,7 @@ @php use Illuminate\Support\Facades\Log; @endphp -
+
{{ $this->table }}
@@ -22,11 +22,12 @@ " :class="isOver ? 'border-primary-500 bg-primary-500/10 ring-2 ring-primary-500/50 scale-[1.02]' : 'border-gray-800 bg-white/30'" - class="border rounded-xl p-2 transition-all flex flex-col justify-start shadow-2xs transform"> + class="border rounded-xl transition-all pt-0 flex flex-col justify-start shadow-2xs transform">
-
+ class="grid grid-cols-6 items-center border-b p-1"> +
+
{{ $benennung }}
@@ -38,7 +39,7 @@ @if ($boxes[$boxNumber]) -
+
{{ $boxes[$boxNumber]['name'] }}
@endif diff --git a/resources/views/livewire/kanban-board.blade.php b/resources/views/livewire/kanban-board.blade.php deleted file mode 100644 index b88bbf2e..00000000 --- a/resources/views/livewire/kanban-board.blade.php +++ /dev/null @@ -1,103 +0,0 @@ - - -
- - -
-
-

Elemente-Kopierer (v5)

-

Ziehe einen Eintrag aus der Tabelle. Das Ziel-Modal - öffnet sich synchron beim Ziehen.

-
- - - Slots manuell öffnen (21 Boxen) - -
- - -
- {{ $this->table }} -
- - - - -
- - Ziel-Matrix (21 Slots) -
-
- - - Lass das gezogene Element über der gewünschten Box los, um eine Kopie zuzuweisen. - - - -
- @foreach ($boxes as $boxNumber => $items) -
- -
- - Box {{ $boxNumber }} - - - @if (count($items) > 0) - - @endif -
- - -
- @forelse($items as $item) -
- - {{ $item['title'] }} - - ID: - {{ $item['id'] }} -
- @empty -
- Bereit -
- @endforelse -
-
- @endforeach -
- - -
- - Schließen - -
-
-
- -
-