working leantime widget 79

This commit is contained in:
Alma 2025-04-12 20:16:38 +02:00
parent ff3695f31d
commit f8e67958fd

View File

@ -9,18 +9,15 @@ import { Badge } from "@/components/ui/badge";
interface Task { interface Task {
id: number; id: number;
headline: string; headline: string;
description: string; description?: string;
dateToFinish: string; dateToFinish?: string;
date: string; date?: string;
projectId: number; projectId?: number;
projectName: string; projectName?: string;
status: number; status: number;
editorId?: string; editorId?: string;
editorFirstname?: string; userId?: number;
editorLastname?: string; assignedTo?: any;
authorFirstname: string;
authorLastname: string;
milestoneHeadline?: string;
} }
interface ProjectSummary { interface ProjectSummary {
@ -88,16 +85,19 @@ export function Flow() {
return; return;
} }
// Sort tasks by due date (oldest first) // Filter tasks with status 3 (In Progress) and sort by date
const sortedTasks = data const filteredAndSortedTasks = data
.filter((task: Task) => task.status === 3)
.sort((a: Task, b: Task) => { .sort((a: Task, b: Task) => {
const dateA = a.dateToFinish ? new Date(a.dateToFinish).getTime() : new Date(a.date).getTime(); const dateA = a.dateToFinish ? new Date(a.dateToFinish).getTime() :
const dateB = b.dateToFinish ? new Date(b.dateToFinish).getTime() : new Date(b.date).getTime(); a.date ? new Date(a.date).getTime() : Date.now();
const dateB = b.dateToFinish ? new Date(b.dateToFinish).getTime() :
b.date ? new Date(b.date).getTime() : Date.now();
return dateA - dateB; return dateA - dateB;
}) })
.slice(0, 4); // Limit to 4 tasks .slice(0, 4); // Limit to 4 tasks
setTasks(sortedTasks); setTasks(filteredAndSortedTasks);
} catch (error) { } catch (error) {
console.error('Error fetching tasks:', error); console.error('Error fetching tasks:', error);
setError('Failed to fetch tasks'); setError('Failed to fetch tasks');
@ -148,6 +148,7 @@ export function Flow() {
> >
{task.headline} {task.headline}
</a> </a>
{task.projectName && (
<div className="flex items-center text-gray-500 text-xs"> <div className="flex items-center text-gray-500 text-xs">
<Folder className="h-3 w-3 mr-1 opacity-70" /> <Folder className="h-3 w-3 mr-1 opacity-70" />
<span>{task.projectName}</span> <span>{task.projectName}</span>
@ -157,6 +158,7 @@ export function Flow() {
</span> </span>
)} )}
</div> </div>
)}
</div> </div>
</div> </div>
))} ))}