const socket = io(); const deckSelect = document.getElementById("deck-select"); const deck = document.getElementById("deck"); socket.on("connected", () => { console.log("Connected !"); socket.emit("getDeck"); socket.emit("getDecks"); }); socket.on("getDeck", d => { let data = d.data, name = d.name; deck.innerHTML = ""; for (let x = 0; x < data.x; x++) { const r = document.createElement("div"); r.id = "r" + x; for (let y = 0; y < data.y; y++) { const c = document.createElement("div"); c.id = r.id+"c"+y; r.insertAdjacentElement("beforeend", c); } deck.insertAdjacentElement("beforeend", r); } for (const [x, cols] of Object.entries(data.rows)) for (const [y, col] of Object.entries(cols)) setSlot(name, col, x, y); }); socket.on("getDecks", data => { deckSelect.innerHTML = ""; for (const deck of data) deckSelect.insertAdjacentHTML("beforeend", ``); M.FormSelect.init(deckSelect); }); socket.on("trigger", data => { if (data.error) alert(data.error) }); socket.on("setSlot", data => { if (data && !data.error) setSlot(data.name, data.data, ...data.position) }); deckSelect.addEventListener("change", ev => { ev.stopPropagation(); socket.emit("getDeck", deckSelect.value); }); function setSlot(name, data, x, y) { let e = document.getElementById(`r${x}c${y}`); if (e) { let d = document.createElement("div"); d.id = e.id; e.replaceWith(d); e = d; if (data) { if (data.image) e.insertAdjacentHTML("beforeend", ``); else if (data.text) e.insertAdjacentHTML("beforeend", `
${data.text}
`); e.addEventListener("click", ev => { ev.stopPropagation(); socket.emit("trigger", [name, x, y]); }) } } } document.addEventListener("DOMContentLoaded", () => { M.AutoInit(); });