diff --git a/admin-dashboard.html b/admin-dashboard.html index 335032d..7cf5986 100644 --- a/admin-dashboard.html +++ b/admin-dashboard.html @@ -1074,6 +1074,10 @@
+ +
@@ -1354,6 +1358,14 @@ function initDragAndDrop() { bannerImage.click(); }); + // Handle file input change + bannerImage.addEventListener('change', function() { + const file = this.files[0]; + if (file) { + handleFileSelect(file); + } + }); + // Prevent default behavior for drag events ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { dragDropArea.addEventListener(eventName, preventDefaults, false); @@ -1533,6 +1545,12 @@ document.addEventListener('DOMContentLoaded', () => { try { currentImage = e.target.result; updateBannerPreview(); + // Update the image preview in the banner + const imagePreview = document.getElementById('bannerImagePreview'); + if (imagePreview) { + imagePreview.src = e.target.result; + imagePreview.style.display = 'block'; + } } catch (error) { console.error('Error processing file:', error); showNotification('Chyba při zpracování souboru', 'error'); @@ -1586,44 +1604,93 @@ document.addEventListener('DOMContentLoaded', () => { } // Handle drop - dropArea.addEventListener('drop', handleDrop, false); - function handleDrop(e) { + e.preventDefault(); + e.stopPropagation(); + const dt = e.dataTransfer; const files = dt.files; - if (files.length > 0) { + if (files && files[0]) { handleFileSelect(files[0]); } + unhighlight(); } - // Handle drag and drop - ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { - dropArea.addEventListener(eventName, preventDefaults, false); - }); + dropArea.addEventListener('drop', handleDrop, false); - function highlight() { - dropArea.classList.add('dragover'); + // Prevent default drag behaviors + function preventDefaults(e) { + e.preventDefault(); + e.stopPropagation(); } - function unhighlight() { - dropArea.classList.remove('dragover'); - } - - ['dragenter', 'dragover'].forEach(eventName => { - dropArea.addEventListener(eventName, highlight, false); - }); - - ['dragleave', 'drop'].forEach(eventName => { - dropArea.addEventListener(eventName, unhighlight, false); - }); - - dropArea.addEventListener('drop', function(e) { - const dt = e.dataTransfer; - const file = dt.files[0]; - if (file) { - handleFileSelect(file); + // Handle image upload + function handleImageUpload(event) { + const fileInput = event.target; + const file = fileInput.files[0]; + + if (!file) return; + + // Check file type + const validImageTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml']; + if (!validImageTypes.includes(file.type)) { + showNotification('Vyberte prosím soubor obrázku (JPG, PNG, GIF, SVG)', 'warning'); + fileInput.value = ''; // Reset file input + return; } - }); + + // Check file size (max 5MB) + const maxSize = 5 * 1024 * 1024; // 5MB + if (file.size > maxSize) { + showNotification('Maximální velikost souboru je 5MB', 'warning'); + fileInput.value = ''; // Reset file input + return; + } + + // Show loading state + const previewContainer = document.getElementById('imagePreviewContainer'); + const dragDropMessage = document.querySelector('.drag-drop-message'); + const bannerPreview = document.getElementById('bannerPreview'); + + if (previewContainer) { + previewContainer.style.display = 'block'; + previewContainer.innerHTML = '
Načítání...
'; + } + + // Hide the drag & drop message + if (dragDropMessage) { + dragDropMessage.style.display = 'none'; + } + + // Process the image + const reader = new FileReader(); + + reader.onload = function(e) { + // Update the image preview + const bannerImagePreview = document.getElementById('bannerImagePreview'); + if (bannerImagePreview) { + bannerImagePreview.src = e.target.result; + bannerImagePreview.style.display = 'block'; + bannerImagePreview.classList.remove('d-none'); + + // Show remove button + const removeBtn = document.getElementById('removeImageBtn'); + if (removeBtn) removeBtn.style.display = 'inline-block'; + + // Update the current image + currentImage = e.target.result; + + // Update the banner preview + updateBannerPreview(); + } + }; + + reader.onerror = function() { + showNotification('Chyba při načítání obrázku', 'error'); + }; + + reader.readAsDataURL(file); + }; // Set up save button const saveBannerBtn = document.getElementById('saveBannerBtn'); @@ -1640,13 +1707,16 @@ document.addEventListener('DOMContentLoaded', () => { // Load existing banner data loadBanner(); }); - -// Prevent default drag behaviors -function preventDefaults(e) { - e.preventDefault(); - e.stopPropagation(); -} - + + + // Set up color input listeners + setupColorInputListeners(); + + // Initial preview update + updateBannerPreview(); + + // Load existing banner data + loadBanner(); // Handle image upload function handleImageUpload(event) { const fileInput = event.target; @@ -2566,9 +2636,22 @@ document.addEventListener('DOMContentLoaded', function() { } }); -// Initialize file input handling when the page loads +// Initialize banner functionality document.addEventListener('DOMContentLoaded', () => { + // Initialize file input handling setupFileInput(); + + // Initialize banner image upload + initDragAndDrop(); + + // Set up color input listeners + setupColorInputListeners(); + + // Initial preview update + updateBannerPreview(); + + // Load existing banner data + loadBanner(); }); // Delete app function