Skip to content
Snippets Groups Projects
Commit 98e36354 authored by hanfi's avatar hanfi
Browse files

Merge branch 'staging' into 'main'

merge from staging

See merge request hanfi/bgp_worker!20
parents e3db6a19 933d8c7a
No related branches found
No related tags found
1 merge request!20merge from staging
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" 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 aria-live="polite" aria-atomic="true" class="align-items-center d-flex justify-content-center" style="min-height: 200px;"> <div id="bottomToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true"> <div class="toast-header"> <strong class="mr-auto">ToastHeader</strong> </div> <div class="toast-body"> Toast Message. </div> </div> </div> </div> <script src="./bundle.js"></script> <script>window.onload=function(){lib.onPageLoad()};</script> </body></html>
\ No newline at end of file
<!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 aria-live="polite" aria-atomic="true" class="align-items-center d-flex justify-content-center" style="min-height: 200px;"> <div id="bottomToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true"> <div class="toast-header"> <strong class="mr-auto">ToastHeader</strong> </div> <div class="toast-body"> Toast Message. </div> </div> </div> </div> <script src="./bundle.js"></script> <script>window.onload=function(){lib.onPageLoad(!0)};</script> </body></html>
\ No newline at end of file
<!DOCTYPE html><html lang="de"><head><title>Paketshop: Checkout</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>Checkout</h1> <div class="row"> <button onclick="lib.scanReceiver()" class="btn btn-primary">Scan Code</button> </div> <div class="row"> <div id="reader" style="width: 500px; margin 0 auto;"></div> </div> <div class="row"> <h2 id="uuid"></h2> <div class="col-md-6"> <strong id="storage"></strong><br> <span id="tag"></span> </div> <div class="col-md-6"> <strong id="addressee"></strong><br> <span id="team"></span> </div> </div> </div> <script src="./bundle.js"></script> </body></html>
\ No newline at end of file
<!DOCTYPE html><html lang="de"><head><title>Paketshop: Checkout</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>Checkout</h1> <div class="row"> <button onclick="lib.scanReceiver()" class="btn btn-primary">Scan Code</button> </div> <div class="row"> <input class="form-control" id="checkoutByTag" type="text" placeholder="tag"><button onclick="lib.checkoutByTag()" class="btn btn-primary">Checkout By Tag</button> </div> <div class="row"> <div id="reader" style="width: 500px; margin 0 auto;"></div> </div> <div class="row" onclick="lib.checkoutItem()"> <h2 id="storage"></h2> <div class="col-md-6"> <strong id="tag"></strong><br> <span id="uuid"></span> </div> <div class="col-md-6"> <strong id="addressee"></strong><br> <span id="team"></span> </div> </div> </div> <script src="./bundle.js"></script> <script>window.onload=function(){lib.onPageLoad(!1)};</script> </body></html>
\ No newline at end of file
......@@ -129,6 +129,8 @@ function updateItemsView() {
items.innerHTML = "";
for (var item in received_items) {
var li = document.createElement("li");
console.log(item);
console.log(received_items[item]);
li.innerHTML = "<div id=\"item_" + received_items[item].item.uuid + "\" class=\"alert alert-success\" role=\"alert\">" +
received_items[item].item.tag + " (" + received_items[item].item.addressee + ", " + received_items[item].item.team + ")" +
"&emsp;<span class=\"badge badge-light\">"+received_items[item].num+"</span>"+
......@@ -248,7 +250,7 @@ async function handleItemScanResult(item_uuid) {
scanner_audio.play();
} else {
received_items[item_uuid] = { "num":1, "item": null };
var response = await fetch(config.backend_url + "/item/"+item_uuid);
var response = await fetchWithAuth(config.backend_url + "/item/"+item_uuid);
if (response.status == 200) {
var tracking_item = await response.json();
received_items[item_uuid] = { "num":1, "item": tracking_item };
......@@ -349,21 +351,42 @@ export async function checkinItems() {
updateItemsView();
}
function updateCheckoutItem(tracking_item) {
document.querySelector("#uuid").innerHTML = tracking_item.uuid;
document.querySelector("#tag").innerHTML = tracking_item.tag;
document.querySelector("#storage").innerHTML = tracking_item.storage;
document.querySelector("#addressee").innerHTML = tracking_item.addressee;
document.querySelector("#team").innerHTML = tracking_item.team;
}
export async function checkoutItem() {
let confirmed = confirm("Did you make sure the recipient is really the right person?");
if(!confirmed) {
console.log("Recipient confirmation denied.");
return;
}
var response = await fetchWithAuth(config.backend_url + "/checkout/" + document.querySelector("#uuid").innerHTML);
}
async function onRecevierScanSuccess(scannedCode) {
debounceScanner();
var [uuid,signature] = scannedCode.split("/");
console.log("Receiver scan success");
scanner_audio.play();
await getConfig();
var response = await fetch(config.backend_url + "/item/"+uuid);
var response = await fetch(config.backend_url + "/item/"+uuid, {
headers: {
}
});
if (response.status == 200) {
var tracking_item = await response.json();
if (ed448.verify(htoa(signature),new TextEncoder().encode(tracking_item.uuid),htoa(tracking_item.verification))) {
document.querySelector("#uuid").innerHTML = tracking_item.uuid;
document.querySelector("#tag").innerHTML = tracking_item.tag;
document.querySelector("#storage").innerHTML = tracking_item.storage;
document.querySelector("#addressee").innerHTML = tracking_item.addressee;
document.querySelector("#team").innerHTML = tracking_item.team;
if(tracking_item.storage == undefined || tracking_item.storage == null || tracking_item.storage.length == 0) {
alert("Item not yet received.");
console.log("Item not yet received.");
return;
}
updateCheckoutItem(tracking_item);
console.log("Receiver verify success");
} else {
alert("Could not verify signature.");
......@@ -401,7 +424,7 @@ export async function loadStorages(selectedStorage) {
}
}
export async function onPageLoad() {
export async function onPageLoad(doloadStorages) {
await getConfig();
let pw = window.location.hash.substring(1);
if(pw.length > 1) {
......@@ -409,5 +432,33 @@ export async function onPageLoad() {
} else {
await login();
}
loadStorages(document.location.search.substring(1));
if(doloadStorages) {
loadStorages(document.location.search.substring(1));
}
}
export async function checkoutByTag() {
console.log("Checkout by tag");
let el = document.getElementById("checkoutByTag");
if (el.value.length != 6) {
alert("Not a BGP tag!");
console.log("Not a BGP tag");
return;
}
var response = await fetchWithAuth(config.backend_url + "/tag/" + el.value);
if (response.status == 200) {
var tracking_item = await response.json();
if(tracking_item.storage == undefined || tracking_item.storage == null || tracking_item.storage.length == 0) {
alert("Item not yet received.");
console.log("Item not yet received.");
return;
}
console.log("Checkout item by tag success.");
updateCheckoutItem(tracking_item);
} else if(response.status == 404) {
console.log("Item not found");
alert("Item not found!");
} else {
checkResponseForError(response, "Failed to get item from backend");
}
}
......@@ -48,6 +48,6 @@
</div>
</div>
<module href="/components/foot.html"></module>
<script>window.onload = function () { lib.onPageLoad(); };</script>
<script>window.onload = function () { lib.onPageLoad(true); };</script>
</body>
</html>
......@@ -12,13 +12,16 @@
<button onclick="lib.scanReceiver()" class="btn btn-primary">Scan Code</button>
</div>
<div class="row">
<div id="reader" style="width: 500px; margin 0 auto;"></div>
<input class="form-control" id="checkoutByTag" type="text" placeholder="tag"><button onclick="lib.checkoutByTag()" class="btn btn-primary">Checkout By Tag</button>
</div>
<div class="row">
<h2 id="uuid"></h2>
<div id="reader" style="width: 500px; margin 0 auto;"></div>
</div>
<div class="row" onclick="lib.checkoutItem()">
<h2 id="storage"></h2>
<div class="col-md-6">
<strong id="storage"></strong><br>
<span id="tag"></span>
<strong id="tag"></strong><br>
<span id="uuid"></span>
</div>
<div class="col-md-6">
<strong id="addressee"></strong><br>
......@@ -27,5 +30,6 @@
</div>
</div>
<module href="/components/foot.html"></module>
<script>window.onload = function () { lib.onPageLoad(false); };</script>
</body>
</html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment