fixing speed and reverse

origin
steffen 5 years ago
parent 7d66e1a77e
commit 5987dde99b

@ -1,3 +1,6 @@
2020-11-29:
- lococtrl display is now working with reverse and forward.
2020-04-25: 2020-04-25:
- reset seems to work fine now. - reset seems to work fine now.

@ -1,8 +1,8 @@
:root { :root {
--bg-color: darkslategrey; --bg-color: #dddddd;
--input-bg-color: #121; --input-bg-color: #c8c8c8;
--input-fg-color: lightgray; --input-fg-color: black;
} }
.GUIwindow { .GUIwindow {
@ -15,7 +15,7 @@
.GUIwindowHead { .GUIwindowHead {
border: 1px solid black; border: 1px solid black;
background: darkgreen; background: #0018ff;
color: white; color: white;
margin: 0px; margin: 0px;
padding: 5px; padding: 5px;
@ -27,7 +27,7 @@
overflow: auto; overflow: auto;
padding: 5px; padding: 5px;
background-color: var(--bg-color); background-color: var(--bg-color);
color: lightgray; color: var(--input-fg-color);
} }

@ -2,6 +2,7 @@
// //
// //
const LOCO_F_REVERSE = 1;
var locomotives = []; var locomotives = [];
@ -491,8 +492,14 @@ function lococtrl_reverse() {
for (var i = 0; i < locomotives.length; i++) { for (var i = 0; i < locomotives.length; i++) {
if (name == locomotives[i].name) { if (name == locomotives[i].name) {
if (locomotives[i].flags & 1) reverse = 0; if (locomotives[i].flags & 1) {
else reverse = 1; reverse = 0;
this.innerHTML = "FWD";
}
else {
reverse = 1;
this.innerHTML = "REV";
}
locomotive_server_Set ({name: name, reverse: reverse}); locomotive_server_Set ({name: name, reverse: reverse});
} }
} }
@ -501,11 +508,15 @@ function lococtrl_reverse() {
function lococtrl_speed() { function lococtrl_speed() {
var name = getTextBetween(this.id, "lococtrl_", "_RANGE"); var name = getTextBetween(this.id, "lococtrl_", "_RANGE");
var reverse = document.getElementById("lococtrl_"+name+"_REVBTN");
let speed = this.value;
if (reverse.innerHTML == "REV") speed = -speed;
debug ("Speed Loco:'"+name+"' Speed:'"+this.value+"'"); debug ("Speed Loco:'"+name+"' Speed:'"+speed+"'");
for (var i = 0; i < locomotives.length; i++) { for (var i = 0; i < locomotives.length; i++) {
if (name == locomotives[i].name) { 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) { function lococtrl_setData(data) {
var range = document.getElementById("lococtrl_"+data.name+"_RANGE"); var range = document.getElementById("lococtrl_"+data.name+"_RANGE");
var reverse = document.getElementById("lococtrl_"+data.name+"_REVBTN");
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";
if (range) {
debug ("lococtrl: speed:" + data.speed);
range.min = 0; range.min = 0;
range.max = data.vmax; if (data.vmax) range.max = data.vmax;
range.value = Math.abs(data.speed); if (data.speed) range.value = Math.abs(data.speed);
} }
}; };

@ -276,18 +276,22 @@ function sensorlist_show() {
var ul = document.getElementById("sensorlist_elements"); 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 // append all sensors
for (var i = 0; i < sensors.length; i++) { for (var i = 0; i < ssorted.length; i++) {
let li = document.createElement("li"); let li = document.createElement("li");
li.appendChild(document.createTextNode(sensors[i].name)); li.appendChild(document.createTextNode(ssorted[i]));
li.setAttribute("id", "sensor_elm_"+sensors[i].name); li.setAttribute("id", "sensor_elm_"+ssorted[i]);
ul.appendChild(li); ul.appendChild(li);
gAddEventListener("sensor_elm_"+sensors[i].name, 'click', sensorlist_clicked); gAddEventListener("sensor_elm_"+ssorted[i], 'click', sensorlist_clicked);
} }
}; };

@ -92,9 +92,7 @@ function serverinout_Save(data) {
function serverinout_defaultCallback(data) { function serverinout_defaultCallback(data) {
if (data.changes) if (data.changes.length > 0) debug ("From Server :" + JSON.stringify(data)); // if (data.changes) if (data.changes.length > 0) debug ("From Server :" + JSON.stringify(data));
if (data.info) {
}
if (data.sid && data.rid) { if (data.sid && data.rid) {
// //
// valid data from server // valid data from server
@ -109,6 +107,11 @@ function serverinout_defaultCallback(data) {
// loop through all the changes // loop through all the changes
if (data.changes) { if (data.changes) {
for (var i = 0; i < data.changes.length; i++) { for (var i = 0; i < data.changes.length; i++) {
//
// Infoline changes
if (data.changes[i].infoline) {
debug ("Info:" + data.changes[i].infoline);
}
// //
// railway changes // railway changes

@ -125,7 +125,7 @@ function trackDrawElement(ctx, element, mode) {
else ctx.strokeStyle = "DimGray"; else ctx.strokeStyle = "DimGray";
trackDrawTrack (ctx, {x: element.x, y: element.y}, altdir); 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 // normal
ctx.lineWidth = 2; 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() { function trackDraw() {
var ctx = track.dbuf.getContext("2d"); var ctx = track.dbuf.getContext("2d");
var elm = {}; var elm = {};
var tmpblocks = new Array();
// debug ("trackDraw pos: " + trackMouse.pos.x + "," + trackMouse.pos.y + // debug ("trackDraw pos: " + trackMouse.pos.x + "," + trackMouse.pos.y +
// " down: " + trackMouse.down.x + "," + trackMouse.down.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); ctx.fillRect(0, 0, track.size.x * track.scale, track.size.y * track.scale);
// //
// // draw elements
for (var i = 0; i < track.elements.length; i++) { 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); 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 // draw down position
if (trackMouse.down.x >= 0) { if (trackMouse.down.x >= 0) {

Loading…
Cancel
Save