Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 44 additions & 24 deletions app/static/admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

let userDict = {};
let userList;
let qrScanner;
let codeReader;

function load() {
let valueNames = [
Expand Down Expand Up @@ -121,20 +121,29 @@ const sanitizeHTML = (data) => {
};

function showTable() {
qrScanner.stop();
if (codeReader) {
codeReader.reset();
}

document.getElementById("user").style.display = "none";
document.getElementById("scanner").style.display = "none";
document.getElementById("users").style.display = "block";
}

function showQR() {
qrScanner.start();

async function showQR() {
const videoElem = document.querySelector("video");
const camLS = localStorage.getItem("adminCam");
if (camLS && typeof camLS !== "undefined") {
qrScanner.setCamera(camLS);
}
const deviceId = (camLS && camLS !== "undefined") ? camLS : undefined;

codeReader.decodeFromVideoDevice(deviceId, videoElem, (result, error) => {
if (result) {
scannedCode(result);
}
if (error && error.name !== 'NotFoundException') {
console.error('Decode error:', error);
}
});

document.getElementById("user").style.display = "none";
document.getElementById("users").style.display = "none";
Expand Down Expand Up @@ -438,27 +447,43 @@ function logoff() {
window.location.href = "/logout";
}

function changeCamera() {
QrScanner.listCameras().then((evt) => {
const cameras = evt;
async function changeCamera() {
try {
const cameras = await codeReader.listVideoInputDevices();
let camArray = [];
let camString = "Please enter a camera number:";
for (let i = 0; i < cameras.length; i++) {
camString += `\n${i}: ${cameras[i].label}`;
camArray.push(cameras[i].id);
camArray.push(cameras[i].deviceId);
}
let camSelect = prompt(camString);

localStorage.setItem("adminCam", camArray[camSelect]);
qrScanner.setCamera(camArray[camSelect]);
});
if (camSelect !== null && camSelect !== '') {
const deviceId = camArray[camSelect];
localStorage.setItem("adminCam", deviceId);

// Restart scanner with new camera
codeReader.reset();
const videoElem = document.querySelector("video");
codeReader.decodeFromVideoDevice(deviceId, videoElem, (result, error) => {
if (result) {
scannedCode(result);
}
if (error && error.name !== 'NotFoundException') {
console.error('Decode error:', error);
}
});
}
} catch (error) {
console.error('Error changing camera:', error);
}
}

function scannedCode(result) {
// Enter load mode...
qrScanner.stop();
codeReader.reset();

showUser(result.data);
showUser(result.text);
}

function filter(showOnlyActiveUsers) {
Expand All @@ -483,13 +508,8 @@ function filter(showOnlyActiveUsers) {
window.onload = (evt) => {
load();

// Prep QR library
const videoElem = document.querySelector("video");
qrScanner = new QrScanner(videoElem, scannedCode, {
maxScansPerSecond: 10,
highlightScanRegion: true,
returnDetailedScanResult: true,
});
// Prep QR library - ZXing
codeReader = new ZXing.BrowserQRCodeReader();

// Default behavior
document.getElementById("goBackBtn").onclick = (evt) => {
Expand Down
98 changes: 0 additions & 98 deletions app/static/lib/qr-scanner-worker.min.js

This file was deleted.

31 changes: 0 additions & 31 deletions app/static/lib/qr-scanner.min.js

This file was deleted.

Loading