refactor: 优化配置管理和异常处理

- 添加YAML配置文件支持
- 改进camera_manager异常处理
- 添加类型提示和URL验证
- 完善依赖注入支持测试
- 新增健康检查API端点
This commit is contained in:
qichi.liang
2026-01-02 06:25:36 +08:00
parent 3e9a840576
commit 6903ee6f0b
9 changed files with 503 additions and 132 deletions

View File

@@ -26,15 +26,16 @@ function refreshAllCameras() {
}
function toggleFullscreen(cameraId) {
const frame = document.getElementById(`frame-${cameraId}`);
const cameraItem = document.getElementById(`camera-${cameraId}`);
if (!document.fullscreenElement) {
if (frame.requestFullscreen) {
frame.requestFullscreen();
} else if (frame.webkitRequestFullscreen) {
frame.webkitRequestFullscreen();
} else if (frame.msRequestFullscreen) {
frame.msRequestFullscreen();
// 全屏相机容器而不是iframe
if (cameraItem.requestFullscreen) {
cameraItem.requestFullscreen();
} else if (cameraItem.webkitRequestFullscreen) {
cameraItem.webkitRequestFullscreen();
} else if (cameraItem.msRequestFullscreen) {
cameraItem.msRequestFullscreen();
}
} else {
if (document.exitFullscreen) {
@@ -47,6 +48,41 @@ function toggleFullscreen(cameraId) {
}
}
// 监听全屏变化事件
document.addEventListener('fullscreenchange', handleFullscreenChange);
document.addEventListener('webkitfullscreenchange', handleFullscreenChange);
document.addEventListener('msfullscreenchange', handleFullscreenChange);
function handleFullscreenChange() {
// 获取所有相机
for (let i = 1; i <= 6; i++) {
const fullscreenBtn = document.getElementById(`fullscreen-btn-${i}`);
const exitFullscreenBtn = document.getElementById(`exit-fullscreen-btn-${i}`);
if (fullscreenBtn && exitFullscreenBtn) {
if (document.fullscreenElement) {
// 进入全屏时,隐藏全屏按钮,显示退出按钮
fullscreenBtn.style.display = 'none';
exitFullscreenBtn.style.display = 'inline-block';
} else {
// 退出全屏时,显示全屏按钮,隐藏退出按钮
fullscreenBtn.style.display = 'inline-block';
exitFullscreenBtn.style.display = 'none';
}
}
}
}
function exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
function switchCameraNumber(event, cameraId, cameraNumber) {
const frame = document.getElementById(`frame-${cameraId}`);
const controls = document.getElementById(`controls-${cameraId}`);