Add Server list to node page

This commit is contained in:
notCharles 2024-04-22 17:47:16 -04:00
parent 2328f07473
commit 65bfda1034
4 changed files with 56 additions and 4 deletions

View File

@ -3,6 +3,7 @@
namespace App\Filament\Resources; namespace App\Filament\Resources;
use App\Filament\Resources\NodeResource\Pages; use App\Filament\Resources\NodeResource\Pages;
use App\Filament\Resources\NodeResource\RelationManagers;
use App\Models\Node; use App\Models\Node;
use Filament\Forms; use Filament\Forms;
use Filament\Forms\Form; use Filament\Forms\Form;
@ -148,7 +149,7 @@ class NodeResource extends Resource
public static function getRelations(): array public static function getRelations(): array
{ {
return [ return [
// RelationManagers\NodesRelationManager::class,
]; ];
} }

View File

@ -220,7 +220,6 @@ class EditNode extends EditRecord
->placeholder('Not assigned'), ->placeholder('Not assigned'),
]), ]),
]), ]),
]), ]),
]); ]);
} }

View File

@ -0,0 +1,54 @@
<?php
namespace App\Filament\Resources\NodeResource\RelationManagers;
use App\Models\Server;
use Filament\Tables;
use Filament\Tables\Table;
use Filament\Resources\RelationManagers\RelationManager;
class NodesRelationManager extends RelationManager
{
protected static string $relationship = 'servers';
public function table(Table $table): Table
{
return $table
->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]))
->searchable(),
Tables\Columns\TextColumn::make('name')
->icon('tabler-brand-docker')
->url(fn (Server $server): string => route('filament.admin.resources.servers.edit', ['record' => $server]))
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('egg.name')
->icon('tabler-egg')
->url(fn (Server $server): string => route('filament.admin.resources.eggs.edit', ['record' => $server->user]))
->sortable(),
Tables\Columns\SelectColumn::make('allocation.id')
->label('Primary Allocation')
->options(fn ($state, Server $server) => [$server->allocation->id => $server->allocation->address])
->selectablePlaceholder(false)
->sortable(),
Tables\Columns\TextColumn::make('memory')->icon('tabler-device-desktop-analytics'),
Tables\Columns\TextColumn::make('cpu')->icon('tabler-cpu'),
Tables\Columns\TextColumn::make('databases_count')
->counts('databases')
->label('Databases')
->icon('tabler-database')
->numeric()
->sortable(),
Tables\Columns\TextColumn::make('backups_count')
->counts('backups')
->label('Backups')
->icon('tabler-file-download')
->numeric()
->sortable(),
]);
}
}

View File

@ -597,7 +597,6 @@ class ServerResource extends Resource
public static function table(Table $table): Table public static function table(Table $table): Table
{ {
return $table return $table
->searchable()
->columns([ ->columns([
Tables\Columns\TextColumn::make('status') Tables\Columns\TextColumn::make('status')
->default('unknown') ->default('unknown')
@ -642,7 +641,6 @@ class ServerResource extends Resource
->sortable(), ->sortable(),
Tables\Columns\TextColumn::make('node.name') Tables\Columns\TextColumn::make('node.name')
->icon('tabler-server-2') ->icon('tabler-server-2')
->searchable()
->url(fn (Server $server): string => route('filament.admin.resources.nodes.edit', ['record' => $server->node])) ->url(fn (Server $server): string => route('filament.admin.resources.nodes.edit', ['record' => $server->node]))
->sortable(), ->sortable(),
Tables\Columns\TextColumn::make('egg.name') Tables\Columns\TextColumn::make('egg.name')