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:
- reset seems to work fine now.

@ -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);
}

@ -2,6 +2,7 @@
//
//
const LOCO_F_REVERSE = 1;
var locomotives = [];
@ -491,8 +492,14 @@ function lococtrl_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 && 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.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);
}
};

@ -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);
}
};

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

@ -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) {

Loading…
Cancel
Save