Spaces:
Running
Running
| // 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) |