Spaces:
Running
Running
open image uploader to open galley to upload images - Follow Up Deployment
Browse files- index.html +28 -13
index.html
CHANGED
@@ -125,7 +125,7 @@
|
|
125 |
<h4 class="text-lg font-medium mb-4">Upload Options</h4>
|
126 |
<div class="grid grid-cols-2 gap-4 mb-4">
|
127 |
<div id="images-upload" class="upload-area rounded-lg p-6 text-center cursor-pointer">
|
128 |
-
<input type="file" id="image-upload" class="hidden" accept="image/*" multiple>
|
129 |
<div id="images-upload-content" class="flex flex-col items-center justify-center">
|
130 |
<i class="fas fa-images text-3xl text-purple-500 mb-3"></i>
|
131 |
<p class="font-medium mb-1">Upload Multiple Images</p>
|
@@ -447,15 +447,16 @@
|
|
447 |
showToast('Signed out successfully');
|
448 |
});
|
449 |
|
450 |
-
// Image Upload
|
451 |
-
|
452 |
-
document.getElementById('image-upload')
|
453 |
-
|
|
|
|
|
|
|
454 |
|
455 |
-
|
456 |
-
document.getElementById('images-upload').addEventListener('click',
|
457 |
-
document.getElementById('image-upload').click();
|
458 |
-
});
|
459 |
|
460 |
// ZIP Upload
|
461 |
document.getElementById('zip-upload-btn').addEventListener('click', () => {
|
@@ -469,7 +470,8 @@
|
|
469 |
|
470 |
// Handle image upload
|
471 |
document.getElementById('image-upload').addEventListener('change', (e) => {
|
472 |
-
|
|
|
473 |
showToast('Please upload at least 5 images', 'error');
|
474 |
return;
|
475 |
}
|
@@ -485,11 +487,14 @@
|
|
485 |
const previewContainer = document.querySelector('#images-preview div');
|
486 |
previewContainer.innerHTML = '';
|
487 |
|
488 |
-
document.getElementById('image-count').textContent =
|
489 |
|
490 |
// Show first 5 images as preview
|
491 |
-
const filesToShow = Math.min(
|
492 |
for (let i = 0; i < filesToShow; i++) {
|
|
|
|
|
|
|
493 |
const reader = new FileReader();
|
494 |
reader.onload = function(event) {
|
495 |
const img = document.createElement('img');
|
@@ -497,7 +502,17 @@
|
|
497 |
img.className = 'w-20 h-20 object-cover rounded-lg';
|
498 |
previewContainer.appendChild(img);
|
499 |
};
|
500 |
-
reader.readAsDataURL(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
501 |
}
|
502 |
});
|
503 |
|
|
|
125 |
<h4 class="text-lg font-medium mb-4">Upload Options</h4>
|
126 |
<div class="grid grid-cols-2 gap-4 mb-4">
|
127 |
<div id="images-upload" class="upload-area rounded-lg p-6 text-center cursor-pointer">
|
128 |
+
<input type="file" id="image-upload" class="hidden" accept="image/*" multiple capture="environment">
|
129 |
<div id="images-upload-content" class="flex flex-col items-center justify-center">
|
130 |
<i class="fas fa-images text-3xl text-purple-500 mb-3"></i>
|
131 |
<p class="font-medium mb-1">Upload Multiple Images</p>
|
|
|
447 |
showToast('Signed out successfully');
|
448 |
});
|
449 |
|
450 |
+
// Image Upload - Handle both button and container clicks
|
451 |
+
const handleImageUploadClick = () => {
|
452 |
+
const input = document.getElementById('image-upload');
|
453 |
+
if (input) {
|
454 |
+
input.click();
|
455 |
+
}
|
456 |
+
};
|
457 |
|
458 |
+
document.getElementById('images-upload-btn').addEventListener('click', handleImageUploadClick);
|
459 |
+
document.getElementById('images-upload').addEventListener('click', handleImageUploadClick);
|
|
|
|
|
460 |
|
461 |
// ZIP Upload
|
462 |
document.getElementById('zip-upload-btn').addEventListener('click', () => {
|
|
|
470 |
|
471 |
// Handle image upload
|
472 |
document.getElementById('image-upload').addEventListener('change', (e) => {
|
473 |
+
const files = e.target.files;
|
474 |
+
if (files.length < 5) {
|
475 |
showToast('Please upload at least 5 images', 'error');
|
476 |
return;
|
477 |
}
|
|
|
487 |
const previewContainer = document.querySelector('#images-preview div');
|
488 |
previewContainer.innerHTML = '';
|
489 |
|
490 |
+
document.getElementById('image-count').textContent = files.length;
|
491 |
|
492 |
// Show first 5 images as preview
|
493 |
+
const filesToShow = Math.min(files.length, 5);
|
494 |
for (let i = 0; i < filesToShow; i++) {
|
495 |
+
const file = files[i];
|
496 |
+
if (!file.type.match('image.*')) continue;
|
497 |
+
|
498 |
const reader = new FileReader();
|
499 |
reader.onload = function(event) {
|
500 |
const img = document.createElement('img');
|
|
|
502 |
img.className = 'w-20 h-20 object-cover rounded-lg';
|
503 |
previewContainer.appendChild(img);
|
504 |
};
|
505 |
+
reader.readAsDataURL(file);
|
506 |
+
}
|
507 |
+
|
508 |
+
// Also set the first image as the main preview
|
509 |
+
const firstFile = files[0];
|
510 |
+
if (firstFile && firstFile.type.match('image.*')) {
|
511 |
+
const reader = new FileReader();
|
512 |
+
reader.onload = function(event) {
|
513 |
+
document.getElementById('preview-image').src = event.target.result;
|
514 |
+
};
|
515 |
+
reader.readAsDataURL(firstFile);
|
516 |
}
|
517 |
});
|
518 |
|