Spaces:
Running
Running
Download script.js from deepikajoshi/filedrop-haven: direct link, hf CLI and curl.
- Browser
- Download file 4 kB
-
https://huggingface.co/spaces/deepikajoshi/filedrop-haven/resolve/main/script.js
- Command line
-
hf download hf://spaces/deepikajoshi/filedrop-haven/script.js
-
curl -L -o script.js https://huggingface.co/spaces/deepikajoshi/filedrop-haven/resolve/main/script.js
4 kB
| document.addEventListener('DOMContentLoaded', function() { | |
| const uploadForm = document.getElementById('uploadForm'); | |
| const fileInput = document.getElementById('fileInput'); | |
| const message = document.getElementById('message'); | |
| const progressContainer = document.getElementById('progressContainer'); | |
| const progressBar = document.getElementById('progressBar'); | |
| const progressText = document.getElementById('progressText'); | |
| const fileNameDisplay = document.getElementById('fileName'); | |
| const dropArea = uploadForm.querySelector('div[role="dropzone"]') || uploadForm.querySelector('div'); | |
| // Handle drag and drop events | |
| ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { | |
| dropArea.addEventListener(eventName, preventDefaults, false); | |
| }); | |
| function preventDefaults(e) { | |
| e.preventDefault(); | |
| e.stopPropagation(); | |
| } | |
| ['dragenter', 'dragover'].forEach(eventName => { | |
| dropArea.addEventListener(eventName, highlight, false); | |
| }); | |
| ['dragleave', 'drop'].forEach(eventName => { | |
| dropArea.addEventListener(eventName, unhighlight, false); | |
| }); | |
| function highlight() { | |
| dropArea.classList.add('drag-active'); | |
| } | |
| function unhighlight() { | |
| dropArea.classList.remove('drag-active'); | |
| } | |
| // Handle dropped files | |
| dropArea.addEventListener('drop', handleDrop, false); | |
| function handleDrop(e) { | |
| const dt = e.dataTransfer; | |
| const files = dt.files; | |
| fileInput.files = files; | |
| updateFileDisplay(files); | |
| } | |
| // Handle file selection via click | |
| fileInput.addEventListener('change', function() { | |
| updateFileDisplay(this.files); | |
| }); | |
| function updateFileDisplay(files) { | |
| if (files.length > 0) { | |
| const fileList = Array.from(files).map(file => file.name).join(', '); | |
| message.textContent = `${files.length} file(s) selected: ${fileList}`; | |
| message.classList.remove('hidden'); | |
| } | |
| } | |
| // Form submission | |
| uploadForm.addEventListener('submit', function(e) { | |
| e.preventDefault(); | |
| const files = fileInput.files; | |
| const category = document.getElementById('category').value; | |
| const description = document.getElementById('description').value; | |
| if (files.length === 0) { | |
| showMessage('Please select at least one file to upload', 'error'); | |
| return; | |
| } | |
| // Simulate upload progress | |
| simulateUpload(files, category, description); | |
| }); | |
| function simulateUpload(files, category, description) { | |
| progressContainer.classList.remove('hidden'); | |
| let uploaded = 0; | |
| Array.from(files).forEach((file, index) => { | |
| fileNameDisplay.textContent = file.name; | |
| // Simulate upload progress for each file | |
| let progress = 0; | |
| const interval = setInterval(() => { | |
| progress += Math.random() * 10; | |
| if (progress >= 100) { | |
| progress = 100; | |
| clearInterval(interval); | |
| uploaded++; | |
| if (uploaded === files.length) { | |
| showMessage(`Successfully uploaded ${files.length} file(s) to ${category} category!`, 'success'); | |
| progressContainer.classList.add('hidden'); | |
| } | |
| } | |
| progressBar.style.width = `${progress}%`; | |
| }, 100); | |
| }); | |
| } | |
| function showMessage(text, type) { | |
| message.textContent = text; | |
| message.className = ''; // Reset classes | |
| message.classList.add('text-center', 'success-message'); | |
| if (type === 'success') { | |
| message.classList.add('text-green-600'); | |
| } else { | |
| message.classList.add('text-red-600'); | |
| } | |
| message.classList.remove('hidden'); | |
| } | |
| }); |