ChasseTresorPange/require/js/qrscan.js

65 lines
1.7 KiB
JavaScript

import QrScanner from "./qr-scanner/qr-scanner.min.js";
const video = document.querySelector("video");
const camList = document.querySelector("select");
const fileSelector = document.querySelector("input[type='file']");
function scanAction(result) {
console.log(result.data);
}
function checkCam(hasCamera) {
const errorP = document.querySelector("article p:first-of-type");
if (!hasCamera) {
errorP.innerHTML = "⚠️ Aucune caméra détectée !";
}
else {
errorP.text = "";
}
}
const scanner = new QrScanner(
video,
result => scanAction(result),
{
highlightScanRegion: true,
highlightCodeOutline: true,
}
);
window.scanner = scanner; // Débogage
// Changement de caméra :
camList.addEventListener("change", event => {
scanner.setCamera(event.target.value);
});
// Démarrage du scan :
document.querySelector("button").addEventListener("click", () => {
scanner.start().then(() => {
QrScanner.listCameras(true).then(cameras => cameras.forEach(camera =>
{
const option = document.createElement("option");
option.value = camera.id;
option.text = camera.label;
camList.add(option);
}
));
});
QrScanner.hasCamera().then(hasCamera => checkCam(hasCamera));
});
// // Arrêt du scan :
// document.querySelector("nav button:nth-of-type(2)").addEventListener("click", () => {
// scanner.stop();
// });
// Scan de fichier :
fileSelector.addEventListener("change", () => {
const file = fileSelector.files[0];
if (file) {
QrScanner.scanImage(file, {returnDetailedScanResult: true})
.then(result => scanAction(result));
}
});