working leantime widget 26

This commit is contained in:
Alma 2025-04-12 14:13:43 +02:00
parent 96ba26a15d
commit f58b02628d

View File

@ -9,7 +9,7 @@ interface Task {
projectId: number;
status: string;
dueDate: string | null;
priority: number;
milestone: string | null;
details: string | null;
}
@ -125,37 +125,24 @@ export async function GET() {
projectsData.result.map((project: any) => [project.id, project.name])
);
// Transform and categorize the tasks
// Transform and sort the tasks
const tasks = data.result.map((task: any) => {
const dueDate = task.dateToFinish ? new Date(task.dateToFinish * 1000) : null;
const now = new Date();
const dueDate = task.dateToFinish ? new Date(task.dateToFinish * 1000).toISOString() : null;
let status = 'upcoming';
if (dueDate && dueDate < now) {
status = 'overdue';
} else if (task.status === 'done' || task.status === 'closed') {
status = 'completed';
} else if (task.status === 'inprogress') {
status = 'in_progress';
}
return {
id: task.id,
headline: task.headline,
projectName: projectsMap.get(task.projectId) || `Project ${task.projectId}`,
projectId: task.projectId,
status: status,
dueDate: dueDate ? dueDate.toISOString() : null,
priority: task.priority,
details: task.description ? task.description.substring(0, 100) : null
status: task.status,
dueDate: dueDate,
milestone: task.milestoneid || null,
details: task.description || null
};
});
// Sort tasks by due date and status
// Sort tasks by due date (overdue first)
tasks.sort((a: Task, b: Task) => {
if (a.status === 'overdue' && b.status !== 'overdue') return -1;
if (a.status !== 'overdue' && b.status === 'overdue') return 1;
if (!a.dueDate && !b.dueDate) return 0;
if (!a.dueDate) return 1;
if (!b.dueDate) return -1;
return new Date(a.dueDate).getTime() - new Date(b.dueDate).getTime();