NIHVIVO-1591 Apply datetime functions and macros in lib-datetime.ftl to propStatement views
This commit is contained in:
parent
752e50dce0
commit
ad1a8c4e56
1 changed files with 49 additions and 54 deletions
|
@ -1,47 +1,40 @@
|
|||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||
|
||||
<#-- Macros for datetime formatting -->
|
||||
<#-- Macros and functions for datetime formatting -->
|
||||
|
||||
<#-- Macro yearInterval
|
||||
<#-- Convenience macros to display year and year interval attributes in a classed span -->
|
||||
<#macro yearSpan dateTime>
|
||||
<#if dateTime?has_content>
|
||||
<span class="listDateTime">${xsdDateTimeToYear(dateTime)}</span>
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
Display a year interval in a property statement
|
||||
|
||||
Set endYearAsRange=false to display an end year without a start year without a preceding hyphen. The hyphen indicates that
|
||||
a range is expected but the start year is not provided (e.g., core:personInPosition); no hyphen indicates that
|
||||
a single date is typical (e.g., core:educationalTraining).
|
||||
-->
|
||||
|
||||
<#macro yearInterval startDateTime endDateTime endYearAsRange=true>
|
||||
<#local yearInterval>
|
||||
<#if startDateTime?has_content>
|
||||
<#local startYear = xsdDateTimeToYear(startDateTime)>
|
||||
</#if>
|
||||
<#if endDateTime?has_content>
|
||||
<#local endYear = xsdDateTimeToYear(endDateTime)>
|
||||
</#if>
|
||||
<#if startYear?? && endYear??>
|
||||
${startYear} - ${endYear}
|
||||
<#elseif startYear??>
|
||||
${startYear} -
|
||||
<#elseif endYear ??>
|
||||
<#if endYearAsRange>- </#if>${endYear}
|
||||
</#if>
|
||||
</#local>
|
||||
|
||||
<#macro yearIntervalSpan startDateTime endDateTime endYearAsRange=true>
|
||||
<#local yearInterval = yearInterval(startDateTime, endDateTime, endYearAsRange)>
|
||||
<#if yearInterval?has_content>
|
||||
<span class="listDateTime">${yearInterval}</span>
|
||||
</#if>
|
||||
</#macro>
|
||||
|
||||
<#macro dateTimeIntervalLong dateTimeStart precisionStart dateTimeEnd precisionEnd endAsRange=true>
|
||||
<@dateTimeInterval dateTimeStart precisionStart dateTimeEnd precisionEnd "long" endAsRange />
|
||||
</#macro>
|
||||
|
||||
<#macro dateTimeIntervalShort dateTimeStart precisionStart dateTimeEnd precisionEnd endAsRange=true>
|
||||
<@dateTimeInterval dateTimeStart precisionStart dateTimeEnd precisionEnd "short" endAsRange />
|
||||
</#macro>
|
||||
<#-- Assign a year precision and generate the interval -->
|
||||
<#function yearInterval dateTimeStart dateTimeEnd endYearAsRange=true>
|
||||
<#local precision = "yearPrecision">
|
||||
<#return dateTimeIntervalShort(dateTimeStart, precision, dateTimeEnd, precision, endYearAsRange)>
|
||||
</#function>
|
||||
|
||||
<#macro dateTimeInterval dateTimeStart precisionStart dateTimeEnd precisionEnd view="short" endAsRange=true>
|
||||
<#-- Generate a datetime interval with dates displayed as "January 1, 2011" -->
|
||||
<#function dateTimeIntervalLong dateTimeStart precisionStart dateTimeEnd precisionEnd endAsRange=true>
|
||||
<#return dateTimeInterval(dateTimeStart, precisionStart, dateTimeEnd, precisionEnd, "long", endAsRange) >
|
||||
</#function>
|
||||
|
||||
<#-- Generate a datetime interval with dates displayed as "1/1/2011" -->
|
||||
<#function dateTimeIntervalShort dateTimeStart precisionStart dateTimeEnd precisionEnd endAsRange=true>
|
||||
<#return dateTimeInterval(dateTimeStart, precisionStart, dateTimeEnd, precisionEnd, "short", endAsRange)>
|
||||
</#function>
|
||||
|
||||
<#-- Generate a datetime interval -->
|
||||
<#function dateTimeInterval dateTimeStart precisionStart dateTimeEnd precisionEnd view="short" endAsRange=true>
|
||||
|
||||
<#if dateTimeStart?has_content>
|
||||
<#local start = formatXsdDateTime(dateTimeStart, precisionStart, view)>
|
||||
|
@ -61,10 +54,8 @@
|
|||
</#if>
|
||||
</#local>
|
||||
|
||||
<#if interval?has_content>
|
||||
${interval}
|
||||
</#if>
|
||||
</#macro>
|
||||
<#return interval>
|
||||
</#function>
|
||||
|
||||
<#-- Functions for formatting and applying precision to a datetime
|
||||
|
||||
|
@ -72,26 +63,37 @@
|
|||
implementation; see NIHVIVO-1567. We want the Java code to apply the precision to the datetime string to pass only the
|
||||
meaningful data to the templates. The templates can format as they like, so these functions/macros would do display formatting
|
||||
but not data extraction.
|
||||
|
||||
On the other hand, this is so easy that it may not be worth re-implementing to gain a bit more MVC compliance.
|
||||
-->
|
||||
|
||||
<#-- Generate a datetime with date formatted as "January 1, 2011" -->
|
||||
<#function formatXsdDateTimeLong dateTime precision>
|
||||
<#return formatXsdDateTime(dateTime, precision, "long")>
|
||||
</#function>
|
||||
|
||||
<#-- Generate a datetime with date formatted as "1/1/2011" -->
|
||||
<#function formatXsdDateTimeShort dateTime precision>
|
||||
<#return formatXsdDateTime(dateTime, precision)>
|
||||
</#function>
|
||||
|
||||
<#-- Generate a datetime as a year -->
|
||||
<#function xsdDateTimeToYear dateTime>
|
||||
<#local precision = "yearPrecision">
|
||||
<#return formatXsdDateTime(dateTime, precision)>
|
||||
</#function>
|
||||
|
||||
<#-- Convert the string dateTimeString to a datetime object -->
|
||||
<#function toDateTime dateTimeString>
|
||||
<#-- First convert the datetime string to a string format that Freemarker
|
||||
understands, then to a datetime object -->
|
||||
<#return dateTimeString?replace("T", " ")?replace("Z", "")?datetime("yyyy-MM-dd HH:mm:ss")>
|
||||
</#function>
|
||||
|
||||
<#function formatXsdDateTimeLong dateTime precision>
|
||||
<#return formatXsdDateTime(dateTime, precision, "long")>
|
||||
</#function>
|
||||
|
||||
<#function formatXsdDateTimeShort dateTime precision>
|
||||
<#return formatXsdDateTime(dateTime, precision)>
|
||||
</#function>
|
||||
|
||||
<#-- Apply a precision and view to format a datetime -->
|
||||
<#function formatXsdDateTime dateTime precision view="short">
|
||||
|
||||
<#-- Convert to a string format that Freemarker understands,
|
||||
then to a datetime -->
|
||||
<#-- First convert the string dateTime to a datetime object -->
|
||||
<#local dt = toDateTime(dateTime)>
|
||||
|
||||
<#-- Use the precision to determine which portion to display,
|
||||
|
@ -115,11 +117,4 @@
|
|||
<#return dt?string(format)>
|
||||
</#function>
|
||||
|
||||
<#-- Function xsdDateTimeToYear -->
|
||||
|
||||
<#-- get rid of this -->
|
||||
|
||||
<#function xsdDateTimeToYear datetime>
|
||||
<#local format = "yyyy">
|
||||
<#return datetime?date(format)?string(format)>
|
||||
</#function>
|
||||
|
|
Loading…
Add table
Reference in a new issue