working leantime widget 99

This commit is contained in:
Alma 2025-04-12 21:22:16 +02:00
parent 6c138e4a79
commit a45f0bf578

View File

@ -101,28 +101,29 @@ export function Flow() {
});
const getValidDate = (task: Task): Date | undefined => {
// Try dateToFinish first
if (task.dateToFinish && task.dateToFinish !== '0000-00-00 00:00:00') {
const d = new Date(task.dateToFinish);
if (!isNaN(d.getTime())) return d;
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 date = new Date(dateStr);
return !isNaN(date.getTime());
};
// Try all possible date fields in order of priority
if (isValidDate(task.dateToFinish)) {
return new Date(task.dateToFinish!);
}
// Try editTo
if (task.editTo && task.editTo !== '0000-00-00 00:00:00') {
const d = new Date(task.editTo);
if (!isNaN(d.getTime())) return d;
if (isValidDate(task.editTo)) {
return new Date(task.editTo!);
}
// Try editFrom
if (task.editFrom && task.editFrom !== '0000-00-00 00:00:00') {
const d = new Date(task.editFrom);
if (!isNaN(d.getTime())) return d;
if (isValidDate(task.editFrom)) {
return new Date(task.editFrom!);
}
// Try date
if (task.date && task.date !== '0000-00-00 00:00:00') {
const d = new Date(task.date);
if (!isNaN(d.getTime())) return d;
if (isValidDate(task.date)) {
return new Date(task.date);
}
return undefined;
@ -130,30 +131,32 @@ export function Flow() {
// Sort tasks by date
const sortedTasks = data.tasks
.map((task: Task): TaskWithDate => ({
...task,
validDate: getValidDate(task)
}))
.map((task: Task): TaskWithDate => {
const validDate = getValidDate(task);
console.log(`Task ${task.id} - ${task.headline} - Valid Date:`, validDate?.toISOString());
return {
...task,
validDate
};
})
.sort((a: TaskWithDate, b: TaskWithDate) => {
// If both tasks have dates, sort by date (oldest first)
if (a.validDate && b.validDate) {
return a.validDate.getTime() - b.validDate.getTime();
}
// If neither has a date, sort by ID (most recent first)
// Put tasks without dates at the end and sort by ID (newest first)
if (!a.validDate && !b.validDate) {
return b.id - a.id; // Reverse ID sort for undated tasks
return b.id - a.id;
}
// Put tasks without dates at the end
if (!a.validDate) return 1;
if (!b.validDate) return -1;
return 0;
// Tasks with dates come before tasks without dates
return a.validDate ? -1 : 1;
});
console.log('Final sorted tasks:', sortedTasks.map((t: TaskWithDate) => ({
id: t.id,
headline: t.headline,
date: t.validDate?.toISOString(),
status: t.status,
validDate: t.validDate?.toISOString(),
date: t.date,
dateToFinish: t.dateToFinish,
editFrom: t.editFrom,
editTo: t.editTo