| document.addEventListener('DOMContentLoaded', () => { |
| const uploadArea = document.getElementById('upload-area'); |
| const fileInput = document.getElementById('file-input'); |
| const preview = document.getElementById('preview'); |
| const imagePreview = document.getElementById('image-preview'); |
| const result = document.getElementById('result'); |
| const caption = document.getElementById('caption'); |
| const loading = document.getElementById('loading'); |
|
|
| |
| uploadArea.addEventListener('click', () => { |
| fileInput.click(); |
| }); |
|
|
| |
| uploadArea.addEventListener('dragover', (e) => { |
| e.preventDefault(); |
| uploadArea.classList.add('bg-gray-100'); |
| }); |
|
|
| uploadArea.addEventListener('dragleave', () => { |
| uploadArea.classList.remove('bg-gray-100'); |
| }); |
|
|
| uploadArea.addEventListener('drop', (e) => { |
| e.preventDefault(); |
| uploadArea.classList.remove('bg-gray-100'); |
| if (e.dataTransfer.files.length) { |
| handleFile(e.dataTransfer.files[0]); |
| } |
| }); |
|
|
| |
| fileInput.addEventListener('change', () => { |
| if (fileInput.files.length) { |
| handleFile(fileInput.files[0]); |
| } |
| }); |
|
|
| |
| function handleFile(file) { |
| if (!file.type.match('image.*')) { |
| alert('Prosím, vyberte obrázek.'); |
| return; |
| } |
|
|
| |
| const reader = new FileReader(); |
| reader.onload = (e) => { |
| imagePreview.src = e.target.result; |
| preview.classList.remove('hidden'); |
| result.classList.add('hidden'); |
| loading.classList.add('hidden'); |
| }; |
| reader.readAsDataURL(file); |
|
|
| |
| uploadImage(file); |
| } |
|
|
| |
| async function uploadImage(file) { |
| const formData = new FormData(); |
| formData.append('image', file); |
|
|
| loading.classList.remove('hidden'); |
| result.classList.add('hidden'); |
|
|
| try { |
| const response = await fetch('/upload', { |
| method: 'POST', |
| body: formData |
| }); |
|
|
| if (!response.ok) { |
| throw new Error('Chyba při zpracování obrázku'); |
| } |
|
|
| const data = await response.json(); |
| caption.textContent = data.caption; |
| result.classList.remove('hidden'); |
| } catch (error) { |
| console.error('Chyba:', error); |
| alert('Chyba při zpracování obrázku. Zkuste to znovu.'); |
| } finally { |
| loading.classList.add('hidden'); |
| } |
| } |
| }); |