From 3cdc1adba8a23ce0e96f30adf2813dd18b9d0216 Mon Sep 17 00:00:00 2001 From: Alma Date: Sun, 13 Apr 2025 19:18:27 +0200 Subject: [PATCH] duties widget correction 7 --- app/api/leantime/tasks/route.ts | 27 ++++++++++++++++++++++++++- components/flow.tsx | 14 +++++++++++--- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/app/api/leantime/tasks/route.ts b/app/api/leantime/tasks/route.ts index 2ae82b9c..9c3bf9f9 100644 --- a/app/api/leantime/tasks/route.ts +++ b/app/api/leantime/tasks/route.ts @@ -152,7 +152,16 @@ export async function GET(request: NextRequest) { const tasks = data.result .filter((task: any) => { - // For main tasks, filter out if status is Done (3) + // Log raw task data for debugging + console.log('Raw task data:', { + id: task.id, + headline: task.headline, + status: task.status, + type: task.type, + dependingTicketId: task.dependingTicketId + }); + + // If it's a main task and it's Done, filter it out if (!task.type || task.type !== 'subtask') { if (task.status === 3) { console.log(`Filtering out completed main task ${task.id} (status: ${task.status})`); @@ -160,6 +169,22 @@ export async function GET(request: NextRequest) { } } + // For subtasks, check if their parent task is Done + if (task.type === 'subtask' && task.dependingTicketId) { + const parentTask = data.result.find((t: any) => t.id === task.dependingTicketId); + if (parentTask) { + console.log(`Found parent task for ${task.id}:`, { + parentId: parentTask.id, + parentHeadline: parentTask.headline, + parentStatus: parentTask.status + }); + } + if (parentTask && parentTask.status === 3) { + console.log(`Filtering out subtask ${task.id} because parent task ${task.dependingTicketId} is Done (status: ${parentTask.status})`); + return false; + } + } + // Convert both to strings for comparison to handle any type mismatches const taskEditorId = String(task.editorId).trim(); const currentUserId = String(userId).trim(); diff --git a/components/flow.tsx b/components/flow.tsx index 4bb2cb44..cf86410b 100644 --- a/components/flow.tsx +++ b/components/flow.tsx @@ -109,7 +109,7 @@ export function Duties() { // Filter out parent tasks with status Done (3) and sort by dateToFinish const sortedTasks = data .filter((task: Task) => { - // If it's a main task (not a subtask) and it's Done, filter it out + // If it's a main task and it's Done, filter it out if (!task.type || task.type !== 'subtask') { const isMainTaskActive = task.status !== 3; if (!isMainTaskActive) { @@ -118,8 +118,16 @@ export function Duties() { return isMainTaskActive; } - // For subtasks, we keep them regardless of their status - console.log(`Keeping subtask ${task.id}: status=${task.status} (${getStatusLabel(task.status)}), parentId=${task.dependingTicketId || 'none'}`); + // For subtasks, check if their parent task is Done + if (task.type === 'subtask' && task.dependingTicketId) { + const parentTask = data.find(t => t.id === task.dependingTicketId); + if (parentTask && parentTask.status === 3) { + console.log(`Filtering out subtask ${task.id} because parent task ${task.dependingTicketId} is Done (status: ${parentTask.status})`); + return false; + } + } + + console.log(`Keeping task ${task.id}: status=${task.status} (${getStatusLabel(task.status)}), type=${task.type}, parentId=${task.dependingTicketId || 'none'}`); return true; }) .sort((a: Task, b: Task) => {