From cacec64777591e6ed3143b9826afe98c749e731a Mon Sep 17 00:00:00 2001 From: Ulas Date: Thu, 26 Mar 2026 23:30:00 +0100 Subject: [PATCH] fix: Dashboard-Widgets zeigen jetzt alle offenen Aufgaben und neueste Notizen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aufgaben-Widget zeigte nur high/urgent Tasks mit Fälligkeit ≤48h, Pinnwand-Widget nur explizit gepinnte Notizen. Neue Einträge waren dadurch im Dashboard unsichtbar. - Aufgaben: alle offenen Tasks (sortiert nach Priorität), Limit 5 - Notizen: neueste 3 (gepinnte zuerst, dann nach Aktualisierung) - Greeting-Chip zählt weiterhin nur high/urgent Tasks Co-Authored-By: Claude Opus 4.6 --- public/pages/dashboard.js | 2 +- public/sw.js | 6 +++--- server/routes/dashboard.js | 23 +++++++++++++---------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/public/pages/dashboard.js b/public/pages/dashboard.js index 2d179e8..4ffabfb 100644 --- a/public/pages/dashboard.js +++ b/public/pages/dashboard.js @@ -430,7 +430,7 @@ export async function render(container, { user }) { const today = new Date().toDateString(); const stats = { - urgentCount: data.urgentTasks?.length ?? 0, + urgentCount: (data.urgentTasks ?? []).filter((t) => t.priority === 'urgent' || t.priority === 'high').length, todayEventCount: (data.upcomingEvents ?? []).filter((e) => new Date(e.start_datetime).toDateString() === today ).length, diff --git a/public/sw.js b/public/sw.js index c369543..61d33b1 100644 --- a/public/sw.js +++ b/public/sw.js @@ -12,9 +12,9 @@ * API: Immer Netzwerk (kein Caching von Nutzerdaten) */ -const SHELL_CACHE = 'oikos-shell-v16'; -const PAGES_CACHE = 'oikos-pages-v16'; -const ASSETS_CACHE = 'oikos-assets-v16'; +const SHELL_CACHE = 'oikos-shell-v17'; +const PAGES_CACHE = 'oikos-pages-v17'; +const ASSETS_CACHE = 'oikos-assets-v17'; const ALL_CACHES = [SHELL_CACHE, PAGES_CACHE, ASSETS_CACHE]; // App-Shell: sofort benötigt für ersten Render diff --git a/server/routes/dashboard.js b/server/routes/dashboard.js index 5dabcf3..9a15c58 100644 --- a/server/routes/dashboard.js +++ b/server/routes/dashboard.js @@ -52,7 +52,7 @@ router.get('/', (req, res) => { result.upcomingEvents = []; } - // Dringende Aufgaben: high/urgent + fällig in ≤ 48h + nicht erledigt + // Offene Aufgaben: alle nicht-erledigten, sortiert nach Priorität und Fälligkeit try { result.urgentTasks = d.prepare(` SELECT @@ -61,14 +61,18 @@ router.get('/', (req, res) => { u.avatar_color AS assigned_color FROM tasks t LEFT JOIN users u ON t.assigned_to = u.id - WHERE t.priority IN ('high', 'urgent') - AND t.status != 'done' - AND (t.due_date IS NULL OR t.due_date <= ?) + WHERE t.status != 'done' ORDER BY - CASE t.priority WHEN 'urgent' THEN 0 ELSE 1 END, + CASE t.priority + WHEN 'urgent' THEN 0 + WHEN 'high' THEN 1 + WHEN 'medium' THEN 2 + WHEN 'low' THEN 3 + ELSE 4 + END, t.due_date ASC NULLS LAST - LIMIT 10 - `).all(deadline48h.slice(0, 10)); + LIMIT 5 + `).all(); } catch (err) { console.error('[Dashboard] urgentTasks-Fehler:', err.message); result.urgentTasks = []; @@ -92,14 +96,13 @@ router.get('/', (req, res) => { result.todayMeals = []; } - // Angepinnte Notizen (max. 3) + // Neueste Notizen (gepinnte zuerst, dann aktuellste) try { result.pinnedNotes = d.prepare(` SELECT n.*, u.display_name AS author_name, u.avatar_color AS author_color FROM notes n LEFT JOIN users u ON n.created_by = u.id - WHERE n.pinned = 1 - ORDER BY n.updated_at DESC + ORDER BY n.pinned DESC, n.updated_at DESC LIMIT 3 `).all(); } catch (err) {