Habit Tracking Dashboard
Current Streak
0
Longest Streak
0
Completion (Last 30d)
0%
Contribution Heatmap (Last 90 Days)
My Habits
Completion Log
Select a habit to see its history.
'; return; } const filteredLogs = logData.filter(log => log.HabitID === selectedHabitId).map(log => log.Date).sort(); // KPIs const [currentStreak, longestStreak] = calculateStreaks(filteredLogs); document.getElementById('kpi-current-streak').textContent = `${currentStreak} days`; document.getElementById('kpi-longest-streak').textContent = `${longestStreak} days`; const thirtyDaysAgo = new Date(); thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30); const recentLogs = filteredLogs.filter(d => new Date(d) >= thirtyDaysAgo).length; document.getElementById('kpi-completion-rate').textContent = `${((recentLogs / 30) * 100).toFixed(0)}%`; renderHeatmap(filteredLogs); } function calculateStreaks(dates) { if (dates.length === 0) return [0, 0]; const today = new Date(new Date().toISOString().split('T')[0]); const yesterday = new Date(today); yesterday.setDate(today.getDate() - 1); let longestStreak = 0; let currentStreak = 0; let expectedDate = new Date(dates[0]); // Calculate longest streak let tempStreak = 0; for(let i=0; i