Files
tessera-ctl/apps/api/src/dashboard/widget-module-map.ts
T
schalli 87a7b7cbcd feat(nextcloud-status): Dashboard-Kachel, Anleitung und Changelog
- 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>
2026-10-02 15:00:31 +02:00

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