// // // var blocks = []; const BLOCK_F_OFF = 0x0001; const BLOCK_F_SPLIT = 0x0002; const BLOCK_F_SPLITPOS = 0x0004; const BLOCK_F_SHORT = 0x0010; const BLOCK_F_ENDSTATION = 0x0040; const BLOCK_F_STATION = 0x0080; const BLOCK_F_SPEEDLIMIT = 0x0100; const BLOCK_F_ONLYCARGO = 0x0200; const BLOCK_F_ONLYPASSENGER = 0x0400; // // update or add a new element // function block_Update(blockdata) { for (var i = 0; i < blocks.length; i++) { if (blockdata.name == blocks[i].name) { blocks[i].name = blockdata.name; blocks[i].flags = blockdata.flags; blocks[i].lockedby = blockdata.lockedby; blocks[i].sensor_stop_0 = blockdata.sensor_stop_0, blocks[i].sensor_shortstop_0 = blockdata.sensor_shortstop_0, blocks[i].sensor_slow_0 = blockdata.sensor_slow_0, blocks[i].sensor_enter_0 = blockdata.sensor_enter_0, blocks[i].sensor_stop_1 = blockdata.sensor_stop_1, blocks[i].sensor_shortstop_1 = blockdata.sensor_shortstop_1, blocks[i].sensor_slow_1 = blockdata.sensor_slow_1, blocks[i].sensor_enter_1 = blockdata.sensor_enter_1, blockdetail_setData(blocks[i]); return; } } // not found add element //console.log ("Add Interface:" + intdata.name + "(" + intdata.host + ")"); blocks.push ({ name: blockdata.name, flags: blockdata.flags, lockedby: blockdata.lockedby, sensor_enter_0: blockdata.sensor_enter_0, sensor_slow_0: blockdata.sensor_slow_0, sensor_stop_0: blockdata.sensor_stop_0, sensor_shortstop_0: blockdata.sensor_shortstop_0, sensor_enter_1: blockdata.sensor_enter_1, sensor_slow_1: blockdata.sensor_slow_1, sensor_stop_1: blockdata.sensor_stop_1, sensor_shortstop_1: blockdata.sensor_shortstop_1 }); }; // // 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 block_Delete(name) { var l = new Array(); for (var i = 0; i < blocks.length; i++) { if (name != blocks[i].name) { l.push (blocks[i]); } } // clear list and replace list with new data. blocks.lenght = 0; blocks = l; }; function block_contextmenu(name) { let innerhtml = ""; innerhtml = "

"; innerhtml += "
"; innerhtml += "
"; innerhtml += "
"; innerhtml += "
"; innerhtml += "
"; innerhtml += "
"; innerhtml += "
"; gContextmenuCreate(name, innerhtml); gAddEventListener("contextbox_AsgnLU", 'click', block_ctxmenu_AssignLU); gAddEventListener("contextbox_AsgnRD", 'click', block_ctxmenu_AssignRD); gAddEventListener("contextbox_SetDLU", 'click', block_ctxmenu_DestinationLU); gAddEventListener("contextbox_SetDRD", 'click', block_ctxmenu_DestinationRD); gAddEventListener("contextbox_Clear", 'click', block_ctxmenu_Clear); gAddEventListener("contextbox_Off", 'click', block_ctxmenu_Off); gAddEventListener("contextbox_Close", 'click', gContextmenuClose); }; function block_ctxmenu_DestinationLU (element, value) { let loc = document.getElementById("contextbox_loc"); let name = document.getElementById("ConextMenuHead").innerHTML; if (loc) { locomotive_server_Dest(loc.value, name, 1); } gContextmenuClose(); }; function block_ctxmenu_DestinationRD (element, value) { let loc = document.getElementById("contextbox_loc"); let name = document.getElementById("ConextMenuHead").innerHTML; if (loc) { locomotive_server_Dest(loc.value, name, 0); } gContextmenuClose(); }; function block_ctxmenu_AssignLU (element, value) { let loc = document.getElementById("contextbox_loc"); let name = document.getElementById("ConextMenuHead").innerHTML; if (loc) { locomotive_server_Assign(loc.value, name, 1); } gContextmenuClose(); }; function block_ctxmenu_AssignRD (element, value) { let loc = document.getElementById("contextbox_loc"); let name = document.getElementById("ConextMenuHead").innerHTML; if (loc) { locomotive_server_Assign(loc.value, name, 0); } gContextmenuClose(); }; function block_ctxmenu_Clear (element, value) { let name = document.getElementById("ConextMenuHead").innerHTML; block_server_Clear(name); gContextmenuClose(); } function block_ctxmenu_Off (element, value) { let name = document.getElementById("ConextMenuHead").innerHTML; block_server_Off(name); gContextmenuClose(); } // // send new element to server // function block_server_Add(elm) { var request = { command: "addblock", block: elm }; serverinout (request, serverinout_defaultCallback); }; // // send delete element to server // function block_server_Del(elm) { var request = { command: "delblock", block: elm }; serverinout (request, serverinout_defaultCallback); }; // // send clear block // function block_server_Clear(blockname) { var request = { command: "blockclear", block: blockname }; serverinout (request, serverinout_defaultCallback); }; // // send put block off service // function block_server_Off(blockname) { var request = { command: "blockoff", block: blockname }; console.log ("send BlockOff:" + blockname); serverinout (request, serverinout_defaultCallback); }; // // if create is set the name should be filled in function blockdetail_fillsensor() { let r = ""; for (var i = 0; i < sensors.length; i++) { if (sensors[i].name) r += ""; }; return r; } function blockdetail_show(name, create) { var win = document.getElementById("blockdetail"); let innerHTML = " \
\ Block Name: \
\ \ \


\
\ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \
\
Automatic Mode \ " innerHTML += "
Lockedby:
"; innerHTML += ""; innerHTML += ""; innerHTML += ""; innerHTML += ""; innerHTML += ""; innerHTML += ""; innerHTML += ""; innerHTML += ""; innerHTML += ""; innerHTML += ""; innerHTML += ""; innerHTML += "
enterslowshortstopstop
Direction →↓:
Direction ←↑:
"; innerHTML += "\

\
\ \ \ \
\ \ "; console.log ("blockdetail_show"); if (!win) { console.log ("blockdetail_show create window"); win = gWindowCreate("blockdetail", "Block", 500, 400, innerHTML); gAddEventListener("blockdet_CLOSE", 'click', blockdetail_cb_close); gAddEventListener("blockdet_DELETE", 'click', blockdetail_cb_delete); gAddEventListener("blockdet_SAVE", 'click', blockdetail_cb_save); gAddEventListener("blockdet_NEXT", 'click', blockdetail_cb_next); gAddEventListener("blockdet_PREV", 'click', blockdetail_cb_prev); } if (name) { for (var i = 0; i < blocks.length; i++) { if (name == blocks[i].name) blockdetail_setData(blocks[i]); } } if (create) { let rname = document.getElementById("blockdet_name"); if (rname.value != name) rname.value = name; } }; function blockdetail_cb_close () { var win = document.getElementById("blockdetail"); if (win) document.body.removeChild(win); }; // // Callback: Delete Button // function blockdetail_cb_delete () { var elm = {}; elm = blockdetail_getData(); block_Delete(elm.name); block_server_Del(elm); }; // // Callback: Save Button // function blockdetail_cb_save () { var elm = {}; elm = blockdetail_getData(); block_Update(elm); block_server_Add(elm); }; // // Callback: Next Button // function blockdetail_cb_next () { var cursel = -1; var name = document.getElementById("blockdet_name"); for (var i = 0; i < blocks.length; i++) { if (name.value == blocks[i].name) cursel = i; } cursel = cursel + 1; if (cursel >= blocks.length) cursel = 0; if (cursel < 0) cursel = 0; for (var i = 0; i < blocks.length; i++) { if (i == cursel) blockdetail_setData(blocks[i]); } // console.log ("Cursel: " + cursel + " interfaces.lenght:" + interfaces.length); }; // // Callback: Prev Button // function blockdetail_cb_prev () { var cursel = -1; var name = document.getElementById("blockdet_name"); for (var i = 0; i < blocks.length; i++) { if (name.value == blocks[i].name) cursel = i; } cursel = cursel - 1; if (cursel < 0 || cursel >= blocks.length) cursel = blocks.length - 1; for (var i = 0; i < blocks.length; i++) { if (i == cursel) blockdetail_setData(blocks[i]); } // console.log ("Cursel: " + cursel + " interfaces.lenght:" + interfaces.length); }; // // fill out all the elements on the dialogbox // function blockdetail_setData(elm) { var name = document.getElementById("blockdet_name"); var flagoff = document.getElementById("blockdet_flagoff"); var flagshort = document.getElementById("blockdet_flagshort"); var flagsplit = document.getElementById("blockdet_flagsplit"); var flagsplitpos = document.getElementById("blockdet_flagsplitpos"); var flagend = document.getElementById("blockdet_flagend"); var flagonlycargo = document.getElementById("blockdet_flagonlycargo"); var flagonlypassenger = document.getElementById("blockdet_flagonlypassenger"); var flagstation = document.getElementById("blockdet_flagstation"); var flagspeedlimit = document.getElementById("blockdet_flagspeedlimit"); var sensor_enter_0 = document.getElementById("blockdet_sensor_enter_0"); var sensor_slow_0 = document.getElementById("blockdet_sensor_slow_0"); var sensor_stop_0 = document.getElementById("blockdet_sensor_stop_0"); var sensor_shortstop_0 = document.getElementById("blockdet_sensor_shortstop_0"); var sensor_enter_1 = document.getElementById("blockdet_sensor_enter_1"); var sensor_slow_1 = document.getElementById("blockdet_sensor_slow_1"); var sensor_stop_1 = document.getElementById("blockdet_sensor_stop_1"); var sensor_shortstop_1 = document.getElementById("blockdet_sensor_shortstop_1"); var lockedby = document.getElementById("blockdet_lockedby"); if (elm) { if (name) name.value = elm.name; if (flagoff) flagoff.checked = Number(elm.flags) & BLOCK_F_OFF; if (flagshort) flagshort.checked = Number(elm.flags) & BLOCK_F_SHORT; if (flagsplit) flagsplit.checked = Number(elm.flags) & BLOCK_F_SPLIT; if (flagsplitpos) flagsplitpos.checked = Number(elm.flags) & BLOCK_F_SPLITPOS; if (flagend) flagend.checked = Number(elm.flags) & BLOCK_F_ENDSTATION; if (flagonlycargo) flagonlycargo.checked = Number(elm.flags) & BLOCK_F_ONLYCARGO; if (flagonlypassenger) flagonlypassenger.checked = Number(elm.flags) & BLOCK_F_ONLYPASSENGER; if (flagstation) flagstation.checked = Number(elm.flags) & BLOCK_F_STATION; if (flagspeedlimit) flagspeedlimit.checked = Number(elm.flags) & BLOCK_F_SPEEDLIMIT; if (sensor_enter_0) sensor_enter_0.value = elm.sensor_enter_0; if (sensor_slow_0) sensor_slow_0.value = elm.sensor_slow_0; if (sensor_stop_0) sensor_stop_0.value = elm.sensor_stop_0; if (sensor_shortstop_0) sensor_shortstop_0.value = elm.sensor_shortstop_0; if (sensor_enter_1) sensor_enter_1.value = elm.sensor_enter_1; if (sensor_slow_1) sensor_slow_1.value = elm.sensor_slow_1; if (sensor_stop_1) sensor_stop_1.value = elm.sensor_stop_1; if (sensor_shortstop_1) sensor_shortstop_1.value = elm.sensor_shortstop_1; if (lockedby) lockedby.value = elm.lockedby; } }; // // return all elements from the dialogbox // function blockdetail_getData() { var res = { name: "", flags:0 }; var name = document.getElementById("blockdet_name"); var flagoff = document.getElementById("blockdet_flagoff"); var flagshort = document.getElementById("blockdet_flagshort"); var flagsplit = document.getElementById("blockdet_flagsplit"); var flagsplitpos = document.getElementById("blockdet_flagsplitpos"); var flagend = document.getElementById("blockdet_flagend"); var flagonlycargo = document.getElementById("blockdet_flagonlycargo"); var flagonlypassenger = document.getElementById("blockdet_flagonlypassenger"); var flagstation = document.getElementById("blockdet_flagstation"); var flagspeedlimit = document.getElementById("blockdet_flagspeedlimit"); var sensor_enter_0 = document.getElementById("blockdet_sensor_enter_0"); var sensor_slow_0 = document.getElementById("blockdet_sensor_slow_0"); var sensor_stop_0 = document.getElementById("blockdet_sensor_stop_0"); var sensor_shortstop_0 = document.getElementById("blockdet_sensor_shortstop_0"); var sensor_enter_1 = document.getElementById("blockdet_sensor_enter_1"); var sensor_slow_1 = document.getElementById("blockdet_sensor_slow_1"); var sensor_stop_1 = document.getElementById("blockdet_sensor_stop_1"); var sensor_shortstop_1 = document.getElementById("blockdet_sensor_shortstop_1"); if (name) res.name = name.value; if (flagoff.checked) res.flags |= BLOCK_F_OFF; else res.flags &= ~BLOCK_F_OFF; if (flagshort.checked) res.flags |= BLOCK_F_SHORT; else res.flags &= ~BLOCK_F_SHORT; if (flagsplit.checked) res.flags |= BLOCK_F_SPLIT; else res.flags &= ~BLOCK_F_SPLIT; if (flagsplitpos.checked) res.flags |= BLOCK_F_SPLITPOS; else res.flags &= ~BLOCK_F_SPLITPOS; if (flagend.checked) res.flags |= BLOCK_F_ENDSTATION; else res.flags &= ~BLOCK_F_ENDSTATION; if (flagonlycargo.checked) res.flags |= BLOCK_F_ONLYCARGO; else res.flags &= ~BLOCK_F_ONLYCARGO; if (flagonlypassenger.checked) res.flags |= BLOCK_F_ONLYPASSENGER; else res.flags &= ~BLOCK_F_ONLYPASSENGER; if (flagstation.checked) res.flags |= BLOCK_F_STATION; else res.flags &= ~BLOCK_F_STATION; if (flagspeedlimit.checked) res.flags |= BLOCK_F_SPEEDLIMIT; else res.flags &= ~BLOCK_F_SPEEDLIMIT; if (sensor_enter_0) res.sensor_enter_0 = sensor_enter_0.value; if (sensor_slow_0) res.sensor_slow_0 = sensor_slow_0.value; if (sensor_stop_0) res.sensor_stop_0 = sensor_stop_0.value; if (sensor_shortstop_0) res.sensor_shortstop_0 = sensor_shortstop_0.value; if (sensor_enter_1) res.sensor_enter_1 = sensor_enter_1.value; if (sensor_slow_1) res.sensor_slow_1 = sensor_slow_1.value; if (sensor_stop_1) res.sensor_stop_1 = sensor_stop_1.value; if (sensor_shortstop_1) res.sensor_shortstop_1 = sensor_shortstop_1.value; return res; };