widgetAnmelden({ id, titel, wo, sichtbar, laden, leer, inhalt, takt }) —
der Rahmen macht daraus ein Fenster in der Spalte (Terminal) oder ein
Schild (Desktop), kennt lädt/fertig/nichts da/Fehler und haelt den
Nachladetakt. Benutzer, Wetter und Systemzustand sind umgestellt; aus
index.html sind vier feste Kaesten verschwunden und aus dem Raster die
Einzelplaetze.
Zwei Dinge, die erst dabei sichtbar wurden:
- Der Server meldete 'kein Ort eingestellt' und 'Dienst nicht
erreichbar' beide als 204. Ein Ausfall sah damit aus wie ein
abgeschaltetes Widget. Ausfall ist jetzt 502, mit Test.
- Die Reihenfolge haengt nicht mehr an der Modulauswertung: Seit
glyphs.js seine Raster mit await auf oberster Ebene laedt, laufen
Module ohne Symbole vorher durch — der Systemzustand stand deshalb
ueber dem Benutzer. widgetsOrdnen() macht die Reihenfolge zur Angabe,
und genau dort haengt spaeter die im Server gespeicherte ein.
30 lines
1.1 KiB
JavaScript
30 lines
1.1 KiB
JavaScript
import { escapeHtml, state } from "../core.js";
|
|
import { widgetAnmelden } from "./rahmen.js";
|
|
|
|
/* ── Systemzustand ─────────────────────────────────────────────────────────
|
|
*
|
|
* Nur im Terminal-Modus ein Widget. Auf dem Schreibtisch gibt es dieselben
|
|
* Zahlen als Fenster über das Startmenü — ein Schild, das dauerhaft „modus:
|
|
* desktop" behauptet, während man im Desktop-Modus steht, sagt niemandem etwas.
|
|
*/
|
|
export function statsHtml() {
|
|
const up = Object.values(state.probes).filter((s) => s === "up").length;
|
|
const rows = [
|
|
["apps", `${state.cfg.apps.length}`],
|
|
["erreichbar", `${up}/${state.cfg.apps.length}`],
|
|
["modus", state.settings.mode],
|
|
["röhre", state.settings.phosphor],
|
|
["version", `v${state.cfg.version}`],
|
|
];
|
|
return `<dl class="statlist">${rows
|
|
.map(([k, v]) => `<dt>${k}</dt><dd>${escapeHtml(v)}</dd>`)
|
|
.join("")}</dl>`;
|
|
}
|
|
|
|
widgetAnmelden({
|
|
id: "system",
|
|
titel: "system",
|
|
wo: ["terminal"],
|
|
inhalt: statsHtml,
|
|
});
|