Venue
Export
Progress0%
`; const blob = new Blob(['\ufeff' + html], {type:'application/msword'}); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'pepper-rocks-opening.doc'; a.click(); } function downloadExcel() { const rows = [['Section','Task','Description','Time','Tag','✓ Done','✓✓ Checked']]; ['bar','floor','kitchen'].forEach(sec => { getOrderedItems(sec).forEach(item => { const c = state.checked[sec][item.id] || {}; rows.push([TASKS[sec].label, item.name, item.desc, item.time, item.tag||'', c.t1?'✓':'', c.t2?'✓':'']); }); }); const tbl = '' + rows.map(r => '' + r.map(c => `').join('') + '
${String(c).replace(/&/g,'&').replace(/`).join('') + '
'; const html = `${tbl}`; const blob = new Blob(['\ufeff' + html], {type:'application/vnd.ms-excel'}); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'pepper-rocks-opening.xls'; a.click(); } function downloadCSV() { const rows = [['Section','Task','Description','Time','Tag','Done','Checked']]; ['bar','floor','kitchen'].forEach(sec => { getOrderedItems(sec).forEach(item => { const c = state.checked[sec][item.id] || {}; rows.push([TASKS[sec].label, item.name, item.desc, item.time, item.tag||'', c.t1?'Yes':'', c.t2?'Yes':'']); }); }); const csv = rows.map(r => r.map(c => '"'+String(c).replace(/"/g,'""')+'"').join(',')).join('\n'); const blob = new Blob([csv],{type:'text/csv'}); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'pepper-rocks-opening.csv'; a.click(); } // ───────────────────────────────────────────────────────────────────────────── // INIT // ───────────────────────────────────────────────────────────────────────────── const savedVenue = localStorage.getItem('pr-venue'); if (savedVenue) { document.getElementById('venue-input').value = savedVenue; updateVenueLabel(); } renderAll();