From aecc8a080fd0625e6c986dccddc80f9d3b4648bf Mon Sep 17 00:00:00 2001 From: Guillermo Ruffino Date: Mon, 13 Apr 2020 20:58:14 -0300 Subject: [PATCH] add support for state array --- _static/webserver-v1.js | 14 +++++++++----- _static/webserver-v1.min.js | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/_static/webserver-v1.js b/_static/webserver-v1.js index 483284b866..e1cf7b08a7 100644 --- a/_static/webserver-v1.js +++ b/_static/webserver-v1.js @@ -23,14 +23,18 @@ source.addEventListener('log', function (e) { source.addEventListener('state', function (e) { const data = JSON.parse(e.data); - document.getElementById(data.id).children[1].innerText = data.state; + console.log('got state', e); + const f = (x) => document.getElementById(x.id).children[1].innerText = x.state; + if (Array.isArray(data)) + data.forEach(d => f(d)); + else f(data); }); const states = document.getElementById("states"); let i = 0, row; for (; row = states.rows[i]; i++) { if (row.classList.contains("switch")) { - (function(id) { + (function (id) { row.children[2].children[0].addEventListener('click', function () { const xhr = new XMLHttpRequest(); xhr.open("POST", '/switch/' + id.substr(7) + '/toggle', true); @@ -39,7 +43,7 @@ for (; row = states.rows[i]; i++) { })(row.id); } if (row.classList.contains("fan")) { - (function(id) { + (function (id) { row.children[2].children[0].addEventListener('click', function () { const xhr = new XMLHttpRequest(); xhr.open("POST", '/fan/' + id.substr(4) + '/toggle', true); @@ -48,7 +52,7 @@ for (; row = states.rows[i]; i++) { })(row.id); } if (row.classList.contains("light")) { - (function(id) { + (function (id) { row.children[2].children[0].addEventListener('click', function () { const xhr = new XMLHttpRequest(); xhr.open("POST", '/light/' + id.substr(6) + '/toggle', true); @@ -57,7 +61,7 @@ for (; row = states.rows[i]; i++) { })(row.id); } if (row.classList.contains("cover")) { - (function(id) { + (function (id) { row.children[2].children[0].addEventListener('click', function () { const xhr = new XMLHttpRequest(); xhr.open("POST", '/cover/' + id.substr(6) + '/open', true); diff --git a/_static/webserver-v1.min.js b/_static/webserver-v1.min.js index e2cbb4b4e5..a2dc58345b 100644 --- a/_static/webserver-v1.min.js +++ b/_static/webserver-v1.min.js @@ -1 +1 @@ -const source=new EventSource("/events");source.addEventListener("log",function(a){const b=document.getElementById("log");let c="";a.data.startsWith("\x1B[1;31m")?c="e":a.data.startsWith("\x1B[0;33m")?c="w":a.data.startsWith("\x1B[0;32m")?c="i":a.data.startsWith("\x1B[0;35m")?c="c":a.data.startsWith("\x1B[0;36m")?c="d":a.data.startsWith("\x1B[0;37m")?c="v":b.innerHTML+=a.data+"\n",b.innerHTML+=""+a.data.substr(7,a.data.length-10)+"\n"}),source.addEventListener("state",function(a){const b=JSON.parse(a.data);document.getElementById(b.id).children[1].innerText=b.state});const states=document.getElementById("states");for(let a,b=0;a=states.rows[b];b++)a.classList.contains("switch")&&function(b){a.children[2].children[0].addEventListener("click",function(){const a=new XMLHttpRequest;a.open("POST","/switch/"+b.substr(7)+"/toggle",!0),a.send()})}(a.id),a.classList.contains("fan")&&function(b){a.children[2].children[0].addEventListener("click",function(){const a=new XMLHttpRequest;a.open("POST","/fan/"+b.substr(4)+"/toggle",!0),a.send()})}(a.id),a.classList.contains("light")&&function(b){a.children[2].children[0].addEventListener("click",function(){const a=new XMLHttpRequest;a.open("POST","/light/"+b.substr(6)+"/toggle",!0),a.send()})}(a.id),a.classList.contains("cover")&&function(b){a.children[2].children[0].addEventListener("click",function(){const a=new XMLHttpRequest;a.open("POST","/cover/"+b.substr(6)+"/open",!0),a.send()}),a.children[2].children[1].addEventListener("click",function(){const a=new XMLHttpRequest;a.open("POST","/cover/"+b.substr(6)+"/close",!0),a.send()})}(a.id); \ No newline at end of file +const source = new EventSource("/events"); source.addEventListener("log", function (t) { const n = document.getElementById("log"); let e = ""; t.data.startsWith("") ? e = "e" : t.data.startsWith("") ? e = "w" : t.data.startsWith("") ? e = "i" : t.data.startsWith("") ? e = "c" : t.data.startsWith("") ? e = "d" : t.data.startsWith("") ? e = "v" : n.innerHTML += t.data + "\n", n.innerHTML += '' + t.data.substr(7, t.data.length - 10) + "\n" }), source.addEventListener("state", function (t) { const n = JSON.parse(t.data); console.log("got state", t); const e = t => document.getElementById(t.id).children[1].innerText = t.state; Array.isArray(n) ? n.forEach(t => e(t)) : e(n) }); const states = document.getElementById("states"); let row, i = 0; for (; row = states.rows[i]; i++)row.classList.contains("switch") && function (t) { row.children[2].children[0].addEventListener("click", function () { const n = new XMLHttpRequest; n.open("POST", "/switch/" + t.substr(7) + "/toggle", !0), n.send() }) }(row.id), row.classList.contains("fan") && function (t) { row.children[2].children[0].addEventListener("click", function () { const n = new XMLHttpRequest; n.open("POST", "/fan/" + t.substr(4) + "/toggle", !0), n.send() }) }(row.id), row.classList.contains("light") && function (t) { row.children[2].children[0].addEventListener("click", function () { const n = new XMLHttpRequest; n.open("POST", "/light/" + t.substr(6) + "/toggle", !0), n.send() }) }(row.id), row.classList.contains("cover") && function (t) { row.children[2].children[0].addEventListener("click", function () { const n = new XMLHttpRequest; n.open("POST", "/cover/" + t.substr(6) + "/open", !0), n.send() }), row.children[2].children[1].addEventListener("click", function () { const n = new XMLHttpRequest; n.open("POST", "/cover/" + t.substr(6) + "/close", !0), n.send() }) }(row.id); \ No newline at end of file