Go: store, auth, weather und config sind eigene Pakete unter internal/. Vorher lagen fuenf Dateien in einem Topf, und jede kannte jede. Web: os.js hatte 1425 Zeilen und alles darin. Jetzt core.js (Zustand, Server, Einstellungen), glyphs.js (die Pixelraster), js/widgets/ mit einem Widget je Datei, os.js nur noch die Ansichten. Stylesheet nach css/. Die HoneyBar bleibt eine einzelne Datei ohne Importe — sie wird von fremden Seiten mit einer Zeile eingebunden, da darf nichts nachladen. Nebenbei: Das gebaute Binary lag mit 9,8 MB im Repo und ist jetzt ignoriert. Und der Test gegen eine zweite Versionsnummer geht nicht mehr auf os.js, sondern durch alle .js — sonst haette ihn dieser Umbau still ausgehebelt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
import { $, escapeAttr, state } from "../core.js";
|
|
import { glyphSvg } from "../glyphs.js";
|
|
|
|
function greeting() {
|
|
const h = new Date().getHours();
|
|
if (h < 5 || h >= 23) return "Noch wach?";
|
|
if (h < 11) return "Guten Morgen.";
|
|
if (h < 18) return "Willkommen zurück.";
|
|
return "Guten Abend.";
|
|
}
|
|
|
|
/* ── Wer angemeldet ist ────────────────────────────────────────────────────
|
|
*
|
|
* Stand früher rechts in der Menüleiste. Dort war es das einzige Stück, das
|
|
* die HoneyBar in den Apps nicht hat — beide sollen aber gleich aussehen, sonst
|
|
* merkt man beim Wechsel, dass es zwei verschiedene Leisten sind. Auf dem
|
|
* Schreibtisch ist ohnehin Platz dafür, und die Begrüßung gehört dazu.
|
|
*/
|
|
function userHtml() {
|
|
const bild = state.me && state.me.picture
|
|
? `<img class="uw-bild" src="${escapeAttr(state.me.picture)}" alt="" />`
|
|
: `<span class="uw-bild uw-leer">${glyphSvg("chip")}</span>`;
|
|
return `
|
|
<div class="uw">
|
|
${bild}
|
|
<div class="uw-text">
|
|
<b class="uw-name">${state.cfg.user}</b>
|
|
<span class="uw-gruss">${greeting()}</span>
|
|
<span class="uw-host">${state.cfg.user}@${state.cfg.hostname}</span>
|
|
</div>
|
|
</div>`;
|
|
}
|
|
|
|
export function renderUser() {
|
|
const tile = $("userTile");
|
|
const desk = $("userDesk");
|
|
const desktopMode = state.settings.mode === "desktop";
|
|
const html = userHtml();
|
|
|
|
tile.hidden = desktopMode;
|
|
desk.hidden = !desktopMode;
|
|
tile.querySelector(".user-body").innerHTML = html;
|
|
desk.innerHTML = html;
|
|
}
|