diff --git a/gs-carcolor/src/main/java/org/genericsystem/carcolor/GSUserGuide.java b/gs-carcolor/src/main/java/org/genericsystem/carcolor/GSUserGuide.java index 1e51f6e4d..b0aec48ef 100644 --- a/gs-carcolor/src/main/java/org/genericsystem/carcolor/GSUserGuide.java +++ b/gs-carcolor/src/main/java/org/genericsystem/carcolor/GSUserGuide.java @@ -54,7 +54,7 @@ public GSUserGuide(Tag parent) { HtmlLi li1 = new HtmlLi(this); HtmlLi li2 = new HtmlLi(this); HtmlLi li3 = new HtmlLi(this); - li1.setText("Add new color"); + li1.setText("Add new color of any CSS color style (ex : Black, rgb(0,0,0), #000000, ...)"); li2.setText("Select car in the ComboBox"); li3.setText("Use \"add Button\" to update data"); } diff --git a/gs-common/src/main/java/org/genericsystem/common/AbstractCache.java b/gs-common/src/main/java/org/genericsystem/common/AbstractCache.java index e34c024de..e2ad2d7ea 100644 --- a/gs-common/src/main/java/org/genericsystem/common/AbstractCache.java +++ b/gs-common/src/main/java/org/genericsystem/common/AbstractCache.java @@ -71,6 +71,7 @@ public final void stop() { protected final ObjectProperty> transactionProperty; protected final ObjectProperty differentialProperty = new SimpleObjectProperty<>();; private ObservableIntegerValue cacheLevel; + private ObservableLongValue ts; private final ContextEventListener listener; private Map> dependenciesAsOservableListCacheMap = new HashMap<>(); @@ -100,7 +101,7 @@ public AbstractCache(Root root, ContextEventListener listener) { this.listener = listener; transactionProperty = new SimpleObjectProperty<>(buildTransaction()); cacheLevel = Bindings.createIntegerBinding(() -> differentialProperty.get().getCacheLevel(), differentialProperty); - + ts = Bindings.createLongBinding(() -> transactionProperty.get().getTs(), transactionProperty); initialize(); } @@ -124,6 +125,11 @@ public long getTs() { return getTransaction().getTs(); } + @Override + public ObservableLongValue getTsObservableValue() { + return ts; + } + @Override public Snapshot getDependencies(Generic generic) { return getDifferential().getDependencies(generic); diff --git a/gs-defaults/src/main/java/org/genericsystem/defaults/DefaultCache.java b/gs-defaults/src/main/java/org/genericsystem/defaults/DefaultCache.java index 5c369f995..4ad3dfcca 100644 --- a/gs-defaults/src/main/java/org/genericsystem/defaults/DefaultCache.java +++ b/gs-defaults/src/main/java/org/genericsystem/defaults/DefaultCache.java @@ -6,6 +6,7 @@ import org.genericsystem.api.core.exceptions.ConcurrencyControlException; import javafx.beans.value.ObservableIntegerValue; +import javafx.beans.value.ObservableLongValue; /** * @author Nicolas Feybesse @@ -42,5 +43,7 @@ public interface DefaultCache> extends DefaultContex ObservableIntegerValue getCacheLevelObservableValue(); + ObservableLongValue getTsObservableValue(); + boolean contains(T generic); } diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/Context.java b/gs-reactor/src/main/java/org/genericsystem/reactor/Context.java index 25f746563..7ff093413 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/Context.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/Context.java @@ -14,6 +14,7 @@ import javafx.beans.property.Property; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ObservableIntegerValue; +import javafx.beans.value.ObservableLongValue; import javafx.beans.value.ObservableValue; import javafx.collections.ObservableList; @@ -163,6 +164,11 @@ public ObservableIntegerValue getCacheLevelObservableValue() { return getGeneric().getCurrentCache().getCacheLevelObservableValue(); } + public ObservableLongValue getTsObservableValue() { + + return getGeneric().getCurrentCache().getTsObservableValue(); + } + public void mount() { getGeneric().getCurrentCache().mount(); } diff --git a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSMonitor.java b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSMonitor.java index 87235c478..fec954393 100644 --- a/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSMonitor.java +++ b/gs-reactor/src/main/java/org/genericsystem/reactor/gs/GSMonitor.java @@ -1,8 +1,18 @@ package org.genericsystem.reactor.gs; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; +import java.util.Date; + +import org.genericsystem.common.Statics; import org.genericsystem.reactor.Context; import org.genericsystem.reactor.Tag; import org.genericsystem.reactor.gstag.HtmlButton; +import org.genericsystem.reactor.gstag.HtmlLabel; + +import javafx.beans.binding.Bindings; public class GSMonitor extends GSDiv { @@ -26,12 +36,17 @@ public GSMonitor(Tag parent, FlexDirection direction) { bindAction(Context::cancel); } }; - // new HtmlButton(this) { - // { - // setText("traverse"); - // bindAction(Context::traverse); - // } - // }; + new HtmlLabel(this) { + { + bindText(context -> Bindings.createStringBinding(() -> { + Long tsMs = (Long) context.getTsObservableValue().getValue() / Statics.MILLI_TO_NANOSECONDS; + Date dateMs = new Date(tsMs); + Instant instant = Instant.ofEpochMilli(dateMs.getTime()); + LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneOffset.systemDefault()); + return "Last update : " + ldt.format(DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss")); + }, context.getTsObservableValue())); + } + }; // new GSButton(this) { // { // setText("Collect");