Files
appRobotWebcam/public/index.html
2026-06-04 19:53:04 +02:00

97 lines
3.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AppRobotWebcam</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { background: #0f0f0f; color: #e0e0e0; font-family: monospace; }
header {
display: flex; align-items: center; gap: 12px;
padding: 10px 16px; background: #1a1a1a; border-bottom: 1px solid #333;
}
h1 { font-size: 1rem; font-weight: normal; letter-spacing: 0.05em; }
#statusText { font-size: 0.8rem; color: #888; }
#snapAllBtn {
margin-left: auto;
background: #2a4a2a; color: #8f8; border: 1px solid #4a8;
padding: 5px 14px; font-family: monospace; font-size: 0.82rem;
cursor: pointer; border-radius: 3px; letter-spacing: 0.03em;
}
#snapAllBtn:hover:not(:disabled) { background: #3a6a3a; }
#snapAllBtn:disabled { opacity: 0.4; cursor: default; }
/* Überlast-Banner */
#notice {
display: none; align-items: center; gap: 10px;
background: #4a2a2a; color: #fbb; border-bottom: 1px solid #a55;
padding: 8px 16px; font-size: 0.82rem;
}
#notice button {
background: #2a2a2a; color: #fcc; border: 1px solid #a55;
padding: 3px 10px; font-family: monospace; cursor: pointer; border-radius: 3px;
}
#cameras { display: flex; flex-wrap: wrap; gap: 12px; padding: 12px; }
.cam-box { position: relative; background: #000; border: 1px solid #2a2a2a; min-width: 320px; }
video-stream { display: block; width: 640px; height: 480px; background: #111; }
video-stream video { width: 100%; height: 100%; object-fit: contain; }
/* Eingefrorener Frame während des Hi-Res-Tests (Phase 1) */
.cam-freeze { display: block; width: 640px; height: 480px; background: #111; }
.cam-label {
position: absolute; top: 5px; left: 8px; z-index: 2;
background: rgba(0,0,0,.65); padding: 2px 7px; border-radius: 3px;
font-size: 0.72rem; color: #ccc;
}
/* Health-Anzeige unten links: fps · drop% */
.cam-info {
position: absolute; bottom: 5px; left: 8px; z-index: 2;
background: rgba(0,0,0,.7); padding: 2px 7px; border-radius: 3px;
font-size: 0.7rem; color: #999;
}
.cam-info.ok { color: #6d6; }
.cam-info.warn { color: #fb4; }
.cam-info.crit { color: #f66; }
/* Ein/Aus-Schalter oben rechts */
.cam-toggle {
position: absolute; top: 5px; right: 8px; z-index: 2;
background: rgba(0,0,0,.65); color: #ccc; border: 1px solid #444;
width: 26px; height: 22px; font-size: 0.7rem;
cursor: pointer; border-radius: 3px;
}
.cam-toggle:hover { background: rgba(60,60,60,.85); }
/* Hi-Res-Test-Button (Phase 1) links neben dem Ein/Aus-Schalter */
.cam-hdtest {
position: absolute; top: 5px; right: 40px; z-index: 2;
background: rgba(0,0,0,.65); color: #8cf; border: 1px solid #468;
height: 22px; padding: 0 7px; font-family: monospace; font-size: 0.7rem;
cursor: pointer; border-radius: 3px;
}
.cam-hdtest:hover:not(:disabled) { background: rgba(40,60,90,.85); }
.cam-hdtest:disabled { opacity: 0.4; cursor: default; }
</style>
</head>
<body>
<header>
<h1>AppRobotWebcam</h1>
<span id="statusText">Verbinde...</span>
<button id="snapAllBtn" disabled>⬇ Snapshot alle</button>
</header>
<div id="notice"></div>
<div id="cameras"></div>
<script type="module" src="/video-stream.js"></script>
<script src="viewer.js" defer></script>
</body>
</html>