working leantime widget 107

This commit is contained in:
Alma 2025-04-12 22:14:43 +02:00
parent f2fcf9f509
commit 5ba1090678

View File

@ -99,23 +99,28 @@ export function Flow() {
data.tasks.forEach((task: Task) => { data.tasks.forEach((task: Task) => {
console.log(`Task ${task.id} - ${task.headline}:`, { console.log(`Task ${task.id} - ${task.headline}:`, {
dateToFinish: task.dateToFinish, dateToFinish: task.dateToFinish,
editTo: task.editTo, date: task.date,
editFrom: task.editFrom, status: task.status,
date: task.date editorId: task.editorId
}); });
}); });
const getValidDate = (task: Task): Date | undefined => { const getValidDate = (task: Task): Date | undefined => {
// First try dateToFinish as it's the primary due date field // 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); 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())) { if (!isNaN(date.getTime())) {
return date; return date;
} }
} }
// Then try date field // 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); const date = new Date(task.date);
if (!isNaN(date.getTime())) { if (!isNaN(date.getTime())) {
return date; return date;
@ -126,36 +131,37 @@ export function Flow() {
}; };
// Process and sort tasks // Process and sort tasks
const processedTasks = data.tasks.map((task: Task): TaskWithDate => { const processedTasks = data.tasks
const validDate = getValidDate(task); .filter((task: Task) => task.status !== 5) // Exclude completed tasks
console.log(`Processing task ${task.id}: ${task.headline}`, { .map((task: Task): TaskWithDate => {
dateToFinish: task.dateToFinish, const validDate = getValidDate(task);
validDate: validDate?.toISOString() 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 // Sort tasks by date (tasks with dates come first)
const sortedTasks = processedTasks.sort((a: TaskWithDate, b: TaskWithDate) => { const sortedTasks = processedTasks
if (a.validDate && b.validDate) { .sort((a: TaskWithDate, b: TaskWithDate) => {
return a.validDate.getTime() - b.validDate.getTime(); if (a.validDate && b.validDate) {
} return a.validDate.getTime() - b.validDate.getTime();
if (!a.validDate && !b.validDate) { }
return b.id - a.id; if (!a.validDate && !b.validDate) {
} return 0; // Keep original order for tasks without dates
return a.validDate ? -1 : 1; }
}); 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) => ({ console.log('Final sorted tasks:', sortedTasks.map((t: TaskWithDate) => ({
id: t.id, id: t.id,
headline: t.headline, headline: t.headline,
validDate: t.validDate?.toISOString(), validDate: t.validDate?.toISOString(),
dates: { status: t.status,
dateToFinish: t.dateToFinish, dateToFinish: t.dateToFinish
editTo: t.editTo,
editFrom: t.editFrom,
date: t.date
}
}))); })));
setTasks(sortedTasks); setTasks(sortedTasks);