const UI_INITIAL_GUI = 100;
const UI_TITEL = 0;
const UI_LABEL = 1;
const UPDATE_LABEL = 6;
const UI_BUTTON = 2;
const UI_SWITCHER = 3;
const UPDATE_SWITCHER = 7;
const UI_PAD = 4;
const UI_CPAD = 5;
const UI_SLIDER = 8;
const UPDATE_SLIDER = 9;
const UI_NUMBER = 10;
const UPDATE_NUMBER = 11;
const UI_TEXT_INPUT = 12;
const UPDATE_TEXT_INPUT = 13;
const UI_GRAPH = 14;
const CLEAR_GRAPH = 15;
const ADD_GRAPH_POINT = 16;
const FOR = 0;
const BACK = 1;
const LEFT = 2;
const RIGHT = 3;
const CENTER = 4;
// Colors
const C_TURQUOISE = 0;
const C_EMERALD = 1;
const C_PETERRIVER = 2;
const C_WETASPHALT = 3;
const C_SUNFLOWER = 4;
const C_CARROT = 5;
const C_ALIZARIN = 6;
const C_NONE = 7;
const C_DARK = 8;
function colorClass(colorId) {
colorId = Number(colorId);
switch (colorId) {
case C_TURQUOISE:
return "turquoise";
case C_EMERALD:
return "emerald";
case C_PETERRIVER:
return "peterriver";
case C_WETASPHALT:
return "wetasphalt";
case C_SUNFLOWER:
return "sunflower";
case C_CARROT:
return "carrot";
case C_ALIZARIN:
return "alizarin";
case C_NONE:
return "dark";
default:
return "";
}
}
var websock;
var websockConnected = false;
function restart() {
$(document)
.add("*")
.off();
$("#row").html("");
websock.close();
start();
}
function conStatusError() {
websockConnected = false;
$("#conStatus").removeClass("color-green");
$("#conStatus").addClass("color-red");
$("#conStatus").html("Error / No Connection ↻");
$("#conStatus").off();
$("#conStatus").on({
click: restart
});
}
function handleVisibilityChange() {
if (!websockConnected && !document.hidden) {
restart();
}
}
function start() {
document.addEventListener("visibilitychange", handleVisibilityChange, false);
websock = new WebSocket("ws://" + window.location.hostname + "/ws");
websock.onopen = function(evt) {
console.log("websock open");
$("#conStatus").addClass("color-green");
$("#conStatus").text("Connected");
websockConnected = true;
};
websock.onclose = function(evt) {
console.log("websock close");
conStatusError();
};
websock.onerror = function(evt) {
console.log(evt);
conStatusError();
};
var handleEvent = function(evt) {
//console.log(evt);
var data = JSON.parse(evt.data);
var e = document.body;
var center = "";
switch (data.type) {
case UI_INITIAL_GUI:
data.controls.forEach(element => {
var fauxEvent = {
data: JSON.stringify(element)
};
handleEvent(fauxEvent);
});
break;
case UI_TITEL:
document.title = data.label;
$("#mainHeader").html(data.label);
break;
case UI_LABEL:
$("#row").append(
"
" +
data.label +
"
" +
data.value +
""
);
break;
case UI_BUTTON:
$("#row").append(
"" +
data.label +
"
"
);
$("#" + data.id).on({
touchstart: function(e) {
e.preventDefault();
buttonclick(data.id, true);
}
});
$("#" + data.id).on({
touchend: function(e) {
e.preventDefault();
buttonclick(data.id, false);
}
});
break;
case UI_SWITCHER:
var label = "