Task Progress Tracker
Add New Task
Current Tasks
| Task Name | Priority | Due Date | Assigned To | Status | Actions |
|---|
Progress Summary
Overall Completion:
0%
${completedTasks}
In Progress
${inProgressTasks}
To Do
${toDoTasks}
Blocked
${blockedTasks}
Task Progress Report
`; pdfHTML += `Report Date: ${new Date().toLocaleDateString()}
`; // Summary Section for PDF const totalTasks = tptTasks.length; const completedTasks = tptTasks.filter(t => t.status === 'Completed').length; const activeTasks = totalTasks - tptTasks.filter(t => t.status === 'Cancelled').length; const completionPercentage = activeTasks > 0 ? Math.round((completedTasks / activeTasks) * 100) : 0; pdfHTML += `Progress Summary
`; pdfHTML += ``; // Using classes for potential styling, though grid won't work same in PDF
pdfHTML += ``;
pdfHTML += ``;
pdfHTML += ``;
pdfHTML += ``;
pdfHTML += ``;
pdfHTML += `
`;
pdfHTML += `Total Tasks: ${totalTasks}
Completed: ${completedTasks}
In Progress: ${tptTasks.filter(t => t.status === 'InProgress').length}
To Do: ${tptTasks.filter(t => t.status === 'ToDo').length}
Blocked: ${tptTasks.filter(t => t.status === 'Blocked').length}
Overall Completion: ${completionPercentage}% (Completed / (Total - Cancelled))
`; // Task List Table for PDF (Full list, not filtered/sorted as on screen, or apply default sort) pdfHTML += `All Tasks
`; pdfHTML += `| Task Name | Priority | Due Date | Assigned To | Status |
|---|---|---|---|---|
| ${task.name} | ${task.priority} | ${dueDateDisplay} | ${task.assignee} | ${task.status.replace(/([A-Z])/g, ' $1').trim()} |
