Widget-Rahmen: Widgets sind Beschreibungen, keine Kaesten in der Seite

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.
This commit is contained in:
marc committed 2026-08-30 03:12:00 +02:00
1 parent 981a2331df
commit b7cc06b7c1
12 files changed
+461 -180

No files matched your search

+30
View File
@@ -184,6 +184,36 @@ in beiden: Menüleiste, Palette, Einstellungen, App-Liste.
**Tasten:** `M` Betriebsart · `S` Einstellungen · `?` Hilfe ·
`Esc` schließt Startmenü, oberstes Fenster oder Dialog — in dieser Reihenfolge.
## Widgets
Ein Widget ist eine **Beschreibung**, kein Kasten in der `index.html`:
```js
widgetAnmelden({
id: "wetter", titel: "wetter",
wo: ["terminal", "desktop"], // wo es erscheinen darf
sichtbar: () => state.settings.weatherDesk === "on",
laden: async () => …, // false = es gibt nichts zu zeigen
leer: "verbergen", // oder ein Satz, der dann dasteht
inhalt: () => "<html>",
takt: 10 * 60 * 1000, // Nachladen, optional
})
```
Den Rest macht `web/js/widgets/rahmen.js`: Im Terminal-Modus wird daraus ein
Fenster in der linken Spalte, im Desktop-Modus ein Schild oben rechts. Er kennt
vier Zustände — **lädt · fertig · nichts da · Fehler** — und hält den
Nachladetakt.
**Ein Widget, das seinen Server nicht erreicht, sagt das in seinem eigenen
Rahmen.** Es verschwindet nicht (das sähe aus wie abgeschaltet) und reißt weder
den Schreibtisch noch die anderen Widgets mit. Wo „nichts da" schlicht heißt,
dass es nichts zu zeigen gibt, kann ein Widget mit `leer: "verbergen"` ganz
wegbleiben — so macht es das Wetter ohne eingestellten Ort.
Eine neue Anzeige ist damit eine Datei in `web/js/widgets/` und ein Import in
`os.js`. Weder das Raster noch die Seite werden dafür angefasst.
## Wetter
Ein Pixelsymbol mit der Temperatur — wahlweise auf dem Schreibtisch, in der