a906c6705d
- Typ proxmox am Ende von WIDGET_TYPES, WIDGET_MODULE_SLUGS = { proxmox: 'proxmox' }
- gemeinsame Statusteile (proxmox-status, HealthBar, status-styles) nach components/proxmox/
- HealthBar variant compact: 6 px, ohne Legende, aria-hidden
- Registry 3/4/8/8, Katalog-/Registry-/API-Tests auf die erste Modul-Kachel umgestellt
- ProxmoxWidget liest nur listServers, zeigt Lade-, Leer-, Fehlerzustand
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
41 lines
1.8 KiB
TypeScript
41 lines
1.8 KiB
TypeScript
import { WIDGET_MODULE_SLUGS } from '@tessera/shared';
|
|
|
|
/**
|
|
* Zuordnung Widget-Typ → Modul (D-22, PERM-07).
|
|
*
|
|
* Zweck: Widgets eines für den Benutzer gesperrten Moduls verschwinden
|
|
* serverseitig aus GET /dashboard/widgets — DashboardService.getWidgets
|
|
* filtert darüber.
|
|
*
|
|
* Schlüssel sind Werte von `WidgetInstance.widgetType`, Werte sind
|
|
* Modul-Slugs aus `Module.slug`.
|
|
*
|
|
* quick-260922-m1h: Die Tabelle selbst steht seit diesem Umbau in
|
|
* `packages/shared/src/index.ts` als `WIDGET_MODULE_SLUGS` — EINE Tabelle
|
|
* für beide Seiten, damit der Katalogfilter im Web
|
|
* (`visibleWidgetTypes`, Komfort) und dieser Server-Filter (verbindlich)
|
|
* nicht auseinanderlaufen. Hier steht nur noch der Lesezugriff; die
|
|
* öffentliche Schnittstelle dieser Datei bleibt unverändert, weil
|
|
* dashboard.service.spec.ts sie gezielt mockt.
|
|
*
|
|
* Bewusst eine TypeScript-Konstante statt einer Spalte auf
|
|
* `WidgetInstance`: eine Migration auf einer bereits befüllten Tabelle
|
|
* für ein Feld, das derzeit für jede Zeile leer wäre, wiegt schwerer als
|
|
* diese Konstante mit identischer Aussagekraft (15-RESEARCH.md Pitfall 5).
|
|
*
|
|
* Seit quick-260924-i8v steht dort genau ein Eintrag: `proxmox` →
|
|
* `proxmox`. Die übrigen neun Widget-Typen (clock/search/calendar/note/
|
|
* calculator/favorites/stopwatch/picture-frame/xframe) sind
|
|
* Plattform-Widgets ohne Modulbezug.
|
|
*/
|
|
export const WIDGET_MODULE_MAP: Readonly<Record<string, string>> = WIDGET_MODULE_SLUGS;
|
|
|
|
/**
|
|
* Liefert den Modul-Slug für einen Widget-Typ, oder `undefined`, wenn
|
|
* der Typ kein Modul-Widget ist (alle Typen außer `proxmox`). Einziger Lesezugriff auf die Zuordnungstabelle,
|
|
* damit Tests sie gezielt mocken können.
|
|
*/
|
|
export function getModuleSlugForWidgetType(widgetType: string): string | undefined {
|
|
return WIDGET_MODULE_MAP[widgetType];
|
|
}
|