diff --git a/pom.xml b/pom.xml
index eabad51..a4d1f5d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.2.31
+ 1.2.32
Web4Rail
jar
Java Model Railway Control
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Car.java b/src/main/java/de/srsoftware/web4rail/moving/Car.java
index 47c4b1a..ae1defd 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Car.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Car.java
@@ -70,8 +70,7 @@ public class Car extends BaseClass implements Comparable{
case ACTION_PROPS:
return car == null ? Car.manager() : car.properties();
case ACTION_UPDATE:
- car.update(params);
- return Car.manager();
+ return car.update(params);
}
if (car instanceof Locomotive) return Locomotive.action(params,plan);
return t("Unknown action: {}",params.get(ACTION));
@@ -84,6 +83,7 @@ public class Car extends BaseClass implements Comparable{
clone.tags = new HashSet(tags);
clone.notes = notes;
clone.parent(parent());
+ clone.register();
return clone;
}
@@ -152,13 +152,20 @@ public class Car extends BaseClass implements Comparable{
cars.values()
.stream()
.filter(car -> !(car instanceof Locomotive))
- .sorted((c1,c2)->c2.stockId.compareTo(c1.stockId))
+ .sorted((c1,c2)->{
+ try {
+ return Integer.parseInt(c1.stockId)-Integer.parseInt(c2.stockId);
+ } catch (NumberFormatException nfe) {
+ return c1.stockId.compareTo(c2.stockId);
+ }
+
+ })
.forEach(car -> table.addRow(
car.stockId,
car.link(),
car.maxSpeed == 0 ? "–":(car.maxSpeed+NBSP+speedUnit),
car.length+NBSP+lengthUnit,
- car.train,
+ isSet(car.train) ? car.train.link("span", car.train) : "",
String.join(", ", car.tags()),
car.cloneButton()
));
@@ -232,7 +239,7 @@ public class Car extends BaseClass implements Comparable{
this.train = train;
}
- protected Car update(HashMap params) {
+ protected Window update(HashMap params) {
super.update(params);
if (params.containsKey(NAME)) name = params.get(NAME).trim();
if (params.containsKey(LENGTH)) length = Integer.parseInt(params.get(LENGTH));
@@ -246,7 +253,7 @@ public class Car extends BaseClass implements Comparable{
if (!tag.isEmpty()) tags.add(tag);
}
}
- return this;
+ return properties();
}
@Override
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
index f8002b9..200a743 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
@@ -48,7 +48,7 @@ public class Locomotive extends Car implements Constants,Device{
Locomotive loco = id == null ? null : Locomotive.get(id);
switch (params.get(ACTION)) {
case ACTION_ADD:
- new Locomotive(params.get(Locomotive.NAME)).parent(plan);
+ new Locomotive(params.get(Locomotive.NAME)).parent(plan).register();
return Locomotive.manager();
case ACTION_FASTER10:
return loco.faster(10);
@@ -329,10 +329,10 @@ public class Locomotive extends Car implements Constants,Device{
}
@Override
- protected Car update(HashMap params) {
+ protected Window update(HashMap params) {
super.update(params);
if (params.containsKey(PROTOCOL)) proto = Protocol.valueOf(params.get(PROTOCOL));
if (params.containsKey(ADDRESS)) address = Integer.parseInt(params.get(ADDRESS));
- return this;
+ return properties();
}
}
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java
index f27224f..d7d1476 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Train.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java
@@ -795,12 +795,12 @@ public class Train extends BaseClass implements Comparable {
public Tag turn() {
LOG.debug("train.turn()");
+ for (Locomotive loco : locos) loco.turn();
if (isSet(direction)) {
direction = direction.inverse();
- for (Locomotive loco : locos) loco.turn();
reverseTrace();
- if (isSet(currentBlock)) plan.place(currentBlock);
}
+ if (isSet(currentBlock)) plan.place(currentBlock);
return properties();
}