Files
tessera-ctl/apps/api/src/dashboard/widget-module-map.ts
T
schalli a906c6705d feat(260924-i8v): Proxmox-Kachel als Durchstich mit Balken und Zusammenfassung
- 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>
2026-09-24 13:24:51 +02:00

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];
}