let urlCreator = window.URL || window.webkitURL; async function SavePhoto(self) { document.getElementById("result").innerHTML = ""; let photo = document.getElementById("file-input").files[0]; let formData = new FormData(); formData.append("f", photo); let response = await fetch(self.action, { method: "POST", body: formData }); if (response.ok) { let json = await response.json(); let text = "

Результаты

"; let uniqChecker = {}; // Функция для создания HTML галереи const createGalleryHTML = (urls) => { if (urls.length === 0) return ''; let mainImage = ``; let otherImages = urls.slice(1) .map(url => ``) .join(''); return ` `; }; // Обработка основных результатов for (let key in json.results) { if (json.description != undefined) { text += `
${json.results[key]} (вероятность: ${Math.round(parseFloat(key) * 100)}%)
Описание
`; } else { text += `
${json.results[key]} (вероятность: ${Math.round(parseFloat(key) * 100)}%)
`; } // Поиск всех изображений для текущего результата let allUrls = []; for (let imgKey in json.images) { if (json.images[imgKey].name === json.results[key]) { allUrls.push(...json.images[imgKey].url); } } text += createGalleryHTML(allUrls); text += "
"; uniqChecker[json.results[key]] = key; } // Обработка дополнительных результатов for (let key in json.results_net) { if (uniqChecker[json.results_net[key]] !== undefined) continue; text += `
${json.results_net[key]}
`; let allUrls = []; for (let imgKey in json.images) { if (json.images[imgKey].name === json.results_net[key]) { allUrls.push(...json.images[imgKey].url); } } text += createGalleryHTML(allUrls); text += "
"; } document.getElementById("result").innerHTML = text; setTimeout(function(){ window.scrollBy({ top: 300, behavior: 'smooth' }); }, 100); // Внутри функции SavePhoto после вставки HTML: document.querySelectorAll('.main-image').forEach(img => { img.addEventListener('click', function (e) { const urls = JSON.parse(this.dataset.urls); showModal(urls); e.stopPropagation(); }); }); // Функции для работы модального окна function showModal(urls) { const modal = document.createElement('div'); modal.className = 'modal-overlay'; modal.innerHTML = ` `; modal.addEventListener('click', (e) => { if (e.target === modal) hideModal(); }); document.body.appendChild(modal); modal.style.display = 'flex'; document.body.style.overflow = 'hidden'; } function hideModal() { const modal = document.querySelector('.modal-overlay'); if (modal) { document.body.removeChild(modal); document.body.style.overflow = 'auto'; } } let isTouchDevice = 'ontouchstart' in window; let startX = 0; let scrollLeft = 0; document.addEventListener('DOMContentLoaded', () => { const grid = document.querySelector('.thumbnails-grid'); if (isTouchDevice && grid) { grid.addEventListener('touchstart', (e) => { startX = e.touches[0].pageX - grid.offsetLeft; scrollLeft = grid.scrollLeft; }); grid.addEventListener('touchmove', (e) => { e.preventDefault(); const x = e.touches[0].pageX - grid.offsetLeft; const walk = (x - startX) * 2; grid.scrollLeft = scrollLeft - walk; }); } }); } else { alert("Ошибка HTTP: " + response.status); } } const fileInput = document.getElementById("file-input"); if (fileInput) { fileInput.addEventListener("change", function () { let photo = document.getElementById("file-input").files[0]; let imageUrl = urlCreator.createObjectURL(photo); document.getElementById("image").src = imageUrl; document.getElementById("upload-image-text").innerHTML = "Ваше изображение:"; }); } // Добавляем обработчик клика для бургера document.addEventListener('DOMContentLoaded', function () { const burger = document.querySelector('.burger'); const menu = document.querySelector('#menu ul'); burger.addEventListener('click', function () { this.classList.toggle('active'); menu.classList.toggle('active'); }); // Закрываем меню при ресайзе окна window.addEventListener('resize', function () { if (window.innerWidth > 768) { burger.classList.remove('active'); menu.classList.remove('active'); } }); }); // описание породы function openModal(imgElement) { const modal = document.getElementById('modal'); const modalImg = document.getElementById('modal-img'); const caption = document.getElementById('caption'); modal.style.display = "block"; modalImg.src = imgElement.src; caption.innerHTML = imgElement.alt; } function closeModal() { document.getElementById('modal').style.display = "none"; }