Spaces:
Running
Running
File size: 2,429 Bytes
1ca74c0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
// 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) |