players = $players;
}
public function getHeadingTable(): HtmlString
{
return new HtmlString('
Gls
Fls
Ofs
Snt
Tsh
Crd
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;
});
}
}