Skip to content
Snippets Groups Projects
Commit a1f71f7d authored by c-tim's avatar c-tim
Browse files

Merge branch 'immediatlySubmitTag' into 'staging'

feat(addItemByTag): Immediatly submit tag once input reaches 6 chars

See merge request hanfi/bgp_worker!10
parents 2d6361bb aecd0d00
Branches
Tags
2 merge requests!18Merge Staging into Main,!10feat(addItemByTag): Immediatly submit tag once input reaches 6 chars
This diff is collapsed.
<!DOCTYPE html><html lang="de"><head><title>Paketshop: Checkin</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="icon shortcut" href="data:image/x-icon;," type="image/x-icon"><link rel="stylesheet" type="text/css" href="/bootstrap.min.css"><link rel="stylesheet" type="text/css" href="/bootstrap-icons.css"><link rel="stylesheet" type="text/css" href="/index.css"></head><body> <div class="container"> <h1>Checkin</h1> <div class="row"> <div class="col-md-4"> <div>Storage</div> <select class="form-control" id="storage_select"></select> <div id="storage"></div> </div> <div class="col-md-4"> <div>Sticker Item</div> <input class="form-control" type="text" placeholder="tag" onchange="lib.addItemTag(this,event)"> <button id="startScan" onclick="lib.addItemScan()" class="btn btn-primary">Scan Item</button> <button id="stopScan" onclick="lib.stopScanningItem()" class="btn btn-primary" style="display: none">Stop Scanning</button> </div> <div class="col-md-4"> <div>Manual Item</div> <input onchange="lib.addItemImage(this)" type="file" accept="image/*"> </div> </div> <div class="row"> <div>Items to checkin</div> <ul id="items"> </ul> </div> <div class="row"> <div id="reader" style="width: 500px; margin 0 auto;"></div> </div> <div class="row"> <button onclick="lib.checkinItems()" class="btn btn-primary">Submit Data</button> </div> </div> <script src="./bundle.js"></script> <script>window.onload=function(){lib.loadStorages(document.location.search.substring(1))};</script> </body></html> <!DOCTYPE html><html lang="de"><head><title>Paketshop: Checkin</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="icon shortcut" href="data:image/x-icon;," type="image/x-icon"><link rel="stylesheet" type="text/css" href="/bootstrap.min.css"><link rel="stylesheet" type="text/css" href="/bootstrap-icons.css"><link rel="stylesheet" type="text/css" href="/index.css"></head><body> <div class="container"> <h1>Checkin</h1> <div class="row"> <div class="col-md-4"> <div>Storage</div> <select class="form-control" id="storage_select"></select> <div id="storage"></div> </div> <div class="col-md-4"> <div>Sticker Item</div> <input class="form-control" type="text" placeholder="tag" oninput="lib.onTagTextUpdate(this)" onchange="lib.onTagInputChanged(this)"> <button id="startScan" onclick="lib.addItemScan()" class="btn btn-primary">Scan Item</button> <button id="stopScan" onclick="lib.stopScanningItem()" class="btn btn-primary" style="display: none">Stop Scanning</button> </div> <div class="col-md-4"> <div>Manual Item</div> <input onchange="lib.addItemImage(this)" type="file" accept="image/*"> </div> </div> <div class="row"> <div>Items to checkin</div> <ul id="items"> </ul> </div> <div class="row"> <div id="reader" style="width: 500px; margin 0 auto;"></div> </div> <div class="row"> <button onclick="lib.checkinItems()" class="btn btn-primary">Submit Data</button> </div> </div> <script src="./bundle.js"></script> <script>window.onload=function(){lib.loadStorages(document.location.search.substring(1))};</script> </body></html>
\ No newline at end of file \ No newline at end of file
...@@ -109,10 +109,55 @@ function updateItemsView() { ...@@ -109,10 +109,55 @@ function updateItemsView() {
/* /*
* various add Items functions * various add Items functions
*/ */
export async function addItemTag(form) {
if (form.value.length == 6) { export async function onTagTextUpdate(element) {
console.log("Trying to add item by tag"); console.log("On tag text update", element);
var response = await fetch(config.backend_url + "/tag/"+form.value, { if(element.value.length == 0) {
element.setCustomValidity("");
element.classList.remove("is-invalid");
}
else if(element.value.length != 6) {
element.setCustomValidity("Code must be 6 chars long.");
element.classList.add("is-invalid");
return;
} else {
element.setCustomValidity("");
let succ = await addItemByTag(element.value);
if(succ) {
element.classList.remove("is-invalid");
element.value = "";
} else {
element.setCustomValidity("Unknown item");
element.classList.add("is-invalid");
}
element.reportValidity();
}
}
export async function onTagInputChanged(element) {
console.log("Tag Input Changed");
if(element.value.length == 6) {
let succ = await addItemByTag(element.value);
if(succ) {
element.classList.remove("is-invalid");
element.value = "";
element.setCustomValidity("");
} else {
element.setCustomValidity("Unknown item");
element.classList.add("is-invalid");
}
}
element.reportValidity();
}
export async function addItemByTag(tag) {
if (tag.length != 6) {
throw "Internal Error: Tag not length 6.";
}
console.log("Trying to add item by tag:", tag);
var response = await fetch(config.backend_url + "/tag/" + tag, {
headers: { headers: {
"Authorization": "Bearer " + access_token "Authorization": "Bearer " + access_token
}, },
...@@ -127,13 +172,13 @@ export async function addItemTag(form) { ...@@ -127,13 +172,13 @@ export async function addItemTag(form) {
updateItemsView(); updateItemsView();
scanner_audio.play(); scanner_audio.play();
console.log("Added item by tag"); console.log("Added item by tag");
form.value = ""; return true;
} else if(response.status == 404) { } else if(response.status == 404) {
alert("Item not found.");
console.log("Item not found"); console.log("Item not found");
return false;
} else { } else {
checkResponseForError(response, "Failed to get item from backend"); checkResponseForError(response, "Failed to get item from backend");
} return false;
} }
} }
... ...
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<div>Sticker Item</div> <div>Sticker Item</div>
<input class="form-control" type="text" placeholder="tag" onchange="lib.addItemTag(this,event)"> <input class="form-control" type="text" placeholder="tag" oninput="lib.onTagTextUpdate(this)" onchange="lib.onTagInputChanged(this)">
<button id="startScan" onclick="lib.addItemScan()" class="btn btn-primary">Scan Item</button> <button id="startScan" onclick="lib.addItemScan()" class="btn btn-primary">Scan Item</button>
<button id="stopScan" onclick="lib.stopScanningItem()" class="btn btn-primary" style="display: none">Stop Scanning</button> <button id="stopScan" onclick="lib.stopScanningItem()" class="btn btn-primary" style="display: none">Stop Scanning</button>
</div> </div>
... ...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment