diff --git a/app/models.py b/app/models.py
index 4790062..3ae2d4b 100644
--- a/app/models.py
+++ b/app/models.py
@@ -39,7 +39,7 @@ class Command(db.Model):
number = db.Column(db.Integer, nullable=False)
pc_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
- sandwitch_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
+ sandwitch_id = db.Column(db.Integer, db.ForeignKey("user.id"))
client_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False)
date = db.Column(db.Date, default=datetime.datetime.now().date)
diff --git a/app/sockets.py b/app/sockets.py
index defc530..3ba470e 100644
--- a/app/sockets.py
+++ b/app/sockets.py
@@ -19,7 +19,7 @@ def authenticated_only(f):
def command_json(c):
- content = " - ".join([s.id for s in c.content])
+ ingredient = " - ".join([s.id for s in c.content])
sauces = " - ".join([s.id for s in c.sauce])
if c.error:
state = "error"
@@ -31,7 +31,7 @@ def command_json(c):
state = "waiting"
else:
state = "unknown"
- return {"id": c.number, "plate": c.plate_id, "content": content, "sauce": sauces, "drink": c.drink_id, "dessert": c.dessert_id, "state": state}
+ return {"id": c.number, "plate": c.plate_id, "ingredient": ingredient, "sauce": sauces, "drink": c.drink_id, "dessert": c.dessert_id, "state": state}
@socketio.on("connect")
@@ -59,17 +59,7 @@ def addcmd(json):
c.number = Command.query.filter_by(date=datetime.datetime.now().date()).order_by(Command.number.desc()).first().number+1
except AttributeError:
c.number = 1
-
- if "pc" in json:
- try:
- c.pc_id = User.query.get(json["pc"]).id
- except AttributeError:
- c.pc_id = 0
- if "sandwitch" in json:
- try:
- c.sandwitch_id = User.query.get(json["sandwitch"]).id
- except AttributeError:
- c.sandwitch_id = 0
+ c.pc_id = current_user.id
if "client" in json:
try:
c.client_id = User.query.get(json["client"]).id
@@ -80,8 +70,8 @@ def addcmd(json):
c.plate_id = Plate.query.get(json["plate"]).id
except AttributeError:
pass
- if "content" in json:
- for i in json["content"]:
+ if "ingredient" in json:
+ for i in json["ingredient"]:
try:
c.content.append(Ingredient.query.get(i))
except AttributeError:
diff --git a/app/static/js/pc.js b/app/static/js/pc.js
index b72b0b0..8fc3fc3 100644
--- a/app/static/js/pc.js
+++ b/app/static/js/pc.js
@@ -5,12 +5,12 @@ let sauce = document.querySelector("#sauce ul");
let drink = document.querySelector("#boisson ul");
let dessert = document.querySelector("#dessert ul");
let list = document.querySelector(".liste");
-let current = {"plate": null, "content": [], "sauce": [], "drink": null, "dessert": null};
-let radios = {"plate": null};
+let current = {"plate": null, "ingredient": [], "sauce": [], "drink": null, "dessert": null};
+let radios = {"plate": null, "drink": null, "dessert": null};
-function addcmd(id, plate, content, sauce, drink, dessert, state) {
- $(list).append(`
${id}
${plate}
${content}
${sauce}
${drink}
${dessert}
`);
+function addcmd(id, plate, ingredient, sauce, drink, dessert, state) {
+ $(list).append(` ${id}
${plate}
${ingredient}
${sauce}
${drink}
${dessert}
`);
let e = document.querySelector(`.liste #cmd${id}`);
e.addEventListener( "click" ,ev => {
ev.stopPropagation();
@@ -43,88 +43,39 @@ function addcmd(id, plate, content, sauce, drink, dessert, state) {
}
function addplate(id, name) {
- $(plate).append(``);
+ $(plate).append(``);
let e = document.querySelector(`input[id=${id} ]`);
e.addEventListener("click", () => {
- if (e.checked) {
- let curr, name;
- if (e.id === radios["plate"]) {
- e.checked = false;
- radios["plate"] = null;
- curr = null;
- name = null;
- } else {
- radios["plate"] = e.id;
- curr = e.id;
- name = document.querySelector(`label[for=${e.id}]`).innerHTML;
- }
- current["plate"] = curr;
- document.querySelectorAll("#resume p")[0].innerHTML = name;
- }
+ radiocheck(e, "plate",0);
+ document.querySelectorAll("input[name=ingredient],input[name=sauce]").forEach( el => {
+ el.disabled = !e.checked;
+ if (!e.checked)
+ el.checked = false
+ });
})
}
function addingredient(id, name) {
- $(ingredient).append(``);
+ $(ingredient).append(``);
let e = document.querySelector(`input[id=${id} ]`);
e.addEventListener("click", () => {
- if (e.checked)
- current["content"].push(e.id);
- else
- current["content"].splice(current["content"].indexOf(e.id), 1);
- let content = [];
- document.querySelectorAll("input[name=ingredient]").forEach( e => {
- if (e.checked)
- content.push(document.querySelector(`label[for=${e.id}]`).innerHTML)
- });
- document.querySelectorAll("#resume p")[1].innerHTML = content.join(" - ");
- document.querySelectorAll("input[name=ingredient]").forEach( e => {
- if (!e.checked)
- e.disabled = content.length === 3
- });
+ checkcheck(e, "ingredient", 1, 3)
})
}
function addsauce(id, name) {
- $(sauce).append(``);
+ $(sauce).append(``);
let e = document.querySelector(`input[id=${id} ]`);
e.addEventListener("click", () => {
- if (e.checked)
- current["sauce"].push(e.id);
- else
- current["sauce"].splice(current["sauce"].indexOf(e.id), 1);
- let content = [];
- document.querySelectorAll("input[name=sauce]").forEach( e => {
- if (e.checked)
- content.push(document.querySelector(`label[for=${e.id}]`).innerHTML)
- });
- document.querySelectorAll("#resume p")[2].innerHTML = content.join(" - ");
- document.querySelectorAll("input[name=sauce]").forEach( e => {
- if (!e.checked)
- e.disabled = content.length === 2
- });
+ checkcheck(e, "sauce", 2, 2)
})
}
function adddrink(id, name) {
- $(drink).append(``);
+ $(drink).append(``);
let e = document.querySelector(`input[id=${id} ]`);
e.addEventListener("click", () => {
- if (e.checked) {
- let curr, name;
- if (e.id === radios["plate"]) {
- e.checked = false;
- radios["plate"] = null;
- curr = null;
- name = null;
- } else {
- radios["plate"] = e.id;
- curr = e.id;
- name = document.querySelector(`label[for=${e.id}]`).innerHTML;
- }
- current["drink"] = curr;
- document.querySelectorAll("#resume p")[3].innerHTML = name;
- }
+ radiocheck(e, "drink", 3)
})
}
@@ -132,24 +83,40 @@ function adddessert(id, name) {
$(dessert).append(``);
let e = document.querySelector(`input[id=${id} ]`);
e.addEventListener("click", () => {
- if (e.checked) {
- let curr, name;
- if (e.id === radios["plate"]) {
- e.checked = false;
- radios["plate"] = null;
- curr = null;
- name = null;
- } else {
- radios["plate"] = e.id;
- curr = e.id;
- name = document.querySelector(`label[for=${e.id}]`).innerHTML;
- }
- current["dessert"] = curr;
- document.querySelectorAll("#resume p")[4].innerHTML = name;
- }
+ radiocheck(e, "dessert", 4)
})
}
+function radiocheck (e, n, p) {
+ if (e.checked) {
+ let curr, name;
+ if (e.id === radios[n]) {
+ e.checked = false;
+ radios[n] = null;
+ curr = null;
+ name = null;
+ } else {
+ radios[n] = e.id;
+ curr = e.id;
+ name = document.querySelector(`label[for=${e.id}]`).innerHTML;
+ }
+ current[n] = curr;
+ document.querySelectorAll("#resume p")[p].innerHTML = name;
+ }
+}
+
+function checkcheck(e, n, p, l) {
+ if (e.checked)
+ current[n].push(e.id);
+ else
+ current[n].splice(current[n].indexOf(e.id), 1);
+ document.querySelectorAll(`input[name=${n}]`).forEach( e => {
+ if (!e.checked)
+ e.disabled = current[n].length === l
+ });
+ document.querySelectorAll("#resume p")[p].innerHTML = current[n].join(" - ");
+}
+
function clear(e) {
e.classList.remove("finis");
e.classList.remove("donnee");
@@ -193,7 +160,7 @@ socket.on("list command", data => {
child = list.lastElementChild;
}
for (let c of data.list) {
- addcmd(c.id, c.plate, c.content, c.sauce, c.drink, c.dessert, c.state);
+ addcmd(c.id, c.plate, c.ingredient, c.sauce, c.drink, c.dessert, c.state);
}
});
@@ -253,7 +220,7 @@ socket.on("list dessert", data => {
});
socket.on("new command", data => {
- addcmd(data.id, data.plate, data.content, data.sauce, data.drink, data.dessert, data.state);
+ addcmd(data.id, data.plate, data.ingredient, data.sauce, data.drink, data.dessert, data.state);
});
socket.on("cleared command", data => {
@@ -274,14 +241,16 @@ socket.on("glitched command", data => {
document.querySelector(".validation").addEventListener("click", ev => {
ev.stopPropagation();
- current["pc"] = 1;
- current["sandwitch"] = 1;
current["client"] = 1;
socket.emit("add command", current);
- current = {"plate": null, "content": [], "sauce": [], "drink": null, "dessert": null};
- document.querySelectorAll("input").forEach( e => {
- e.checked = false
+ current = {"plate": null, "ingredient": [], "sauce": [], "drink": null, "dessert": null};
+ document.querySelectorAll("input[name=plate],input[name=drink],input[name=dessert]").forEach( e => {
+ e.checked = false;
+ });
+ document.querySelectorAll("input[name=ingredient],input[name=sauce]").forEach( e => {
+ e.checked = false;
+ e.disabled = true;
});
document.querySelectorAll("#resume p").forEach( e => {
e.innerHTML = ""