From 3b744f37dd9c475f41dd7c7700426541af38d3d7 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Tue, 3 Jun 2025 14:33:43 +0200 Subject: [PATCH] Lazy load server entries (`Grid` only) (#1413) --- .../Tables/Columns/ServerEntryColumn.php | 2 +- app/Livewire/ServerEntry.php | 64 +++++++++++++++++++ .../Daemon/DaemonServerRepository.php | 2 +- .../columns/server-entry-column.blade.php | 8 +++ .../views/livewire/server-entry.blade.php | 47 ++++++++++++++ .../columns/server-entry-column.blade.php | 63 ------------------ 6 files changed, 121 insertions(+), 65 deletions(-) create mode 100644 app/Livewire/ServerEntry.php create mode 100644 resources/views/livewire/columns/server-entry-column.blade.php create mode 100644 resources/views/livewire/server-entry.blade.php delete mode 100644 resources/views/tables/columns/server-entry-column.blade.php diff --git a/app/Filament/Components/Tables/Columns/ServerEntryColumn.php b/app/Filament/Components/Tables/Columns/ServerEntryColumn.php index 3d02a8497..52e81c25e 100644 --- a/app/Filament/Components/Tables/Columns/ServerEntryColumn.php +++ b/app/Filament/Components/Tables/Columns/ServerEntryColumn.php @@ -6,5 +6,5 @@ use Filament\Tables\Columns\Column; class ServerEntryColumn extends Column { - protected string $view = 'tables.columns.server-entry-column'; + protected string $view = 'livewire.columns.server-entry-column'; } diff --git a/app/Livewire/ServerEntry.php b/app/Livewire/ServerEntry.php new file mode 100644 index 000000000..35b1a3095 --- /dev/null +++ b/app/Livewire/ServerEntry.php @@ -0,0 +1,64 @@ + +
+
+ +
+
+ +

+ {{ $server->name }} +

+
+ +
+
+

CPU

+

{{ Number::format(0, precision: 2, locale: auth()->user()->language ?? 'en') . '%' }}

+
+

{{ $server->formatResource('cpu', type: \App\Enums\ServerResourceType::Percentage, limit: true) }}

+
+
+

Memory

+

{{ convert_bytes_to_readable(0, decimals: 2) }}

+
+

{{ $server->formatResource('memory', limit: true) }}

+
+
+

Disk

+

{{ convert_bytes_to_readable(0, decimals: 2) }}

+
+

{{ $server->formatResource('disk', limit: true) }}

+
+ +
+
+ + HTML; + } +} diff --git a/app/Repositories/Daemon/DaemonServerRepository.php b/app/Repositories/Daemon/DaemonServerRepository.php index 551dc16fe..ae88ceadd 100644 --- a/app/Repositories/Daemon/DaemonServerRepository.php +++ b/app/Repositories/Daemon/DaemonServerRepository.php @@ -19,7 +19,7 @@ class DaemonServerRepository extends DaemonRepository public function getDetails(): array { try { - return $this->getHttpClient()->get("/api/servers/{$this->server->uuid}")->throw()->json(); + return $this->getHttpClient()->connectTimeout(1)->timeout(1)->get("/api/servers/{$this->server->uuid}")->throw()->json(); } catch (RequestException $exception) { $cfId = $exception->response->header('Cf-Ray'); $cfCache = $exception->response->header('Cf-Cache-Status'); diff --git a/resources/views/livewire/columns/server-entry-column.blade.php b/resources/views/livewire/columns/server-entry-column.blade.php new file mode 100644 index 000000000..332b1a988 --- /dev/null +++ b/resources/views/livewire/columns/server-entry-column.blade.php @@ -0,0 +1,8 @@ +@php + /** @var \App\Models\Server $server */ + $server = $getRecord(); +@endphp + +
+ @livewire('server-entry', ['server' => $server, 'lazy' => true], key($server->id)) +
\ No newline at end of file diff --git a/resources/views/livewire/server-entry.blade.php b/resources/views/livewire/server-entry.blade.php new file mode 100644 index 000000000..27fb2def0 --- /dev/null +++ b/resources/views/livewire/server-entry.blade.php @@ -0,0 +1,47 @@ +
+
+
+ +
+
+ +

+ {{ $server->name }} + ({{ $server->formatResource('uptime', type: \App\Enums\ServerResourceType::Time) }}) +

+
+ +
+
+

CPU

+

{{ $server->formatResource('cpu_absolute', type: \App\Enums\ServerResourceType::Percentage) }}

+
+

{{ $server->formatResource('cpu', type: \App\Enums\ServerResourceType::Percentage, limit: true) }}

+
+
+

Memory

+

{{ $server->formatResource('memory_bytes') }}

+
+

{{ $server->formatResource('memory', limit: true) }}

+
+
+

Disk

+

{{ $server->formatResource('disk_bytes') }}

+
+

{{ $server->formatResource('disk', limit: true) }}

+
+ +
+
+
\ No newline at end of file diff --git a/resources/views/tables/columns/server-entry-column.blade.php b/resources/views/tables/columns/server-entry-column.blade.php deleted file mode 100644 index 152db35b6..000000000 --- a/resources/views/tables/columns/server-entry-column.blade.php +++ /dev/null @@ -1,63 +0,0 @@ -@php - use App\Enums\ServerResourceType; - - /** @var \App\Models\Server $server */ - $server = $getRecord(); -@endphp - - - - -
-
-
-
- -
-
- -

- {{ $server->name }} - ({{ $server->formatResource('uptime', type: ServerResourceType::Time) }}) -

-
- -
-
-

CPU

-

{{ $server->formatResource('cpu_absolute', type: ServerResourceType::Percentage) }}

-
-

{{ $server->formatResource('cpu', type: ServerResourceType::Percentage, limit: true) }}

-
-
-

Memory

-

{{ $server->formatResource('memory_bytes') }}

-
-

{{ $server->formatResource('memory', limit: true) }}

-
-
-

Disk

-

{{ $server->formatResource('disk_bytes') }}

-
-

{{ $server->formatResource('disk', limit: true) }}

-
- -
-
-
-