let socket = io(); let WIP = document.getElementById("encours"); let done = document.getElementById("realisee"); let waiting = document.getElementById("attente"); function addcmd(id, plate, ingredient, sauce, drink, dessert, state, client, sandwich) { if (!sandwich) sandwich = ""; done.insertAdjacentHTML("beforeend", `

${id}

${sandwich}

${client}

${plate} | ${ingredient}

${sauce}

${drink}

${dessert}

`); let e = document.getElementById(`cmd${id}`); switch (state) { case "WIP": WIPed(e, sandwich); break; case "waiting": wait(e); break; } } function WIPed(e, name) { e.querySelector("h2").innerHTML = name; let names = [name]; WIP.querySelectorAll("h2").forEach(e => { names.push(e.innerHTML) }); names.sort(); if (names.indexOf(name) === 0) WIP.insertAdjacentHTML("afterbegin", e.outerHTML); else { WIP.children[names.indexOf(name)-1].insertAdjacentHTML("afterend", e.outerHTML); } WIP.querySelector(`#${e.id}`).addEventListener("click", ev => { socket.emit("done command", {"id": parseInt(e.id.replace("cmd", ""))}); }); e.remove(); } function finish(e) { done.insertAdjacentHTML("afterbegin", e.outerHTML); e.remove(); } function wait(e) { waiting.insertAdjacentHTML("afterbegin", e.outerHTML); e.remove(); } function waiter() { if (WIP.children.length < 3) { let i, list; if (waiting.children.length < 3 - WIP.children.length) i = waiting.children.length; else i = 3 - WIP.children.length; for (i-=1; i >= 0; i--) { socket.emit("WIP command", {"id": waiting.children[i].querySelector("h1").innerHTML}) } } } socket.on("connect", data => { if (data === "ok") { socket.emit("list service"); } }); socket.on("list command", data => { for (let e of [WIP, done, waiting]) { let child = e.lastElementChild; while (child) { e.removeChild(child); child = e.lastElementChild; } } for (let c of data.list) { addcmd(c.id, c.plate, c.ingredient, c.sauce, c.drink, c.dessert, c.state, c.client,c.sandwich); } waiter(); }); socket.on("list service", data => { if (Object.keys(data).length === 0) alert("No service set !"); else socket.emit("list command"); }); socket.on("new command", data => { addcmd(data.id, data.plate, data.ingredient, data.sauce, data.drink, data.dessert, data.state, data.client, data.sandwich); waiter(); }); socket.on("cleared command", data => { wait(document.getElementById((`cmd${data.id}`))); waiter(); }); socket.on("WIPed command", data => { WIPed(document.getElementById((`cmd${data.id}`)), data.sandwich); waiter(); }); socket.on("finish command", data => { finish(document.getElementById((`cmd${data.id}`))); waiter(); }); socket.on("gave command", data => { finish(document.getElementById((`cmd${data.id}`))); waiter(); }); socket.on("glitched command", data => { finish(document.getElementById(`cmd${data.id}`)); waiter(); });