You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
368 lines
9.0 KiB
368 lines
9.0 KiB
//
|
|
//
|
|
//
|
|
|
|
const SENSOR_F_INVERSE = 1;
|
|
const SENSOR_F_ACTIVE = 2;
|
|
|
|
var sensors = [];
|
|
|
|
|
|
//
|
|
// update or add a new element
|
|
//
|
|
function sensor_Update(sdata) {
|
|
for (var i = 0; i < sensors.length; i++) {
|
|
if (sdata.name == sensors[i].name) {
|
|
console.log ("Update Sensor:" + sensors[i].name + " with Sensor:" + sdata.name);
|
|
sensors[i].name = sdata.name;
|
|
sensors[i].ifname = sdata.ifname;
|
|
sensors[i].addr = sdata.addr;
|
|
sensors[i].flags = sdata.flags;
|
|
return;
|
|
}
|
|
}
|
|
|
|
// not found add element
|
|
console.log ("Add Sensor:" + sdata.name);
|
|
sensors.push ({
|
|
name: sdata.name,
|
|
ifname: sdata.ifname,
|
|
addr: sdata.addr,
|
|
flags: sdata.flags
|
|
});
|
|
};
|
|
|
|
|
|
//
|
|
// delete element from the list
|
|
// in arrays we can not delete just an element, so we create a new one
|
|
// and replace this one.
|
|
//
|
|
function sensor_Delete(name) {
|
|
var l = new Array();
|
|
|
|
for (var i = 0; i < sensors.length; i++) {
|
|
if (name != sensors[i].name) {
|
|
l.push (sensors[i]);
|
|
}
|
|
}
|
|
|
|
// clear list and replace list with new data.
|
|
sensors.lenght = 0;
|
|
sensors = l;
|
|
};
|
|
|
|
|
|
//
|
|
// send new element to server
|
|
//
|
|
function sensor_server_Add(elm) {
|
|
var request = { command: "addsensor", sensor: elm };
|
|
serverinout (request, serverinout_defaultCallback);
|
|
};
|
|
|
|
|
|
//
|
|
// send delete element to server
|
|
//
|
|
function sensor_server_Del(elm) {
|
|
var request = { command: "delsensor", sensor: elm };
|
|
serverinout (request, serverinout_defaultCallback);
|
|
};
|
|
|
|
|
|
//
|
|
// return if the sensor is active or not
|
|
//
|
|
function sensor_IsActive(name) {
|
|
for (var i = 0; i < sensors.length; i++) {
|
|
if (name == sensors[i].name) {
|
|
if (sensors[i].flags & SENSOR_F_ACTIVE) return 1
|
|
else return 0;
|
|
}
|
|
}
|
|
return 0;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
function sensordetail_show(name, create) {
|
|
var win = document.getElementById("sensordetail");
|
|
|
|
console.log ("sensordetail_show");
|
|
|
|
if (!win) {
|
|
console.log ("sensordetail_show create window");
|
|
win = gWindowCreate("sensordetail", "Sensor", 400, 300, " \
|
|
<div style=\"float: left\"> \
|
|
Sensor Name: <input id=\"sensor_name\" style=\"width: 100\"> \
|
|
</div> <div style=\"float: right\"> \
|
|
<button id=\"sensor_PREV\"><</button> \
|
|
<button id=\"sensor_NEXT\">></button> \
|
|
</div> <br> <hr>\
|
|
<div> \
|
|
Interface: <input id=\"sensor_ifname\" style=\"width: 200\"> \
|
|
Addr: <input id=\"sensor_addr\" style=\"width: 50\"> \
|
|
Flags: <input id=\"sensor_flags\" style=\"width: 50\"> \
|
|
</div> <hr>\
|
|
<div align=right> \
|
|
<button id=\"sensor_SAVE\" type=\"button\">Save</button> \
|
|
<button id=\"sensor_DELETE\" type=\"button\">Delete</button> \
|
|
<button id=\"sensor_CLOSE\">Close</button> \
|
|
</div> \
|
|
\
|
|
");
|
|
|
|
gAddEventListener("sensor_CLOSE", 'click', sensordetail_cb_close);
|
|
gAddEventListener("sensor_DELETE", 'click', sensordetail_cb_delete);
|
|
gAddEventListener("sensor_SAVE", 'click', sensordetail_cb_save);
|
|
|
|
gAddEventListener("sensor_NEXT", 'click', sensordetail_cb_next);
|
|
gAddEventListener("sensor_PREV", 'click', sensordetail_cb_prev);
|
|
}
|
|
|
|
if (name) {
|
|
for (var i = 0; i < sensors.length; i++) {
|
|
if (name == sensors[i].name) sensordetail_setData(sensors[i]);
|
|
}
|
|
}
|
|
|
|
if (create) {
|
|
let rname = document.getElementById("sensor_name");
|
|
if (rname.value != name && rname.value == "") rname.value = name;
|
|
}
|
|
|
|
};
|
|
|
|
|
|
function sensordetail_cb_close () {
|
|
var win = document.getElementById("sensordetail");
|
|
|
|
if (win) document.body.removeChild(win);
|
|
};
|
|
|
|
|
|
//
|
|
// Callback: Delete Button
|
|
//
|
|
function sensordetail_cb_delete () {
|
|
var elm = {};
|
|
|
|
elm = sensordetail_getData();
|
|
sensor_Delete(elm.name);
|
|
sensor_server_Del(elm);
|
|
};
|
|
|
|
|
|
//
|
|
// Callback: Save Button
|
|
//
|
|
function sensordetail_cb_save () {
|
|
var elm = {};
|
|
|
|
elm = sensordetail_getData();
|
|
sensor_Update(elm);
|
|
sensor_server_Add(elm);
|
|
};
|
|
|
|
|
|
//
|
|
// Callback: Next Button
|
|
//
|
|
function sensordetail_cb_next () {
|
|
var cursel = -1;
|
|
var name = document.getElementById("sensor_name");
|
|
|
|
for (var i = 0; i < sensors.length; i++) {
|
|
if (name.value == sensors[i].name) cursel = i;
|
|
}
|
|
|
|
cursel = cursel + 1;
|
|
if (cursel >= sensors.length) cursel = 0;
|
|
if (cursel < 0) cursel = 0;
|
|
|
|
for (var i = 0; i < sensors.length; i++) {
|
|
if (i == cursel) sensordetail_setData(sensors[i]);
|
|
}
|
|
|
|
console.log ("Cursel: " + cursel + " sensors.lenght:" + sensors.length);
|
|
};
|
|
|
|
|
|
//
|
|
// Callback: Prev Button
|
|
//
|
|
function sensordetail_cb_prev () {
|
|
var cursel = -1;
|
|
var name = document.getElementById("sensor_name");
|
|
|
|
|
|
for (var i = 0; i < sensors.length; i++) {
|
|
if (name.value == sensors[i].name) cursel = i;
|
|
}
|
|
|
|
cursel = cursel - 1;
|
|
if (cursel < 0 || cursel >= sensors.length) cursel = sensors.length - 1;
|
|
|
|
for (var i = 0; i < sensors.length; i++) {
|
|
if (i == cursel) sensordetail_setData(sensors[i]);
|
|
}
|
|
|
|
console.log ("Cursel: " + cursel + " sensors.lenght:" + sensors.length);
|
|
};
|
|
|
|
|
|
//
|
|
// fill out all the elements on the dialogbox
|
|
//
|
|
function sensordetail_setData(elm) {
|
|
var name = document.getElementById("sensor_name");
|
|
var ifname = document.getElementById("sensor_ifname");
|
|
var addr = document.getElementById("sensor_addr");
|
|
var flags = document.getElementById("sensor_flags");
|
|
|
|
if (elm) {
|
|
if (name) name.value = elm.name;
|
|
if (ifname) ifname.value = elm.ifname;
|
|
if (addr) addr.value = elm.addr;
|
|
if (flags) flags.value = elm.flags;
|
|
}
|
|
};
|
|
|
|
|
|
|
|
//
|
|
// return all elements from the dialogbox
|
|
//
|
|
function sensordetail_getData() {
|
|
var res = { name: "", ifname: "", addr: 0, flags:0 };
|
|
var name = document.getElementById("sensor_name");
|
|
var ifname = document.getElementById("sensor_ifname");
|
|
var addr = document.getElementById("sensor_addr");
|
|
var flags = document.getElementById("sensor_flags");
|
|
|
|
if (name) res.name = name.value;
|
|
if (ifname) res.ifname = ifname.value;
|
|
if (flags) res.flags = flags.value;
|
|
if (addr) res.addr = addr.value;
|
|
|
|
return res;
|
|
};
|
|
|
|
|
|
// ***********************************************************************************************
|
|
// ***********************************************************************************************
|
|
// sensorlist: show a list of sensors.
|
|
//
|
|
// ***********************************************************************************************
|
|
// ***********************************************************************************************
|
|
function sensorlist_show() {
|
|
var win = document.getElementById("sensorlist");
|
|
|
|
console.log ("sensorlist_show");
|
|
|
|
if (!win) {
|
|
console.log ("sensorlist_show create window");
|
|
win = gWindowCreate("sensorlist", "Sensors", 400, 500, " \
|
|
<div id=\"sensorlist_listdiv\"> \
|
|
<ul id=\"sensorlist_elements\" style=\"list-style-type:none\"></ul> \
|
|
</div> \
|
|
<div align=right> \
|
|
<button id=\"sensorlist_CLOSE\" type=\"button\">Close</button> \
|
|
</div> \
|
|
\
|
|
");
|
|
|
|
gAddEventListener("sensorlist_CLOSE", 'click', sensorlist_cb_close);
|
|
}
|
|
|
|
var ul = document.getElementById("sensorlist_elements");
|
|
|
|
//
|
|
// sort list
|
|
var ssorted = new Array();
|
|
for (var i = 0; i < sensors.length; i++) {
|
|
ssorted.push(sensors[i].name);
|
|
}
|
|
ssorted.sort();
|
|
|
|
//
|
|
// append all sensors
|
|
for (var i = 0; i < ssorted.length; i++) {
|
|
let li = document.createElement("li");
|
|
li.appendChild(document.createTextNode(ssorted[i]));
|
|
li.setAttribute("id", "sensor_elm_"+ssorted[i]);
|
|
ul.appendChild(li);
|
|
|
|
gAddEventListener("sensor_elm_"+ssorted[i], 'click', sensorlist_clicked);
|
|
}
|
|
|
|
};
|
|
|
|
|
|
function sensorlist_clicked() {
|
|
var i;
|
|
|
|
console.log ("childnodes: " + this.childNodes[0].textContent);
|
|
sensordetail_show(this.childNodes[0].textContent);
|
|
};
|
|
|
|
|
|
|
|
function sensorlist_cb_close () {
|
|
var win = document.getElementById("sensorlist");
|
|
|
|
if (win) document.body.removeChild(win);
|
|
};
|
|
|
|
|
|
|
|
// ***********************************************************************************************
|
|
// ***********************************************************************************************
|
|
// sensor contextmenu: show a context menu for the sensor
|
|
//
|
|
// ***********************************************************************************************
|
|
// ***********************************************************************************************
|
|
function sensor_contextmenu(name) {
|
|
let innerhtml = "";
|
|
|
|
innerhtml = "<center>";
|
|
innerhtml += "<button id=\"contextbox_On\" type=\"button\">Set On</button><br>";
|
|
innerhtml += "<button id=\"contextbox_Off\" type=\"button\">Set Off</button><br>";
|
|
innerhtml += "<button id=\"contextbox_Close\" type=\"button\">Close</button></center>";
|
|
|
|
gContextmenuCreate(name, innerhtml);
|
|
|
|
gAddEventListener("contextbox_On", 'click', sensor_ctxmenu_On);
|
|
gAddEventListener("contextbox_Off", 'click', sensor_ctxmenu_Off);
|
|
gAddEventListener("contextbox_Close", 'click', gContextmenuClose);
|
|
};
|
|
|
|
|
|
|
|
function sensor_ctxmenu_On (element, value) {
|
|
let name = document.getElementById("ConextMenuHead").innerHTML;
|
|
sensor_server_setactive(name, "1");
|
|
gContextmenuClose();
|
|
}
|
|
|
|
function sensor_ctxmenu_Off (element, value) {
|
|
let name = document.getElementById("ConextMenuHead").innerHTML;
|
|
sensor_server_setactive(name, "0");
|
|
gContextmenuClose();
|
|
}
|
|
|
|
|
|
//
|
|
// send sensor activate and deactivate to server
|
|
//
|
|
function sensor_server_setactive(name, value) {
|
|
var request = { command: "sensorSetActive", sensor: name, enabled: value };
|
|
console.log ("send sensor active:" + name);
|
|
serverinout (request, serverinout_defaultCallback);
|
|
};
|
|
|