working leantime widget 109

This commit is contained in:
Alma 2025-04-12 22:23:51 +02:00
parent a111efd952
commit 78f469a0ee

View File

@ -10,8 +10,8 @@ interface Task {
id: number; id: number;
headline: string; headline: string;
description: string; description: string;
dateToFinish: string; dateToFinish: string | null;
date: string; date: string | null;
projectId: number; projectId: number;
projectName: string; projectName: string;
status: number; status: number;
@ -95,62 +95,68 @@ export function Flow() {
return; return;
} }
// Log the raw API response
console.log('Raw API response:', {
taskCount: data.tasks.length,
firstTask: data.tasks[0],
taskFields: Object.keys(data.tasks[0])
});
// Debug log to see all tasks and their dates // Debug log to see all tasks and their dates
data.tasks.forEach((task: Task) => { data.tasks.forEach((task: Task) => {
console.log(`Task ${task.id} - ${task.headline} - Full task:`, task); // Log the complete task object first
console.log(`Task ${task.id} - Date fields:`, { console.log(`Task ${task.id} - Complete data:`, {
id: task.id,
headline: task.headline,
dateToFinish: task.dateToFinish, dateToFinish: task.dateToFinish,
date: task.date, date: task.date,
status: task.status, status: task.status,
editorId: task.editorId, editorId: task.editorId,
raw: task projectName: task.projectName
}); });
}); });
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 (task.dateToFinish) { const rawDateToFinish = task.dateToFinish;
console.log(`Task ${task.id} - Checking dateToFinish:`, { console.log(`Task ${task.id} - Raw dateToFinish:`, {
value: task.dateToFinish, value: rawDateToFinish,
type: typeof task.dateToFinish type: typeof rawDateToFinish,
hasValue: !!rawDateToFinish
});
if (rawDateToFinish && rawDateToFinish !== '0000-00-00 00:00:00') {
const date = new Date(rawDateToFinish);
const isValid = !isNaN(date.getTime());
console.log(`Task ${task.id} - Date parsing result:`, {
input: rawDateToFinish,
parsed: date.toISOString(),
isValid: isValid
}); });
if (task.dateToFinish !== '0000-00-00 00:00:00') { if (isValid) {
const date = new Date(task.dateToFinish); return date;
console.log(`Task ${task.id} - Parsed dateToFinish:`, {
input: task.dateToFinish,
parsed: date,
isValid: !isNaN(date.getTime()),
timestamp: date.getTime()
});
if (!isNaN(date.getTime())) {
return date;
}
} }
} }
// Then try date field as fallback // Then try date field as fallback
if (task.date && task.date !== '0000-00-00 00:00:00') { const rawDate = task.date;
const date = new Date(task.date); if (rawDate && rawDate !== '0000-00-00 00:00:00') {
const date = new Date(rawDate);
if (!isNaN(date.getTime())) { if (!isNaN(date.getTime())) {
return date; return date;
} }
} }
console.log(`Task ${task.id} - No valid date found`, {
dateToFinish: task.dateToFinish,
date: task.date
});
return undefined; return undefined;
}; };
// Process and sort tasks // Process and sort tasks - only non-completed tasks
const processedTasks = data.tasks const processedTasks = data.tasks
.filter((task: Task) => task.status !== 5) // Exclude completed tasks .filter((task: Task) => task.status !== 5) // Exclude completed tasks
.map((task: Task): TaskWithDate => { .map((task: Task): TaskWithDate => {
const validDate = getValidDate(task); const validDate = getValidDate(task);
console.log(`Task ${task.id} - Processing result:`, { console.log(`Task ${task.id} - Final processing:`, {
headline: task.headline, headline: task.headline,
dateToFinish: task.dateToFinish, dateToFinish: task.dateToFinish,
validDate: validDate?.toISOString(), validDate: validDate?.toISOString(),