diff --git a/aleksis/apps/paweljong/forms.py b/aleksis/apps/paweljong/forms.py index 38fb03d404a36e490def8acdfa5f86f6b03eef96..df90a6f04d86ad51e5f7d9fab8d0fa2929c03b37 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 6ca40adbb2ae228eba2cd658acbb457850864521..74524accf227c3f6c6bcd69843bf45f6b2e434be 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 29eb19d1233bbf03430f4b7624e3a9f4ef10e600..c683717b394f33014d9078a660a9792524c712a3 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 %}