document.addEventListener('DOMContentLoaded', function () { const dropZone = document.getElementById('drop-zone'); const fileInput = document.getElementById('csv-file'); const fileNameDisplay = document.getElementById('file-name-display'); const uploadForm = document.getElementById('upload-form'); const resultsSection = document.getElementById('results-section'); const analysisOutput = document.getElementById('analysis-output'); const submitButton = uploadForm.querySelector('button[type="submit"]'); const spinner = submitButton.querySelector('.spinner-border'); // Chart-related elements const chartSection = document.getElementById('chart-section'); const chartRequestInput = document.getElementById('chart-request-input'); const generateChartBtn = document.getElementById('generate-chart-btn'); const chartOutput = document.getElementById('chart-output'); const chartCanvas = document.getElementById('chart-canvas'); const chartSpinner = generateChartBtn.querySelector('.spinner-border'); let chartInstance = null; let uploadedFilePath = ''; // Open file dialog when drop zone is clicked dropZone.addEventListener('click', () => fileInput.click()); // Drag and drop events dropZone.addEventListener('dragover', (e) => { e.preventDefault(); dropZone.classList.add('drag-over'); }); dropZone.addEventListener('dragleave', () => { dropZone.classList.remove('drag-over'); }); dropZone.addEventListener('drop', (e) => { e.preventDefault(); dropZone.classList.remove('drag-over'); const files = e.dataTransfer.files; if (files.length > 0) { fileInput.files = files; updateFileName(); } }); // Update file name display on change fileInput.addEventListener('change', updateFileName); function updateFileName() { if (fileInput.files.length > 0) { fileNameDisplay.textContent = fileInput.files[0].name; } else { fileNameDisplay.textContent = 'No file selected'; } } // Handle form submission for analysis uploadForm.addEventListener('submit', function (e) { e.preventDefault(); if (fileInput.files.length === 0) { alert('Please select a CSV file to analyze.'); return; } // Show spinner and disable button spinner.classList.remove('d-none'); submitButton.disabled = true; chartSection.style.display = 'none'; // Hide chart section on new analysis const formData = new FormData(uploadForm); resultsSection.style.display = 'block'; analysisOutput.innerHTML = `
AI is analyzing your data, this may take a moment...