From 5987dde99b2e549325f12fdb39bc3e168247219b Mon Sep 17 00:00:00 2001 From: steffen Date: Sun, 29 Nov 2020 10:32:58 +0000 Subject: [PATCH] fixing speed and reverse --- ChangeLog | 3 +++ webinterface/gui/gui.css | 10 +++++----- webinterface/locomotive.js | 35 +++++++++++++++++++++++++---------- webinterface/sensor.js | 16 ++++++++++------ webinterface/serverinout.js | 9 ++++++--- webinterface/track.js | 35 ++++++++++++++++++++++++++++++----- 6 files changed, 79 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index 265af65..3d4a2a6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2020-11-29: +- lococtrl display is now working with reverse and forward. + 2020-04-25: - reset seems to work fine now. diff --git a/webinterface/gui/gui.css b/webinterface/gui/gui.css index fe39365..921ddaa 100644 --- a/webinterface/gui/gui.css +++ b/webinterface/gui/gui.css @@ -1,8 +1,8 @@ :root { - --bg-color: darkslategrey; - --input-bg-color: #121; - --input-fg-color: lightgray; + --bg-color: #dddddd; + --input-bg-color: #c8c8c8; + --input-fg-color: black; } .GUIwindow { @@ -15,7 +15,7 @@ .GUIwindowHead { border: 1px solid black; - background: darkgreen; + background: #0018ff; color: white; margin: 0px; padding: 5px; @@ -27,7 +27,7 @@ overflow: auto; padding: 5px; background-color: var(--bg-color); - color: lightgray; + color: var(--input-fg-color); } diff --git a/webinterface/locomotive.js b/webinterface/locomotive.js index d254ab1..64c95f9 100644 --- a/webinterface/locomotive.js +++ b/webinterface/locomotive.js @@ -2,6 +2,7 @@ // // +const LOCO_F_REVERSE = 1; var locomotives = []; @@ -488,11 +489,17 @@ function lococtrl_show(name) { function lococtrl_reverse() { var name = getTextBetween(this.id, "lococtrl_", "_REVBTN"); var reverse; - + for (var i = 0; i < locomotives.length; i++) { if (name == locomotives[i].name) { - if (locomotives[i].flags & 1) reverse = 0; - else reverse = 1; + if (locomotives[i].flags & 1) { + reverse = 0; + this.innerHTML = "FWD"; + } + else { + reverse = 1; + this.innerHTML = "REV"; + } locomotive_server_Set ({name: name, reverse: reverse}); } } @@ -501,11 +508,15 @@ function lococtrl_reverse() { function lococtrl_speed() { var name = getTextBetween(this.id, "lococtrl_", "_RANGE"); + var reverse = document.getElementById("lococtrl_"+name+"_REVBTN"); - debug ("Speed Loco:'"+name+"' Speed:'"+this.value+"'"); + let speed = this.value; + if (reverse.innerHTML == "REV") speed = -speed; + + debug ("Speed Loco:'"+name+"' Speed:'"+speed+"'"); for (var i = 0; i < locomotives.length; i++) { if (name == locomotives[i].name) { - locomotive_server_Set ({name: name, speed: this.value}); + locomotive_server_Set ({name: name, speed: speed}); } } }; @@ -513,13 +524,17 @@ function lococtrl_speed() { function lococtrl_setData(data) { var range = document.getElementById("lococtrl_"+data.name+"_RANGE"); + var reverse = document.getElementById("lococtrl_"+data.name+"_REVBTN"); - - if (range) { - debug ("lococtrl: speed:" + data.speed); + if (range && reverse) { + debug ("lococtrl: speed:" + data.speed + " vmax:" + + data.vmax + " flags:" + data.flags); + if (data.flags & LOCO_F_REVERSE) reverse.innerHTML = "REV"; + else reverse.innerHTML = "FWD"; + range.min = 0; - range.max = data.vmax; - range.value = Math.abs(data.speed); + if (data.vmax) range.max = data.vmax; + if (data.speed) range.value = Math.abs(data.speed); } }; diff --git a/webinterface/sensor.js b/webinterface/sensor.js index 03cd981..252449f 100644 --- a/webinterface/sensor.js +++ b/webinterface/sensor.js @@ -276,18 +276,22 @@ function sensorlist_show() { var ul = document.getElementById("sensorlist_elements"); // - // clear list - + // sort list + var ssorted = new Array(); + for (var i = 0; i < sensors.length; i++) { + ssorted.push(sensors[i].name); + } + ssorted.sort(); // // append all sensors - for (var i = 0; i < sensors.length; i++) { + for (var i = 0; i < ssorted.length; i++) { let li = document.createElement("li"); - li.appendChild(document.createTextNode(sensors[i].name)); - li.setAttribute("id", "sensor_elm_"+sensors[i].name); + li.appendChild(document.createTextNode(ssorted[i])); + li.setAttribute("id", "sensor_elm_"+ssorted[i]); ul.appendChild(li); - gAddEventListener("sensor_elm_"+sensors[i].name, 'click', sensorlist_clicked); + gAddEventListener("sensor_elm_"+ssorted[i], 'click', sensorlist_clicked); } }; diff --git a/webinterface/serverinout.js b/webinterface/serverinout.js index 07900fd..c0e196d 100644 --- a/webinterface/serverinout.js +++ b/webinterface/serverinout.js @@ -92,9 +92,7 @@ function serverinout_Save(data) { function serverinout_defaultCallback(data) { - if (data.changes) if (data.changes.length > 0) debug ("From Server :" + JSON.stringify(data)); - if (data.info) { - } +// if (data.changes) if (data.changes.length > 0) debug ("From Server :" + JSON.stringify(data)); if (data.sid && data.rid) { // // valid data from server @@ -109,6 +107,11 @@ function serverinout_defaultCallback(data) { // loop through all the changes if (data.changes) { for (var i = 0; i < data.changes.length; i++) { + // + // Infoline changes + if (data.changes[i].infoline) { + debug ("Info:" + data.changes[i].infoline); + } // // railway changes diff --git a/webinterface/track.js b/webinterface/track.js index 042f590..579c8c1 100644 --- a/webinterface/track.js +++ b/webinterface/track.js @@ -125,7 +125,7 @@ function trackDrawElement(ctx, element, mode) { else ctx.strokeStyle = "DimGray"; trackDrawTrack (ctx, {x: element.x, y: element.y}, altdir); } - else if (element.type == RAILWAY_NORMAL || element.type == RAILWAY_SENSOR) { + else if (element.type == RAILWAY_NORMAL || element.type == RAILWAY_SENSOR || element.type == RAILWAY_BLOCK) { // // normal ctx.lineWidth = 2; @@ -220,12 +220,27 @@ function trackDrawElement(ctx, element, mode) { }; + +function trackDrawBlock(ctx, blockelm) { + ctx.beginPath(); + ctx.lineWidth = 2; + ctx.setLineDash([0,0]); + ctx.strokeStyle = "DeepPink"; + ctx.moveTo((blockelm.x+0.25) * track.scale, (blockelm.y+0.25) * track.scale); + ctx.lineTo((blockelm.x+0.75) * track.scale, (blockelm.y+0.75) * track.scale); + ctx.moveTo((blockelm.x+0.75) * track.scale, (blockelm.y+0.25) * track.scale); + ctx.lineTo((blockelm.x+0.25) * track.scale, (blockelm.y+0.75) * track.scale); + ctx.stroke(); +}; + + function trackDraw() { var ctx = track.dbuf.getContext("2d"); var elm = {}; + var tmpblocks = new Array(); -// debug ("trackDraw pos: " + trackMouse.pos.x + "," + trackMouse.pos.y + -// " down: " + trackMouse.down.x + "," + trackMouse.down.y); + // debug ("trackDraw pos: " + trackMouse.pos.x + "," + trackMouse.pos.y + + // " down: " + trackMouse.down.x + "," + trackMouse.down.y); // @@ -234,11 +249,21 @@ function trackDraw() { ctx.fillRect(0, 0, track.size.x * track.scale, track.size.y * track.scale); // - // - for (var i = 0; i < track.elements.length; i++) { + // draw elements + for (var i = 0; i < track.elements.length; i++) if (track.elements[i]) { + if (track.elements[i].type == RAILWAY_BLOCK) { + tmpblocks.push (track.elements[i]); + } trackDrawElement(ctx, track.elements[i], 0); } + // + // draw block + for (var i = 0; i < tmpblocks.length; i++) { + trackDrawBlock(ctx, tmpblocks[i]); + } + tmpblocks.length = 0; + // // draw down position if (trackMouse.down.x >= 0) {