diff --git a/public/javascripts/kitchen.js b/public/javascripts/kitchen.js
index 4c55da4..aa87a96 100644
--- a/public/javascripts/kitchen.js
+++ b/public/javascripts/kitchen.js
@@ -5,6 +5,9 @@ const WIP = document.getElementById("WIP");
const done = document.getElementById("done");
const waiting = document.getElementById("waiting");
+let service = {};
+
+
function addCmd(c) {
done.insertAdjacentHTML("beforeend", `
${c.number}
@@ -54,14 +57,14 @@ function wait(e) {
}
function waiter() {
- if (WIP.children.length < 3) {
+ let limit = Object.keys(service).filter(x=>x.startsWith("sandwich") && service[x]).length;
+ if (WIP.children.length < limit) {
let i;
- if (waiting.children.length < 3 - WIP.children.length)
+ if (waiting.children.length < limit - WIP.children.length)
i = waiting.children.length;
else
- i = 3 - WIP.children.length;
- for (i-=1; i >= 0; i--)
- socket.emit("WIP command", waiting.children[i].querySelector("h1").innerHTML);
+ i = limit - WIP.children.length;
+ socket.emit("WIP command", waiting.children[i-1].querySelector("h1").innerHTML);
}
}
@@ -84,10 +87,12 @@ socket.on("list command", data => {
});
socket.on("list service", async data => {
- if (!data || Object.keys(data).length === 0) {
+ if (!data || Object.keys(data).length === 0)
await alert("No service set !");
- } else
+ else {
+ service = data;
socket.emit("list command");
+ }
});
socket.on("set service", () => {
diff --git a/public/javascripts/service.js b/public/javascripts/service.js
index 2eec74f..d0f49f7 100644
--- a/public/javascripts/service.js
+++ b/public/javascripts/service.js
@@ -20,7 +20,6 @@ async function next() {
await addUser(usersAdd.pop());
else
socket.emit("set service", users);
- console.log(users)
}
function hinter(ev) {
diff --git a/sockets/WIPCommand.js b/sockets/WIPCommand.js
index 1432fbc..79c0348 100644
--- a/sockets/WIPCommand.js
+++ b/sockets/WIPCommand.js
@@ -12,22 +12,22 @@ module.exports = socket => {
throw new Error("Service not found");
for (let sn of ["sandwich1", "sandwich2", "sandwich3"]) {
- console.log(sn + " " + s[sn + "Busy"])
- if (!s[sn + "Busy"]) {
- s[sn + "Busy"] = true;
- sandwich = s[sn];
+ await s.reload();
+ if (!c.WIP && s[sn] && !s[sn + "Busy"]) {
+ sandwich = sn;
break;
}
}
if (sandwich) {
+ s[sandwich + "Busy"] = true;
+ await c.setSandwich(s[sandwich]);
c.WIP = true;
- await c.setSandwich(sandwich);
- await c.save();
await s.save();
+ await c.save();
let send = {
number: data,
- sandwich: sandwich.username
+ sandwich: s[sandwich].username
}
socket.emit("WIP command", send);
socket.broadcast.emit("WIP command", send);
diff --git a/sockets/set/setService.js b/sockets/set/setService.js
index 84c7e4d..14bb7df 100644
--- a/sockets/set/setService.js
+++ b/sockets/set/setService.js
@@ -7,9 +7,13 @@ module.exports = socket => {
if (!s)
s = await models.Service.create();
- for (let u in data)
- await s["set"+u.charAt(0).toUpperCase()+u.slice(1)](data[u]);
+ for (let u in data) {
+ if (!(s[u] && s[u].username === data[u]) || !data[u])
+ s[u + "Busy"] = false;
+ await s["set" + u.charAt(0).toUpperCase() + u.slice(1)](data[u]);
+ }
+ await s.save();
socket.emit("set service", data);
socket.broadcast.emit("set service", data);
} catch (e) {
diff --git a/sockets/utils.js b/sockets/utils.js
index 38c1320..3d7bc69 100644
--- a/sockets/utils.js
+++ b/sockets/utils.js
@@ -80,7 +80,7 @@ async function resetService(c) {
let service = await models.Service.findOne({where:{date:{[models.Sequelize.Op.eq]: new Date()}}, include: ["sandwich1", "sandwich2", "sandwich3"]});
if (c.WIP && service) {
for (let sn of ["sandwich1", "sandwich2", "sandwich3"]) {
- if (service[sn].username === c.sandwichUsername) {
+ if (service[sn] && service[sn].username === c.sandwichUsername) {
service[sn + "Busy"] = false;
await service.save();
break;
diff --git a/views/commands.pug b/views/commands.pug
index 505b5a1..46852fb 100644
--- a/views/commands.pug
+++ b/views/commands.pug
@@ -9,6 +9,8 @@ block content
li Menu
a(href="/service" target="popup")
li Service
+ a(href="/kitchen")
+ li Kitchen
a(href="#popup")
li#logout Disconnect