From 7ef50dca00dcd5ab55ae971f4ec99c7eccfa4729 Mon Sep 17 00:00:00 2001 From: Mesharsky Date: Wed, 19 Aug 2026 18:54:43 +0100 Subject: [PATCH] Defer Wings requests on server lists --- .../Resources/Servers/Pages/ListServers.php | 8 +++--- .../Resources/Servers/Pages/ListServers.php | 1 + app/Livewire/ServerCondition.php | 26 +++++++++++++++++++ .../columns/server-condition-column.blade.php | 3 +++ .../server-condition-placeholder.blade.php | 6 +++++ .../views/livewire/server-condition.blade.php | 3 +++ .../server-entry-placeholder.blade.php | 2 +- 7 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 app/Livewire/ServerCondition.php create mode 100644 resources/views/livewire/columns/server-condition-column.blade.php create mode 100644 resources/views/livewire/server-condition-placeholder.blade.php create mode 100644 resources/views/livewire/server-condition.blade.php diff --git a/app/Filament/Admin/Resources/Servers/Pages/ListServers.php b/app/Filament/Admin/Resources/Servers/Pages/ListServers.php index ce9918c925..2cd685ec6b 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/ListServers.php +++ b/app/Filament/Admin/Resources/Servers/Pages/ListServers.php @@ -16,6 +16,7 @@ use Filament\Resources\Pages\ListRecords; use Filament\Tables\Columns\SelectColumn; use Filament\Tables\Columns\TextColumn; +use Filament\Tables\Columns\ViewColumn; use Filament\Tables\Grouping\Group; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; @@ -37,12 +38,9 @@ public function table(Table $table): Table Group::make('egg.name')->getDescriptionFromRecordUsing(fn (Server $server) => str($server->egg->description)->limit(150)), ]) ->columns([ - TextColumn::make('condition') + ViewColumn::make('condition') ->label(trans('admin/server.condition')) - ->default('unknown') - ->badge() - ->icon(fn (Server $server) => $server->condition->getIcon()) - ->color(fn (Server $server) => $server->condition->getColor()), + ->view('livewire.columns.server-condition-column'), TextColumn::make('uuid') ->hidden() ->label(trans('admin/server.uuid')) diff --git a/app/Filament/App/Resources/Servers/Pages/ListServers.php b/app/Filament/App/Resources/Servers/Pages/ListServers.php index 844a79d058..7a4bff60e6 100644 --- a/app/Filament/App/Resources/Servers/Pages/ListServers.php +++ b/app/Filament/App/Resources/Servers/Pages/ListServers.php @@ -136,6 +136,7 @@ public function table(Table $table): Table $defaultPerPage = in_array($storedPerPage, $pageOptions, true) ? $storedPerPage : ($usingGrid ? 10 : 20); return $table + ->deferLoading(!$usingGrid) ->paginated($pageOptions) ->defaultPaginationPageOption($defaultPerPage) ->query(fn () => $baseQuery) diff --git a/app/Livewire/ServerCondition.php b/app/Livewire/ServerCondition.php new file mode 100644 index 0000000000..ea400f207b --- /dev/null +++ b/app/Livewire/ServerCondition.php @@ -0,0 +1,26 @@ + $this->server->condition, + ]); + } + + public function placeholder(): View + { + return view('livewire.server-condition-placeholder'); + } +} diff --git a/resources/views/livewire/columns/server-condition-column.blade.php b/resources/views/livewire/columns/server-condition-column.blade.php new file mode 100644 index 0000000000..b4529f6bbd --- /dev/null +++ b/resources/views/livewire/columns/server-condition-column.blade.php @@ -0,0 +1,3 @@ +
+ @livewire('server-condition', ['server' => $record, 'lazy' => true], key('admin-server-condition-' . $record->getKey())) +
diff --git a/resources/views/livewire/server-condition-placeholder.blade.php b/resources/views/livewire/server-condition-placeholder.blade.php new file mode 100644 index 0000000000..b0ee1a8c7d --- /dev/null +++ b/resources/views/livewire/server-condition-placeholder.blade.php @@ -0,0 +1,6 @@ + + + + {{ trans('server/dashboard.loading') }} + + diff --git a/resources/views/livewire/server-condition.blade.php b/resources/views/livewire/server-condition.blade.php new file mode 100644 index 0000000000..55fbe53f36 --- /dev/null +++ b/resources/views/livewire/server-condition.blade.php @@ -0,0 +1,3 @@ + + {{ $condition->getLabel() }} + diff --git a/resources/views/livewire/server-entry-placeholder.blade.php b/resources/views/livewire/server-entry-placeholder.blade.php index 92bcc4ce21..515cb335a7 100644 --- a/resources/views/livewire/server-entry-placeholder.blade.php +++ b/resources/views/livewire/server-entry-placeholder.blade.php @@ -47,7 +47,7 @@ $cpuMax = \App\Enums\ServerResourceType::CPULimit->getResourceAmount($server) ?: 100; $getState = fn() => $cpuCurrent; $getMaxValue = fn() => $cpuMax; - $getProgressLabel = fn () => $server->formatResource(App\Enums\ServerResourceType::CPU, 0) . ' / ' . $server->formatResource(App\Enums\ServerResourceType::CPULimit, 0); + $getProgressLabel = fn () => format_number($cpuCurrent, precision: 0) . '% / ' . $server->formatResource(App\Enums\ServerResourceType::CPULimit, 0); @endphp @include('livewire.columns.progress-bar-column', [