From ec1d413d9c0ae3a33b9247e0ce7617c6839979be Mon Sep 17 00:00:00 2001 From: Alma Date: Sat, 12 Apr 2025 15:29:51 +0200 Subject: [PATCH] working leantime widget 55 --- components/flow.tsx | 59 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 14 deletions(-) diff --git a/components/flow.tsx b/components/flow.tsx index 9885183d..cc15ca50 100644 --- a/components/flow.tsx +++ b/components/flow.tsx @@ -19,6 +19,10 @@ interface Task { authorFirstname?: string; authorLastname?: string; tags?: string; + description?: string; + milestone?: string; + details?: string; + milestoneHeadline?: string; } interface ProjectSummary { @@ -67,13 +71,28 @@ export function Flow() { const getDateToSort = (task: Task): number => { // Try different date fields in order of preference const dates = [ - task.date, task.dateToFinish, - task.editFrom, - task.editTo + task.date, + task.editTo, + task.editFrom ].filter(date => date && date !== '0000-00-00 00:00:00'); - return dates.length > 0 ? new Date(dates[0]).getTime() : 0; + return dates.length > 0 ? new Date(dates[0]).getTime() : Number.MAX_SAFE_INTEGER; + }; + + const formatDate = (dateStr: string): string => { + if (!dateStr || dateStr === '0000-00-00 00:00:00') return ''; + try { + const date = new Date(dateStr); + if (isNaN(date.getTime())) return ''; + return date.toLocaleDateString('fr-FR', { + day: '2-digit', + month: '2-digit', + year: 'numeric' + }); + } catch { + return ''; + } }; const fetchTasks = async (isRefresh = false) => { @@ -90,9 +109,9 @@ export function Flow() { } // Sort tasks by date (oldest first) - const sortedTasks = data.tasks.sort((a: Task, b: Task) => { - return getDateToSort(a) - getDateToSort(b); - }); + const sortedTasks = data.tasks + .filter((task: Task) => task.headline && typeof task.headline === 'string') + .sort((a: Task, b: Task) => getDateToSort(a) - getDateToSort(b)); // Limit to 6 tasks setTasks(sortedTasks.slice(0, 6)); @@ -146,13 +165,25 @@ export function Flow() { {getStatusLabel(task.status)} -
-

- {task.projectName} -

- {task.tags && ( -

- {task.tags} +

+
+

+ {task.projectName} +

+ {task.tags && ( +

+ {task.tags} +

+ )} +
+ {task.dateToFinish && task.dateToFinish !== '0000-00-00 00:00:00' && ( +

+ Due: {formatDate(task.dateToFinish)} +

+ )} + {task.milestoneHeadline && ( +

+ {task.milestoneHeadline}

)}