Make allocation select on users server relation manager functional (#1719)

This commit is contained in:
Boy132 2025-09-19 08:43:29 +02:00 committed by GitHub
parent 6db1d82738
commit c10280af4b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 12 deletions

View File

@ -51,19 +51,19 @@ class ListServers extends ListRecords
->sortable(), ->sortable(),
TextColumn::make('node.name') TextColumn::make('node.name')
->label(trans('admin/server.node')) ->label(trans('admin/server.node'))
->url(fn (Server $server): string => route('filament.admin.resources.nodes.edit', ['record' => $server->node])) ->url(fn (Server $server) => route('filament.admin.resources.nodes.edit', ['record' => $server->node]))
->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'node.name') ->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'node.name')
->sortable() ->sortable()
->searchable(), ->searchable(),
TextColumn::make('egg.name') TextColumn::make('egg.name')
->label(trans('admin/server.egg')) ->label(trans('admin/server.egg'))
->url(fn (Server $server): string => route('filament.admin.resources.eggs.edit', ['record' => $server->egg])) ->url(fn (Server $server) => route('filament.admin.resources.eggs.edit', ['record' => $server->egg]))
->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'egg.name') ->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'egg.name')
->sortable() ->sortable()
->searchable(), ->searchable(),
TextColumn::make('user.username') TextColumn::make('user.username')
->label(trans('admin/user.username')) ->label(trans('admin/user.username'))
->url(fn (Server $server): string => route('filament.admin.resources.users.edit', ['record' => $server->user])) ->url(fn (Server $server) => route('filament.admin.resources.users.edit', ['record' => $server->user]))
->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'user.username') ->hidden(fn (Table $table) => $table->getGrouping()?->getId() === 'user.username')
->sortable() ->sortable()
->searchable(), ->searchable(),
@ -78,8 +78,7 @@ class ListServers extends ListRecords
TextColumn::make('allocation_id_readonly') TextColumn::make('allocation_id_readonly')
->label(trans('admin/server.primary_allocation')) ->label(trans('admin/server.primary_allocation'))
->hidden(fn () => auth()->user()->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty) ->hidden(fn () => auth()->user()->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty)
->disabled(fn (Server $server) => $server->allocations->count() <= 1) ->state(fn (Server $server) => $server->allocation->address ?? trans('admin/server.none')),
->state(fn (Server $server) => $server->allocation->address ?? 'None'),
TextColumn::make('image')->hidden(), TextColumn::make('image')->hidden(),
TextColumn::make('backups_count') TextColumn::make('backups_count')
->counts('backups') ->counts('backups')

View File

@ -54,24 +54,29 @@ class ServersRelationManager extends RelationManager
->searchable(), ->searchable(),
TextColumn::make('name') TextColumn::make('name')
->label(trans('admin/server.name')) ->label(trans('admin/server.name'))
->url(fn (Server $server): string => route('filament.admin.resources.servers.edit', ['record' => $server])) ->url(fn (Server $server) => route('filament.admin.resources.servers.edit', ['record' => $server]))
->searchable() ->searchable()
->sortable(), ->sortable(),
TextColumn::make('node.name') TextColumn::make('node.name')
->label(trans('admin/server.node')) ->label(trans('admin/server.node'))
->url(fn (Server $server): string => route('filament.admin.resources.nodes.edit', ['record' => $server->node])) ->url(fn (Server $server) => route('filament.admin.resources.nodes.edit', ['record' => $server->node]))
->sortable(), ->sortable(),
TextColumn::make('egg.name') TextColumn::make('egg.name')
->label(trans('admin/server.egg')) ->label(trans('admin/server.egg'))
->url(fn (Server $server): string => route('filament.admin.resources.eggs.edit', ['record' => $server->egg])) ->url(fn (Server $server) => route('filament.admin.resources.eggs.edit', ['record' => $server->egg]))
->sortable(), ->sortable(),
SelectColumn::make('allocation.id') SelectColumn::make('allocation_id')
->label(trans('admin/server.primary_allocation')) ->label(trans('admin/server.primary_allocation'))
->disabled() ->hidden(fn () => !auth()->user()->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty)
->options(fn (Server $server) => $server->allocations->take(1)->mapWithKeys(fn ($allocation) => [$allocation->id => $allocation->address])) ->disabled(fn (Server $server) => $server->allocations->count() <= 1)
->options(fn (Server $server) => $server->allocations->mapWithKeys(fn ($allocation) => [$allocation->id => $allocation->address]))
->selectablePlaceholder(fn (Server $server) => $server->allocations->count() <= 1)
->placeholder(trans('admin/server.none')) ->placeholder(trans('admin/server.none'))
->sortable(), ->sortable(),
TextColumn::make('image')->hidden(), TextColumn::make('allocation_id_readonly')
->label(trans('admin/server.primary_allocation'))
->hidden(fn () => auth()->user()->can('update server')) // TODO: update to policy check (fn (Server $server) --> $server is empty)
->state(fn (Server $server) => $server->allocation->address ?? trans('admin/server.none')),
TextColumn::make('databases_count') TextColumn::make('databases_count')
->counts('databases') ->counts('databases')
->label(trans('admin/server.databases')) ->label(trans('admin/server.databases'))