Files
go-service/cmd/server/web/js/camera.js

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] Модуль камеры инициализирован");
}