Online Automated Sleep Pattern & Rest Tracker

Online Automated Sleep Pattern & Rest Tracker

Log your sleep to understand patterns and improve your rest.

No sleep data logged. Go to 'Data Configuration' to add your first entry.

Log Your Sleep

${sleepData.length}

Sleep Log

`; sleepData.forEach(entry => { const qualityClass = `quality-${entry.quality.toLowerCase()}`; dashboardHTML += ` `; }); dashboardHTML += `
Date Bedtime Wake-up Duration Quality
${entry.date} ${entry.bedTime} ${entry.wakeTime} ${entry.duration.toFixed(1)} hrs ${entry.quality}
`; dashboardOutput.innerHTML = dashboardHTML; } function downloadPDF() { const { jsPDF } = window.jspdf; const sleepData = getSleepData(); if (sleepData.length === 0) { console.warn("No data to export."); return; } const doc = new jsPDF(); const tableData = sleepData.map(entry => [ entry.date, entry.bedTime, entry.wakeTime, `${entry.duration.toFixed(1)} hrs`, entry.quality ]); doc.setFontSize(18); doc.text('Sleep Pattern Log', 14, 22); doc.setFontSize(11); doc.setTextColor(100); doc.text(`Report generated on: ${new Date().toLocaleDateString()}`, 14, 30); doc.autoTable({ head: [['Date', 'Bedtime', 'Wake-up Time', 'Duration', 'Quality']], body: tableData, startY: 35, theme: 'grid', headStyles: { fillColor: [79, 70, 229] }, // Indigo-600 }); doc.save('Sleep-Pattern-Log.pdf'); } // --- Event Listeners --- addLogBtn.addEventListener('click', addLogForm); downloadPdfBtn.addEventListener('click', downloadPDF); // --- Initial Setup --- updateNavButtons(); generateDashboard(); });
Scroll to Top