Preview: overlay erreur si DSLR deconnecte pendant la capture

- Overlay semi-transparent sur le preview quand camera_erreur recue
- Timeout 3s : si aucune frame recue, affiche l'erreur automatiquement
- Disparait des que les frames reprennent (camera_ok ou nouvelle frame)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-08 20:42:05 +02:00
parent c27b7152d6
commit ef6679dc97
3 changed files with 73 additions and 0 deletions

View File

@@ -2,18 +2,37 @@
let previewActif = false;
let previewInterval = null;
let previewTimeoutId = null;
const PREVIEW_TIMEOUT_MS = 3000;
const EMOJI_CAR = { 3: '🤪', 2: '😱', 1: '🔥' };
// --- Preview live ---
function afficherErreurPreview(visible) {
const el = document.getElementById('preview-erreur-camera');
if (!el) return;
if (visible) el.classList.remove('cache');
else el.classList.add('cache');
}
function resetPreviewTimeout() {
if (previewTimeoutId) clearTimeout(previewTimeoutId);
previewTimeoutId = setTimeout(() => {
if (previewActif) afficherErreurPreview(true);
}, PREVIEW_TIMEOUT_MS);
}
function lancerPreview() {
if (previewActif) return;
previewActif = true;
afficherErreurPreview(false);
previewInterval = setInterval(() => {
if (previewActif) wsEnvoyer({ type: 'preview' });
}, 100);
resetPreviewTimeout();
}
function arreterPreview() {
@@ -22,12 +41,28 @@ function arreterPreview() {
clearInterval(previewInterval);
previewInterval = null;
}
if (previewTimeoutId) {
clearTimeout(previewTimeoutId);
previewTimeoutId = null;
}
afficherErreurPreview(false);
}
wsOnMessage('preview', (msg) => {
if (!previewActif) return;
const img = document.getElementById('img-preview');
if (img) img.src = msg.image;
afficherErreurPreview(false);
resetPreviewTimeout();
});
// Erreur camera pendant la preview
wsOnMessage('camera_erreur', () => {
if (previewActif) afficherErreurPreview(true);
});
wsOnMessage('camera_ok', () => {
afficherErreurPreview(false);
});
// --- Capture ---