document.addEventListener('DOMContentLoaded', function() { const dropZone = document.getElementById('dropZone'); const fileInput = document.getElementById('fileInput'); const browseBtn = document.getElementById('browseBtn'); const fileInfo = document.getElementById('fileInfo'); const fileName = document.getElementById('fileName'); const fileSize = document.getElementById('fileSize'); const removeFile = document.getElementById('removeFile'); const previewSection = document.getElementById('previewSection'); const previewBody = document.getElementById('previewBody'); const cancelBtn = document.getElementById('cancelBtn'); const processBtn = document.getElementById('processBtn'); const toast = document.getElementById('toast'); const toastMessage = document.getElementById('toastMessage'); let selectedFile = null; // Handle drag and drop events ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { dropZone.addEventListener(eventName, preventDefaults, false); }); function preventDefaults(e) { e.preventDefault(); e.stopPropagation(); } ['dragenter', 'dragover'].forEach(eventName => { dropZone.addEventListener(eventName, highlight, false); }); ['dragleave', 'drop'].forEach(eventName => { dropZone.addEventListener(eventName, unhighlight, false); }); function highlight() { dropZone.classList.add('highlight'); } function unhighlight() { dropZone.classList.remove('highlight'); } // Handle dropped files dropZone.addEventListener('drop', handleDrop, false); function handleDrop(e) { const dt = e.dataTransfer; const files = dt.files; handleFiles(files); } // Browse files button browseBtn.addEventListener('click', () => { fileInput.click(); }); fileInput.addEventListener('change', function() { handleFiles(this.files); }); // Remove file button removeFile.addEventListener('click', function() { resetFileUpload(); }); // Cancel button cancelBtn.addEventListener('click', function() { resetFileUpload(); }); // Process button processBtn.addEventListener('click', function() { if (!selectedFile) { showToast('Please upload a file first', 'error'); return; } const merchantId = document.getElementById('merchantId').value; if (!merchantId) { showToast('Please enter a merchant ID', 'error'); return; } // Simulate processing showToast('Processing bulk orders...', 'success'); setTimeout(() => { showToast('Bulk orders processed successfully!', 'success'); resetFileUpload(); }, 2000); }); function handleFiles(files) { if (files.length === 0) return; const file = files[0]; const validTypes = ['text/csv', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']; if (!validTypes.includes(file.type) && !file.name.match(/\.(csv|xlsx|xls)$/i)) { showToast('Invalid file type. Please upload a CSV or Excel file.', 'error'); dropZone.classList.add('error'); setTimeout(() => dropZone.classList.remove('error'), 2000); return; } selectedFile = file; displayFileInfo(file); showPreview(); } function displayFileInfo(file) { fileName.textContent = file.name; // Format file size const sizeInMB = (file.size / (1024 * 1024)).toFixed(2); fileSize.textContent = `${sizeInMB} MB`; fileInfo.classList.remove('hidden'); dropZone.classList.add('hidden'); } function showPreview() { // In a real app, you would parse the file and display actual data // For demo purposes, we'll show mock data previewBody.innerHTML = ''; // Add mock rows for (let i = 0; i < 5; i++) { const row = document.createElement('tr'); row.innerHTML = `