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);