columns([ TextColumn::make('id'), TextColumn::make('interner_name') ->tooltip(fn ($record): HtmlString => new HtmlString($record->beschreibung)) ->label('Interner Name') ->color('primary') ->wrap() ->searchable(), TextColumn::make('offizieller_name') ->wrap() ->searchable() ->label('Offizieller Name'), TextColumn::make('gutachter.company'), TextColumn::make('auftraggeber.company'), TextColumn::make('ort'), TextColumn::make('erstellung')->sortable(), ]) ->striped() ->defaultSort('erstellung', direction: 'desc') ->persistSortInSession() ->filters([ SelectFilter::make('status') ->options(ProjektStatus::class), SelectFilter::make('gutachter_id') ->label('Gutachter') ->preload() ->options(function () { $res = Projekte::where('konto_id', auth()->user()->konto_id) ->groupBy('gutachter_id') ->pluck('gutachter_id')->toArray(); return Gutachter::query()->whereIn('id', $res)->orderBy('company')->pluck('company', 'id'); }), SelectFilter::make('auftraggeber_id') ->label('Auftraggeber') ->preload() ->options(function () { $res = Projekte::where('konto_id', auth()->user()->konto_id) ->groupBy('auftraggeber_id') ->pluck('auftraggeber_id')->toArray(); return Auftraggeber::query()->whereIn('id', $res)->orderBy('company')->pluck('company', 'id'); }), ], FiltersLayout::AboveContent) ->deferFilters(false) ->recordActions([ EditAction::make()->iconButton(), ]); } }