diff --git a/app/Livewire/Concerns/WithFleetContext.php b/app/Livewire/Concerns/WithFleetContext.php new file mode 100644 index 0000000..c543131 --- /dev/null +++ b/app/Livewire/Concerns/WithFleetContext.php @@ -0,0 +1,27 @@ +get(); + } + + public function activeServer(): ?Server + { + $fleet = $this->fleet(); + + return $fleet->firstWhere('id', session('active_server_id')) + ?? $fleet->firstWhere('status', 'online') + ?? $fleet->first(); + } +} diff --git a/app/Livewire/Dashboard.php b/app/Livewire/Dashboard.php index aebf0cc..d1b3d22 100644 --- a/app/Livewire/Dashboard.php +++ b/app/Livewire/Dashboard.php @@ -2,6 +2,7 @@ namespace App\Livewire; +use App\Livewire\Concerns\WithFleetContext; use Livewire\Attributes\Layout; use Livewire\Attributes\Title; use Livewire\Component; @@ -10,6 +11,8 @@ use Livewire\Component; #[Title('Clusev — Dashboard')] class Dashboard extends Component { + use WithFleetContext; + /** * Mock fleet data. Replaced by the SSH layer (phpseclib) + Reverb later. * Shapes mirror what MetricsPoller/FleetService will return. @@ -52,6 +55,6 @@ class Dashboard extends Component public function render() { - return view('livewire.dashboard'); + return view('livewire.dashboard', ['active' => $this->activeServer()]); } } diff --git a/app/Livewire/ServerSwitcher.php b/app/Livewire/ServerSwitcher.php new file mode 100644 index 0000000..0226e17 --- /dev/null +++ b/app/Livewire/ServerSwitcher.php @@ -0,0 +1,36 @@ +firstOrFail(); + + session(['active_server_id' => $server->id]); + + $this->redirect(request()->header('Referer') ?: route('dashboard'), navigate: true); + } + + public function render() + { + $servers = Server::orderBy('name')->get(); + $active = $servers->firstWhere('id', session('active_server_id')) + ?? $servers->firstWhere('status', 'online') + ?? $servers->first(); + + return view('livewire.server-switcher', [ + 'servers' => $servers, + 'active' => $active, + ]); + } +} diff --git a/resources/views/components/sidebar.blade.php b/resources/views/components/sidebar.blade.php index 687b960..3e6255f 100644 --- a/resources/views/components/sidebar.blade.php +++ b/resources/views/components/sidebar.blade.php @@ -16,17 +16,9 @@ - {{-- Server switcher (mock) --}} + {{-- Server switcher --}}