diff --git a/pom.xml b/pom.xml
index 66ad72f..aae7ba1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.4.26
+ 1.4.27
Web4Rail
jar
Java Model Railway Control
diff --git a/resources/css/style.css b/resources/css/style.css
index 6edbca8..81af0c3 100644
--- a/resources/css/style.css
+++ b/resources/css/style.css
@@ -435,3 +435,7 @@ svg.Block text{
.Switch.on rect.enabled{
fill: forestgreen;
}
+
+#history table td:nth-child(2) {
+ padding-left: 30px;
+}
diff --git a/src/main/java/de/srsoftware/web4rail/BaseClass.java b/src/main/java/de/srsoftware/web4rail/BaseClass.java
index 9f3a74e..966404f 100644
--- a/src/main/java/de/srsoftware/web4rail/BaseClass.java
+++ b/src/main/java/de/srsoftware/web4rail/BaseClass.java
@@ -531,7 +531,7 @@ public abstract class BaseClass implements Constants{
new Button(t("Apply"),customForm).addTo(customForm).addTo(customFields);
customFields.addTo(win);
- Fieldset history = new Fieldset(t("History"));
+ Fieldset history = new Fieldset(t("History")).id("history");
Form form = new Form("add-history-entry");
new Input(REALM, REALM_HISTORY).hideIn(form);
@@ -542,8 +542,11 @@ public abstract class BaseClass implements Constants{
form.addTo(history);
table = new Table();
- table.addHead(t("Date/Time"),t("Event"));
- for (LogEntry entry : History.getFor(this)) table.addRow(new SimpleDateFormat("YYYY-dd-MM HH:mm").format(entry.date()),entry.getText());
+ table.addHead(t("Date/Time"),t("Event"),t("Actions"));
+ for (LogEntry entry : History.getFor(this)) table.addRow(
+ new SimpleDateFormat("YYYY-dd-MM HH:mm").format(entry.date()),
+ entry.getText(),
+ button(t("delete"),Map.of(REALM,REALM_HISTORY,ACTION,ACTION_DROP,TIME,""+entry.getTime())));
table.addTo(history).addTo(win);
return win;
diff --git a/src/main/java/de/srsoftware/web4rail/Constants.java b/src/main/java/de/srsoftware/web4rail/Constants.java
index 73a44fd..e0c0f91 100644
--- a/src/main/java/de/srsoftware/web4rail/Constants.java
+++ b/src/main/java/de/srsoftware/web4rail/Constants.java
@@ -53,14 +53,14 @@ public interface Constants {
public static final String REALM_PLAN = "plan";
public static final String REALM_TRAIN = "train";
- public static final String ASSIGN = "assign";
+ public static final String ASSIGN = "assign";
public static final String BLOCK = "block";
public static final String COL = ": ";
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 DESTINATION = "destination";
+ public static final String DESTINATION = "destination";
public static final String DISABLED = "disabled";
public static final String DIRECTION = "direction";
public static final String GITHUB_URL = "https://github.com/srsoftware-de/Web4Rail";
@@ -76,6 +76,7 @@ public interface Constants {
public static final String RESERVED = "reserved";
public static final String ROUTE = "route";
public static final String STATE = "state";
+ public static final String TIME = "time";
public static final String TURNOUT = "turnout";
public static final String TYPE = "type";
public static final Charset UTF8 = StandardCharsets.UTF_8;
diff --git a/src/main/java/de/srsoftware/web4rail/History.java b/src/main/java/de/srsoftware/web4rail/History.java
index 6bbfbb0..b8b4a42 100644
--- a/src/main/java/de/srsoftware/web4rail/History.java
+++ b/src/main/java/de/srsoftware/web4rail/History.java
@@ -37,6 +37,11 @@ public class History {
public String getText() {
return text;
}
+
+ @Override
+ public String toString() {
+ return date()+": "+text;
+ }
};
public static LogEntry assign(LogEntry logEntry, BaseClass object) {
@@ -47,21 +52,39 @@ public class History {
return logEntry;
}
+ private static void dropEntry(BaseClass object,long time) {
+ Vector list = log.get(object.id());
+ if (list == null) return;
+ for (int i=list.size(); i>0; i--) {
+ LogEntry entry = list.get(i-1);
+ if (entry.getTime() == time) list.remove(i-1);
+ }
+ }
+
public static Vector getFor(BaseClass object){
Vector list = log.get(object.id());
return list != null ? list : new Vector<>();
}
public static Object action(HashMap params) {
-
+ BaseClass object = BaseClass.get(Id.from(params));
switch (params.get(Constants.ACTION)) {
- case Constants.ACTION_ADD:
- BaseClass object = BaseClass.get(Id.from(params));
+ case Constants.ACTION_ADD:
return object != null ? object.addLogEntry(params.get(Constants.NOTES)) : BaseClass.t("Unknown object!");
-
+ case Constants.ACTION_DROP:
+ if (BaseClass.isNull(object)) return BaseClass.t("Trying to delete log entry without specifing object!");
+ String err = null;
+ try {
+ long time = Long.parseLong(params.get(Constants.TIME));
+ dropEntry(object,time);
+ } catch (NumberFormatException e) {
+ err = BaseClass.t("Was not able to delete history entry!");
+ }
+ return object.properties(err);
}
- return BaseClass.t("Unknown action: {}",params.get(Constants.ACTION));
+ String message = BaseClass.t("Unknown action: {}",params.get(Constants.ACTION));
+ return (BaseClass.isNull(object)) ? message : object.properties(message);
}
public static void save(String filename) {
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Car.java b/src/main/java/de/srsoftware/web4rail/moving/Car.java
index 8dfec70..e2caffc 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Car.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Car.java
@@ -104,6 +104,11 @@ public class Car extends BaseClass implements Comparable{
return t("Unknown action: {}",params.get(ACTION));
}
+ @Override
+ public Window addLogEntry(String text) {
+ return super.addLogEntry(distance(distanceCounter)+": "+text);
+ }
+
public Object addTask(MaintnanceTask newTask) {
if (isSet(newTask)) {
tasks.add(newTask);