87a7b7cbcd
- Kachel mit Zählern und roten/gelben Clouds, nur mit Modulzugriff sichtbar (geteilte Widget-Typen, Modulzuordnung, Katalog) - Anleitung für Anwender und Administratoren, Eintrag im Changelog Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
42 lines
1.9 KiB
TypeScript
42 lines
1.9 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-261002-k67 stehen dort zwei Einträge: `proxmox` → `proxmox`
|
|
* (quick-260924-i8v) und `nextcloud-status` → `nextcloud-status`. Die
|
|
* übrigen Widget-Typen (clock/search/calendar/note/calculator/favorites/
|
|
* stopwatch/picture-frame/xframe/reminder) 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` und `nextcloud-status`). Einziger Lesezugriff auf die Zuordnungstabelle,
|
|
* damit Tests sie gezielt mocken können.
|
|
*/
|
|
export function getModuleSlugForWidgetType(widgetType: string): string | undefined {
|
|
return WIDGET_MODULE_MAP[widgetType];
|
|
}
|