From 6692942f6f8f12f7a1d427237f24b40d1eeb6ba3 Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Mon, 17 Jun 2024 12:12:56 -0400 Subject: [PATCH] Group servers (#412) * Group servers # Conflicts: # app/Filament/Resources/ServerResource/Pages/ListServers.php * Can be null apparently * pint --------- Co-authored-by: Charles --- .../Resources/ServerResource/Pages/ListServers.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/Filament/Resources/ServerResource/Pages/ListServers.php b/app/Filament/Resources/ServerResource/Pages/ListServers.php index c60f1c6b0..0d28c23fc 100644 --- a/app/Filament/Resources/ServerResource/Pages/ListServers.php +++ b/app/Filament/Resources/ServerResource/Pages/ListServers.php @@ -7,6 +7,7 @@ use App\Models\Server; use Filament\Actions; use Filament\Resources\Pages\ListRecords; use Filament\Tables\Actions\CreateAction; +use Filament\Tables\Grouping\Group; use Filament\Tables\Table; use Filament\Tables; @@ -18,6 +19,12 @@ class ListServers extends ListRecords { return $table ->searchable(false) + ->defaultGroup('node.name') + ->groups([ + Group::make('node.name')->getDescriptionFromRecordUsing(fn (Server $server): string => str($server->node->description)->limit(150)), + Group::make('user.username')->getDescriptionFromRecordUsing(fn (Server $server): string => $server->user->email), + Group::make('egg.name')->getDescriptionFromRecordUsing(fn (Server $server): string => str($server->egg->description)->limit(150)), + ]) ->columns([ Tables\Columns\TextColumn::make('status') ->default('unknown') @@ -52,17 +59,20 @@ class ListServers extends ListRecords Tables\Columns\TextColumn::make('node.name') ->icon('tabler-server-2') ->url(fn (Server $server): string => route('filament.admin.resources.nodes.edit', ['record' => $server->node])) + ->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'node.name') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('egg.name') ->icon('tabler-egg') ->url(fn (Server $server): string => route('filament.admin.resources.eggs.edit', ['record' => $server->egg])) + ->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'egg.name') ->sortable() ->searchable(), Tables\Columns\TextColumn::make('user.username') ->icon('tabler-user') ->label('Owner') ->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user])) + ->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'user.username') ->sortable() ->searchable(), Tables\Columns\SelectColumn::make('allocation_id')