diff --git a/main/templates/scan.html b/main/templates/scan.html
index dfe3134..94ac612 100644
--- a/main/templates/scan.html
+++ b/main/templates/scan.html
@@ -105,16 +105,18 @@ document.addEventListener('DOMContentLoaded', function() {
// plus de bouton OK, plus de gestion de clic
});
-function beep() {
- const ctx = new(window.AudioContext || window.webkitAudioContext)();
- const oscillator = ctx.createOscillator();
- oscillator.type = 'sine';
- oscillator.frequency.setValueAtTime(1000, ctx.currentTime);
- oscillator.connect(ctx.destination);
- oscillator.start();
- setTimeout(() => { oscillator.stop(); ctx.close(); }, 150);
+function playSound(type) {
+ if (typeof window.beepEnabled !== 'undefined' && !window.beepEnabled) return;
+ let audio;
+ if (type === 'ok') {
+ audio = new Audio("{% static 'mp3/ok.mp3' %}");
+ } else {
+ audio = new Audio("{% static 'mp3/error.mp3' %}");
+ }
+ audio.play();
}
+
let lastScanned = '';
let html5Qrcode;
@@ -187,7 +189,6 @@ function onScanSuccess(decodedText, decodedResult) {
if (decodedText === lastScanned || window.scanDebounce) return;
window.scanDebounce = true;
lastScanned = decodedText;
- beep();
const courseId = getCourseIdFromUrl();
if (!courseId) {
window.scanDebounce = false;
@@ -205,21 +206,28 @@ function onScanSuccess(decodedText, decodedResult) {
.then(response => response.text())
.then(html => {
document.getElementById('scanResult').innerHTML = html;
+ // Détecte succès ou erreur selon la présence d'une classe d'erreur dans la réponse
+ if (html.includes('alert-danger')) {
+ playSound('error');
+ } else {
+ playSound('ok');
+ }
setTimeout(function() {
window.scanDebounce = false;
}, 100); // 100ms de délai avant d'autoriser un nouveau scan
})
.catch(() => {
+ playSound('error');
window.scanDebounce = false;
});
}
document.addEventListener('DOMContentLoaded', function() {
const beepBtn = document.getElementById('toggleBeep');
const beepIcon = document.getElementById('beepIcon');
- let beepEnabled = true;
+ window.beepEnabled = true;
beepBtn.onclick = function() {
- beepEnabled = !beepEnabled;
- if (beepEnabled) {
+ window.beepEnabled = !window.beepEnabled;
+ if (window.beepEnabled) {
beepIcon.classList.remove('fa-volume-mute');
beepIcon.classList.add('fa-volume-up');
beepBtn.title = 'Désactiver bip scan';
@@ -229,16 +237,6 @@ document.addEventListener('DOMContentLoaded', function() {
beepBtn.title = 'Activer bip scan';
}
};
- window.beep = function() {
- if (!beepEnabled) return;
- const ctx = new(window.AudioContext || window.webkitAudioContext)();
- const oscillator = ctx.createOscillator();
- oscillator.type = 'sine';
- oscillator.frequency.setValueAtTime(1000, ctx.currentTime);
- oscillator.connect(ctx.destination);
- oscillator.start();
- setTimeout(() => { oscillator.stop(); ctx.close(); }, 150);
- };
});
Html5Qrcode.getCameras().then(cameras => {