siapai's picture
Update static/script.js
0b83e8c verified
document.addEventListener('DOMContentLoaded', () => {
const dropZone = document.getElementById('drop-zone');
const fileInput = document.getElementById('file-input');
const uploadForm = document.getElementById('upload-form');
const previewImage = document.getElementById('preview-image');
const outputImage = document.getElementById('output-image');
const loadingIndicator = document.getElementById('loading-indicator');
const updatePreview = (file) => {
const reader = new FileReader();
reader.onload = (e) => {
previewImage.src = e.target.result;
previewImage.style.display = 'block';
};
reader.readAsDataURL(file);
};
dropZone.addEventListener('dragover', (event) => {
event.preventDefault();
dropZone.classList.add('bg-blue-50');
});
dropZone.addEventListener('dragleave', (event) => {
dropZone.classList.remove('bg-blue-50');
});
dropZone.addEventListener('drop', (event) => {
event.preventDefault();
dropZone.classList.remove('bg-blue-50');
const files = event.dataTransfer.files;
if (files.length > 0) {
fileInput.files = files;
updatePreview(files[0]);
}
});
fileInput.addEventListener('change', (event) => {
const files = event.target.files;
if (files.length > 0) {
updatePreview(files[0]);
}
});
uploadForm.addEventListener('submit', async (event) => {
event.preventDefault();
const formData = new FormData();
formData.append('file', fileInput.files[0]);
outputImage.classList.add('hidden'); // Hide output image
loadingIndicator.classList.remove('hidden'); // Show loading indicator
const response = await fetch('/predict/', {
method: 'POST',
body: formData
});
loadingIndicator.classList.add('hidden'); // Hide loading indicator
if (response.ok) {
const imageBlob = await response.blob();
const imageUrl = URL.createObjectURL(imageBlob);
outputImage.src = imageUrl;
outputImage.classList.remove('hidden'); // Show output image
} else {
alert('Failed to upload image.');
}
});
});