players = $players; } public function getHeadingTable(): HtmlString { return new HtmlString('
Gls
Fls
Ofs
Crd
Snt
Tsh
Foot
Evt
Min
'); } public function table(Table $table): Table { return $table ->heading(false) ->query(User::query()->whereRaw('1 = 0')) // Verhindert DB-Abfragen ->striped() ->defaultSort('name') ->emptyStateHeading('No team selected') ->columns([ ViewColumn::make('drag_card') ->label(fn () => $this->getHeadingTable()) ->view('filament.tables.columns.drag-card'), ])->extraAttributes([ 'id' => 'playerdragtable', ]) ->filters([ Filter::make('positions') ->columnSpan(2) ->schema([ Select::make('area') ->hiddenLabel() ->placeholder('Filter Positions') ->native(false) ->allowHtml() ->options([ 'attack' => 'Attack', 'midfield' => 'Midfield', 'defence' => 'Defence', 'goalkeeper' => 'Goalkeeper', ]), ]) ->query(function ($query) { return $query; })->indicateUsing(function (array $data): array { // empty array disables indicator-badge return []; }), ], layout: FiltersLayout::AboveContent) ->deferFilters(false) ->records(function () { $collection = collect($this->players)->sortBy('order')->sortBy('active', SORT_NUMERIC, 1); $selectedPosition = $this->tableFilters['positions']['area'] ?? null; if (! empty($selectedPosition)) { $collection = $collection->where('area', $selectedPosition); } return $collection; }); } }