From 5ba1090678205f499c753c98fc0014a0e51d02ea Mon Sep 17 00:00:00 2001 From: Alma Date: Sat, 12 Apr 2025 22:14:43 +0200 Subject: [PATCH] working leantime widget 107 --- components/flow.tsx | 62 +++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/components/flow.tsx b/components/flow.tsx index 45da874c..0795b4a9 100644 --- a/components/flow.tsx +++ b/components/flow.tsx @@ -99,23 +99,28 @@ export function Flow() { data.tasks.forEach((task: Task) => { console.log(`Task ${task.id} - ${task.headline}:`, { dateToFinish: task.dateToFinish, - editTo: task.editTo, - editFrom: task.editFrom, - date: task.date + date: task.date, + status: task.status, + editorId: task.editorId }); }); const getValidDate = (task: Task): Date | undefined => { // First try dateToFinish as it's the primary due date field - if (typeof task.dateToFinish === 'string' && task.dateToFinish && task.dateToFinish !== '0000-00-00 00:00:00') { + if (task.dateToFinish && task.dateToFinish !== '0000-00-00 00:00:00') { const date = new Date(task.dateToFinish); + console.log(`Task ${task.id} - Parsing dateToFinish:`, { + raw: task.dateToFinish, + parsed: date, + isValid: !isNaN(date.getTime()) + }); if (!isNaN(date.getTime())) { return date; } } // Then try date field - if (typeof task.date === 'string' && task.date && task.date !== '0000-00-00 00:00:00') { + if (task.date && task.date !== '0000-00-00 00:00:00') { const date = new Date(task.date); if (!isNaN(date.getTime())) { return date; @@ -126,36 +131,37 @@ export function Flow() { }; // Process and sort tasks - const processedTasks = data.tasks.map((task: Task): TaskWithDate => { - const validDate = getValidDate(task); - console.log(`Processing task ${task.id}: ${task.headline}`, { - dateToFinish: task.dateToFinish, - validDate: validDate?.toISOString() + const processedTasks = data.tasks + .filter((task: Task) => task.status !== 5) // Exclude completed tasks + .map((task: Task): TaskWithDate => { + const validDate = getValidDate(task); + console.log(`Processing task ${task.id}: ${task.headline}`, { + dateToFinish: task.dateToFinish, + validDate: validDate?.toISOString(), + status: task.status + }); + return { ...task, validDate }; }); - return { ...task, validDate }; - }); - // Sort tasks - const sortedTasks = processedTasks.sort((a: TaskWithDate, b: TaskWithDate) => { - if (a.validDate && b.validDate) { - return a.validDate.getTime() - b.validDate.getTime(); - } - if (!a.validDate && !b.validDate) { - return b.id - a.id; - } - return a.validDate ? -1 : 1; - }); + // Sort tasks by date (tasks with dates come first) + const sortedTasks = processedTasks + .sort((a: TaskWithDate, b: TaskWithDate) => { + if (a.validDate && b.validDate) { + return a.validDate.getTime() - b.validDate.getTime(); + } + if (!a.validDate && !b.validDate) { + return 0; // Keep original order for tasks without dates + } + return a.validDate ? -1 : 1; // Tasks with dates come first + }) + .slice(0, 6); // Only take the first 6 tasks console.log('Final sorted tasks:', sortedTasks.map((t: TaskWithDate) => ({ id: t.id, headline: t.headline, validDate: t.validDate?.toISOString(), - dates: { - dateToFinish: t.dateToFinish, - editTo: t.editTo, - editFrom: t.editFrom, - date: t.date - } + status: t.status, + dateToFinish: t.dateToFinish }))); setTasks(sortedTasks);