let tasks = JSON.parse(localStorage.getItem('tasks') || '[]'); let completed = JSON.parse(localStorage.getItem('completed') || '{}'); let totalPoints = parseInt(localStorage.getItem('totalPoints') || '0'); const today = new Date().toISOString().split('T')[0]; function save() { localStorage.setItem('tasks', JSON.stringify(tasks)); localStorage.setItem('completed', JSON.stringify(completed)); localStorage.setItem('totalPoints', totalPoints); } function resetDailyTasks() { if (!completed[today]) { completed[today] = []; } } function renderToday() { document.getElementById('todayView').innerHTML = '

Today\'s Tasks

'; tasks.forEach((task, index) => { if (!completed[today].includes(index.toString())) { const div = document.createElement('div'); div.className = 'task'; div.innerHTML = ` ${task.name} (${task.points} pts) `; document.getElementById('todayView').appendChild(div); } }); document.getElementById('totalPoints').innerText = totalPoints; } function markComplete(index) { completed[today].push(index.toString()); totalPoints += parseInt(tasks[index].points); save(); renderToday(); } function addTask() { const name = document.getElementById('taskName').value.trim(); const points = parseInt(document.getElementById('taskPoints').value); const repeat = document.getElementById('taskRepeat').checked; if (name && points > 0) { tasks.push({ name, points, repeat }); save(); document.getElementById('taskName').value = ''; document.getElementById('taskPoints').value = ''; document.getElementById('taskRepeat').checked = false; showSection('today'); renderToday(); } } function renderHistory() { const container = document.getElementById('historyList'); container.innerHTML = ''; for (let date in completed) { const div = document.createElement('div'); div.className = 'history-item'; const items = completed[date].map(i => tasks[i]?.name || '[Deleted Task]'); div.innerHTML = `${date}: ${items.join(', ')}`; container.appendChild(div); } } function showSection(section) { document.getElementById('todayView').classList.add('hidden'); document.getElementById('addView').classList.add('hidden'); document.getElementById('historyView').classList.add('hidden'); if (section === 'today') { document.getElementById('todayView').classList.remove('hidden'); renderToday(); } else if (section === 'add') { document.getElementById('addView').classList.remove('hidden'); } else { document.getElementById('historyView').classList.remove('hidden'); renderHistory(); } } // Daily reset for repeatable tasks function refreshRepeats() { const lastDate = localStorage.getItem('lastDate'); if (lastDate !== today) { localStorage.setItem('lastDate', today); completed[today] = []; // Keep only repeatable tasks for the next day tasks = tasks.filter(task => task.repeat); save(); } } // Initialization resetDailyTasks(); refreshRepeats(); renderToday();
No posts.
No posts.