fix: Dashboard-Widgets zeigen jetzt alle offenen Aufgaben und neueste Notizen
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
+3
-3
@@ -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
|
||||
|
||||
+13
-10
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user