2023-07-08 09:44:50 +04:00
|
|
|
const renderResultMarkup = (query, result) =>
|
|
|
|
`
|
|
|
|
<h1 class="display-6">${query}</h1>
|
|
|
|
<table class="table table-bordered table-striped">
|
|
|
|
<tr>
|
|
|
|
${result.columns.map((column) => `<th>${column}</th>`).join('')}
|
|
|
|
</tr>
|
|
|
|
${result.rows.map(
|
|
|
|
(row) =>
|
|
|
|
`<tr>${Object.entries(row)
|
|
|
|
.map(([key, value]) => `<td>${value.value}</td>`)
|
|
|
|
.join('')}</tr>`,
|
|
|
|
)}
|
|
|
|
</table>`;
|
|
|
|
|
|
|
|
const processAnalyzeResult = (data) => {
|
|
|
|
const img = document.getElementById('imgslot');
|
|
|
|
const queriesResult = document.getElementById('queriesResult');
|
|
|
|
|
|
|
|
img.src = 'none.png';
|
|
|
|
if (data.image) {
|
|
|
|
img.src = 'data:image/jpg;base64,' + data.image;
|
|
|
|
}
|
|
|
|
|
|
|
|
queriesResult.innerHTML = '';
|
|
|
|
if (data.data && data.data.response) {
|
|
|
|
for (const [query, result] of Object.entries(data.data.response)) {
|
|
|
|
queriesResult.innerHTML += renderResultMarkup(query, result);
|
|
|
|
}
|
2023-07-08 10:18:50 +04:00
|
|
|
} else if (data.data && data.data.error) {
|
|
|
|
queriesResult.innerHTML = `<div class="alert alert-danger">${JSON.stringify(data.data.error)}</div>`;
|
2023-07-08 09:44:50 +04:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
const handleFormSubmit = (event) => {
|
|
|
|
event.preventDefault();
|
|
|
|
const data = new FormData(event.target);
|
2023-07-08 10:18:50 +04:00
|
|
|
const loaderWrapper = document.getElementById('loaderWrapper');
|
|
|
|
loaderWrapper.classList.remove('d-none');
|
2023-07-08 09:44:50 +04:00
|
|
|
fetch('/analyze', { method: 'POST', body: data })
|
|
|
|
.then((res) => res.json())
|
2023-07-08 10:18:50 +04:00
|
|
|
.then(processAnalyzeResult)
|
|
|
|
.catch(() => {
|
|
|
|
alert('Произошла внутренняя ошибка.');
|
|
|
|
})
|
|
|
|
.finally(() => {
|
|
|
|
loaderWrapper.classList.add('d-none');
|
|
|
|
});
|
2023-07-08 09:44:50 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
|
|
document.getElementById('uploadForm').addEventListener('submit', handleFormSubmit);
|
|
|
|
});
|