diff --git a/app/Livewire/BoardDispatcher.php b/app/Livewire/BoardDispatcher.php
index 241af9ac..08eae71d 100644
--- a/app/Livewire/BoardDispatcher.php
+++ b/app/Livewire/BoardDispatcher.php
@@ -7,15 +7,16 @@ use App\Models\User;
use Filament\Actions\Action;
use Filament\Actions\Concerns\InteractsWithActions;
use Filament\Actions\Contracts\HasActions;
+use Filament\Forms\Components\Select;
use Filament\Schemas\Concerns\InteractsWithSchemas;
use Filament\Schemas\Concerns\RestrictsFileUploadsToSchemaComponents;
use Filament\Schemas\Contracts\HasSchemas;
+use Filament\Schemas\Schema;
use Filament\Tables\Columns\ViewColumn;
use Filament\Tables\Concerns\InteractsWithTable;
use Filament\Tables\Contracts\HasTable;
use Filament\Tables\Enums\FiltersLayout;
use Filament\Tables\Filters\SelectFilter;
-use Filament\Forms\Components\Select;
use Filament\Tables\Table;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\HtmlString;
@@ -43,8 +44,114 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
public string $ss_team_name = '';
- public array $lineups = [3331 => [2, 9, 23, 30, 10, 24, 12, 19, 26, 21]];
- public array $lineup = [2, 9, 23, 30, 10, 24, 12, 19, 26, 21];
+ public array $lineupsMap = [
+ '3313' => [9, 16, 23, 11, 18, 25, 19, 6, 34, 21],
+ '3331' => [9, 16, 23, 17, 11, 25, 12, 19, 26, 21],
+ '3331-' => [9, 16, 23, 10, 18, 24, 12, 19, 26, 21],
+ '3331+' => [9, 16, 23, 11, 18, 25, 12, 19, 26, 21],
+ '3412-' => [9, 16, 23, 4, 10, 24, 32, 19, 20, 21],
+ '3412+' => [9, 16, 23, 4, 11, 25, 32, 19, 20, 21],
+ '3421-' => [9, 16, 23, 4, 10, 24, 32, 12, 26, 21],
+ '3421+' => [9, 16, 23, 4, 11, 25, 32, 12, 26, 21],
+ '343-' => [9, 16, 23, 4, 10, 24, 32, 6, 34, 21],
+ '343+' => [9, 16, 23, 4, 11, 25, 32, 6, 34, 21],
+ '3511' => [9, 16, 23, 4, 11, 17, 25, 32, 19, 21],
+ '3511-' => [9, 16, 23, 4, 10, 18, 24, 32, 19, 21],
+ '3511+' => [9, 16, 23, 4, 11, 18, 25, 32, 19, 21],
+ '352' => [9, 16, 23, 4, 11, 17, 25, 32, 20, 21],
+ '352-' => [9, 16, 23, 4, 10, 18, 24, 32, 20, 21],
+ '352+' => [9, 16, 23, 4, 11, 18, 25, 32, 20, 21],
+ '4132' => [2, 9, 23, 30, 17, 12, 19, 26, 20, 21],
+ '4213-' => [2, 9, 23, 30, 10, 24, 19, 6, 34, 21],
+ '4213+' => [2, 9, 23, 30, 11, 25, 19, 6, 34, 21],
+ '4222' => [2, 9, 23, 30, 10, 24, 12, 26, 20, 21],
+ '4231' => [2, 9, 23, 30, 10, 24, 12, 19, 26, 21],
+ '424' => [2, 9, 23, 30, 10, 24, 6, 34, 20, 21],
+ '4312' => [2, 9, 23, 30, 17, 11, 25, 19, 20, 21],
+ '4312-' => [2, 9, 23, 30, 10, 18, 24, 19, 20, 21],
+ '4312+' => [2, 9, 23, 30, 11, 18, 25, 19, 20, 21],
+ '4321' => [2, 9, 23, 30, 17, 11, 25, 12, 26, 21],
+ '4321-' => [2, 9, 23, 30, 10, 18, 24, 12, 26, 21],
+ '4321+' => [2, 9, 23, 30, 11, 18, 25, 12, 26, 21],
+ '433' => [2, 9, 23, 30, 17, 11, 25, 6, 34, 21],
+ '433-' => [2, 9, 23, 30, 10, 18, 24, 6, 34, 21],
+ '433+' => [2, 9, 23, 30, 11, 18, 25, 6, 34, 21],
+ '4411-' => [2, 9, 23, 30, 4, 10, 24, 32, 19, 21],
+ '4411+' => [2, 9, 23, 30, 4, 11, 25, 32, 19, 21],
+ '442' => [2, 9, 23, 30, 4, 17, 18, 32, 20, 21],
+ '442-' => [2, 9, 23, 30, 4, 10, 24, 32, 20, 21],
+ '442+' => [2, 9, 23, 30, 4, 11, 25, 32, 20, 21],
+ '451' => [2, 9, 23, 30, 4, 17, 11, 25, 32, 21],
+ '451-' => [2, 9, 23, 30, 4, 10, 18, 24, 32, 21],
+ '451+' => [2, 9, 23, 30, 4, 11, 18, 25, 32, 21],
+ '523-' => [2, 9, 16, 23, 30, 10, 24, 6, 34, 21],
+ '523+' => [2, 9, 16, 23, 30, 11, 25, 6, 34, 21],
+ '5311' => [2, 9, 16, 23, 30, 17, 11, 25, 19, 21],
+ '5311-' => [2, 9, 16, 23, 30, 10, 18, 24, 19, 21],
+ '5311+' => [2, 9, 16, 23, 30, 11, 18, 25, 19, 21],
+ '532' => [2, 9, 16, 23, 30, 17, 11, 25, 20, 21],
+ '532-' => [2, 9, 16, 23, 30, 10, 18, 24, 20, 21],
+ '532+' => [2, 9, 16, 23, 30, 11, 18, 25, 20, 21],
+ '541-' => [2, 9, 16, 23, 30, 4, 10, 24, 32, 21],
+ '541+' => [2, 9, 16, 23, 30, 4, 11, 25, 32, 21],
+ ];
+
+ public array $lineup = [];
+
+ public array $lineup_options = [
+ '3313' => '3313',
+ '3331' => '3331',
+ '3331-' => '3331-',
+ '3331+' => '3331+',
+ '3412-' => '3412-',
+ '3412+' => '3412+',
+ '3421-' => '3421-',
+ '3421+' => '3421+',
+ '343-' => '343-',
+ '343+' => '343+',
+ '3511' => '3511',
+ '3511-' => '3511-',
+ '3511+' => '3511+',
+ '352' => '352',
+ '352-' => '352-',
+ '352+' => '352+',
+ '4132' => '4132',
+ '4213-' => '4213-',
+ '4213+' => '4213+',
+ '4222' => '4222',
+ '4231' => '4231',
+ '424' => '424',
+ '4312' => '4312',
+ '4312-' => '4312-',
+ '4312+' => '4312+',
+ '4321' => '4321',
+ '4321-' => '4321-',
+ '4321+' => '4321+',
+ '433' => '433',
+ '433-' => '433-',
+ '433+' => '433+',
+ '4411-' => '4411-',
+ '4411+' => '4411+',
+ '442' => '442',
+ '442-' => '442-',
+ '442+' => '442+',
+ '451' => '451',
+ '451-' => '451-',
+ '451+' => '451+',
+ '523-' => '523-',
+ '523+' => '523+',
+ '5311' => '5311',
+ '5311-' => '5311-',
+ '5311+' => '5311+',
+ '532' => '532',
+ '532-' => '532-',
+ '532+' => '532+',
+ '541-' => '541-',
+ '541+' => '541+',
+ ];
+
+ public string $lineup_selected = '3313';
+
public array $boxes = [];
public array $beschriftung = [];
@@ -55,6 +162,8 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
$this->sourceRecords = PlayerCalculator::load($filters);
+ $this->lineup = $this->lineupsMap[$this->lineup_selected];
+
for ($i = 1; $i <= 35; $i++) {
$this->boxes[$i] = [];
if (isset($this->activeBoxes[$i])) {
@@ -69,7 +178,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
public function getHeadingTable(): HtmlString
{
- return new HtmlString('
' . $this->ss_team_name . '
+ return new HtmlString(''.$this->ss_team_name.'
Gls
Fls
@@ -83,6 +192,25 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
');
}
+ public function form(Schema $schema): Schema
+ {
+ return $schema
+ ->columns(4)
+ ->components([
+ Select::make('lineup_selected')
+ ->live()
+ ->hiddenLabel()
+ ->columnSpan(1)
+ ->prefix('Lineup')
+ ->prefixIcon('icon-soccerplayer')
+ ->searchable()
+ ->options($this->lineup_options)
+ ->afterStateUpdated(function ($state, $livewire) {
+ $livewire->updateLineup($state);
+ }),
+ ]);
+ }
+
public function table(Table $table): Table
{
return $table
@@ -92,15 +220,15 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
->close(),
Action::make('reset')
->icon('phosphor-arrows-clockwise')
- ->action(fn() => $this->clearAll()),
+ ->action(fn () => $this->clearAll()),
Action::make('calculate')
->icon('phosphor-calculator')
->disabled($this->calculationDisabled)
- ->action(fn() => $this->calculateAspg()),
+ ->action(fn () => $this->calculateAspg()),
Action::make('copy')
->icon('phosphor-copy')
->disabled($this->copyDisabled)
- ->action(fn() => $this->copyResult()),
+ ->action(fn () => $this->copyResult()),
])
/**
* WICHTIG: Da Filament v5 zwingend eine Query braucht, nutzen wir ein
@@ -108,14 +236,17 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
* Alternativ kannst du ein anonymes Model nutzen.
*/
->query(User::query()->whereRaw('1 = 0')) // Verhindert DB-Abfragen
- ->paginated(false)
->striped()
->defaultSort('name')
->columns([
ViewColumn::make('drag_card')
->columnSpanFull()
- ->label(fn() => $this->getHeadingTable())
- ->view('filament.tables.columns.drag-card'),
+ ->label(fn () => $this->getHeadingTable())
+ ->view('filament.tables.columns.drag-card')
+ ->extraAttributes([
+ // Limits height, forces scrollbar, and switches layout to block to respect max-height
+ 'class' => 'max-h-[150px] overflow-y-auto block p-2 bg-gray-50 dark:bg-gray-900 rounded border border-gray-200 dark:border-gray-700',
+ ]),
])
->filters([
SelectFilter::make('player_position')
@@ -126,7 +257,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;
}),
@@ -168,6 +299,13 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
}
}
+ public function updateLineup(string $state)
+ {
+ $this->clearAll();
+
+ $this->lineup = $this->lineupsMap[$state];
+ }
+
public function clearBox(int $boxNumber): void
{
if (isset($this->boxes[$boxNumber])) {
@@ -217,7 +355,7 @@ class BoardDispatcher extends Component implements HasActions, HasSchemas, HasTa
unset($row['pcolor']);
unset($row['ecolor']);
unset($row['info']);
- $copystring .= implode("\t", $row) . "\n";
+ $copystring .= implode("\t", $row)."\n";
}
$this->js("navigator.clipboard.writeText(`$copystring`)");
}
diff --git a/composer.lock b/composer.lock
index 5e4936f3..69607690 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1584,7 +1584,7 @@
},
{
"name": "filament/actions",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/actions.git",
@@ -1633,16 +1633,16 @@
},
{
"name": "filament/filament",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/panels.git",
- "reference": "dee3b8fb5432420386aa27af06151239200f020e"
+ "reference": "1c2d8ed04959da6da7b54bcd6e6b75aeb50ab19a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/panels/zipball/dee3b8fb5432420386aa27af06151239200f020e",
- "reference": "dee3b8fb5432420386aa27af06151239200f020e",
+ "url": "https://api.github.com/repos/filamentphp/panels/zipball/1c2d8ed04959da6da7b54bcd6e6b75aeb50ab19a",
+ "reference": "1c2d8ed04959da6da7b54bcd6e6b75aeb50ab19a",
"shasum": ""
},
"require": {
@@ -1687,20 +1687,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-09-07T18:43:32+00:00"
+ "time": "2026-09-08T10:21:33+00:00"
},
{
"name": "filament/forms",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/forms.git",
- "reference": "f066cb545466d5c6a8b208a7485bd21512ffb76e"
+ "reference": "74b5cda7693267a55af24d314944c667d4669fab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/forms/zipball/f066cb545466d5c6a8b208a7485bd21512ffb76e",
- "reference": "f066cb545466d5c6a8b208a7485bd21512ffb76e",
+ "url": "https://api.github.com/repos/filamentphp/forms/zipball/74b5cda7693267a55af24d314944c667d4669fab",
+ "reference": "74b5cda7693267a55af24d314944c667d4669fab",
"shasum": ""
},
"require": {
@@ -1737,11 +1737,11 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-09-07T18:42:41+00:00"
+ "time": "2026-09-08T10:24:44+00:00"
},
{
"name": "filament/infolists",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/infolists.git",
@@ -1786,7 +1786,7 @@
},
{
"name": "filament/notifications",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/notifications.git",
@@ -1833,7 +1833,7 @@
},
{
"name": "filament/query-builder",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/query-builder.git",
@@ -1879,16 +1879,16 @@
},
{
"name": "filament/schemas",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/schemas.git",
- "reference": "ed0d42475497567a5b32d1b1a49c5ae9cfe3b73d"
+ "reference": "ca4e860522d9149f3442468bf7eaebf04bccca67"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filamentphp/schemas/zipball/ed0d42475497567a5b32d1b1a49c5ae9cfe3b73d",
- "reference": "ed0d42475497567a5b32d1b1a49c5ae9cfe3b73d",
+ "url": "https://api.github.com/repos/filamentphp/schemas/zipball/ca4e860522d9149f3442468bf7eaebf04bccca67",
+ "reference": "ca4e860522d9149f3442468bf7eaebf04bccca67",
"shasum": ""
},
"require": {
@@ -1920,11 +1920,11 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
- "time": "2026-09-07T18:43:53+00:00"
+ "time": "2026-09-08T10:21:40+00:00"
},
{
"name": "filament/support",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/support.git",
@@ -1983,7 +1983,7 @@
},
{
"name": "filament/tables",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/tables.git",
@@ -2029,7 +2029,7 @@
},
{
"name": "filament/widgets",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/widgets.git",
@@ -2953,16 +2953,16 @@
},
{
"name": "laravel/framework",
- "version": "v12.69.1",
+ "version": "v12.69.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "0c07b0b1f88af44d8558ffadf66900a860f93c23"
+ "reference": "17d034ef1e209b63a1d3a89c90ce5e89a4eb3fc5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/0c07b0b1f88af44d8558ffadf66900a860f93c23",
- "reference": "0c07b0b1f88af44d8558ffadf66900a860f93c23",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/17d034ef1e209b63a1d3a89c90ce5e89a4eb3fc5",
+ "reference": "17d034ef1e209b63a1d3a89c90ce5e89a4eb3fc5",
"shasum": ""
},
"require": {
@@ -3171,7 +3171,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2026-09-01T21:34:37+00:00"
+ "time": "2026-09-08T14:29:09+00:00"
},
{
"name": "laravel/prompts",
@@ -4712,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": "*"
@@ -4781,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",
@@ -10596,7 +10592,7 @@
},
{
"name": "filament/upgrade",
- "version": "v5.8.0",
+ "version": "v5.8.1",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/upgrade.git",
@@ -10903,16 +10899,16 @@
},
{
"name": "laravel/pint",
- "version": "v1.31.0",
+ "version": "v1.31.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
- "reference": "0730363418ad06a7b267d8f2a4f87eed0ab7f610"
+ "reference": "b136cebaf0b3f7d288bdafad5088858d082580aa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/pint/zipball/0730363418ad06a7b267d8f2a4f87eed0ab7f610",
- "reference": "0730363418ad06a7b267d8f2a4f87eed0ab7f610",
+ "url": "https://api.github.com/repos/laravel/pint/zipball/b136cebaf0b3f7d288bdafad5088858d082580aa",
+ "reference": "b136cebaf0b3f7d288bdafad5088858d082580aa",
"shasum": ""
},
"require": {
@@ -10924,8 +10920,8 @@
},
"require-dev": {
"composer/semver": "^3.4.4",
- "friendsofphp/php-cs-fixer": "^3.95.24",
- "illuminate/view": "^13.30.1",
+ "friendsofphp/php-cs-fixer": "^3.95.25",
+ "illuminate/view": "^13.31.0",
"larastan/larastan": "^3.11.0",
"laravel-zero/framework": "^13.0.0",
"laravel/agent-detector": "^2.0.2",
@@ -10969,7 +10965,7 @@
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
- "time": "2026-09-07T15:03:30+00:00"
+ "time": "2026-09-08T17:10:00+00:00"
},
{
"name": "laravel/sail",
diff --git a/resources/views/filament/tables/columns/drag-card.blade.php b/resources/views/filament/tables/columns/drag-card.blade.php
index bb156d18..e5c8b8b1 100644
--- a/resources/views/filament/tables/columns/drag-card.blade.php
+++ b/resources/views/filament/tables/columns/drag-card.blade.php
@@ -1,16 +1,5 @@
@php
$record = $getRecord();
- /*
- '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,
- style="opacity:0.25 !important;"
- */
@endphp
@if ($record['active'])
table }}
-
+ {{ $this->form }}
+
+
@foreach ($beschriftung as $boxNumber => $benennung)
@if ($benennung && in_array($boxNumber, $lineup))
@@ -21,11 +24,14 @@
}
"
:class="isOver ? 'border-primary-500 bg-primary-500/10 ring-2 ring-primary-500/50 scale-[1.02]' :
- @if (in_array($benennung, ['SW', 'DR', 'DC', 'DL'])) 'border-gray-800 bg-green-500/30'
+ @if (in_array($benennung, ['SW', 'DR', 'DC', 'DL']))
+ 'border-gray-800 bg-green-500/30'
@elseif (in_array($benennung, ['DM', 'MR', 'MC', 'ML', 'AM']))
'border-gray-800 bg-blue-500/30'
@else
- 'border-gray-800 bg-amber-500/30' @endif"
+ 'border-gray-800 bg-amber-500/30'
+ @endif
+ "
class="border rounded-xl transition-all pt-0 flex flex-col justify-start shadow-2xs transform">