Taco Tracker

🌮 Taco Tracker

0
Streak: 0
    (function(){ let data = JSON.parse(localStorage.getItem(‘tacoData’)) || []; function render() { document.getElementById(‘total’).textContent = data.length; renderStreak(); const log = document.getElementById(‘log’); log.innerHTML = ”; data.slice().reverse().forEach(d => { const li = document.createElement(‘li’); li.textContent = new Date(d).toLocaleString(); log.appendChild(li); }); } function renderStreak(){ const days = […new Set(data.map(d=>new Date(d).toDateString()))]; let streak = 0; let day = new Date(); while(days.includes(day.toDateString())){ streak++; day.setDate(day.getDate()-1); } document.getElementById(‘streak’).textContent = ‘Streak: ‘+streak+’ day’+(streak===1?”:’s’); } function ateATaco(){ const now = new Date(); data.push(now.toISOString()); localStorage.setItem(‘tacoData’, JSON.stringify(data)); render(); checkMilestone(); } function undo(){ data.pop(); localStorage.setItem(‘tacoData’, JSON.stringify(data)); render(); } function checkMilestone(){ const milestones = [50,100,250,365]; if(milestones.includes(data.length)){ alert(‘🎉 Taco milestone reached: ‘+data.length+’!’); } } function exportData(){ const summary = ‘🌮 Taco Tracker\n\nTotal tacos: ‘+data.length+’\n’+document.getElementById(‘streak’).textContent+’\n\nLog:\n’+data.map(d=>new Date(d).toLocaleString()).join(‘\n’); if(navigator.share){ navigator.share({text:summary}); } else { navigator.clipboard.writeText(summary); alert(‘Summary copied to clipboard.’); } } document.getElementById(‘add-taco’).addEventListener(‘click’, ateATaco); document.getElementById(‘undo-taco’).addEventListener(‘click’, undo); document.getElementById(‘export-taco’).addEventListener(‘click’, exportData); render(); })();
    search previous next tag category expand menu location phone mail time cart zoom edit close