From 4fe3b832bd85acb1fcc78f3b675ce2174f094f33 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Fri, 24 Jun 2022 21:21:52 +0200 Subject: [PATCH] [WIP] Implement barcode scanner for username in checkpoint --- aleksis/apps/paweljong/forms.py | 2 +- .../paweljong/static/js/paweljong/checkpoint.js | 14 ++++++++++++++ .../templates/paweljong/event/checkpoint.html | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/aleksis/apps/paweljong/forms.py b/aleksis/apps/paweljong/forms.py index 38fb03d..df90a6f 100644 --- a/aleksis/apps/paweljong/forms.py +++ b/aleksis/apps/paweljong/forms.py @@ -505,7 +505,7 @@ class PersonGroupFormPerson(forms.Form): class EventCheckpointForm(forms.Form): class Media: - js = ("js/paweljong/checkpoint.js",) + js = ("https://unpkg.com/html5-qrcode", "js/paweljong/checkpoint.js") layout = Layout( "username", "comment". diff --git a/aleksis/apps/paweljong/static/js/paweljong/checkpoint.js b/aleksis/apps/paweljong/static/js/paweljong/checkpoint.js index 6ca40ad..74524ac 100644 --- a/aleksis/apps/paweljong/static/js/paweljong/checkpoint.js +++ b/aleksis/apps/paweljong/static/js/paweljong/checkpoint.js @@ -11,8 +11,22 @@ function setCheckpointCoords(position) { }, 3000); } +function onScanSuccess(decodedText, decodedResult) { + $("[name='username']").val(decodedText); + if ($("[name='username']").is(":focus") && $("[name='comment']").val()) { + $("[name='username']").closest("form").submit(); + } +} + +function onScanFailure(error) { + alert(`Code scan error: ${error}`); +} + $(document).ready(function($) { if (navigator.geolocation) { getCheckpointCoords(); } + + var scanner = new Html5QrcodeScanner("reader", { fps: 10, qrbox: {width: 250, height: 250} }, false); + scanner.render(onScanSuccess, onScanError); }); diff --git a/aleksis/apps/paweljong/templates/paweljong/event/checkpoint.html b/aleksis/apps/paweljong/templates/paweljong/event/checkpoint.html index 29eb19d..c683717 100644 --- a/aleksis/apps/paweljong/templates/paweljong/event/checkpoint.html +++ b/aleksis/apps/paweljong/templates/paweljong/event/checkpoint.html @@ -15,6 +15,9 @@ {% form form=form %}{% form %} {% include "core/partials/save_button.html" %} </form> + + <div id="reader"></div> + {{ form.media.js }} {% endblock %} -- GitLab