|
|
|
@ -2,9 +2,21 @@
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
const RAILWAY_T_NOTHING = 0;
|
|
|
|
|
const RAILWAY_T_NORMAL = 1;
|
|
|
|
|
const RAILWAY_T_CROSSING = 2;
|
|
|
|
|
const RAILWAY_T_TURNOUT = 3;
|
|
|
|
|
const RAILWAY_T_SENSOR = 4;
|
|
|
|
|
const RAILWAY_T_CONNECTOR = 5;
|
|
|
|
|
const RAILWAY_T_BUTTON = 6;
|
|
|
|
|
const RAILWAY_T_TEXT = 7;
|
|
|
|
|
const RAILWAY_T_BLOCK = 8;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const TURNOUT_F_INVERSE = 1;
|
|
|
|
|
const TURNOUT_F_MOTORACTIVE = 2;
|
|
|
|
|
const TURNOUT_F_OUTPUTACTIVE = 2;
|
|
|
|
|
const TURNOUT_F_TURNOUT = 4;
|
|
|
|
|
const TURNOUT_F_ISRELAIS = 8;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function rwdetail_requestcallback(response) {
|
|
|
|
@ -103,10 +115,10 @@ function rwdetail_cb_gotoref () {
|
|
|
|
|
debug ("Name:" + name.value + " Type:" + type.value);
|
|
|
|
|
|
|
|
|
|
switch(Number(type.value)) {
|
|
|
|
|
case 3: turndetail_show(name.value, true); break; // turnout
|
|
|
|
|
case 4: sensordetail_show(name.value, true); break; // sensor
|
|
|
|
|
case 5: break; // connector
|
|
|
|
|
case 8: blockdetail_show(name.value, true); break; // block
|
|
|
|
|
case RAILWAY_T_BUTTON: turndetail_show(name.value, true); break; // button
|
|
|
|
|
case RAILWAY_T_TURNOUT: turndetail_show(name.value, true); break; // turnout
|
|
|
|
|
case RAILWAY_T_SENSOR: sensordetail_show(name.value, true); break; // sensor
|
|
|
|
|
case RAILWAY_T_BLOCK: blockdetail_show(name.value, true); break; // block
|
|
|
|
|
default: break;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
@ -218,10 +230,23 @@ function rw_Click(x,y) {
|
|
|
|
|
var idx = x + y * track.size.x;
|
|
|
|
|
if (track.elements[idx]) {
|
|
|
|
|
//
|
|
|
|
|
// Button or Turnout?
|
|
|
|
|
if (track.elements[idx].type == RAILWAY_TURNOUT || track.elements[idx].type == RAILWAY_BUTTON) {
|
|
|
|
|
// Turnout?
|
|
|
|
|
if (track.elements[idx].type == RAILWAY_TURNOUT) {
|
|
|
|
|
if (track.elements[idx].name != "") {
|
|
|
|
|
if (turnout_IsTurnoutActive(track.elements[idx].name)) {
|
|
|
|
|
turnout_server_Activate(track.elements[idx].name, 0);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
turnout_server_Activate(track.elements[idx].name, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// Button
|
|
|
|
|
else if (track.elements[idx].type == RAILWAY_T_BUTTON) {
|
|
|
|
|
if (track.elements[idx].name != "") {
|
|
|
|
|
if (turnout_IsActive(track.elements[idx].name)) {
|
|
|
|
|
if (turnout_IsOutputActive(track.elements[idx].name)) {
|
|
|
|
|
turnout_server_Activate(track.elements[idx].name, 0);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
@ -284,7 +309,7 @@ var turnouts = [];
|
|
|
|
|
function turnout_Update(data) {
|
|
|
|
|
for (var i = 0; i < turnouts.length; i++) {
|
|
|
|
|
if (data.name == turnouts[i].name) {
|
|
|
|
|
debug ("Update turnout:" + turnouts[i].name + " with turnout:" + data.name);
|
|
|
|
|
debug ("Update turnout:" + turnouts[i].name + " with turnout:" + data.name + " Flags:" + data.flags);
|
|
|
|
|
turnouts[i].name = data.name;
|
|
|
|
|
turnouts[i].ifname = data.ifname;
|
|
|
|
|
turnouts[i].addr = data.addr;
|
|
|
|
@ -294,7 +319,7 @@ function turnout_Update(data) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// not found add element
|
|
|
|
|
debug ("Add turnout:" + data.name);
|
|
|
|
|
debug ("Add turnout:" + data.name + " Flags:" + data.flags);
|
|
|
|
|
turnouts.push ({
|
|
|
|
|
name: data.name,
|
|
|
|
|
ifname: data.ifname,
|
|
|
|
@ -307,7 +332,7 @@ function turnout_Update(data) {
|
|
|
|
|
//
|
|
|
|
|
// return if the turnout is active or not
|
|
|
|
|
//
|
|
|
|
|
function turnout_IsActive(name) {
|
|
|
|
|
function turnout_IsTurnoutActive(name) {
|
|
|
|
|
for (var i = 0; i < turnouts.length; i++) {
|
|
|
|
|
if (name == turnouts[i].name) {
|
|
|
|
|
if (turnouts[i].flags & TURNOUT_F_TURNOUT) return 1
|
|
|
|
@ -318,6 +343,17 @@ function turnout_IsActive(name) {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function turnout_IsOutputActive(name) {
|
|
|
|
|
for (var i = 0; i < turnouts.length; i++) {
|
|
|
|
|
if (name == turnouts[i].name) {
|
|
|
|
|
if (turnouts[i].flags & TURNOUT_F_OUTPUTACTIVE) return 1
|
|
|
|
|
else return 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// delete element from the list
|
|
|
|
|
// in arrays we can not delete just an element, so we create a new one
|
|
|
|
@ -385,6 +421,8 @@ function turndetail_show(turnname, create) {
|
|
|
|
|
<tr><td>Flags:</td><td><input id=\"turndet_flags\" style=\"width: 50\"></td></tr> \
|
|
|
|
|
</table> </td><td> \
|
|
|
|
|
<label><input id=\"turndet_inverse\" type=\"checkbox\" value=\"\"> Inverse</label><br>\
|
|
|
|
|
<label><input id=\"turndet_output\" type=\"checkbox\" value=\"\"> Output Active</label><br>\
|
|
|
|
|
<label><input id=\"turndet_relais\" type=\"checkbox\" value=\"\"> Is Relais</label><br>\
|
|
|
|
|
<label><input id=\"turndet_active\" type=\"checkbox\" value=\"\"><dfn title=\"save first\"> Active</dfn></label>\
|
|
|
|
|
\
|
|
|
|
|
</td></tr></table></div> <hr>\
|
|
|
|
@ -398,6 +436,8 @@ function turndetail_show(turnname, create) {
|
|
|
|
|
|
|
|
|
|
gAddEventListener("turndet_inverse", 'click', turndetail_cb_inverse);
|
|
|
|
|
gAddEventListener("turndet_active", 'click', turndetail_cb_active);
|
|
|
|
|
gAddEventListener("turndet_output", 'click', turndetail_cb_output);
|
|
|
|
|
gAddEventListener("turndet_relais", 'click', turndetail_cb_relais);
|
|
|
|
|
|
|
|
|
|
gAddEventListener("turndet_CLOSE", 'click', turndetail_cb_close);
|
|
|
|
|
gAddEventListener("turndet_DELETE", 'click', turndetail_cb_delete);
|
|
|
|
@ -457,6 +497,34 @@ function turndetail_cb_active () {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// output
|
|
|
|
|
function turndetail_cb_output () {
|
|
|
|
|
var cb = document.getElementById("turndet_output");
|
|
|
|
|
var flags = document.getElementById("turndet_flags");
|
|
|
|
|
var name = document.getElementById("turndet_name");
|
|
|
|
|
|
|
|
|
|
if (cb.checked)
|
|
|
|
|
flags.value = Number(flags.value) | TURNOUT_F_OUTPUTACTIVE;
|
|
|
|
|
else
|
|
|
|
|
flags.value = Number(flags.value) & (0xFFFF-TURNOUT_F_OUTPUTACTIVE);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// isrelais
|
|
|
|
|
function turndetail_cb_relais () {
|
|
|
|
|
var cb = document.getElementById("turndet_relais");
|
|
|
|
|
var flags = document.getElementById("turndet_flags");
|
|
|
|
|
var name = document.getElementById("turndet_name");
|
|
|
|
|
|
|
|
|
|
if (cb.checked)
|
|
|
|
|
flags.value = Number(flags.value) | TURNOUT_F_ISRELAIS;
|
|
|
|
|
else
|
|
|
|
|
flags.value = Number(flags.value) & (0xFFFF-TURNOUT_F_ISRELAIS);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function turndetail_cb_close () {
|
|
|
|
|
var win = document.getElementById("turndetail");
|
|
|
|
|
|
|
|
|
@ -544,6 +612,8 @@ function turndetail_setData(elm) {
|
|
|
|
|
var turnflags = document.getElementById("turndet_flags");
|
|
|
|
|
var cbinverse = document.getElementById("turndet_inverse");
|
|
|
|
|
var cbactive = document.getElementById("turndet_active");
|
|
|
|
|
var cbrelais = document.getElementById("turndet_relais");
|
|
|
|
|
var cboutput = document.getElementById("turndet_output");
|
|
|
|
|
|
|
|
|
|
if (elm) {
|
|
|
|
|
if (turnname) turnname.value = elm.name;
|
|
|
|
@ -551,13 +621,21 @@ function turndetail_setData(elm) {
|
|
|
|
|
if (turnaddr) turnaddr.value = elm.addr;
|
|
|
|
|
if (turnflags) turnflags.value = elm.flags;
|
|
|
|
|
if (cbinverse) {
|
|
|
|
|
if (Number(elm.flags) & 1) cbinverse.checked = true;
|
|
|
|
|
if (Number(elm.flags) & TURNOUT_F_INVERSE) cbinverse.checked = true;
|
|
|
|
|
else cbinverse.checked = false;
|
|
|
|
|
}
|
|
|
|
|
if (cbactive) {
|
|
|
|
|
if (Number(elm.flags) & 2) cbactive.checked = true;
|
|
|
|
|
if (Number(elm.flags) & TURNOUT_F_TURNOUT) cbactive.checked = true;
|
|
|
|
|
else cbactive.checked = false;
|
|
|
|
|
}
|
|
|
|
|
if (cboutput) {
|
|
|
|
|
if (Number(elm.flags) & TURNOUT_F_OUTPUTACTIVE) cboutput.checked = true;
|
|
|
|
|
else cboutput.checked = false;
|
|
|
|
|
}
|
|
|
|
|
if (cbrelais) {
|
|
|
|
|
if (Number(elm.flags) & TURNOUT_F_ISRELAIS) cbrelais.checked = true;
|
|
|
|
|
else cbrelais.checked = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|