feat(dashboard): enhance widget availability and initialization
All checks were successful
Deploy to production / deploy (push) Successful in 3m2s
All checks were successful
Deploy to production / deploy (push) Successful in 3m2s
- Updated `getAvailableWidgets` method in `DashboardService` to merge default widget types with database entries, ensuring immediate visibility of new widgets post-deployment. - Introduced `DASHBOARD_WIDGET_TYPE_DEFAULTS` in `initializeWidgetTypes` for canonical widget types, facilitating API merging when database entries are absent. - Modified `StatusBar.vue` to utilize a computed property for quick access children, improving menu item handling and visibility based on user context. - Enhanced `LoggedInView.vue` to dynamically return localized widget labels, improving user experience with accurate translations.
This commit is contained in:
22
backend/sql/seed_dashboard_widget_types.sql
Normal file
22
backend/sql/seed_dashboard_widget_types.sql
Normal file
@@ -0,0 +1,22 @@
|
||||
-- Dashboard-Widget-Typen (type.widget_type)
|
||||
-- Für Produktion ohne initializeWidgetTypes / ohne Deploy-Sync.
|
||||
-- Idempotent: pro endpoint nur einfügen, wenn noch keine Zeile existiert.
|
||||
--
|
||||
-- Muss mit backend/utils/initializeWidgetTypes.js (DASHBOARD_WIDGET_TYPE_DEFAULTS)
|
||||
-- übereinstimmen – bei neuen Widgets beides anpassen.
|
||||
|
||||
INSERT INTO type.widget_type (label, endpoint, description, order_id)
|
||||
SELECT v.label, v.endpoint, v.description, v.order_id
|
||||
FROM (
|
||||
VALUES
|
||||
('Termine'::text, '/api/termine'::text, 'Bevorstehende Termine'::text, 1),
|
||||
('Falukant', '/api/falukant/dashboard-widget', 'Charakter, Geld, Nachrichten, Kinder', 2),
|
||||
('News', '/api/news?language=de&category=top', 'Nachrichten (newsdata.io), Counter für Pagination', 3),
|
||||
('Geburtstage', '/api/calendar/widget/birthdays', 'Nächste Geburtstage von Freunden', 4),
|
||||
('Nächste Termine', '/api/calendar/widget/upcoming', 'Anstehende Kalendertermine', 5),
|
||||
('Kalender', '/api/calendar/widget/mini', 'Mini-Kalenderansicht', 6),
|
||||
('Sprachkurse', '/api/vocab/dashboard-widget', 'Vokabelkurse, aktuelle Lektion, Sprung zur Lektion', 7)
|
||||
) AS v(label, endpoint, description, order_id)
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM type.widget_type wt WHERE wt.endpoint = v.endpoint
|
||||
);
|
||||
Reference in New Issue
Block a user