From e25a804246a78a39e816ddcecb9b8dce831732b8 Mon Sep 17 00:00:00 2001 From: Alma Date: Sat, 12 Apr 2025 21:31:29 +0200 Subject: [PATCH] working leantime widget 100 --- components/flow.tsx | 73 ++++++++++++++++++++++++++++++--------------- 1 file changed, 49 insertions(+), 24 deletions(-) diff --git a/components/flow.tsx b/components/flow.tsx index 740a8568..6f914374 100644 --- a/components/flow.tsx +++ b/components/flow.tsx @@ -101,39 +101,62 @@ export function Flow() { }); const getValidDate = (task: Task): Date | undefined => { - const isValidDate = (dateStr: string | undefined): boolean => { - if (!dateStr) return false; - if (dateStr === '0000-00-00 00:00:00') return false; - if (dateStr === '') return false; + const tryParseDate = (dateStr: string | undefined, fieldName: string): Date | undefined => { + console.log(`Trying to parse ${fieldName}:`, dateStr); + + if (!dateStr) { + console.log(`${fieldName} is empty or undefined`); + return undefined; + } + + if (dateStr === '0000-00-00 00:00:00') { + console.log(`${fieldName} is invalid format (0000-00-00)`); + return undefined; + } + const date = new Date(dateStr); - return !isNaN(date.getTime()); + if (isNaN(date.getTime())) { + console.log(`${fieldName} parsed to invalid date`); + return undefined; + } + + console.log(`${fieldName} successfully parsed to:`, date.toISOString()); + return date; }; - // Try all possible date fields in order of priority - if (isValidDate(task.dateToFinish)) { - return new Date(task.dateToFinish!); - } + // Try each date field in order of priority + let date: Date | undefined; - if (isValidDate(task.editTo)) { - return new Date(task.editTo!); - } + date = tryParseDate(task.dateToFinish, 'dateToFinish'); + if (date) return date; - if (isValidDate(task.editFrom)) { - return new Date(task.editFrom!); - } + date = tryParseDate(task.editTo, 'editTo'); + if (date) return date; - if (isValidDate(task.date)) { - return new Date(task.date); - } + date = tryParseDate(task.editFrom, 'editFrom'); + if (date) return date; + date = tryParseDate(task.date, 'date'); + if (date) return date; + + console.log('No valid date found for task:', task.id); return undefined; }; // Sort tasks by date const sortedTasks = data.tasks .map((task: Task): TaskWithDate => { + console.log(`\nProcessing task ${task.id} - ${task.headline}`); + console.log('Raw task data:', { + dateToFinish: task.dateToFinish, + editTo: task.editTo, + editFrom: task.editFrom, + date: task.date + }); + const validDate = getValidDate(task); - console.log(`Task ${task.id} - ${task.headline} - Valid Date:`, validDate?.toISOString()); + console.log('Final valid date:', validDate?.toISOString() || 'NO DATE'); + return { ...task, validDate @@ -152,14 +175,16 @@ export function Flow() { return a.validDate ? -1 : 1; }); - console.log('Final sorted tasks:', sortedTasks.map((t: TaskWithDate) => ({ + console.log('\nFinal sorted tasks:', sortedTasks.map((t: TaskWithDate) => ({ id: t.id, headline: t.headline, validDate: t.validDate?.toISOString(), - date: t.date, - dateToFinish: t.dateToFinish, - editFrom: t.editFrom, - editTo: t.editTo + rawDates: { + dateToFinish: t.dateToFinish, + editTo: t.editTo, + editFrom: t.editFrom, + date: t.date + } }))); setTasks(sortedTasks);