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;