Self-Accountability Tracker Self-Accountability Tracker Define your commitments, track your progress, and build discipline. Tracker Dashboard Commitment Configuration Your accountability summary will appear here. Go to 'Commitment Configuration' to begin. Add & Manage Commitments On TrackCompletedMissed Remove On TrackCompletedMissed Remove Add Commitment Previous Next Download Tracker as PDF ${onTrack} Completion Rate ${completionRate}% Commitment Log Commitment Due Date Status `; data.forEach(item => { const statusClass = `status-${item.status.toLowerCase().replace(' ', '-')}`; dashboardHTML += ` ${item.description} ${item.dueDate} ${item.status} `; }); dashboardHTML += ``; dashboardOutput.innerHTML = dashboardHTML; } function downloadPDF() { const data = getCommitmentData(); if (data.length === 0) { console.warn("No data to export."); return; } const { jsPDF } = window.jspdf; const doc = new jsPDF(); const tableData = data.map(item => [item.description, item.dueDate, item.status]); doc.setFontSize(18); doc.text('Self-Accountability Tracker', 14, 22); doc.setFontSize(11); doc.setTextColor(100); doc.text(`Report as of: ${new Date().toLocaleDateString()}`, 14, 30); doc.autoTable({ head: [['Commitment', 'Due Date', 'Status']], body: tableData, startY: 35, theme: 'grid', headStyles: { fillColor: [37, 99, 235] }, // Blue-600 }); doc.save('Accountability-Tracker.pdf'); } // --- Event Listeners --- addCommitmentBtn.addEventListener('click', addCommitmentForm); downloadPdfBtn.addEventListener('click', downloadPDF); // --- Initial Setup --- updateNavButtons(); generateDashboard(); });