Скрипты и стили вынесены в отдельные файлы
parent
354d5fdbd5
commit
e1c1ca56ec
@ -0,0 +1,8 @@
|
||||
{
|
||||
"semi": true,
|
||||
"trailingComma": "all",
|
||||
"singleQuote": true,
|
||||
"printWidth": 160,
|
||||
"tabWidth": 2,
|
||||
"endOfLine": "auto"
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const handleFormSubmit = (event) => {
|
||||
event.preventDefault();
|
||||
const data = new FormData(event.target);
|
||||
fetch('/analyze', { method: 'POST', body: data })
|
||||
.then((res) => res.json())
|
||||
.then(processAnalyzeResult);
|
||||
};
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
document.getElementById('uploadForm').addEventListener('submit', handleFormSubmit);
|
||||
});
|
Loading…
Reference in New Issue