// State variables
-var updateRemote = undefined; // defined iff remote server accessible
-var timeToLogout = undefined; // defined during logout countdown
+var updateRemote = undefined; // defined iff remote server accessible
+var timeToLogout = undefined; // defined during logout countdown
var logoutTimer;
var reloadTimer = undefined;
-var id_user; // ID of the user who is to be accounted for the next coffee
+var id_user; // ID of the user who is to be accounted for the next coffee
+var identifier_registration = false; // true if identifier is supposed to be registered for user
+var eventMsg = undefined; // Feedback message about the last event performed by the user
console.log("hello from flask");
//sendJSON("{\"type\":\"empty\"}");
document.getElementById("local").style.display = !offline ? "none" : "block";
document.getElementById("remote").style.display = offline ? "none" : "block";
- if (offline)
+ if (offline) {
+ showOfflineQueue();
return;
+ }
+ if (eventMsg !== undefined) {
+ update("eventMsg", eventMsg);
+ eventMsg = undefined;
+ }
if (id_user !== undefined) {
document.getElementById("nextStep").innerHTML = "Now select a beverage on the coffee machineā¦";
- } else {
+ } else if (flavorChosen !== undefined) {
document.getElementById("nextStep").innerHTML = "Enjoy your " + flavorChosen + "!";
}
document.getElementById("logout_button").innerHTML = '<br>logout<br>(' + timeToLogout + ' s)';
}
catch (err) {
- console.log("Error: ", err);
+ console.log("updateUI error: ", err);
}
}
case "empty":
break;
case "rfid":
- login(msg.uid);
+ if (identifier_registration) {
+ ajax("POST", "user/identifier/add", JSON.stringify({ id: msg.uid }), "content");
+
+ addIdentifier_finish();
+ } else {
+ login(msg.uid);
+ }
break;
case "keys":
- var flavor = getFlavor(msg.key);
- if (flavor !== "") {
- addCoffee(flavor, time);
+ if (!identifier_registration) {
+ var flavor = getFlavor(msg.key);
+ if (flavor !== "") {
+ addCoffee(flavor, time);
+ }
}
break;
case "ajax_failure":
ajax(msg.method, msg.route, msg.data, msg.id);
break;
}
+
sendLog(json);
}
function login(id) {
- ajax("POST", "login", id, "user");
+ ajax("POST", "login", id, "content");
id_user = id;
countingTimeLogout(120);
}
function logout() {
sendReset();
- ajax("GET", "logout", "", "user");
+ ajax("GET", "logout", "", "content");
id_user = undefined;
timeToLogout = undefined;
+ identifier_registration = false;
+ window.scrollTo(0, 0); // Scroll up
}
function countingTimeLogout(count_time)
}
function renameUser() {
- ajax("GET", "user/rename?name=" + document.getElementById("username").value, "", "user");
+ ajax("GET", "user/rename?name=" + document.getElementById("username").value, "", "content");
}
function getFlavor(letter) {
function addCoffee(flavor, time = new Date()) {
var data = JSON.stringify({
time: time.toISOString(),
- flavor: flavor,
- uid: id_user
+ flavor: flavor
});
if (id_user) {
- ajax("POST", "coffee/add", data, "user");
+ ajax("POST", "coffee/add", data, "content");
flavorChosen = flavor;
id_user = undefined;
countingTimeLogout(10); //mean 10 seconds
}
}
+
+function addEvent(event_name, action_msg, time = new Date()) {
+ var data = JSON.stringify({
+ time: time.toISOString(),
+ event_name: event_name,
+ uid: id_user
+ });
+ if (id_user) {
+ eventMsg = "You have " + action_msg + ". Thanks!"
+ ajax("POST", "event", data, "content");
+ window.scrollTo(0, 0); // Scroll up
+ }
+}
+
+
+function addIdentifier_start() {
+ identifier_registration = true;
+ document.getElementById("addIdentifier").disabled = true;
+ document.getElementById("labelIdentifier").style.visibility = "visible";
+ document.getElementById("abortIdentifier").disabled = false;
+}
+
+function addIdentifier_finish() {
+ identifier_registration = false;
+ document.getElementById("addIdentifier").disabled = false;
+ document.getElementById("labelIdentifier").style.visibility = "hidden";
+ document.getElementById("abortIdentifier").disabled = true;
+}
+
+function disableIdentifier(id) {
+ ajax("POST", "user/identifier/disable", JSON.stringify({ id: id }), "content");
+}
+
+function renameIdentifier(i) {
+ var data = JSON.stringify({
+ id: document.getElementById("identifier_" + i).innerText,
+ name: document.getElementById("identifier_name_" + i).value
+ });
+
+ ajax("POST", "user/identifier/rename", data, "content");
+}
+
function sendLog(json) {
ajax("POST", "log", json, "log");
}
+
+function tellCoffeebot(what)
+{
+ ajax("POST", "tellCoffeebot", JSON.stringify({text: what}), "log");
+}