${inProgress + notStarted}
Pending
Compliance Task Details
`;
if (tasks.length === 0) {
reportHTML += '
No compliance tasks were added.
';
} else {
tasks.forEach(task => {
const isTaskOverdue = task.status !== 'Completed' && new Date(task.due) < today;
const statusClass = isTaskOverdue ? statusColors['Overdue'] : statusColors[task.status];
const formattedDueDate = task.due ? new Date(task.due).toLocaleDateString() : 'N/A';
reportHTML += `
${task.desc}
${isTaskOverdue ? 'Overdue' : task.status}
Due: ${formattedDueDate}
`;
});
}
reportHTML += `
`;
reportWrapper.innerHTML = reportHTML;
downloadSection.classList.remove('hidden');
}
function downloadPDF() {
const { jsPDF } = window.jspdf;
const contentToCapture = document.getElementById('pdf-content');
if (!contentToCapture) return;
html2canvas(contentToCapture, { scale: 2 }).then(canvas => {
const imgData = canvas.toDataURL('image/png');
const pdf = new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'a4' });
const pdfWidth = pdf.internal.pageSize.getWidth();
const margin = 40;
const contentWidth = pdfWidth - (margin * 2);
const contentHeight = (canvas.height * contentWidth) / canvas.width;
pdf.addImage(imgData, 'PNG', margin, margin, contentWidth, contentHeight);
pdf.save('Court-Order-Compliance-Report.pdf');
});
}
// --- Event Listeners ---
tabs.forEach((tab, index) => tab.addEventListener('click', () => switchTab(index)));
nextBtn.addEventListener('click', () => {
if (currentTab < tabs.length - 1) switchTab(currentTab + 1);
});
prevBtn.addEventListener('click', () => {
if (currentTab > 0) switchTab(currentTab - 1);
});
addTaskBtn.addEventListener('click', addTaskRow);
document.getElementById('download-pdf-btn').addEventListener('click', downloadPDF);
// --- Initial Setup ---
updateNavButtons();
addTaskRow(); // Start with one empty task row
});