bugfixes + added new action SetTurnout

This commit is contained in:
Stephan Richter
2020-12-04 22:10:26 +01:00
parent f7aee12789
commit 3eea978c31
12 changed files with 149 additions and 32 deletions

View File

@@ -1,6 +1,7 @@
package de.srsoftware.web4rail.tiles;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -9,6 +10,7 @@ import java.util.concurrent.TimeoutException;
import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Command;
import de.srsoftware.web4rail.Command.Reply;
import de.srsoftware.web4rail.Device;
@@ -17,6 +19,7 @@ import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Radio;
import de.srsoftware.web4rail.tags.Select;
/**
* Base class for Turnouts
@@ -139,11 +142,23 @@ public abstract class Turnout extends Tile implements Device{
}
}
public static Select selector(Turnout preselect, Collection<Turnout> exclude) {
Select selector = new Select(TURNOUT);
List<Turnout> turnouts = BaseClass.listElements(Turnout.class);
turnouts.sort((t1,t2) -> t1.x == t2.x ? t1.y - t2.y : t1.x - t2.x);
for (Turnout turnout : turnouts) {
if (isSet(exclude) && exclude.contains(turnout)) continue;
Tag option = selector.addOption(turnout.id(), turnout);
if (turnout == preselect) option.attr("selected", "selected");
}
return selector;
}
public State state() {
return state;
}
public Reply state(State newState) throws IOException {
public Reply state(State newState) {
if (train != null && newState != state) return new Reply(415, t("{} locked by {}!",this,train));
if (address == 0) {
state = newState;
@@ -173,10 +188,10 @@ public abstract class Turnout extends Tile implements Device{
LOG.warn(e.getMessage());
}
return new Reply(417,t("Timeout while trying to switch {}.",this));
}
public abstract List<State> states();
public void success() {
this.error = false;
try {

View File

@@ -1,6 +1,7 @@
package de.srsoftware.web4rail.tiles;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import de.srsoftware.web4rail.Connector;
@@ -33,4 +34,9 @@ public class Turnout3E extends Turnout{
return new HashMap<>();
}
}
@Override
public List<State> states() {
return List.of(State.STRAIGHT,State.RIGHT,State.LEFT);
}
}

View File

@@ -40,6 +40,11 @@ public abstract class TurnoutL extends Turnout {
return super.properties(preForm, formInputs, postForm);
}
@Override
public List<State> states() {
return List.of(State.STRAIGHT,State.LEFT);
}
@Override
public Tile update(HashMap<String, String> params) {
if (params.containsKey(STRAIGHT)) portA = Integer.parseInt(params.get(STRAIGHT));

View File

@@ -41,6 +41,11 @@ public abstract class TurnoutR extends Turnout {
return super.properties(preForm, formInputs, postForm);
}
@Override
public List<State> states() {
return List.of(State.STRAIGHT,State.RIGHT);
}
@Override
public Tile update(HashMap<String, String> params) {
if (params.containsKey(STRAIGHT)) portA = Integer.parseInt(params.get(STRAIGHT));