diff --git a/ChangeLog b/ChangeLog index 3b31c28..9f3e370 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2021-01-15: +- web interface for block assignemt seems ready + 2020-12-05: - locomotive fixed division by zero - webinterface: speed 0 was not displayed corecctly in ctrl screen. diff --git a/webinterface/block.js b/webinterface/block.js index f804970..36af14d 100644 --- a/webinterface/block.js +++ b/webinterface/block.js @@ -47,54 +47,78 @@ function block_Delete(name) { function block_contextmenu(name) { - gContextmenuCreate(name); + let innerhtml = ""; - gContextmenuAdd("Locomotives", 0, 0); + innerhtml = "

"; + innerhtml += "
"; + innerhtml += "
"; + innerhtml += "
"; + innerhtml += "
"; + innerhtml += "
"; + innerhtml += "
"; + innerhtml += "
"; + + gContextmenuCreate(name, innerhtml); + + gAddEventListener("contextbox_AsgnLD", 'click', block_ctxmenu_AssignLD); + gAddEventListener("contextbox_AsgnRU", 'click', block_ctxmenu_AssignRU); + gAddEventListener("contextbox_SetDLD", 'click', block_ctxmenu_DestinationLD); + gAddEventListener("contextbox_SetDRU", 'click', block_ctxmenu_DestinationRU); + gAddEventListener("contextbox_Clear", 'click', block_ctxmenu_Clear); + gAddEventListener("contextbox_Off", 'click', block_ctxmenu_Off); + gAddEventListener("contextbox_Close", 'click', gContextmenuClose); }; -function block_ctxmenu_LocoSelect (element, value) { - alert ("LocoSelect:" + value); -}; - - -function block_ctxmenu_LocoDestinationFWD (element, value) { - alert ("DestinationFWD:" + value); +function block_ctxmenu_DestinationLD (element, value) { + let loc = document.getElementById("contextbox_loc"); + if (loc) { + locomotive_server_Dest(loc.value, element.name, 1); + } }; -function block_ctxmenu_LocoDestinationREV (element, value) { - alert ("DestinationREV:" + value); +function block_ctxmenu_DestinationRU (element, value) { + let loc = document.getElementById("contextbox_loc"); + if (loc) { + locomotive_server_Dest(loc.value, element.name, 0); + } + gContextmenuClose(); }; -function block_ctxmenu_LocoAssignFWD (element, value) { - alert ("AssignFWD:" + value); +function block_ctxmenu_AssignLD (element, value) { + let loc = document.getElementById("contextbox_loc"); + if (loc) { + locomotive_server_Assign(loc.value, element.name, 1); + } + gContextmenuClose(); }; -function block_ctxmenu_LocoAssignREV (element, value) { - alert ("AssignREV:" + value); +function block_ctxmenu_AssignRU (element, value) { + let loc = document.getElementById("contextbox_loc"); + if (loc) { + locomotive_server_Assign(loc.value, element.name, 0); + } + gContextmenuClose(); }; function block_ctxmenu_Clear (element, value) { - // value == 0 ... clear - // value == 1 ... Put Off Service - alert ("Clear / Off Service"); + block_server_Clear(element.name); + gContextmenuClose(); +} + +function block_ctxmenu_Off (element, value) { + block_server_Off(element.name); + gContextmenuClose(); } @@ -116,6 +140,23 @@ function block_server_Del(elm) { }; +// +// 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 }; + serverinout (request, serverinout_defaultCallback); +}; + function blockdetail_show(name) { var win = document.getElementById("blockdetail"); diff --git a/webinterface/gui/gui.css b/webinterface/gui/gui.css index 2d4b2e4..e3be78b 100644 --- a/webinterface/gui/gui.css +++ b/webinterface/gui/gui.css @@ -68,7 +68,8 @@ .GUIcontextmenuClient { overflow: auto; - padding: 0px; + padding: 2px; + margin: 0px; background-color: var(--contextmenu-bg-color); color: var(--contextmenu-fg-color); text-size: small; diff --git a/webinterface/gui/gui.js b/webinterface/gui/gui.js index 0148952..06c32ca 100644 --- a/webinterface/gui/gui.js +++ b/webinterface/gui/gui.js @@ -58,7 +58,7 @@ function getTextBetween(fulltext, text1, text2) { // // Context Menus -function gContextmenuCreate(title) { +function gContextmenuCreate(title, clientInnerHTML) { let cm = document.getElementById("ContextMenu"); if (cm) { let parent = cm.parentNode; @@ -72,16 +72,11 @@ function gContextmenuCreate(title) { head.setAttribute("class", "GUIcontextmenuHead"); head.innerHTML = title; - var ul = document.createElement("ul"); - ul.setAttribute("id", "ContextMenuElements"); - ul.setAttribute("class", "GUIcontextmenuElements"); - var client = document.createElement("div"); client.setAttribute("id", "ContextMenuClient"); client.setAttribute("class", "GUIcontextmenuClient"); client.setAttribute("style", "max-height: 400px; max-width:150px;"); - client.innerHTML = ""; - client.appendChild (ul); + client.innerHTML = clientInnerHTML; cm = document.createElement("div"); cm.setAttribute("id", "ContextMenu"); @@ -96,28 +91,6 @@ function gContextmenuCreate(title) { return cm; }; - -function gContextmenuAdd(text, callback_function, value) { - let ul = document.getElementById("ContextMenuElements"); - - if (ul) { - let li = document.createElement("li"); - - li.innerHTML = text; - li.value = value; - if (typeof callback_function === 'object' && callback_function !== null) { - li.addEventListener("click", callback_function); - debug ("add event listener."); - } - else { - debug ("add event listener."); - } - - ul.appendChild(li); - } -}; - - function gContextmenuClose() { let cm = document.getElementById("ContextMenu"); if (cm) { diff --git a/webinterface/locomotive.js b/webinterface/locomotive.js index e85a44a..7869b99 100644 --- a/webinterface/locomotive.js +++ b/webinterface/locomotive.js @@ -88,6 +88,28 @@ function locomotive_server_Del(elm) { }; +// +// send locomotive assignment to server (is blockname is empty clear assignment) +// +function locomotive_server_Assign(locname, blockname, reverse) { + var request = { command: "locomotiveassign", locomotive: locname, block: blockname, reverse: reverse }; + serverinout (request, serverinout_defaultCallback); +}; + + +// +// set locomotive destination to server (is blockname is empty clear assignment) +// +function locomotive_server_Dest(locname, blockname, reverse) { + var request = { command: "locomotivedestination", locomotive: locname, block: blockname, reverse: reverse }; + serverinout (request, serverinout_defaultCallback); +}; + + + + + + // // send delete element to server //