paginated(false) ->query(fn () => auth()->user()->can('viewList server') ? Server::query() : auth()->user()->accessibleServers()) ->columns([ Stack::make([ ServerEntryColumn::make('server_entry') ->searchable(['name']), ]), ]) ->contentGrid([ 'default' => 1, 'xl' => 2, ]) ->recordUrl(fn (Server $server) => Console::getUrl(panel: 'server', tenant: $server)) ->emptyStateIcon('tabler-brand-docker') ->emptyStateDescription('') ->emptyStateHeading('You don\'t have access to any servers!'); } // @phpstan-ignore-next-line private function uptime(Server $server): string { $uptime = collect(cache()->get("servers.{$server->id}.uptime"))->last() ?? 0; if ($uptime === 0) { return 'Offline'; } return now()->subMillis($uptime)->diffForHumans(syntax: CarbonInterface::DIFF_ABSOLUTE, short: true, parts: 2); } // @phpstan-ignore-next-line private function cpu(Server $server): string { $cpu = Number::format(collect(cache()->get("servers.{$server->id}.cpu_absolute"))->last() ?? 0, maxPrecision: 2, locale: auth()->user()->language) . '%'; $max = Number::format($server->cpu, locale: auth()->user()->language) . '%'; return $cpu . ($server->cpu > 0 ? ' Of ' . $max : ''); } // @phpstan-ignore-next-line private function memory(Server $server): string { $latestMemoryUsed = collect(cache()->get("servers.{$server->id}.memory_bytes"))->last() ?? 0; $totalMemory = collect(cache()->get("servers.{$server->id}.memory_limit_bytes"))->last() ?? 0; $used = config('panel.use_binary_prefix') ? Number::format($latestMemoryUsed / 1024 / 1024 / 1024, maxPrecision: 2, locale: auth()->user()->language) .' GiB' : Number::format($latestMemoryUsed / 1000 / 1000 / 1000, maxPrecision: 2, locale: auth()->user()->language) . ' GB'; if ($totalMemory === 0) { $total = config('panel.use_binary_prefix') ? Number::format($server->memory / 1024, maxPrecision: 2, locale: auth()->user()->language) .' GiB' : Number::format($server->memory / 1000, maxPrecision: 2, locale: auth()->user()->language) . ' GB'; } else { $total = config('panel.use_binary_prefix') ? Number::format($totalMemory / 1024 / 1024 / 1024, maxPrecision: 2, locale: auth()->user()->language) .' GiB' : Number::format($totalMemory / 1000 / 1000 / 1000, maxPrecision: 2, locale: auth()->user()->language) . ' GB'; } return $used . ($server->memory > 0 ? ' Of ' . $total : ''); } // @phpstan-ignore-next-line private function disk(Server $server): string { $usedDisk = collect(cache()->get("servers.{$server->id}.disk_bytes"))->last() ?? 0; $used = config('panel.use_binary_prefix') ? Number::format($usedDisk / 1024 / 1024 / 1024, maxPrecision: 2, locale: auth()->user()->language) .' GiB' : Number::format($usedDisk / 1000 / 1000 / 1000, maxPrecision: 2, locale: auth()->user()->language) . ' GB'; $total = config('panel.use_binary_prefix') ? Number::format($server->disk / 1024, maxPrecision: 2, locale: auth()->user()->language) .' GiB' : Number::format($server->disk / 1000, maxPrecision: 2, locale: auth()->user()->language) . ' GB'; return $used . ($server->disk > 0 ? ' Of ' . $total : ''); } }