improved car manager
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -4,7 +4,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>de.srsoftware</groupId>
|
<groupId>de.srsoftware</groupId>
|
||||||
<artifactId>web4rail</artifactId>
|
<artifactId>web4rail</artifactId>
|
||||||
<version>1.1.3</version>
|
<version>1.1.4</version>
|
||||||
<name>Web4Rail</name>
|
<name>Web4Rail</name>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<description>Java Model Railway Control</description>
|
<description>Java Model Railway Control</description>
|
||||||
|
|||||||
@@ -280,3 +280,10 @@ svg.disabled rect{
|
|||||||
.cockpit .stop{
|
.cockpit .stop{
|
||||||
min-width: 150px;
|
min-width: 150px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fieldset.notes{
|
||||||
|
min-width: 50%
|
||||||
|
}
|
||||||
|
fieldset.notes textarea{
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
@@ -100,6 +100,7 @@ new train : neuer Zug
|
|||||||
No : keine
|
No : keine
|
||||||
No free routes from {} : keine Route von {} frei
|
No free routes from {} : keine Route von {} frei
|
||||||
NORTH : Norden
|
NORTH : Norden
|
||||||
|
{} now heading for {} : {} ist nun unterweg nach {}
|
||||||
Occupied area\: : Belegte Abschnitte:
|
Occupied area\: : Belegte Abschnitte:
|
||||||
Off : Aus
|
Off : Aus
|
||||||
On : An
|
On : An
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ public interface Constants {
|
|||||||
public static final String GITHUB_URL = "https://github.com/srsoftware-de/Web4Rail";
|
public static final String GITHUB_URL = "https://github.com/srsoftware-de/Web4Rail";
|
||||||
public static final String ID = "id";
|
public static final String ID = "id";
|
||||||
public static final String NBSP = " ";
|
public static final String NBSP = " ";
|
||||||
|
public static final String NOTES = "notes";
|
||||||
public static final String PORT = "port";
|
public static final String PORT = "port";
|
||||||
public static final String TYPE = "type";
|
public static final String TYPE = "type";
|
||||||
public static final Charset UTF8 = StandardCharsets.UTF_8;
|
public static final Charset UTF8 = StandardCharsets.UTF_8;
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import de.srsoftware.web4rail.tags.Form;
|
|||||||
import de.srsoftware.web4rail.tags.Input;
|
import de.srsoftware.web4rail.tags.Input;
|
||||||
import de.srsoftware.web4rail.tags.Label;
|
import de.srsoftware.web4rail.tags.Label;
|
||||||
import de.srsoftware.web4rail.tags.Table;
|
import de.srsoftware.web4rail.tags.Table;
|
||||||
|
import de.srsoftware.web4rail.tags.TextArea;
|
||||||
|
|
||||||
public class Car extends BaseClass implements Comparable<Car>{
|
public class Car extends BaseClass implements Comparable<Car>{
|
||||||
protected static final Logger LOG = LoggerFactory.getLogger(Car.class);
|
protected static final Logger LOG = LoggerFactory.getLogger(Car.class);
|
||||||
@@ -47,6 +48,7 @@ public class Car extends BaseClass implements Comparable<Car>{
|
|||||||
private Train train;
|
private Train train;
|
||||||
protected Plan plan;
|
protected Plan plan;
|
||||||
protected int maxSpeed = 0;
|
protected int maxSpeed = 0;
|
||||||
|
private String notes;
|
||||||
|
|
||||||
public Car(String name) {
|
public Car(String name) {
|
||||||
this(name,null);
|
this(name,null);
|
||||||
@@ -70,7 +72,9 @@ public class Car extends BaseClass implements Comparable<Car>{
|
|||||||
|
|
||||||
switch (params.get(ACTION)) {
|
switch (params.get(ACTION)) {
|
||||||
case ACTION_ADD:
|
case ACTION_ADD:
|
||||||
new Car(params.get(Car.NAME)).plan(plan);
|
if (isSet(car)) {
|
||||||
|
car.clone().plan(plan);
|
||||||
|
} else new Car(params.get(Car.NAME)).plan(plan);
|
||||||
return Car.manager();
|
return Car.manager();
|
||||||
case ACTION_PROPS:
|
case ACTION_PROPS:
|
||||||
return car == null ? Car.manager() : car.properties();
|
return car == null ? Car.manager() : car.properties();
|
||||||
@@ -82,6 +86,19 @@ public class Car extends BaseClass implements Comparable<Car>{
|
|||||||
return t("Unknown action: {}",params.get(ACTION));
|
return t("Unknown action: {}",params.get(ACTION));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Car clone() {
|
||||||
|
Car clone = new Car(name);
|
||||||
|
clone.maxSpeed = maxSpeed;
|
||||||
|
clone.length = length;
|
||||||
|
clone.tags = new HashSet<String>(tags);
|
||||||
|
clone.notes = notes;
|
||||||
|
return clone;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Button cloneButton() {
|
||||||
|
return new Button(t("copy"),Map.of(REALM,REALM_CAR,ID,id(),ACTION,ACTION_ADD));
|
||||||
|
}
|
||||||
|
|
||||||
public static Car get(Object id) {
|
public static Car get(Object id) {
|
||||||
return isNull(id) ? null : cars.get(Integer.parseInt(""+id)); // try to get by id
|
return isNull(id) ? null : cars.get(Integer.parseInt(""+id)); // try to get by id
|
||||||
}
|
}
|
||||||
@@ -97,6 +114,7 @@ public class Car extends BaseClass implements Comparable<Car>{
|
|||||||
json.put(NAME, name);
|
json.put(NAME, name);
|
||||||
json.put(LENGTH, length);
|
json.put(LENGTH, length);
|
||||||
if (maxSpeed != 0) json.put(MAX_SPEED, maxSpeed);
|
if (maxSpeed != 0) json.put(MAX_SPEED, maxSpeed);
|
||||||
|
if (isSet(notes) && !notes.isEmpty()) json.put(NOTES, notes);
|
||||||
json.put(STOCK_ID, stockId);
|
json.put(STOCK_ID, stockId);
|
||||||
if (!tags.isEmpty()) json.put(TAGS, tags);
|
if (!tags.isEmpty()) json.put(TAGS, tags);
|
||||||
return json;
|
return json;
|
||||||
@@ -143,6 +161,7 @@ public class Car extends BaseClass implements Comparable<Car>{
|
|||||||
if (json.has(ID)) id = json.getInt(ID);
|
if (json.has(ID)) id = json.getInt(ID);
|
||||||
if (json.has(LENGTH)) length = json.getInt(LENGTH);
|
if (json.has(LENGTH)) length = json.getInt(LENGTH);
|
||||||
if (json.has(MAX_SPEED)) maxSpeed = json.getInt(MAX_SPEED);
|
if (json.has(MAX_SPEED)) maxSpeed = json.getInt(MAX_SPEED);
|
||||||
|
if (json.has(NOTES)) notes = json.getString(NOTES);
|
||||||
if (json.has(STOCK_ID)) stockId = json.getString(STOCK_ID);
|
if (json.has(STOCK_ID)) stockId = json.getString(STOCK_ID);
|
||||||
if (json.has(TAGS)) json.getJSONArray(TAGS).forEach(elem -> { tags.add(elem.toString()); });
|
if (json.has(TAGS)) json.getJSONArray(TAGS).forEach(elem -> { tags.add(elem.toString()); });
|
||||||
return this;
|
return this;
|
||||||
@@ -153,8 +172,18 @@ public class Car extends BaseClass implements Comparable<Car>{
|
|||||||
new Tag("h4").content(t("known cars")).addTo(win);
|
new Tag("h4").content(t("known cars")).addTo(win);
|
||||||
new Tag("p").content(t("Click on a name to edit the entry.")).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("Tags"));
|
Table table = new Table().addHead(t("Stock ID"),t("Name"),t("Max. Speed",speedUnit),t("Length"),t("Tags"),t("Actions"));
|
||||||
cars.values().stream().filter(car -> !(car instanceof Locomotive)).forEach(car -> table.addRow(car.stockId,car.maxSpeed == 0 ? "–":(car.maxSpeed+NBSP+speedUnit),car.link(),car.length,String.join(", ", car.tags())));
|
cars.values()
|
||||||
|
.stream()
|
||||||
|
.filter(car -> !(car instanceof Locomotive))
|
||||||
|
.forEach(car -> table.addRow(
|
||||||
|
car.stockId,
|
||||||
|
car.link(),
|
||||||
|
car.maxSpeed == 0 ? "–":(car.maxSpeed+NBSP+speedUnit),
|
||||||
|
car.length,
|
||||||
|
String.join(", ", car.tags()),
|
||||||
|
car.cloneButton()
|
||||||
|
));
|
||||||
table.addTo(win);
|
table.addTo(win);
|
||||||
|
|
||||||
Form form = new Form("add-car-form");
|
Form form = new Form("add-car-form");
|
||||||
@@ -196,6 +225,9 @@ public class Car extends BaseClass implements Comparable<Car>{
|
|||||||
new Input(TAGS,String.join(", ", tags)).addTo(new Label(t("Tags")+NBSP)).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);
|
new Input(MAX_SPEED, maxSpeed).numeric().addTo(new Label(t("Maximum speed")+":"+NBSP)).content(NBSP+speedUnit).addTo(fieldset);
|
||||||
fieldset.addTo(form);
|
fieldset.addTo(form);
|
||||||
|
|
||||||
|
fieldset = new Fieldset(t("Notes"));
|
||||||
|
new TextArea(NOTES,notes).addTo(fieldset.clazz("notes")).addTo(form);
|
||||||
return form;
|
return form;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,7 +275,8 @@ public class Car extends BaseClass implements Comparable<Car>{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Car update(HashMap<String, String> params) {
|
public Car update(HashMap<String, String> params) {
|
||||||
if (params.containsKey(NAME)) name = params.get(NAME);
|
if (params.containsKey(NAME)) name = params.get(NAME).trim();
|
||||||
|
if (params.containsKey(NOTES)) notes = params.get(NOTES).trim();
|
||||||
if (params.containsKey(LENGTH)) length = Integer.parseInt(params.get(LENGTH));
|
if (params.containsKey(LENGTH)) length = Integer.parseInt(params.get(LENGTH));
|
||||||
if (params.containsKey(MAX_SPEED)) maxSpeed = Integer.parseInt(params.get(MAX_SPEED));
|
if (params.containsKey(MAX_SPEED)) maxSpeed = Integer.parseInt(params.get(MAX_SPEED));
|
||||||
if (params.containsKey(STOCK_ID)) stockId = params.get(STOCK_ID);
|
if (params.containsKey(STOCK_ID)) stockId = params.get(STOCK_ID);
|
||||||
|
|||||||
29
src/main/java/de/srsoftware/web4rail/tags/TextArea.java
Normal file
29
src/main/java/de/srsoftware/web4rail/tags/TextArea.java
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
package de.srsoftware.web4rail.tags;
|
||||||
|
|
||||||
|
import de.srsoftware.tools.Tag;
|
||||||
|
|
||||||
|
public class TextArea extends Tag{
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -330127933233033028L;
|
||||||
|
public static final String NAME = "name";
|
||||||
|
public static final String VALUE = "value";
|
||||||
|
|
||||||
|
public TextArea(String name) {
|
||||||
|
this(name,"");
|
||||||
|
}
|
||||||
|
|
||||||
|
public TextArea(String name, Object value) {
|
||||||
|
super("textarea");
|
||||||
|
attr("name", name);
|
||||||
|
content(value == null?"":value.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Tag hideIn(Tag form) {
|
||||||
|
return this.attr("type", "hidden").addTo(form);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TextArea numeric() {
|
||||||
|
attr("type","number");
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user