@php $total = count($servers); $online = collect($servers)->where('status', 'online')->count(); $avgCpu = $total ? (int) round(collect($servers)->avg('cpu')) : 0; $avgMem = $total ? (int) round(collect($servers)->avg('mem')) : 0; // static sparkline path from $metrics (live chart island replaces this in v1) $n = count($metrics); $w = 300; $h = 80; $pad = 6; $coords = []; foreach ($metrics as $i => $v) { $x = $n > 1 ? round($i / ($n - 1) * $w, 1) : 0; $y = round($h - $pad - ($v / 100) * ($h - 2 * $pad), 1); $coords[] = "$x,$y"; } $line = implode(' ', $coords); $area = "0,$h " . $line . " $w,$h"; $svcLabel = ['online' => 'aktiv', 'warning' => 'degradiert', 'offline' => 'gestoppt']; @endphp
{{-- Header --}}

Flotte

Übersicht

{{ $online }} / {{ $total }} online
{{-- KPI grid: 1 → 2 → 4 --}}
{{-- Live chart (2/3) + resource rings (1/3) --}}
Reverb

Mock-Serie — Live-Daten folgen über Reverb.

{{-- Server list + systemd services --}}
@foreach ($servers as $s) @endforeach
@foreach ($services as $svc)

{{ $svc['name'] }}

{{ $svc['desc'] }}

{{ $svcLabel[$svc['status']] }}
@endforeach
{{-- Audit --}}
@foreach ($events as $e)

{{ $e['actor'] }} · {{ $e['action'] }}

{{ $e['target'] }}

{{ $e['when'] }}
@endforeach