diff --git a/pom.xml b/pom.xml index df49a3f..a3bcd53 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.1.7 + 1.1.8 Web4Rail jar Java Model Railway Control diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation index 76e0ca9..c433ee6 100644 --- a/resources/translations/Application.de.translation +++ b/resources/translations/Application.de.translation @@ -93,6 +93,7 @@ Left port\: : Port für links Length : Länge length\: : Länge: length\: {} : Länge: {} +Length unit : Längeneinheit Locomotive manager : Lok-Verwaltung Locomotives\: : Lokomotiven: Manage cars : Waggons verwalten @@ -160,6 +161,7 @@ Signals : Signale Simulating movement of {}... : Simuliere Fahrt von {}... Slower (10 {}) : 10 {} langsamer SOUTH : Süden +Speed unit : Geschwindigkeits-Einheit Start actions : Start-Aktionen Stock ID : Inventarnummer Started {} : {} gestartet diff --git a/src/main/java/de/srsoftware/web4rail/BaseClass.java b/src/main/java/de/srsoftware/web4rail/BaseClass.java index 445c8af..91ddf05 100644 --- a/src/main/java/de/srsoftware/web4rail/BaseClass.java +++ b/src/main/java/de/srsoftware/web4rail/BaseClass.java @@ -15,6 +15,7 @@ public abstract class BaseClass implements Constants{ protected static Plan plan; // the track layout in use public static final Random random = new Random(); public static String speedUnit = DEFAULT_SPEED_UNIT; + public static String lengthUnit = DEFAULT_LENGTH_UNIT; private static final char[] HEX_CHARS = "0123456789ABCDEF".toCharArray(); public static Button contextButton(String context,String text) { String[] parts = context.split(":"); diff --git a/src/main/java/de/srsoftware/web4rail/Constants.java b/src/main/java/de/srsoftware/web4rail/Constants.java index b8a27b5..7205a50 100644 --- a/src/main/java/de/srsoftware/web4rail/Constants.java +++ b/src/main/java/de/srsoftware/web4rail/Constants.java @@ -52,6 +52,7 @@ public interface Constants { public static final String CONTACT = "contact"; public static final String CONTEXT = "context"; public static final String DEFAULT_SPEED_UNIT = "km/h"; + public static final String DEFAULT_LENGTH_UNIT = "mm"; public static final String DISABLED = "disabled"; public static final String GITHUB_URL = "https://github.com/srsoftware-de/Web4Rail"; public static final String ID = "id"; diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java index 5681802..d22c9a2 100644 --- a/src/main/java/de/srsoftware/web4rail/Plan.java +++ b/src/main/java/de/srsoftware/web4rail/Plan.java @@ -131,6 +131,7 @@ public class Plan extends BaseClass{ private static final HashMap clients = new HashMap(); private static final String FULLSCREEN = "fullscreen"; private static final String SPEED_UNIT = "speed_unit"; + private static final String LENGTH_UNIT = "length_unit"; public HashMap tiles = new HashMap(); // The list of tiles of this plan, i.e. the Track layout private HashSet blocks = new HashSet(); // the list of tiles, that are blocks @@ -419,9 +420,9 @@ public class Plan extends BaseClass{ String content = new String(Files.readAllBytes(new File(filename+".plan").toPath()),UTF8); JSONObject json = new JSONObject(content); - JSONArray jTiles = json.getJSONArray(TILE); - jTiles.forEach(object -> Tile.load(object, plan)); - speedUnit = json.getString(SPEED_UNIT); + if (json.has(TILE)) json.getJSONArray(TILE).forEach(object -> Tile.load(object, plan)); + if (json.has(LENGTH_UNIT)) lengthUnit = json.getString(LENGTH_UNIT); + if (json.has(SPEED_UNIT)) speedUnit = json.getString(SPEED_UNIT); try { Train.loadAll(filename+".trains",plan); @@ -603,6 +604,7 @@ public class Plan extends BaseClass{ Form form = new Form("plan-properties-form"); new Input(REALM,REALM_PLAN).hideIn(form); new Input(ACTION,ACTION_UPDATE).hideIn(form); + new Input(LENGTH_UNIT, lengthUnit).addTo(new Label(t("Length unit")+":"+NBSP)).addTo(form); new Input(SPEED_UNIT, speedUnit).addTo(new Label(t("Speed unit")+":"+NBSP)).addTo(form); new Button(t("Save"), form).addTo(form); form.addTo(win); @@ -708,7 +710,8 @@ public class Plan extends BaseClass{ return new JSONObject() .put(TILE, jTiles) - .put(SPEED_UNIT, speedUnit); + .put(SPEED_UNIT, speedUnit) + .put(LENGTH_UNIT, lengthUnit); } /** @@ -894,6 +897,7 @@ public class Plan extends BaseClass{ Tile tile = get(params.get(ID),true); if (isSet(tile)) return tile.update(params); + if (params.containsKey(LENGTH_UNIT)) lengthUnit = params.get(LENGTH_UNIT); if (params.containsKey(SPEED_UNIT)) speedUnit = params.get(SPEED_UNIT); return t("Plan updated."); diff --git a/src/main/java/de/srsoftware/web4rail/moving/Car.java b/src/main/java/de/srsoftware/web4rail/moving/Car.java index 5771a84..4283a5e 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Car.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Car.java @@ -180,7 +180,7 @@ public class Car extends BaseClass implements Comparable{ car.stockId, car.link(), car.maxSpeed == 0 ? "–":(car.maxSpeed+NBSP+speedUnit), - car.length, + car.length+NBSP+lengthUnit, String.join(", ", car.tags()), car.cloneButton() )); @@ -221,7 +221,7 @@ public class Car extends BaseClass implements Comparable{ Fieldset fieldset = new Fieldset("Basic properties"); new Input(NAME,name).addTo(new Label(t("Name")+NBSP)).addTo(fieldset); new Input(STOCK_ID,stockId).addTo(new Label(t("Stock ID")+NBSP)).addTo(fieldset); - new Input(LENGTH,length).attr("type", "number").addTo(new Label(t("Length")+NBSP)).addTo(fieldset); + new Input(LENGTH,length).attr("type", "number").addTo(new Label(t("Length")+NBSP)).content(NBSP+lengthUnit).addTo(fieldset); new Input(TAGS,String.join(", ", tags)).addTo(new Label(t("Tags")+NBSP)).addTo(fieldset); new Input(MAX_SPEED, maxSpeed).numeric().addTo(new Label(t("Maximum speed")+":"+NBSP)).content(NBSP+speedUnit).addTo(fieldset); fieldset.addTo(form); diff --git a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java index 60ad891..060d05e 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java @@ -239,7 +239,7 @@ public class Locomotive extends Car implements Constants,Device{ .map(car -> (Locomotive)car) .sorted(Comparator.comparing(loco -> loco.address)) .sorted(Comparator.comparing(loco -> loco.stockId)) - .forEach(loco -> table.addRow(loco.stockId,loco.link(),loco.maxSpeed == 0 ? "–":loco.maxSpeed+NBSP+speedUnit,loco.proto,loco.address,loco.length,String.join(", ", loco.tags()))); + .forEach(loco -> table.addRow(loco.stockId,loco.link(),loco.maxSpeed == 0 ? "–":loco.maxSpeed+NBSP+speedUnit,loco.proto,loco.address,loco.length+NBSP+lengthUnit,String.join(", ", loco.tags()))); table.addTo(win); diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index 5286272..28c22ff 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -458,7 +458,7 @@ public class Train extends BaseClass implements Comparable { int ms = train.maxSpeed(); table.addRow( train.link(), - train.length(), + train.length()+NBSP+lengthUnit, ms == Integer.MAX_VALUE ? "–" : ms+NBSP+speedUnit, String.join(", ", train.tags()), train.route, diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java index 99b0c29..b953ad7 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java @@ -241,7 +241,7 @@ public abstract class Tile extends BaseClass{ Form form = propForm("tile-properties-"+id()); if (isTrack) { new Tag("h4").content(t("Length")).addTo(form); - new Input(LENGTH,length).numeric().addTo(new Label(t("Length")+":"+NBSP)).addTo(form); + new Input(LENGTH,length).numeric().addTo(new Label(t("Length")+":"+NBSP)).content(NBSP+lengthUnit).addTo(form); new Tag("h4").content(t("Availability")).addTo(form); Checkbox cb = new Checkbox(DISABLED, t("disabled"), disabled); if (disabled) cb.clazz("disabled");