73 lines
1.9 KiB
JavaScript
73 lines
1.9 KiB
JavaScript
//camera.js
|
|
let rightPanel, camImage, camClose;
|
|
let isOpen = false;
|
|
let streamUrl;
|
|
|
|
export function initCamera() {
|
|
rightPanel = document.getElementById("rightPanel");
|
|
camImage = document.getElementById("camImage");
|
|
camClose = document.getElementById("camClose");
|
|
const btn = document.getElementById("camToggle");
|
|
|
|
streamUrl = "http://192.168.77.1:1984/api/stream.mjpeg?src=cam";
|
|
|
|
function open() {
|
|
if (isOpen) return;
|
|
|
|
isOpen = true;
|
|
rightPanel.classList.remove("hidden");
|
|
camImage.src = streamUrl + "&t=" + Date.now();
|
|
|
|
// Обновляем текст кнопки
|
|
if (btn) {
|
|
btn.querySelector('.cam-btn-text').textContent = 'Скрыть';
|
|
}
|
|
|
|
console.log("[camera] Камера открыта");
|
|
updateResizerVisibility();
|
|
}
|
|
|
|
function close() {
|
|
if (!isOpen) return;
|
|
|
|
isOpen = false;
|
|
camImage.src = "about:blank";
|
|
|
|
setTimeout(() => {
|
|
camImage.src = "";
|
|
}, 50);
|
|
|
|
rightPanel.classList.add("hidden");
|
|
|
|
// Обновляем текст кнопки
|
|
if (btn) {
|
|
btn.querySelector('.cam-btn-text').textContent = 'Камера';
|
|
}
|
|
|
|
console.log("[camera] Камера закрыта");
|
|
updateResizerVisibility();
|
|
}
|
|
|
|
function toggle() {
|
|
isOpen ? close() : open();
|
|
}
|
|
|
|
// Обработчики событий
|
|
btn?.addEventListener("click", toggle);
|
|
camClose?.addEventListener("click", close);
|
|
|
|
// Горячие клавиши
|
|
document.addEventListener("keydown", (e) => {
|
|
if (e.key === 'c' || e.key === 'C') {
|
|
toggle();
|
|
}
|
|
if (e.key === 'Escape' && isOpen) {
|
|
close();
|
|
}
|
|
});
|
|
|
|
// Автозапуск камеры
|
|
open();
|
|
|
|
console.log("[camera] Модуль камеры инициализирован");
|
|
} |