diff --git a/pom.xml b/pom.xml
index 01a0be5..89b5adb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.3.45
+ 1.3.46
Web4Rail
jar
Java Model Railway Control
diff --git a/resources/js/plan.js b/resources/js/plan.js
index 2bddbb7..c5c88e7 100644
--- a/resources/js/plan.js
+++ b/resources/js/plan.js
@@ -14,7 +14,7 @@ var mode = null;
var messageTimer = null;
var messageOpacity = 0;
var pendingAssignment = null;
-var lastTab = null;
+var clickHistory = [];
function addClass(data){
parts = data.split(" ");
@@ -39,17 +39,23 @@ function arrangeTabs(){
tabs.insertAfter($('.swapbtn'));
var target = null;
+ var index = null;
$('.window > fieldset > legend').each(function(){
var fs = this.parentNode;
if (!fs.id) fs.id = winId+id;
- if (fs.id == lastTab) target = this;
+ var i = clickHistory.indexOf(fs.id);
+ if (i>-1 && (index == null || i 0) {
$(fs).hide();
} else $(this).addClass('front');
id++;
});
- if (target != null) clickLegend({'data':lastTab,'target':target});
+ if (index != null) clickLegend({'data':clickHistory[index],'target':target,'no-update':true});
}
function assign(context){
@@ -65,6 +71,7 @@ function clickLegend(ev){
$(ev.target).addClass('front');
$('.window > fieldset').hide();
$('#'+lastTab).show();
+ if (!('no-update' in ev)) remember(lastTab);
}
function clickTile(x,y,shift){
@@ -211,6 +218,13 @@ function planClick(ev){
console.log('unknown action "'+mode+'" @ ('+ev.clientX+','+ev.clientY+')');
}
+function remember(lastClickedId){
+ console.log("lastClickedId: "+lastClickedId)
+ var index = clickHistory.indexOf(lastClickedId);
+ if (index > -1) clickHistory.splice(index, 1);
+ clickHistory.unshift(lastClickedId);
+}
+
function remove(id){
$('#'+id).remove();
return false;
diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation
index d32eded..8efef62 100644
--- a/resources/translations/Application.de.translation
+++ b/resources/translations/Application.de.translation
@@ -128,6 +128,7 @@ disabled routes : deaktivierte Fahrstraßen
DisableEnableBlock : Block (de)aktivieren
Display "{}" on {}. : „{}“ auf {} anzeigen.
Drop : Verwerfen
+Drop brake times : Bremszeiten löschen
Dropped destination of {}. : Ziel von {} verworfen.
1) Duration between 5 {} steps during brake process. : 1) Zeit zwischen 5 {}-Schritten beim Bremsvorgang.
EAST : Osten
diff --git a/src/main/java/de/srsoftware/web4rail/BaseClass.java b/src/main/java/de/srsoftware/web4rail/BaseClass.java
index 77e61e9..56ab24b 100644
--- a/src/main/java/de/srsoftware/web4rail/BaseClass.java
+++ b/src/main/java/de/srsoftware/web4rail/BaseClass.java
@@ -440,13 +440,12 @@ public abstract class BaseClass implements Constants{
formInputs.add(new AbstractMap.SimpleEntry(t("Notes"),new TextArea(NOTES,notes)));
form(getClass().getSimpleName()+"-prop-form",formInputs)
- .addTo(new Fieldset(t("Basic properties")))
+ .addTo(new Fieldset(t("Basic properties")).id("props-basic"))
.addTo(win);
postForm.forEach(fieldset -> fieldset.addTo(win));
- Fieldset customFields = new Fieldset(t("custom fields"));
- customFields.attr("id", "custom");
+ Fieldset customFields = new Fieldset(t("custom fields")).id("props-custom");
Form customForm = new Form(CUSTOM_FIELDS);
new Input(ACTION, ACTION_UPDATE).hideIn(customForm);
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
index 7909f69..b474cc5 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
@@ -126,7 +126,7 @@ public class Locomotive extends Car implements Constants,Device{
HashMap params = new HashMap(Map.of(REALM,realm,ID,id));
- Fieldset fieldset = new Fieldset(t("Control"));
+ Fieldset fieldset = new Fieldset(t("Control")).id("props-cockpit");
fieldset.clazz("cockpit");
new Tag("span").content(t("Current velocity: {} {}",speed,speedUnit)).addTo(fieldset);
@@ -316,7 +316,7 @@ public class Locomotive extends Car implements Constants,Device{
}
private Fieldset programming() {
- Fieldset fieldset = new Fieldset(t("Programming"));
+ Fieldset fieldset = new Fieldset(t("Programming")).id("props-cv");
Form form = new Form("cv-form");
new Input(REALM,REALM_LOCO).hideIn(form);
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java
index fc19610..a08f7ea 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Train.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java
@@ -217,7 +217,7 @@ public class Train extends BaseClass implements Comparable {
}
private Fieldset blockHistory() {
- Fieldset fieldset = new Fieldset(t("Last blocks"));
+ Fieldset fieldset = new Fieldset(t("Last blocks")).id("props-history");
Tag list = new Tag("ol");
for (int i=lastBlocks.size(); i>0; i--) {
lastBlocks.get(i-1).link().addTo(new Tag("li")).addTo(list);
@@ -239,7 +239,7 @@ public class Train extends BaseClass implements Comparable {
}
private Fieldset brakeTimes() {
- Fieldset fieldset = new Fieldset(t("Brake time table"));
+ Fieldset fieldset = new Fieldset(t("Brake time table")).id("props-times");
Table timeTable = new Table();
timeTable.addRow(t("forward"),t("backward"),t("Route"));
List routes = BaseClass.listElements(Route.class);
@@ -698,7 +698,7 @@ public class Train extends BaseClass implements Comparable {
formInputs.add(t("Tags"), new Input(TAGS,String.join(", ", tags)));
if (this.hasLoco()) preForm.add(Locomotive.cockpit(this));
- postForm.add(propList.addTo(new Fieldset(t("other train properties")).attr("id", "train-props")));
+ postForm.add(propList.addTo(new Fieldset(t("other train properties")).id("props-other")));
postForm.add(brakeTimes());
postForm.add(blockHistory());
diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java
index 40c4c46..6c449ea 100644
--- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java
+++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java
@@ -171,7 +171,7 @@ public abstract class Block extends StretchableTile{
}
private Fieldset contactForm() {
- Fieldset fieldset = new Fieldset(t("internal contacts"));
+ Fieldset fieldset = new Fieldset(t("internal contacts")).id("props-contacts");
this.button(t("new contact"), Map.of(ACTION,ACTION_ADD_CONTACT)).addTo(fieldset);
if (!internalContacts.isEmpty()) {
Tag ul = new Tag("ul");
@@ -455,7 +455,7 @@ public abstract class Block extends StretchableTile{
}
public Fieldset waitTimeForm() {
- Fieldset win = new Fieldset(t("Wait times"));
+ Fieldset win = new Fieldset(t("Wait times")).id("props-times");
Form form = new Form("train-wait-form");
new Tag("h4").content(t("Stop settings")).addTo(win);
new Input(REALM,REALM_PLAN).hideIn(form);
diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
index e05c409..fea5e8e 100644
--- a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
+++ b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
@@ -197,8 +197,7 @@ public class Contact extends Tile{
button(t("learn"),Map.of(ACTION,ACTION_ANALYZE)).addTo(span);
formInputs.add(t("Address"),span);
- Fieldset fieldset = new Fieldset(t("Actions"));
- fieldset.id("actions");
+ Fieldset fieldset = new Fieldset(t("Actions")).id("props-actions");
actions.list().addTo(fieldset);
postForm.add(fieldset);
return super.properties(preForm, formInputs, postForm);
diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Signal.java b/src/main/java/de/srsoftware/web4rail/tiles/Signal.java
index e5707d2..3f5c537 100644
--- a/src/main/java/de/srsoftware/web4rail/tiles/Signal.java
+++ b/src/main/java/de/srsoftware/web4rail/tiles/Signal.java
@@ -128,8 +128,7 @@ public abstract class Signal extends Tile {
@Override
protected Window properties(List