Enhance task progress tracking and UI updates

- Updated SQL migration to insert default task statuses ('To Do', 'Doing', 'Done') upon project creation, improving task management.
- Enhanced socket commands to emit progress updates for subtasks, ensuring real-time synchronization of task progress.
- Refactored frontend components to handle progress calculations and updates more effectively, including improved logging for debugging.
- Removed deprecated members reports components to streamline the codebase and improve maintainability.
This commit is contained in:
chamikaJ
2025-05-05 16:59:43 +05:30
parent 21ab2f8a82
commit 4bece298c1
10 changed files with 105 additions and 103 deletions

View File

@@ -33,6 +33,56 @@ export async function on_get_task_subtasks_count(io: any, socket: Socket, taskId
console.log(`Emitted subtask count for task ${taskId}: ${subtaskCount}`);
// If there are subtasks, also get their progress information
if (subtaskCount > 0) {
// Get all subtasks for this parent task with their progress information
const subtasksResult = await db.query(`
SELECT
t.id,
t.progress_value,
t.manual_progress,
t.weight,
CASE
WHEN t.manual_progress = TRUE THEN t.progress_value
ELSE COALESCE(
(SELECT (CASE WHEN tl.total_minutes > 0 THEN
(tl.total_minutes_spent / tl.total_minutes * 100)
ELSE 0 END)
FROM (
SELECT
t2.id,
t2.total_minutes,
COALESCE(SUM(twl.time_spent), 0) as total_minutes_spent
FROM tasks t2
LEFT JOIN task_work_log twl ON t2.id = twl.task_id
WHERE t2.id = t.id
GROUP BY t2.id, t2.total_minutes
) tl
), 0)
END as calculated_progress
FROM tasks t
WHERE t.parent_task_id = $1 AND t.archived IS FALSE
`, [taskId]);
// Emit progress updates for each subtask
for (const subtask of subtasksResult.rows) {
const progressValue = subtask.manual_progress ?
subtask.progress_value :
Math.floor(subtask.calculated_progress);
socket.emit(
SocketEvents.TASK_PROGRESS_UPDATED.toString(),
{
task_id: subtask.id,
progress_value: progressValue,
weight: subtask.weight
}
);
}
console.log(`Emitted progress updates for ${subtasksResult.rows.length} subtasks of task ${taskId}`);
}
} catch (error) {
log_error(`Error getting subtask count for task ${taskId}: ${error}`);
}