// Main application functionality for TripTrace Visualizer document.addEventListener('DOMContentLoaded', () => { // Initialize day.js plugins dayjs.extend(dayjs_plugin_utc); dayjs.extend(dayjs_plugin_timezone); // Event listeners document.getElementById('loadBtn').addEventListener('click', handleFileUpload); document.getElementById('applyFilters').addEventListener('click', applyFilters); document.getElementById('clearFilters').addEventListener('click', clearFilters); document.getElementById('exportMd').addEventListener('click', exportMarkdown); // Set default date to today document.getElementById('dateFilter').value = dayjs().format('YYYY-MM-DD'); }); async function handleFileUpload() { const uberFile = document.getElementById('uberCsv').files[0]; if (!uberFile) { alert('Please select the Uber CSV first.'); return; } const searchFile = document.getElementById('searchFile').files[0]; const gmailFile = document.getElementById('gmailCsv').files[0]; try { // Process Uber data const uberRows = await parseCsv(uberFile); uber = ingestUber(uberRows); // Process Search data searches = []; if (searchFile) { if (searchFile.name.toLowerCase().endsWith('.json')) { const j = await parseJson(searchFile); searches = ingestSearch(j); } else { const srows = await parseCsv(searchFile); searches = ingestSearch(srows); } } // Process Gmail data mails = []; if (gmailFile) { const grows = await parseCsv(gmailFile); mails = ingestGmail(grows); } // Set default date to first trip day if available if (uber.length) { document.getElementById('dateFilter').value = uber[0].ts.format('YYYY-MM-DD'); } // Initial render render(document.getElementById('dateFilter').value, document.getElementById('hourFilter').value); } catch (error) { console.error('Error processing files:', error); alert('Error processing files. Please check the console for details.'); } } function applyFilters() { render( document.getElementById('dateFilter').value, document.getElementById('hourFilter').value ); } function clearFilters() { document.getElementById('dateFilter').value = ''; document.getElementById('hourFilter').value = ''; render('', ''); } // ... (rest of the utility functions from original script)