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; projectId: number;
status: string; status: string;
dueDate: string | null; dueDate: string | null;
priority: number; milestone: string | null;
details: string | null; details: string | null;
} }
@ -125,37 +125,24 @@ export async function GET() {
projectsData.result.map((project: any) => [project.id, project.name]) 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 tasks = data.result.map((task: any) => {
const dueDate = task.dateToFinish ? new Date(task.dateToFinish * 1000) : null; const dueDate = task.dateToFinish ? new Date(task.dateToFinish * 1000).toISOString() : null;
const now = new Date();
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 { return {
id: task.id, id: task.id,
headline: task.headline, headline: task.headline,
projectName: projectsMap.get(task.projectId) || `Project ${task.projectId}`, projectName: projectsMap.get(task.projectId) || `Project ${task.projectId}`,
projectId: task.projectId, projectId: task.projectId,
status: status, status: task.status,
dueDate: dueDate ? dueDate.toISOString() : null, dueDate: dueDate,
priority: task.priority, milestone: task.milestoneid || null,
details: task.description ? task.description.substring(0, 100) : 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) => { 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 (!a.dueDate) return 1;
if (!b.dueDate) return -1; if (!b.dueDate) return -1;
return new Date(a.dueDate).getTime() - new Date(b.dueDate).getTime(); return new Date(a.dueDate).getTime() - new Date(b.dueDate).getTime();