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
//