This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 4581972d82 ISIS-3085: [Wicket Viewer] render ZonedDateTime time-zone
badges with zone names
4581972d82 is described below
commit 4581972d8284bf15f4b0df38119c155bb12b06f9
Author: Andi Huber <[email protected]>
AuthorDate: Fri Jul 15 12:39:47 2022 +0200
ISIS-3085: [Wicket Viewer] render ZonedDateTime time-zone badges with
zone names
---
.../temporal/TemporalValueSemanticsProvider.java | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java
index 757f3259c3..76d94b03bc 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/temporal/TemporalValueSemanticsProvider.java
@@ -37,6 +37,8 @@ import org.springframework.lang.Nullable;
import org.apache.isis.applib.annotation.TimePrecision;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
+import org.apache.isis.applib.locale.UserLocale;
+import org.apache.isis.applib.services.iactnlayer.InteractionContext;
import org.apache.isis.applib.util.schema.CommonDtoUtils;
import org.apache.isis.applib.value.semantics.TemporalValueSemantics;
import org.apache.isis.applib.value.semantics.ValueDecomposition;
@@ -48,7 +50,9 @@ import
org.apache.isis.core.metamodel.context.MetaModelContext;
import
org.apache.isis.core.metamodel.facets.objectvalue.temporalformat.DateFormatStyleFacet;
import
org.apache.isis.core.metamodel.facets.objectvalue.temporalformat.TimeFormatPrecisionFacet;
import
org.apache.isis.core.metamodel.facets.objectvalue.temporalformat.TimeFormatStyleFacet;
+import org.apache.isis.schema.common.v2.ValueType;
+import lombok.AccessLevel;
import lombok.Getter;
import lombok.NonNull;
import lombok.Value;
@@ -156,11 +160,20 @@ implements TemporalValueSemantics<T> {
return renderHtml(value, withTimeZoneBadge(context,
getRenderingFormat(context)::format));
}
- @Getter(lazy = true)
+ @Getter(lazy = true, value = AccessLevel.PRIVATE)
private final DateTimeFormatter isoTimeZoneFormat = new
DateTimeFormatterBuilder()
.appendOffsetId()
.toFormatter(Locale.US); // arbitrarily picking a locale, just in
case; (this is an ISO format)
+ private final DateTimeFormatter getLocalizedTimeZoneFormat(final
ValueSemanticsProvider.Context context) {
+ return new DateTimeFormatterBuilder()
+ .appendPattern("VVx")
+ .toFormatter(Optional.ofNullable(context.getInteractionContext())
+ .map(InteractionContext::getLocale)
+ .map(UserLocale::getTimeFormatLocale)
+ .orElseGet(Locale::getDefault));
+ }
+
/**
* Adds a html badge with time-zone information. If this is a local
temporal,
* instead adds the translatable literal 'local' as a html badge.
@@ -169,11 +182,14 @@ implements TemporalValueSemantics<T> {
private Function<T, String> withTimeZoneBadge(
final ValueSemanticsProvider.Context context,
final Function<T, String> toString) {
+
return value->toString.apply(value)
+ String.format(" <span class=\"badge
bg-secondary\">%s</span>",
this.getOffsetCharacteristic().isLocal()
? translate("local")
- : getIsoTimeZoneFormat().format(value));
+ : getSchemaValueType()==ValueType.ZONED_DATE_TIME
+ ? getLocalizedTimeZoneFormat(context).format(value)
+ : getIsoTimeZoneFormat().format(value));
}
// -- PARSER