From f79dac2d1356a2ae622bdd76515ae3589bcd9151 Mon Sep 17 00:00:00 2001 From: notCharles Date: Mon, 13 May 2024 19:39:28 -0400 Subject: [PATCH] Show associated servers on edit egg page --- .../Resources/EggResource/Pages/EditEgg.php | 7 +++ .../ServersRelationManager.php | 43 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 app/Filament/Resources/EggResource/RelationManagers/ServersRelationManager.php diff --git a/app/Filament/Resources/EggResource/Pages/EditEgg.php b/app/Filament/Resources/EggResource/Pages/EditEgg.php index c33c516e0..8d8a9d5ae 100644 --- a/app/Filament/Resources/EggResource/Pages/EditEgg.php +++ b/app/Filament/Resources/EggResource/Pages/EditEgg.php @@ -208,4 +208,11 @@ class EditEgg extends EditRecord ->url(fn (Egg $egg): string => route('admin.eggs.export', ['egg' => $egg['id']])), ]; } + + public function getRelationManagers(): array + { + return [ + EggResource\RelationManagers\ServersRelationManager::class, + ]; + } } diff --git a/app/Filament/Resources/EggResource/RelationManagers/ServersRelationManager.php b/app/Filament/Resources/EggResource/RelationManagers/ServersRelationManager.php new file mode 100644 index 000000000..aab274043 --- /dev/null +++ b/app/Filament/Resources/EggResource/RelationManagers/ServersRelationManager.php @@ -0,0 +1,43 @@ +recordTitleAttribute('servers') + ->emptyStateDescription('No Servers')->emptyStateHeading('No servers are assigned this egg.') + ->searchable(false) + ->columns([ + Tables\Columns\TextColumn::make('user.username') + ->label('Owner') + ->icon('tabler-user') + ->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user])) + ->sortable(), + Tables\Columns\TextColumn::make('name') + ->icon('tabler-brand-docker') + ->url(fn (Server $server): string => route('filament.admin.resources.servers.edit', ['record' => $server])) + ->sortable(), + Tables\Columns\TextColumn::make('node.name') + ->icon('tabler-server-2') + ->url(fn (Server $server): string => route('filament.admin.resources.nodes.edit', ['record' => $server->node])), + Tables\Columns\TextColumn::make('image') + ->label('Docker Image'), + Tables\Columns\SelectColumn::make('allocation.id') + ->label('Primary Allocation') + ->options(fn ($state, Server $server) => [$server->allocation->id => $server->allocation->address]) + ->selectablePlaceholder(false) + ->sortable(), + ]); + } +}