DenisT's picture
refactor client problems
56d3e2f
"use strict";
const fileInput = document.getElementById('fileInput');
const translateButton = document.getElementById('translateButton');
const spinner = document.getElementById('spinner');
const inputImage = document.getElementById('inputImage');
const outputImage = document.getElementById('outputImage');
const downloadButton = document.getElementById('downloadButton');
downloadButton.style.display = 'none';
fileInput.addEventListener('change', () => {
if (fileInput.files.length === 0) {
alert('Please select an image file.');
return;
}
// Clear the previous images
inputImage.src = '';
outputImage.src = '';
const file = fileInput.files[0];
const reader = new FileReader();
reader.onload = function () {
const base64Image = reader.result.split(',')[1];
inputImage.src = `data:image/jpeg;base64,${base64Image}`;
inputImage.style.display = 'block';
};
reader.readAsDataURL(file);
});
async function predict() {
if (fileInput.files.length === 0) {
alert('Please select an image file.');
return;
}
const file = fileInput.files[0];
const reader = new FileReader();
reader.onloadend = async function () {
const base64Image = reader.result.split(',')[1];
const response = await fetch('/predict', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ image: base64Image })
});
const result = await response.json();
if (response.status !== 200) {
alert(result.message);
// Reset the input
fileInput.value = '';
inputImage.style.display = 'none';
outputImage.style.display = 'none';
spinner.style.display = 'none';
downloadButton.style.display = 'none';
translateButton.style.display = 'block';
return;
}
outputImage.src = `data:image/jpeg;base64,${result.image}`;
outputImage.style.display = 'block';
downloadButton.querySelector('a').href = outputImage.src;
downloadButton.style.display = 'block';
translateButton.style.display = 'inline-block';
spinner.style.display = 'none';
};
reader.readAsDataURL(file);
translateButton.style.display = 'none';
spinner.style.display = 'block';
}