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>
This commit is contained in:
@@ -21,14 +21,26 @@ describe('widget-module-map (quick-260922-m1h)', () => {
|
||||
}
|
||||
});
|
||||
|
||||
// quick-260924-i8v: Proxmox ist die erste modulgebundene Kachel; alle
|
||||
// uebrigen bleiben Plattform-Kacheln ohne Modulbezug.
|
||||
it('nur proxmox traegt einen Modulbezug, alle uebrigen Kacheln sind Plattform-Kacheln', () => {
|
||||
for (const type of WIDGET_TYPES.filter((t) => t !== 'proxmox')) {
|
||||
// quick-260924-i8v: Proxmox ist die erste modulgebundene Kachel,
|
||||
// quick-261002-k67 ergaenzt Nextcloud-Status; alle uebrigen bleiben
|
||||
// Plattform-Kacheln ohne Modulbezug.
|
||||
it('nur proxmox und nextcloud-status tragen einen Modulbezug, alle uebrigen Kacheln sind Plattform-Kacheln', () => {
|
||||
expect(Object.keys(WIDGET_MODULE_MAP).sort()).toEqual(['nextcloud-status', 'proxmox']);
|
||||
for (const type of WIDGET_TYPES.filter((t) => t !== 'proxmox' && t !== 'nextcloud-status')) {
|
||||
expect(getModuleSlugForWidgetType(type)).toBeUndefined();
|
||||
}
|
||||
});
|
||||
|
||||
it("die Nextcloud-Status-Kachel gehoert zum Modul 'nextcloud-status' (T-k67-04)", () => {
|
||||
expect(getModuleSlugForWidgetType('nextcloud-status')).toBe('nextcloud-status');
|
||||
});
|
||||
|
||||
it('WIDGET_TYPES endet mit nextcloud-status (zwoelf Typen, Reihenfolge unveraendert)', () => {
|
||||
expect(WIDGET_TYPES).toHaveLength(12);
|
||||
expect(WIDGET_TYPES.at(-1)).toBe('nextcloud-status');
|
||||
expect(WIDGET_TYPES.at(-2)).toBe('reminder');
|
||||
});
|
||||
|
||||
it("die Proxmox-Kachel gehoert zum Modul 'proxmox' (T-I8V-01)", () => {
|
||||
expect(getModuleSlugForWidgetType('proxmox')).toBe('proxmox');
|
||||
});
|
||||
|
||||
@@ -23,16 +23,17 @@ import { WIDGET_MODULE_SLUGS } from '@tessera/shared';
|
||||
* 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.
|
||||
* 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`). Einziger Lesezugriff auf die Zuordnungstabelle,
|
||||
* 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 {
|
||||
|
||||
Reference in New Issue
Block a user