Host-Liste holt sich ihren Stand selbst; die Ausstattung braucht keine Zeile nur fuer die Adresse
parent
f294db5259
commit
325e69f8f0
|
|
@ -50,6 +50,11 @@ class Hosts extends Component
|
|||
|
||||
return view('livewire.admin.hosts', [
|
||||
'hosts' => $hosts,
|
||||
// Ob gerade etwas an einem Host passiert — entscheidet nur, wie oft
|
||||
// die Seite nachfasst. `disabled` zählt dazu: so steht ein Host da,
|
||||
// dessen Entfernung in der Warteschlange hängt, und genau dann will
|
||||
// man nicht eine Minute auf das Verschwinden warten.
|
||||
'busy' => $hosts->contains(fn ($host) => in_array($host->status, ['pending', 'onboarding', 'disabled'], true)),
|
||||
'datacenters' => Datacenter::query()->orderBy('name')->get(),
|
||||
'statuses' => ['pending', 'onboarding', 'active', 'error', 'disabled'],
|
||||
'total' => Host::query()->count(),
|
||||
|
|
|
|||
|
|
@ -136,7 +136,18 @@
|
|||
Messung. --}}
|
||||
<div class="rounded-lg border border-line bg-surface p-5 shadow-xs animate-rise [animation-delay:60ms]">
|
||||
<h2 class="mb-3 text-xs font-semibold text-muted">{{ __('hosts.detail.spec') }}</h2>
|
||||
<dl class="grid grid-cols-2 gap-x-6 gap-y-4 sm:grid-cols-3 lg:grid-cols-6">
|
||||
{{-- Vier Spalten, nicht sechs.
|
||||
|
||||
Mit sechs füllten die sechs alten Einträge die Reihe exakt aus, und
|
||||
die Adresse bekam als siebter eine ganze eigene Zeile — links ein
|
||||
Wert, rechts daneben nichts. Eine Zeile, die nur entstand, weil ein
|
||||
Feld dazukam.
|
||||
|
||||
Bei vier Spalten stehen sieben Werte als 4 + 3, und jede Zelle wird
|
||||
BREITER statt schmaler: rund 265 px statt 190. Der Domainname
|
||||
braucht etwa 200 — er passt jetzt in eine gewöhnliche Zelle, statt
|
||||
eine eigene Zeile zu erzwingen oder abgeschnitten zu werden. --}}
|
||||
<dl class="grid grid-cols-2 gap-x-6 gap-y-4 sm:grid-cols-3 lg:grid-cols-4">
|
||||
@foreach ([
|
||||
[__('hosts.detail.public_ip'), $host->public_ip ?? __('hosts.unknown')],
|
||||
[__('hosts.meta.cores'), $host->cpu_cores ? (string) $host->cpu_cores : '—'],
|
||||
|
|
@ -166,17 +177,15 @@
|
|||
— SecureHostFirewall lässt 8006 ausschließlich aus dem
|
||||
Management-Subnetz zu, und der Name löst nur dort auf.
|
||||
|
||||
col-span-full statt eines sechsten schmalen Feldes: die Tafel
|
||||
hatte sechs Einträge in sechs Spalten, keine Lücke für einen
|
||||
siebten. Eine siebte schmale Spalte hätte die Adresse mitten im
|
||||
Domainnamen abgeschnitten — genau die Zeichenkette, die hier
|
||||
lesbar sein muss. Eine eigene, volle Zeile lässt sie stehen. --}}
|
||||
<div class="col-span-full min-w-0">
|
||||
Eine gewöhnliche Zelle wie alle anderen. `title` trägt den
|
||||
vollen Wert, falls er in einem schmalen Fenster doch einmal
|
||||
abgeschnitten wird. --}}
|
||||
<div class="min-w-0">
|
||||
<dt class="text-xs text-muted">{{ __('hosts.detail.fqdn') }}</dt>
|
||||
<dd class="mt-0.5 truncate font-mono text-sm font-semibold">
|
||||
<a href="https://{{ $fqdn }}:8006" target="_blank" rel="noopener"
|
||||
class="text-accent-text underline-offset-2 hover:underline"
|
||||
title="{{ __('hosts.detail.fqdn_hint') }}">{{ $fqdn }}</a>
|
||||
title="{{ $fqdn }} — {{ __('hosts.detail.fqdn_hint') }}">{{ $fqdn }}</a>
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,17 @@
|
|||
<div class="space-y-5">
|
||||
{{-- Die Liste holt sich ihren Stand selbst.
|
||||
|
||||
Sie tat es nicht, und das fiel an zwei Stellen auf: Zustand, VPN und
|
||||
Belegung standen so lange still, bis jemand neu lud — und ein entfernter
|
||||
Host blieb sichtbar, obwohl er schon weg war. Beides sah aus, als sei
|
||||
nichts passiert.
|
||||
|
||||
Schneller, solange etwas in Arbeit ist: `ConfirmRemoveHost` setzt den Host
|
||||
auf `disabled` und wirft `PurgeHost` in die Warteschlange, die erst auf die
|
||||
Runner-Sperre wartet. In dieser Zeit steht die Zeile noch da, und ohne
|
||||
kurzes Nachfassen bliebe sie es gefühlt für immer. Läuft nichts, reicht die
|
||||
Minute — die Seite soll nicht dauernd Abfragen erzeugen, nur weil sie offen
|
||||
ist. --}}
|
||||
<div class="space-y-5" @if ($busy) wire:poll.5s @else wire:poll.60s @endif>
|
||||
<div class="flex items-start justify-between gap-4 animate-rise">
|
||||
<div>
|
||||
<h1 class="text-2xl font-bold tracking-tight text-ink">{{ __('hosts.title') }}</h1>
|
||||
|
|
|
|||
Loading…
Reference in New Issue