//
//
//
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) {
debug ("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
debug ("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) {
var win = document.getElementById("sensordetail");
debug ("sensordetail_show");
if (!win) {
debug ("sensordetail_show create window");
win = gWindowCreate("sensordetail", "Sensor", 400, 300, " \
\
Sensor Name: \
\
\
\
\
\
Interface: \
Addr: \
Flags: \
\
\
\
\
\
\
\
");
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]);
}
}
};
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]);
}
debug ("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]);
}
debug ("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;
};