diff --git a/pom.xml b/pom.xml
index e2f59c1..d31dd07 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.2.47
+ 1.2.48
Web4Rail
jar
Java Model Railway Control
diff --git a/src/main/java/de/srsoftware/web4rail/BaseClass.java b/src/main/java/de/srsoftware/web4rail/BaseClass.java
index 5280a55..f333c15 100644
--- a/src/main/java/de/srsoftware/web4rail/BaseClass.java
+++ b/src/main/java/de/srsoftware/web4rail/BaseClass.java
@@ -340,7 +340,11 @@ public abstract class BaseClass implements Constants{
}
public Tag link(String tagClass,Object caption,Map additionalProps) {
- String json = new JSONObject(props(additionalProps)).toString().replace("\"", "'");
+ return link(tagClass,caption.toString(),props(additionalProps));
+ }
+
+ public static Tag link(String tagClass,String caption,Map props) {
+ String json = new JSONObject(props).toString().replace("\"", "'");
return new Tag(tagClass).clazz("link").attr("onclick","request("+json+")").content(caption.toString());
}
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Car.java b/src/main/java/de/srsoftware/web4rail/moving/Car.java
index a266065..87edb59 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Car.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Car.java
@@ -43,6 +43,7 @@ public class Car extends BaseClass implements Comparable{
private static final String TAGS = "tags";
private static final String MAX_SPEED = "max_speed";
private static final String MAX_SPEED_REVERSE = "max_speed_reverse";
+ private static final String ORDER = "order";
protected HashSet tags = new HashSet();
private String name;
@@ -72,14 +73,14 @@ public class Car extends BaseClass implements Comparable{
if (isSet(car)) {
car.clone();
} else new Car(params.get(Car.NAME)).parent(plan);
- return Car.manager();
+ return Car.manager(params);
case ACTION_DROP:
car.remove();
- return Car.manager();
+ return Car.manager(params);
case ACTION_MOVE:
return car.moveUp();
case ACTION_PROPS:
- return car == null ? Car.manager() : car.properties();
+ return car == null ? Car.manager(params) : car.properties();
case ACTION_TURN:
return car.turn();
case ACTION_UPDATE:
@@ -92,6 +93,7 @@ public class Car extends BaseClass implements Comparable{
public Car clone() {
Car clone = new Car(name);
clone.maxSpeedForward = maxSpeedForward;
+ clone.maxSpeedReverse = maxSpeedReverse;
clone.length = length;
clone.tags = new HashSet(tags);
clone.notes = notes;
@@ -161,23 +163,33 @@ public class Car extends BaseClass implements Comparable{
return this;
}
- public static Object manager() {
+ public static Object manager(HashMap params) {
Window win = new Window("car-manager", t("Car manager"));
new Tag("h4").content(t("known cars")).addTo(win);
new Tag("p").content(t("Click on a name to edit the entry.")).addTo(win);
- Table table = new Table().addHead(t("Stock ID"),t("Name"),t("Max. Speed",speedUnit),t("Length"),t("Train"),t("Tags"),t("Actions"));
+ String order = params.get(ORDER);
+
+ Tag nameLink = link("span", t("Name"), Map.of(REALM,REALM_CAR,ACTION,ACTION_PROPS,ORDER,NAME));
+ Table table = new Table().addHead(t("Stock ID"),nameLink,t("Max. Speed",speedUnit),t("Length"),t("Train"),t("Tags"),t("Actions"));
List cars = BaseClass.listElements(Car.class)
.stream()
.filter(car -> !(car instanceof Locomotive))
- .sorted((c1,c2)->{
+ .collect(Collectors.toList());
+
+ cars.sort((c1,c2)->{
try {
return Integer.parseInt(c1.stockId)-Integer.parseInt(c2.stockId);
} catch (NumberFormatException nfe) {
return c1.stockId.compareTo(c2.stockId);
}
-
- }).collect(Collectors.toList());
+ });
+
+ if (isSet(order)) switch (order) {
+ case NAME:
+ cars.sort((c1,c2)->c1.name().compareTo(c2.name()));
+ }
+
for (Car car : cars) {
String maxSpeed = (car.maxSpeedForward == 0 ? "–":""+car.maxSpeedForward)+NBSP;
if (car.maxSpeedReverse != car.maxSpeedForward) maxSpeed += "("+car.maxSpeedReverse+")"+NBSP;
@@ -295,7 +307,7 @@ public class Car extends BaseClass implements Comparable{
return properties();
}
- public String turn() {
+ public Object turn() {
orientation = !orientation;
return t("Reversed {}.",this);
}
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
index d7ec927..eaab2e6 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
@@ -327,10 +327,11 @@ public class Locomotive extends Car implements Constants,Device{
return t("Unknown function: {}",f);
}
- public String turn() {
+ public Object turn() {
stop();
super.turn();
- return t("Stopped and reversed {}.",this);
+ plan.stream(t("Stopped and reversed {}.",this));
+ return properties();
}
@Override
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java
index 43d6f58..9a75160 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Train.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java
@@ -286,6 +286,7 @@ public class Train extends BaseClass implements Comparable {
Train train = new Train(loco);
train.parent(plan);
if (params.containsKey(NAME)) train.name(params.get(NAME));
+ train.register();
return train.properties();
}
diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
index ec331f3..81e3e47 100644
--- a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
+++ b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
@@ -97,7 +97,7 @@ public class Contact extends Tile{
}
public Contact addr(int address) {
- Contact oldContact = contactsByAddr.remove(addr); // alte ID aus der Map löschen
+ contactsByAddr.remove(addr); // alte ID aus der Map löschen
addr = address;
if (addr != 0) contactsByAddr.put(addr, this); // neue ID setzen
return this;