diff --git a/assets/js/med-diag.js b/assets/js/med-diag.js index 56118b8..439cb06 100644 --- a/assets/js/med-diag.js +++ b/assets/js/med-diag.js @@ -52,43 +52,47 @@ var resultCard = document.getElementById('resultCard'); var resultContent = document.getElementById('resultContent'); - if (!uploadArea || !fileInput || !analyzeBtn) return; // шорткод не выведен + // Блок загрузки может быть закомментирован (осталось только сканирование с камеры), + // поэтому НЕ выходим раньше времени — инициализируем сканирование всегда. + var hasUpload = !!(uploadArea && fileInput && analyzeBtn); var selectedFile = null; - uploadArea.addEventListener('click', function () { fileInput.click(); }); - uploadArea.addEventListener('dragover', function (e) { - e.preventDefault(); - uploadArea.classList.add('dragover'); - }); - uploadArea.addEventListener('dragleave', function () { uploadArea.classList.remove('dragover'); }); - uploadArea.addEventListener('drop', function (e) { - e.preventDefault(); - uploadArea.classList.remove('dragover'); - if (e.dataTransfer.files.length > 0) { - handleFile(e.dataTransfer.files[0]); - } - }); - fileInput.addEventListener('change', function (e) { - if (e.target.files.length > 0) handleFile(e.target.files[0]); - }); + if (hasUpload) { + uploadArea.addEventListener('click', function () { fileInput.click(); }); + uploadArea.addEventListener('dragover', function (e) { + e.preventDefault(); + uploadArea.classList.add('dragover'); + }); + uploadArea.addEventListener('dragleave', function () { uploadArea.classList.remove('dragover'); }); + uploadArea.addEventListener('drop', function (e) { + e.preventDefault(); + uploadArea.classList.remove('dragover'); + if (e.dataTransfer.files.length > 0) { + handleFile(e.dataTransfer.files[0]); + } + }); + fileInput.addEventListener('change', function (e) { + if (e.target.files.length > 0) handleFile(e.target.files[0]); + }); - function handleFile(file) { - selectedFile = file; - uploadArea.querySelector('p strong').textContent = '📁 ' + file.name + ' (' + (file.size / 1024 / 1024).toFixed(1) + ' МБ)'; - uploadArea.querySelector('.med-hint').textContent = 'Готово к анализу'; - analyzeBtn.disabled = false; + function handleFile(file) { + selectedFile = file; + uploadArea.querySelector('p strong').textContent = '📁 ' + file.name + ' (' + (file.size / 1024 / 1024).toFixed(1) + ' МБ)'; + uploadArea.querySelector('.med-hint').textContent = 'Готово к анализу'; + analyzeBtn.disabled = false; + } + + analyzeBtn.addEventListener('click', function () { + if (!selectedFile) return; + sendVideo(selectedFile, selectedFile.name); + }); } - analyzeBtn.addEventListener('click', function () { - if (!selectedFile) return; - sendVideo(selectedFile, selectedFile.name); - }); - async function sendVideo(blob, filename) { - analyzeBtn.disabled = true; - progressContainer.style.display = 'block'; - resultCard.style.display = 'none'; + if (analyzeBtn) analyzeBtn.disabled = true; + if (progressContainer) progressContainer.style.display = 'block'; + if (resultCard) resultCard.style.display = 'none'; setProgress(5, 'Загрузка видео...'); var formData = new FormData(); @@ -125,7 +129,7 @@ setProgress(100, 'Готово!'); document.getElementById('scanLoader').classList.remove('open'); setTimeout(function () { - progressContainer.style.display = 'none'; + if (progressContainer) progressContainer.style.display = 'none'; renderResult(data); }, 300); return; @@ -147,27 +151,27 @@ } function setProgress(pct, text) { - progressFill.style.width = pct + '%'; - progressText.textContent = text; + if (progressFill) progressFill.style.width = pct + '%'; + if (progressText) progressText.textContent = text; } function showError(msg, videoUrl) { document.getElementById('scanLoader').classList.remove('open'); - progressContainer.style.display = 'none'; - resultCard.style.display = 'block'; + if (progressContainer) progressContainer.style.display = 'none'; + if (resultCard) resultCard.style.display = 'block'; var html = '
Ошибка: ' + escapeHtml(msg) + '
'; if (videoUrl) { html += '
' + '🎬 Скачать записанное видео' + '
'; } - resultContent.innerHTML = html; - analyzeBtn.disabled = false; + if (resultContent) resultContent.innerHTML = html; + if (analyzeBtn) analyzeBtn.disabled = false; } function renderResult(data) { document.getElementById('scanLoader').classList.remove('open'); - resultCard.style.display = 'block'; + if (resultCard) resultCard.style.display = 'block'; var html = ''; @@ -227,8 +231,8 @@ ''; } - resultContent.innerHTML = html; - resultCard.scrollIntoView({ behavior: 'smooth' }); + if (resultContent) resultContent.innerHTML = html; + if (resultCard) resultCard.scrollIntoView({ behavior: 'smooth' }); } // Поделиться (глобальная функция для inline-onclick)