You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2025/03/03 08:47:39 UTC
(ofbiz-framework) branch trunk updated: Improved: Add a date range picker form field (OFBIZ-13209) (#879)
This is an automated email from the ASF dual-hosted git repository.
jleroux pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 3bee351e39 Improved: Add a date range picker form field (OFBIZ-13209) (#879)
3bee351e39 is described below
commit 3bee351e39dc5d99f40081b3c5bfa365d787ed6e
Author: Florian Motteau <fl...@nereide.fr>
AuthorDate: Mon Mar 3 09:47:34 2025 +0100
Improved: Add a date range picker form field (OFBIZ-13209) (#879)
* Improved: Add a date range picker form field
This is a wrapper around https://www.daterangepicker.com/, exposing
(almost) all its parameters as field attributes.
It can be used as a date picker (like <date-time/>), or as a date range
picker (like <date-find/>).
Its main purpose is to provide a modern UX to pick date ranges, with
2 calendars where the user can click start date, then end date, instead
of dealing with two unrelated date fields and operator selectors.
OFBIZ-13209
* Improved: Add a demo form on webtools layout demo page with date range pickers
OFBIZ-13209
* Fix SonarQube CSS issues
OFBIZ-13209
* Fix more SonarQube CSS issues
OFBIZ-13209
* Fix last SonarQube CSS issues in legacy themes
OFBIZ-13209
* Switch to NPM to include daterangepicker and moment+
OFBIZ-13209
* Add DRP macro in all *FormMacroLibrary.ftl fiels
OFBIZ-13209
---
framework/webtools/widget/MiscForms.xml | 39 +
framework/webtools/widget/MiscScreens.xml | 1 +
framework/widget/config/conditionalUiLabels.xml | 24 +
framework/widget/dtd/widget-form.xsd | 49 +
.../widget/artifact/ArtifactInfoGatherer.java | 5 +
.../org/apache/ofbiz/widget/model/FieldInfo.java | 2 +
.../ofbiz/widget/model/ModelFieldVisitor.java | 3 +
.../apache/ofbiz/widget/model/ModelFormField.java | 475 ++++++++
.../ofbiz/widget/model/ModelFormFieldBuilder.java | 3 +
.../ofbiz/widget/model/XmlWidgetFieldVisitor.java | 34 +
.../ofbiz/widget/renderer/FormStringRenderer.java | 1 +
.../ofbiz/widget/renderer/fo/FoFormRenderer.java | 8 +
.../widget/renderer/macro/MacroFormRenderer.java | 8 +
.../macro/RenderableFtlFormElementsBuilder.java | 104 ++
.../renderer/macro/MacroFormRendererTest.java | 15 +
.../RenderableFtlFormElementsBuilderTest.java | 61 +
themes/bluelight/webapp/bluelight/style.css | 148 ++-
.../template/macro/CsvFormMacroLibrary.ftl | 3 +
.../template/macro/FoFormMacroLibrary.ftl | 3 +
.../template/macro/HtmlFormMacroLibrary.ftl | 132 +++
.../template/macro/TextFormMacroLibrary.ftl | 3 +
.../template/macro/XlsFormMacroLibrary.ftl | 3 +
.../template/macro/XmlFormMacroLibrary.ftl | 3 +
.../webapp/common-theme/js/package-lock.json | 43 +
.../webapp/common-theme/js/package.json | 3 +
.../moment-timezone-with-data.min.js | 7 -
.../moment-timezone/moment-with-locales.min.js | 1216 --------------------
.../webapp/common-theme/js/util/setUserTimeZone.js | 27 +-
themes/common-theme/widget/Theme.xml | 4 +
themes/flatgrey/webapp/flatgrey/javascript.css | 48 +-
themes/helveticus/webapp/helveticus/javascript.css | 54 +-
.../webapp/rainbowstone/javascript.css | 80 +-
themes/tomahawk/webapp/tomahawk/css/style.css | 129 +--
33 files changed, 1296 insertions(+), 1442 deletions(-)
diff --git a/framework/webtools/widget/MiscForms.xml b/framework/webtools/widget/MiscForms.xml
index 22ab2327a5..ccb6b91770 100644
--- a/framework/webtools/widget/MiscForms.xml
+++ b/framework/webtools/widget/MiscForms.xml
@@ -58,10 +58,49 @@ under the License.
<option key="N" description="${uiLabelMap.CommonNo}" />
</radio>
</field>
+ <field name="oneDate">
+ <date-range-picker single-date-picker="true" time-picker-increment="3" min-year="2010" max-year="2030" max-span="9"/>
+ </field>
+ <field name="oneDateTime">
+ <date-range-picker single-date-picker="true" time-picker="true" time-picker-increment="3" linked-calendars="false" min-year="2010" max-year="2030" drops="up"/>
+ </field>
+ <field name="oneDateTimeSeconds">
+ <date-range-picker single-date-picker="true" time-picker="true" time-picker-seconds="true" linked-calendars="false" min-year="2010" max-year="2030" drops="up"/>
+ </field>
+ <field name="dateRange">
+ <date-range-picker single-date-picker="false" linked-calendars="false" min-year="2010" max-year="2030" show-week-numbers="true" drops="up"/>
+ </field>
+ <field name="dateTimeRange">
+ <date-range-picker single-date-picker="false" time-picker="true" max-span="6" clear-title="EMPTY THE INPUT PLEASE" drops="up"/>
+ </field>
+ <field name="dateTimeRangeSeconds">
+ <date-range-picker single-date-picker="false" time-picker="true" time-picker-seconds="true" time-picker-increment="30" linked-calendars="false" drops="up"/>
+ </field>
<field name="submitButton" title="${uiLabelMap.CommonSave}"><submit button-type="button"/></field>
<field name="cancelButton" title=" " widget-style="smallSubmit">
<hyperlink description="${uiLabelMap.CommonCancel}" target="${demoTargetUrl}"/>
</field>
+ <sort-order>
+ <sort-field name="name"/>
+ <sort-field name="description"/>
+ <sort-field name="default"/>
+ <sort-field name="quantity"/>
+ <sort-field name="amount"/>
+ <sort-field name="spelled"/>
+ <sort-field name="percentage"/>
+ <sort-field name="accounting"/>
+ <sort-field name="dropDown"/>
+ <sort-field name="checkBox"/>
+ <sort-field name="radioButton"/>
+ <field-group title="Date Range Picker">
+ <sort-field name="oneDate"/>
+ <sort-field name="oneDateTime"/>
+ <sort-field name="oneDateTimeSeconds"/>
+ <sort-field name="dateRange"/>
+ <sort-field name="dateTimeRange"/>
+ <sort-field name="dateTimeRangeSeconds"/>
+ </field-group>
+ </sort-order>
</form>
<form name="LayoutDemoList" extends="CommonBasicList" extends-resource="component://common/widget/CommonForms.xml"
diff --git a/framework/webtools/widget/MiscScreens.xml b/framework/webtools/widget/MiscScreens.xml
index 9b53bf090e..48c69516c7 100644
--- a/framework/webtools/widget/MiscScreens.xml
+++ b/framework/webtools/widget/MiscScreens.xml
@@ -199,6 +199,7 @@ under the License.
<link text="${uiLabelMap.CommonDisabled}" style="disabled"/>
</container>
<include-form name="LayoutDemoList" location="component://webtools/widget/MiscForms.xml"/>
+ <include-form name="LayoutDemoForm" location="component://webtools/widget/MiscForms.xml"/>
</screenlet>
</widgets>
</section>
diff --git a/framework/widget/config/conditionalUiLabels.xml b/framework/widget/config/conditionalUiLabels.xml
index 72563d1122..084fd51ff2 100644
--- a/framework/widget/config/conditionalUiLabels.xml
+++ b/framework/widget/config/conditionalUiLabels.xml
@@ -238,4 +238,28 @@
<value xml:lang="zh">到今天为止</value>
<value xml:lang="zh-TW">到今天為止</value>
</property>
+ <property key="this_week">
+ <value xml:lang="en">This week</value>
+ <value xml:lang="fr">Cette semaine</value>
+ </property>
+ <property key="last_week">
+ <value xml:lang="en">Last week</value>
+ <value xml:lang="fr">La semaine dernière</value>
+ </property>
+ <property key="next_week">
+ <value xml:lang="en">Next week</value>
+ <value xml:lang="fr">La semaine prochaine</value>
+ </property>
+ <property key="this_month">
+ <value xml:lang="en">This month</value>
+ <value xml:lang="fr">Ce mois-ci</value>
+ </property>
+ <property key="last_month">
+ <value xml:lang="en">Last month</value>
+ <value xml:lang="fr">Le mois dernier</value>
+ </property>
+ <property key="next_month">
+ <value xml:lang="en">Next month</value>
+ <value xml:lang="fr">Le mois prochain</value>
+ </property>
</resource>
diff --git a/framework/widget/dtd/widget-form.xsd b/framework/widget/dtd/widget-form.xsd
index 25993c66d7..6cc156640c 100644
--- a/framework/widget/dtd/widget-form.xsd
+++ b/framework/widget/dtd/widget-form.xsd
@@ -983,6 +983,55 @@ under the License.
</xs:attribute>
</xs:complexType>
</xs:element>
+ <xs:element name="date-range-picker" substitutionGroup="AllFields">
+ <xs:annotation>
+ <xs:documentation>
+ A wrapper on top of https://www.daterangepicker.com/, see https://www.daterangepicker.com/#options for documentation.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="always-show-calendars" type="xs:boolean" default="true"/>
+ <xs:attribute name="apply-button-classes" type="xs:string"/>
+ <xs:attribute name="apply-label" type="xs:string"/>
+ <xs:attribute name="auto-apply" type="xs:boolean" default="true"/>
+ <xs:attribute name="button-classes" type="xs:string"/>
+ <xs:attribute name="cancel-button-classes" type="xs:string"/>
+ <xs:attribute name="cancel-label" type="xs:string"/>
+ <xs:attribute name="clear-title" type="xs:string"/>
+ <xs:attribute name="default-value" type="xs:string"/>
+ <xs:attribute name="drops" default="down">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="down"/>
+ <xs:enumeration value="up"/>
+ <xs:enumeration value="auto"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="linked-calendars" type="xs:boolean" default="true"/>
+ <xs:attribute name="max-span" type="xs:integer"/>
+ <xs:attribute name="max-year" type="xs:integer"/>
+ <xs:attribute name="min-year" type="xs:integer"/>
+ <xs:attribute name="opens" default="center">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="center"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="show-dropdowns" type="xs:boolean" default="true"/>
+ <xs:attribute name="show-iso-week-numbers" type="xs:boolean" default="false"/>
+ <xs:attribute name="show-ranges" type="xs:boolean" default="true"/>
+ <xs:attribute name="show-week-numbers" type="xs:boolean" default="false"/>
+ <xs:attribute name="single-date-picker" type="xs:boolean"/>
+ <xs:attribute name="time-picker" type="xs:boolean" default="false"/>
+ <xs:attribute name="time-picker-24-hour" type="xs:boolean" default="true"/>
+ <xs:attribute name="time-picker-increment" type="xs:integer"/>
+ <xs:attribute name="time-picker-seconds" type="xs:boolean" default="false"/>
+ </xs:complexType>
+ </xs:element>
<xs:element name="display" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/artifact/ArtifactInfoGatherer.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/artifact/ArtifactInfoGatherer.java
index 290a854221..722b349e40 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/artifact/ArtifactInfoGatherer.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/artifact/ArtifactInfoGatherer.java
@@ -52,6 +52,7 @@ import org.apache.ofbiz.widget.model.ModelFormField;
import org.apache.ofbiz.widget.model.ModelFormField.CheckField;
import org.apache.ofbiz.widget.model.ModelFormField.ContainerField;
import org.apache.ofbiz.widget.model.ModelFormField.DateFindField;
+import org.apache.ofbiz.widget.model.ModelFormField.DateRangePickerField;
import org.apache.ofbiz.widget.model.ModelFormField.DateTimeField;
import org.apache.ofbiz.widget.model.ModelFormField.DisplayEntityField;
import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
@@ -414,6 +415,10 @@ public final class ArtifactInfoGatherer implements ModelWidgetVisitor, ModelActi
public void visit(DateTimeField dateTimeField) {
}
+ @Override
+ public void visit(DateRangePickerField dateRangePickerField) {
+ }
+
@Override
public void visit(DisplayEntityField displayField) {
if (displayField.getSubHyperlink() != null) {
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/FieldInfo.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/FieldInfo.java
index ea5c5e2369..4e02832425 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/FieldInfo.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/FieldInfo.java
@@ -62,6 +62,7 @@ public abstract class FieldInfo {
public static final int FORM = 23;
public static final int GRID = 24;
public static final int SCREEN = 25;
+ public static final int DATE_RANGE_PICKER = 26;
// the numbering here represents the priority of the source;
//when setting a new fieldInfo on a modelFormField it will only set
//the new one if the fieldSource is less than or equal to the existing
@@ -99,6 +100,7 @@ public abstract class FieldInfo {
fieldTypeByName.put("include-form", 23);
fieldTypeByName.put("include-grid", 24);
fieldTypeByName.put("include-screen", 25);
+ fieldTypeByName.put("date-range-picker", 26);
return Collections.unmodifiableMap(fieldTypeByName);
}
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFieldVisitor.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFieldVisitor.java
index e2badee816..4cfda53f4b 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFieldVisitor.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFieldVisitor.java
@@ -22,6 +22,7 @@ import org.apache.ofbiz.widget.model.ModelFormField.CheckField;
import org.apache.ofbiz.widget.model.ModelFormField.ContainerField;
import org.apache.ofbiz.widget.model.ModelFormField.DateFindField;
import org.apache.ofbiz.widget.model.ModelFormField.DateTimeField;
+import org.apache.ofbiz.widget.model.ModelFormField.DateRangePickerField;
import org.apache.ofbiz.widget.model.ModelFormField.DisplayEntityField;
import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
import org.apache.ofbiz.widget.model.ModelFormField.DropDownField;
@@ -57,6 +58,8 @@ public interface ModelFieldVisitor {
void visit(DateTimeField dateTimeField) throws Exception;
+ void visit(DateRangePickerField dateRangePickerField) throws Exception;
+
void visit(DisplayEntityField displayEntityField) throws Exception;
void visit(DisplayField displayField) throws Exception;
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
index 392cd38695..830ac1444e 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
@@ -1445,6 +1445,481 @@ public final class ModelFormField {
}
}
+ /**
+ * Models the <date-range-picker> element.
+ *
+ * @see <code>widget-form.xsd</code>
+ */
+ public static class DateRangePickerField extends FieldInfo {
+ private final Boolean alwaysShowCalendars;
+ private final FlexibleStringExpander applyButtonClasses;
+ private final FlexibleStringExpander applyLabel;
+ private final Boolean autoApply;
+ private final FlexibleStringExpander buttonClasses;
+ private final FlexibleStringExpander cancelButtonClasses;
+ private final FlexibleStringExpander cancelLabel;
+ private final FlexibleStringExpander clearTitle;
+ private final FlexibleStringExpander defaultValue;
+ private final String drops;
+ private final Boolean linkedCalendars;
+ private final Integer maxSpan;
+ private final Integer maxYear;
+ private final Integer minYear;
+ private final String opens;
+ private final Boolean showDropdowns;
+ private final Boolean showIsoWeekNumbers;
+ private final Boolean showRanges;
+ private final Boolean showWeekNumbers;
+ private final Boolean singleDatePicker;
+ private final Boolean timePicker;
+ private final Integer timePickerIncrement;
+ private final Boolean timePicker24Hour;
+ private final Boolean timePickerSeconds;
+
+ /**
+ * Gets alwaysShowCalendars
+ * @return alwaysShowCalendars
+ */
+ public Boolean getAlwaysShowCalendars() {
+ return alwaysShowCalendars;
+ }
+
+ /**
+ * Gets applyButtonClasses
+ * @return applyButtonClasses
+ */
+ public FlexibleStringExpander getApplyButtonClasses() {
+ return applyButtonClasses;
+ }
+
+ /**
+ * Gets applyButtonClasses
+ * @return applyButtonClasses
+ */
+ public String getApplyButtonClasses(Map<String, Object> context) {
+ if (this.applyButtonClasses != null) {
+ return this.applyButtonClasses.expandString(context);
+ }
+ return "";
+ }
+
+ /**
+ * Gets applyLabel
+ * @return applyLabel
+ */
+ public FlexibleStringExpander getApplyLabel() {
+ return applyLabel;
+ }
+
+ /**
+ * Gets applyLabel
+ * @return applyLabel
+ */
+ public String getApplyLabel(Map<String, Object> context) {
+ if (this.applyLabel != null) {
+ return this.applyLabel.expandString(context);
+ }
+ return "";
+ }
+
+ /**
+ * Gets autoApply
+ * @return autoApply
+ */
+ public Boolean getAutoApply() {
+ return autoApply;
+ }
+
+ /**
+ * Gets buttonClasses
+ * @return buttonClasses
+ */
+ public FlexibleStringExpander getButtonClasses() {
+ return buttonClasses;
+ }
+
+ /**
+ * Gets buttonClasses
+ * @return String buttonClasses
+ */
+ public String getButtonClasses(Map<String, Object> context) {
+ if (this.buttonClasses != null) {
+ return this.buttonClasses.expandString(context);
+ }
+ return "";
+ }
+
+ /**
+ * Gets cancelButtonClasses
+ * @return cancelButtonClasses
+ */
+ public FlexibleStringExpander getCancelButtonClasses() {
+ return cancelButtonClasses;
+ }
+
+ /**
+ * Gets cancelButtonClasses
+ * @return cancelButtonClasses
+ */
+ public String getCancelButtonClasses(Map<String, Object> context) {
+ if (this.cancelButtonClasses != null) {
+ return this.cancelButtonClasses.expandString(context);
+ }
+ return "";
+ }
+
+ /**
+ * Gets cancelLabel
+ * @return cancelLabel
+ */
+ public FlexibleStringExpander getCancelLabel() {
+ return cancelLabel;
+ }
+
+ /**
+ * Gets cancelLabel
+ * @return cancelLabel
+ */
+ public String getCancelLabel(Map<String, Object> context) {
+ if (this.cancelLabel != null) {
+ return this.cancelLabel.expandString(context);
+ }
+ return "";
+ }
+
+ /**
+ * Gets clearTitle
+ * @return clearTitle
+ */
+ public FlexibleStringExpander getClearTitle() {
+ return clearTitle;
+ }
+
+ /**
+ * Gets clearTitle
+ * @return clearTitle
+ */
+ public String getClearTitle(Map<String, Object> context) {
+ if (this.clearTitle != null) {
+ return this.clearTitle.expandString(context);
+ }
+ return "";
+ }
+
+ /**
+ * Gets defaultValue
+ * @return defaultValue
+ */
+ public FlexibleStringExpander getDefaultValue() {
+ return defaultValue;
+ }
+
+ /**
+ * Gets defaultValue
+ * @return defaultValue
+ */
+ public String getDefaultValue(Map<String, Object> context) {
+ if (this.defaultValue != null) {
+ return this.defaultValue.expandString(context);
+ }
+ return "";
+ }
+
+ /**
+ * Gets drops
+ * @return drops
+ */
+ public String getDrops() {
+ return drops;
+ }
+
+ /**
+ * Gets linkedCalendars
+ * @return linkedCalendars
+ */
+ public Boolean getLinkedCalendars() {
+ return linkedCalendars;
+ }
+
+ /**
+ * Gets maxSpan
+ * @return maxSpan
+ */
+ public Integer getMaxSpan() {
+ return maxSpan;
+ }
+
+ /**
+ * Gets maxYear
+ * @return maxYear
+ */
+ public Integer getMaxYear() {
+ return maxYear;
+ }
+
+ /**
+ * Gets minYear
+ * @return minYear
+ */
+ public Integer getMinYear() {
+ return minYear;
+ }
+
+ /**
+ * Gets opens
+ * @return opens
+ */
+ public String getOpens() {
+ return opens;
+ }
+
+ /**
+ * Gets showDropdowns
+ * @return showDropdowns
+ */
+ public Boolean getShowDropdowns() {
+ return showDropdowns;
+ }
+
+ /**
+ * Gets showRanges
+ * @return showRanges
+ */
+ public Boolean getShowRanges() {
+ return showRanges;
+ }
+
+ /**
+ * Gets showWeekNumbers
+ * @return showWeekNumbers
+ */
+ public Boolean getShowWeekNumbers() {
+ return showWeekNumbers;
+ }
+
+ /**
+ * Gets showIsoWeekNumbers
+ * @return showIsoWeekNumbers
+ */
+ public Boolean getShowIsoWeekNumbers() {
+ return showIsoWeekNumbers;
+ }
+
+ /**
+ * Gets singleDatePicker
+ * @return singleDatePicker
+ */
+ public Boolean getSingleDatePicker() {
+ return singleDatePicker;
+ }
+
+ /**
+ * Gets timePicker
+ * @return timePicker
+ */
+ public Boolean getTimePicker() {
+ return timePicker;
+ }
+
+ /**
+ * Gets timePicker24Hour
+ * @return timePicker24Hour
+ */
+ public Boolean getTimePicker24Hour() {
+ return timePicker24Hour;
+ }
+
+ /**
+ * Gets timePickerIncrement
+ * @return timePickerIncrement
+ */
+ public Integer getTimePickerIncrement() {
+ return timePickerIncrement;
+ }
+
+ /**
+ * Gets timePickerSeconds
+ * @return timePickerSeconds
+ */
+ public Boolean getTimePickerSeconds() {
+ return timePickerSeconds;
+ }
+
+ protected DateRangePickerField(DateRangePickerField original, ModelFormField modelFormField) {
+ super(original.getFieldSource(), original.getFieldType(), modelFormField);
+ this.alwaysShowCalendars = original.alwaysShowCalendars;
+ this.applyButtonClasses = original.applyButtonClasses;
+ this.applyLabel = original.applyLabel;
+ this.autoApply = original.autoApply;
+ this.buttonClasses = original.buttonClasses;
+ this.cancelButtonClasses = original.cancelButtonClasses;
+ this.cancelLabel = original.cancelLabel;
+ this.clearTitle = original.clearTitle;
+ this.defaultValue = original.defaultValue;
+ this.drops = original.drops;
+ this.linkedCalendars = original.linkedCalendars;
+ this.maxSpan = original.maxSpan;
+ this.maxYear = original.maxYear;
+ this.minYear = original.minYear;
+ this.opens = original.opens;
+ this.showDropdowns = original.showDropdowns;
+ this.showIsoWeekNumbers = original.showIsoWeekNumbers;
+ this.showRanges = original.showRanges;
+ this.showWeekNumbers = original.showWeekNumbers;
+ this.singleDatePicker = original.singleDatePicker;
+ this.timePicker = original.timePicker;
+ this.timePicker24Hour = original.timePicker24Hour;
+ this.timePickerIncrement = original.timePickerIncrement;
+ this.timePickerSeconds = original.timePickerSeconds;
+ }
+
+ public DateRangePickerField(Element element, ModelFormField modelFormField) {
+ super(element, modelFormField);
+ this.alwaysShowCalendars = !"false".equals(element.getAttribute("always-show-calendars"));
+ this.applyButtonClasses = FlexibleStringExpander.getInstance(element.getAttribute("apply-button-classes"));
+ this.applyLabel = FlexibleStringExpander.getInstance(element.getAttribute("apply-label"));
+ this.autoApply = !"false".equals(element.getAttribute("auto-apply"));
+ this.buttonClasses = FlexibleStringExpander.getInstance(element.getAttribute("button-classes"));
+ this.cancelButtonClasses = FlexibleStringExpander.getInstance(element.getAttribute("cancel-button-classes"));
+ this.cancelLabel = FlexibleStringExpander.getInstance(element.getAttribute("cancel-label"));
+ this.clearTitle = FlexibleStringExpander.getInstance(element.getAttribute("clear-title"));
+ this.defaultValue = FlexibleStringExpander.getInstance(element.getAttribute("default-value"));
+ this.drops = element.getAttribute("drops");
+ this.linkedCalendars = !"false".equals(element.getAttribute("linked-calendars"));
+
+ Integer maxSpan = null;
+ String maxSpanStr = element.getAttribute("max-span");
+ if (!maxSpanStr.isEmpty()) {
+ try {
+ maxSpan = Integer.valueOf(maxSpanStr);
+ } catch (NumberFormatException e) {
+ Debug.logError("Could not parse the max-span value of the text element: [" + maxSpanStr
+ + "], setting to null; default of no maxYear will be used", MODULE);
+ }
+ }
+ this.maxSpan = maxSpan;
+
+ Integer maxYear = null;
+ String maxYearStr = element.getAttribute("max-year");
+ if (!maxYearStr.isEmpty()) {
+ try {
+ maxYear = Integer.valueOf(maxYearStr);
+ } catch (NumberFormatException e) {
+ Debug.logError("Could not parse the max-year value of the text element: [" + maxYearStr
+ + "], setting to null; default of no maxYear will be used", MODULE);
+ }
+ }
+ this.maxYear = maxYear;
+
+ Integer minYear = null;
+ String minYearStr = element.getAttribute("min-year");
+ if (!minYearStr.isEmpty()) {
+ try {
+ minYear = Integer.valueOf(minYearStr);
+ } catch (NumberFormatException e) {
+ Debug.logError("Could not parse the min-year value of the text element: [" + minYearStr
+ + "], setting to null; default of no minYear will be used", MODULE);
+ }
+ }
+ this.minYear = minYear;
+
+ this.opens = element.getAttribute("opens");
+ this.showDropdowns = !"false".equals(element.getAttribute("show-dropdowns"));
+ this.showIsoWeekNumbers = !"false".equals(element.getAttribute("show-iso-week-numbers"));
+ this.showRanges = !"false".equals(element.getAttribute("show-ranges"));
+ this.showWeekNumbers = !"false".equals(element.getAttribute("show-week-numbers"));
+ this.singleDatePicker = !"false".equals(element.getAttribute("single-date-picker"));
+ this.timePicker = !"false".equals(element.getAttribute("time-picker"));
+ this.timePicker24Hour = !"false".equals(element.getAttribute("time-picker-24-hour"));
+
+ Integer timePickerIncrement = null;
+ String timePickerIncrementStr = element.getAttribute("time-picker-increment");
+ if (!timePickerIncrementStr.isEmpty()) {
+ try {
+ timePickerIncrement = Integer.valueOf(timePickerIncrementStr);
+ } catch (NumberFormatException e) {
+ Debug.logError("Could not parse the time-picker-increment value of the text element: [" + timePickerIncrementStr
+ + "], setting to null; default of no timePickerIncrement will be used", MODULE);
+ }
+ }
+ this.timePickerIncrement = timePickerIncrement;
+
+ this.timePickerSeconds = !"false".equals(element.getAttribute("time-picker-seconds"));
+ }
+
+ public DateRangePickerField(int fieldSource, Boolean timePicker) {
+ super(fieldSource, FieldInfo.DATE_RANGE_PICKER, null);
+ this.alwaysShowCalendars = true;
+ this.applyButtonClasses = FlexibleStringExpander.getInstance("");
+ this.applyLabel = FlexibleStringExpander.getInstance("");
+ this.autoApply = true;
+ this.buttonClasses = FlexibleStringExpander.getInstance("");
+ this.cancelButtonClasses = FlexibleStringExpander.getInstance("");
+ this.cancelLabel = FlexibleStringExpander.getInstance("");
+ this.clearTitle = FlexibleStringExpander.getInstance("");
+ this.defaultValue = FlexibleStringExpander.getInstance("");
+ this.drops = "down";
+ this.linkedCalendars = true;
+ this.maxSpan = null;
+ this.maxYear = null;
+ this.minYear = null;
+ this.opens = "center";
+ this.showDropdowns = true;
+ this.showIsoWeekNumbers = false;
+ this.showRanges = true;
+ this.showWeekNumbers = false;
+ this.singleDatePicker = false;
+ this.timePicker = timePicker;
+ this.timePicker24Hour = true;
+ this.timePickerIncrement = null;
+ this.timePickerSeconds = false;
+ }
+
+ public DateRangePickerField(ModelFormField modelFormField) {
+ super(FieldInfo.SOURCE_EXPLICIT, FieldInfo.DATE_RANGE_PICKER, modelFormField);
+ this.alwaysShowCalendars = true;
+ this.applyButtonClasses = FlexibleStringExpander.getInstance("");
+ this.applyLabel = FlexibleStringExpander.getInstance("");
+ this.autoApply = true;
+ this.buttonClasses = FlexibleStringExpander.getInstance("");
+ this.cancelButtonClasses = FlexibleStringExpander.getInstance("");
+ this.cancelLabel = FlexibleStringExpander.getInstance("");
+ this.clearTitle = FlexibleStringExpander.getInstance("");
+ this.defaultValue = FlexibleStringExpander.getInstance("");
+ this.drops = "down";
+ this.linkedCalendars = true;
+ this.maxSpan = null;
+ this.maxYear = null;
+ this.minYear = null;
+ this.opens = "center";
+ this.showDropdowns = true;
+ this.showIsoWeekNumbers = false;
+ this.showRanges = true;
+ this.showWeekNumbers = false;
+ this.singleDatePicker = false;
+ this.timePicker = false;
+ this.timePicker24Hour = true;
+ this.timePickerIncrement = null;
+ this.timePickerSeconds = false;
+ }
+
+ @Override
+ public void accept(ModelFieldVisitor visitor) throws Exception {
+ visitor.visit(this);
+ }
+
+ @Override
+ public FieldInfo copy(ModelFormField modelFormField) {
+ return new DateRangePickerField(this, modelFormField);
+ }
+
+ @Override
+ public void renderFieldString(Appendable writer, Map<String, Object> context, FormStringRenderer formStringRenderer)
+ throws IOException {
+ formStringRenderer.renderDateRangePickerField(writer, context, this);
+ }
+ }
+
/**
* Models the <display-entity> element.
* @see <code>widget-form.xsd</code>
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
index d3429d8691..2fdfbfdb4d 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
@@ -44,6 +44,7 @@ import org.apache.ofbiz.widget.model.ModelFormField.CheckField;
import org.apache.ofbiz.widget.model.ModelFormField.ContainerField;
import org.apache.ofbiz.widget.model.ModelFormField.DateFindField;
import org.apache.ofbiz.widget.model.ModelFormField.DateTimeField;
+import org.apache.ofbiz.widget.model.ModelFormField.DateRangePickerField;
import org.apache.ofbiz.widget.model.ModelFormField.DisplayEntityField;
import org.apache.ofbiz.widget.model.ModelFormField.DisplayField;
import org.apache.ofbiz.widget.model.ModelFormField.DropDownField;
@@ -260,6 +261,8 @@ public class ModelFormFieldBuilder {
this.fieldInfo = new DateFindField(childElement, null);
} else if ("range-find".equals(this.fieldType)) {
this.fieldInfo = new RangeFindField(childElement, null);
+ } else if ("date-range-picker".equals(this.fieldType)) {
+ this.fieldInfo = new DateRangePickerField(childElement, null);
} else if ("lookup".equals(this.fieldType)) {
this.fieldInfo = new LookupField(childElement, null);
} else if ("include-menu".equals(this.fieldType)) {
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetFieldVisitor.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetFieldVisitor.java
index bf880e7d08..15e519dfd6 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetFieldVisitor.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetFieldVisitor.java
@@ -97,6 +97,14 @@ public class XmlWidgetFieldVisitor extends XmlAbstractWidgetVisitor implements M
writer.append("/></field>");
}
+ @Override
+ public void visit(ModelFormField.DateRangePickerField dateRangePickerField) throws Exception {
+ visitModelField(dateRangePickerField.getModelFormField());
+ writer.append("<date-range-picker");
+ visitDateRangePickerFieldAttrs(dateRangePickerField);
+ writer.append("/></field>");
+ }
+
@Override
public void visit(DisplayEntityField displayField) throws Exception {
visitModelField(displayField.getModelFormField());
@@ -374,6 +382,32 @@ public class XmlWidgetFieldVisitor extends XmlAbstractWidgetVisitor implements M
visitAttribute("step", field.getStep());
}
+ private void visitDateRangePickerFieldAttrs(ModelFormField.DateRangePickerField field) throws Exception {
+ visitAttribute("always-show-calendars", field.getAlwaysShowCalendars());
+ visitAttribute("apply-button-classes", field.getApplyButtonClasses());
+ visitAttribute("apply-label", field.getApplyLabel());
+ visitAttribute("auto-apply", field.getAutoApply());
+ visitAttribute("button-classes", field.getButtonClasses());
+ visitAttribute("cancel-button-classes", field.getCancelButtonClasses());
+ visitAttribute("cancel-label", field.getCancelLabel());
+ visitAttribute("clear-title", field.getClearTitle());
+ visitAttribute("default-value", field.getDefaultValue());
+ visitAttribute("drops", field.getDrops());
+ visitAttribute("linked-calendars", field.getLinkedCalendars());
+ visitAttribute("max-year", field.getMaxYear());
+ visitAttribute("min-year", field.getMinYear());
+ visitAttribute("opens", field.getOpens());
+ visitAttribute("show-dropdowns", field.getShowDropdowns());
+ visitAttribute("show-iso-week-numbers", field.getShowIsoWeekNumbers());
+ visitAttribute("show-ranges", field.getShowRanges());
+ visitAttribute("show-week-numbers", field.getShowWeekNumbers());
+ visitAttribute("single-date-picker", field.getSingleDatePicker());
+ visitAttribute("time-picker", field.getTimePicker());
+ visitAttribute("time-picker-24-hour", field.getTimePicker24Hour());
+ visitAttribute("time-picker-increment", field.getTimePickerIncrement());
+ visitAttribute("time-picker-seconds", field.getTimePickerSeconds());
+ }
+
private void visitFieldInfoWithOptions(FieldInfoWithOptions fieldInfo) throws Exception {
visitAttribute("no-current-selected-key", fieldInfo.getNoCurrentSelectedKey());
writer.append(">");
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
index 20c183e880..064bbe75e0 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/FormStringRenderer.java
@@ -98,6 +98,7 @@ public interface FormStringRenderer {
void renderTextFindField(Appendable writer, Map<String, Object> context, ModelFormField.TextFindField textField) throws IOException;
void renderDateFindField(Appendable writer, Map<String, Object> context, ModelFormField.DateFindField textField) throws IOException;
void renderRangeFindField(Appendable writer, Map<String, Object> context, ModelFormField.RangeFindField textField) throws IOException;
+ void renderDateRangePickerField(Appendable writer, Map<String, Object> context, ModelFormField.DateRangePickerField textField) throws IOException;
void renderLookupField(Appendable writer, Map<String, Object> context, ModelFormField.LookupField textField) throws IOException;
void renderFileField(Appendable writer, Map<String, Object> context, ModelFormField.FileField textField) throws IOException;
void renderPasswordField(Appendable writer, Map<String, Object> context, ModelFormField.PasswordField textField) throws IOException;
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/fo/FoFormRenderer.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/fo/FoFormRenderer.java
index 37ad1fd357..9bb8e4486f 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/fo/FoFormRenderer.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/fo/FoFormRenderer.java
@@ -128,6 +128,14 @@ public class FoFormRenderer extends HtmlWidgetRenderer implements FormStringRend
appendWhitespace(writer);
}
+ @Override
+ public void renderDateRangePickerField(Appendable writer, Map<String, Object> context, ModelFormField.DateRangePickerField dateRangePickerField)
+ throws IOException {
+ ModelFormField modelFormField = dateRangePickerField.getModelFormField();
+ makeBlockString(writer, modelFormField.getWidgetStyle(), modelFormField.getEntry(context, dateRangePickerField.getDefaultValue(context)));
+ appendWhitespace(writer);
+ }
+
@Override
public void renderDropDownField(Appendable writer, Map<String, Object> context, DropDownField dropDownField) throws IOException {
ModelFormField modelFormField = dropDownField.getModelFormField();
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
index 638abe0dbc..31a2c4b05f 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRenderer.java
@@ -1380,6 +1380,14 @@ public final class MacroFormRenderer implements FormStringRenderer {
this.appendTooltip(writer, context, modelFormField);
}
+ @Override
+ public void renderDateRangePickerField(Appendable writer, Map<String, Object> context, ModelFormField.DateRangePickerField dateRangePickerField) {
+ writeFtlElement(writer, renderableFtlFormElementsBuilder.dateRangePicker(context, dateRangePickerField));
+
+ final ModelFormField modelFormField = dateRangePickerField.getModelFormField();
+ this.appendTooltip(writer, context, modelFormField);
+ }
+
@Override
public void renderLookupField(Appendable writer, Map<String, Object> context, LookupField lookupField) throws IOException {
ModelFormField modelFormField = lookupField.getModelFormField();
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java
index 413132c09f..352257cfbc 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilder.java
@@ -27,6 +27,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
@@ -663,6 +664,109 @@ public final class RenderableFtlFormElementsBuilder {
return macroCallBuilder.build();
}
+ public RenderableFtl dateRangePicker(final Map<String, Object> context, final ModelFormField.DateRangePickerField dateRangePickerField) {
+ final ModelFormField modelFormField = dateRangePickerField.getModelFormField();
+ final ModelForm modelForm = modelFormField.getModelForm();
+ final String name = modelFormField.getParameterName(context);
+ final Locale locale = (Locale) context.get("locale");
+ String className = UtilFormatOut.checkNull(dateRangePickerField.getModelFormField().getWidgetStyle());
+
+ String event = "";
+ String action = "";
+ if (UtilValidate.isNotEmpty(modelFormField.getEvent()) && UtilValidate.isNotEmpty(modelFormField.getAction(context))) {
+ event = modelFormField.getEvent();
+ action = modelFormField.getAction(context);
+ }
+
+ final Map<String, String> uiLabelMap = UtilGenerics.cast(context.get("uiLabelMap"));
+ if (uiLabelMap == null) {
+ Debug.logWarning("Could not find uiLabelMap in context", MODULE);
+ }
+
+ final Function<String, String> getOpLabel = (label) -> UtilProperties.getMessage("conditionalUiLabels", label, locale);
+
+ String applyLabel = Optional.ofNullable(dateRangePickerField.getApplyLabel(context))
+ .filter(s -> !s.isEmpty())
+ .orElse(UtilProperties.getMessage("CommonUiLabels", "CommonApply", locale));
+ String cancelLabel = Optional.ofNullable(dateRangePickerField.getCancelLabel(context))
+ .filter(s -> !s.isEmpty())
+ .orElse(UtilProperties.getMessage("CommonUiLabels", "CommonCancel", locale));
+ String clearTitle = Optional.ofNullable(dateRangePickerField.getClearTitle(context))
+ .filter(s -> !s.isEmpty())
+ .orElse(UtilProperties.getMessage("CommonUiLabels", "CommonClear", locale));
+
+ final RenderableFtlMacroCallBuilder macroCallBuilder = RenderableFtlMacroCall.builder()
+ .name("renderDateRangePicker")
+ .stringParameter("name", name)
+ .stringParameter("id", modelFormField.getCurrentContainerId(context))
+ .stringParameter("className", className)
+ .stringParameter("formName", FormRenderer.getCurrentFormName(modelForm, context))
+ .stringParameter("event", event)
+ .stringParameter("action", action)
+ .stringParameter("locale", locale.toString())
+ .stringParameter("conditionGroup", modelFormField.getConditionGroup())
+ .stringParameter("tabindex", modelFormField.getTabindex())
+
+ .booleanParameter("alwaysShowCalendars", dateRangePickerField.getAlwaysShowCalendars())
+ .stringParameter("applyButtonClasses", dateRangePickerField.getApplyButtonClasses(context))
+ .stringParameter("applyLabel", applyLabel)
+ .booleanParameter("autoApply", dateRangePickerField.getAutoApply())
+ .stringParameter("buttonClasses", dateRangePickerField.getButtonClasses(context))
+ .stringParameter("cancelButtonClasses", dateRangePickerField.getCancelButtonClasses(context))
+ .stringParameter("cancelLabel", cancelLabel)
+ .stringParameter("clearTitle", clearTitle)
+ .stringParameter("drops", dateRangePickerField.getDrops())
+ .booleanParameter("linkedCalendars", dateRangePickerField.getLinkedCalendars())
+ .stringParameter("maxSpan", Optional.ofNullable(dateRangePickerField.getMaxSpan()).map(Objects::toString).orElse(""))
+ .stringParameter("maxYear", Optional.ofNullable(dateRangePickerField.getMaxYear()).map(Objects::toString).orElse(""))
+ .stringParameter("minYear", Optional.ofNullable(dateRangePickerField.getMinYear()).map(Objects::toString).orElse(""))
+ .stringParameter("opens", dateRangePickerField.getOpens())
+ .stringParameter("rangeThisWeekLabel", getOpLabel.apply("this_week"))
+ .stringParameter("rangeLastWeekLabel", getOpLabel.apply("last_week"))
+ .stringParameter("rangeNextWeekLabel", getOpLabel.apply("next_week"))
+ .stringParameter("rangeThisMonthLabel", getOpLabel.apply("this_month"))
+ .stringParameter("rangeLastMonthLabel", getOpLabel.apply("last_month"))
+ .stringParameter("rangeNextMonthLabel", getOpLabel.apply("next_month"))
+ .booleanParameter("showDropdowns", dateRangePickerField.getShowDropdowns())
+ .booleanParameter("showIsoWeekNumbers", dateRangePickerField.getShowIsoWeekNumbers())
+ .booleanParameter("showRanges", dateRangePickerField.getShowRanges())
+ .booleanParameter("showWeekNumbers", dateRangePickerField.getShowWeekNumbers())
+ .booleanParameter("singleDatePicker", dateRangePickerField.getSingleDatePicker())
+ .booleanParameter("timePicker", dateRangePickerField.getTimePicker())
+ .booleanParameter("timePicker24Hour", dateRangePickerField.getTimePicker24Hour())
+ .stringParameter("timePickerIncrement",
+ Optional.ofNullable(dateRangePickerField.getTimePickerIncrement()).map(Objects::toString).orElse(""))
+ .booleanParameter("timePickerSeconds", dateRangePickerField.getTimePickerSeconds());
+
+ macroCallBuilder.stringParameter("alert", "false");
+ if (UtilValidate.isNotEmpty(modelFormField.getWidgetStyle())) {
+ macroCallBuilder.stringParameter("className", modelFormField.getWidgetStyle());
+ if (modelFormField.shouldBeRed(context)) {
+ macroCallBuilder.stringParameter("alert", "true");
+ }
+ }
+
+ macroCallBuilder
+ .stringParameter("value", modelFormField.getEntry(context, dateRangePickerField.getDefaultValue(context)))
+ .stringParameter("value2", modelFormField.getEntry(context));
+
+ if (context.containsKey("parameters")) {
+ final Map<String, Object> parameters = UtilGenerics.cast(context.get("parameters"));
+ if (parameters.containsKey(name + "_fld0_value")) {
+ macroCallBuilder.stringParameter("value", (String) parameters.get(name + "_fld0_value"));
+ }
+ if (parameters.containsKey(name + "_fld1_value")) {
+ macroCallBuilder.stringParameter("value2", (String) parameters.get(name + "_fld1_value"));
+ }
+ }
+
+ if (UtilValidate.isNotEmpty(modelFormField.getTitleStyle())) {
+ macroCallBuilder.stringParameter("titleStyle", modelFormField.getTitleStyle());
+ }
+
+ return macroCallBuilder.build();
+ }
+
public RenderableFtl makeHyperlinkString(final ModelFormField.SubHyperlink subHyperlink,
final Map<String, Object> context) {
if (subHyperlink == null || !subHyperlink.shouldUse(context)) {
diff --git a/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRendererTest.java b/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRendererTest.java
index 3964d961ce..c95c50fdf5 100644
--- a/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRendererTest.java
+++ b/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/MacroFormRendererTest.java
@@ -256,6 +256,21 @@ public class MacroFormRendererTest {
genericTooltipRenderedVerification();
}
+ @Test
+ public void dateRangePickerFieldMacroRendered(@Mocked ModelFormField.DateRangePickerField dateRangePickerField) throws IOException {
+ new Expectations() {
+ {
+ renderableFtlFormElementsBuilder.dateRangePicker(withNotNull(), dateRangePickerField);
+ result = genericMacroCall;
+ }
+ };
+
+ genericTooltipRenderedExpectation(dateRangePickerField);
+ macroFormRenderer.renderDateRangePickerField(appendable, ImmutableMap.of(), dateRangePickerField);
+ genericSingleMacroRenderedVerification();
+ genericTooltipRenderedVerification();
+ }
+
@Test
public void checkFieldMacroRendered(@Mocked ModelFormField.CheckField checkField) throws IOException {
final List<ModelFormField.OptionValue> optionValues = ImmutableList.of(
diff --git a/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilderTest.java b/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilderTest.java
index c31b0a966d..7da486178b 100644
--- a/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilderTest.java
+++ b/framework/widget/src/test/java/org/apache/ofbiz/widget/renderer/macro/RenderableFtlFormElementsBuilderTest.java
@@ -42,6 +42,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -485,4 +486,64 @@ public class RenderableFtlFormElementsBuilderTest {
assertThat(renderableFtl, MacroCallMatcher.hasName("renderFieldGroupClose"));
assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("style", "GROUPSTYLE")));
}
+
+ @Test
+ public void dateRangePickerField(@Mocked final ModelFormField.DateRangePickerField dateRangePickerField) {
+ new Expectations() {
+ {
+ dateRangePickerField.getAlwaysShowCalendars(); result = true;
+ dateRangePickerField.getApplyButtonClasses(withNotNull()); result = "abc";
+ dateRangePickerField.getApplyLabel(withNotNull()); result = "al";
+ dateRangePickerField.getAutoApply(); result = false;
+ dateRangePickerField.getButtonClasses(withNotNull()); result = "bc";
+ dateRangePickerField.getCancelButtonClasses(withNotNull()); result = "cbc";
+ dateRangePickerField.getCancelLabel(withNotNull()); result = "cl";
+ dateRangePickerField.getClearTitle(withNotNull()); result = "ct";
+ dateRangePickerField.getDrops(); result = "down";
+ dateRangePickerField.getLinkedCalendars(); result = false;
+ dateRangePickerField.getMaxSpan(); result = 9;
+ dateRangePickerField.getMaxYear(); result = 2100;
+ dateRangePickerField.getMinYear(); result = 1900;
+ dateRangePickerField.getOpens(); result = "right";
+ dateRangePickerField.getShowDropdowns(); result = true;
+ dateRangePickerField.getShowIsoWeekNumbers(); result = true;
+ dateRangePickerField.getShowRanges(); result = true;
+ dateRangePickerField.getShowWeekNumbers(); result = true;
+ dateRangePickerField.getSingleDatePicker(); result = false;
+ dateRangePickerField.getTimePicker(); result = true;
+ dateRangePickerField.getTimePicker24Hour(); result = true;
+ dateRangePickerField.getTimePickerIncrement(); result = 5;
+ dateRangePickerField.getTimePickerSeconds(); result = true;
+ }
+ };
+
+ final Map<String, Object> context = new HashMap<>();
+ context.put("locale", new Locale("fr"));
+
+ final RenderableFtl renderableFtl = renderableFtlFormElementsBuilder.dateRangePicker(context, dateRangePickerField);
+ assertThat(renderableFtl, MacroCallMatcher.hasName("renderDateRangePicker"));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("alwaysShowCalendars", true)));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("applyButtonClasses", "abc")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("applyLabel", "al")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("autoApply", false)));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("buttonClasses", "bc")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("cancelButtonClasses", "cbc")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("cancelLabel", "cl")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("clearTitle", "ct")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("drops", "down")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("linkedCalendars", false)));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("maxSpan", "9")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("maxYear", "2100")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("minYear", "1900")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("opens", "right")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("showDropdowns", true)));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("showIsoWeekNumbers", true)));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("showRanges", true)));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("showWeekNumbers", true)));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("singleDatePicker", false)));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("timePicker", true)));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("timePicker24Hour", true)));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndStringValue("timePickerIncrement", "5")));
+ assertThat(renderableFtl, MacroCallMatcher.hasParameters(MacroCallParameterMatcher.hasNameAndBooleanValue("timePickerSeconds", true)));
+ }
}
diff --git a/themes/bluelight/webapp/bluelight/style.css b/themes/bluelight/webapp/bluelight/style.css
index e64d8e6fea..a5aaac2293 100644
--- a/themes/bluelight/webapp/bluelight/style.css
+++ b/themes/bluelight/webapp/bluelight/style.css
@@ -41,6 +41,8 @@ body {
line-height: 1.5em;
color: black;
background: white;
+ font-size: 62.5%;
+ position: relative;
}
/* reset line height and baseline colors*/
@@ -88,12 +90,6 @@ body, textarea, input, select {
font-family: Verdana, Arial, Helvetica, sans-serif;
}
-body {
- background: #B8DFFC;
- font-size: 62.5%;
- position: relative;
-}
-
hr {
background-color: #999999;
border: 0;
@@ -318,7 +314,6 @@ A.buttontext, .buttontextdisabled, .button-bar li.buttontext a {
line-height: 1.8em;
margin: 0.2em;
padding: 0.1em 0.4em 0.1em 0.4em;
- /*white-space: nowrap;*/
}
A.buttontext, .button-bar li.buttontext a {
@@ -542,7 +537,6 @@ A IMG.imageborder {
.productsummary .smallimage {
float: left;
- /* position: absolute; top: 5px; left: 5px; */
margin: 0 0.5em 0.5em 0;
}
@@ -558,7 +552,7 @@ A IMG.imageborder {
width: 13em;
}
-.productsummary .productinfo { /* margin-left: 60px; */
+.productsummary .productinfo {
text-align: left;
}
@@ -863,6 +857,7 @@ in contained elements. */
}
.content-messages p {
+ display: none;
margin: 0.5em 0 0.5em 0;
}
@@ -906,26 +901,33 @@ in contained elements. */
/* ===== Used to align elements ===== */
/* ================================== */
.align-bottom {
- vertical-align: bottom;;
+ vertical-align: bottom;
}
+
.align-center {
text-align: center;
}
+
.align-justify {
text-align: justify;
}
+
.align-left {
text-align: left;
}
+
.align-middle {
- vertical-align: bottom;;
+ vertical-align: bottom;
}
+
.align-right {
text-align: right;
}
+
.align-text {
text-align: right;
}
+
.align-top {
vertical-align: top;
}
@@ -1101,10 +1103,6 @@ ul#preferences-menu li a.help-link {
/* ======================================================= */
/* ===== Secondary Navigation (App Menu) Styles ========== */
/* ======================================================= */
-#secondary-navigation {
-
-}
-
#secondary-navigation a {
padding: 0 1em 0 1em;
border: 0.05em solid #000099;
@@ -1314,7 +1312,7 @@ ul#preferences-menu li a.help-link {
}
.screenlet-title-bar ul .collapsed,
-.screenlet-title-bar ul .expanded{
+.screenlet-title-bar ul .expanded {
/* IE fix */
cursor: default;
}
@@ -1335,7 +1333,6 @@ ajax auto complete
div.autocomplete {
position: absolute;
width: auto !important;
- /* min-width:154px; */
background-color: #f8f8f8;
border: 1px solid #999999;
margin: 0;
@@ -1358,7 +1355,6 @@ div.autocomplete ul li {
float: none;
margin: 0;
padding: 2px;
- /*height:32px;*/
cursor: pointer;
}
@@ -1386,14 +1382,6 @@ div.autocomplete ul li {
padding-left: 1em;
}
-.basic-nav ul { /* placeholder */
-
-}
-
-.basic-nav ul li {
-
-}
-
.basic-nav ul a {
color: #000099;
font-size: 1.1em;
@@ -1905,7 +1893,6 @@ render borders around empty <td> elements */
}
.nav-pager ul li span {
- display: none;
visibility: hidden;
display: block;
height: 16px;
@@ -1951,7 +1938,6 @@ render borders around empty <td> elements */
.field-lookup a {
background: url(/bluelight/images/application_view_list.png) no-repeat 0 0;
display: inline-block;
- /* margin: 3px 10px 0px 4px; */
vertical-align: top;
margin-top: 3px;
width: 16px;
@@ -2072,7 +2058,6 @@ Webtools
position: absolute;
}
-}
.wait-spinner div {
padding-top: 4px;
}
@@ -2085,25 +2070,21 @@ Webtools
}
img.cssImgXLarge {
- /*border: 1px black solid;*/
max-width: 200px;
max-height: 150px;
}
img.cssImgLarge {
- /*border: 1px black solid;*/
max-width: 100px;
max-height: 75px;
}
img.cssImgStandard {
- /*border: 1px black solid;*/
max-width: 70px;
max-height: 52px;
}
img.cssImgSmall {
- /*border: 1px black solid;*/
max-width: 50px;
max-height: 37px;
}
@@ -2170,29 +2151,8 @@ img.cssImgSmall {
cursor: default !important;
}
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
- display: block;
- text-indent: -99999px;
- overflow: hidden;
- background-repeat: no-repeat;
-}
-
/* Misc visuals
----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
-}
-
.ui-resizable {
position: relative;
}
@@ -2312,16 +2272,6 @@ img.cssImgSmall {
zoom: 1;
}
-.ui-autocomplete {
- position: absolute;
- cursor: default;
-}
-
-/* workarounds */
-* html .ui-autocomplete {
- width: 1px;
-}
-
/* without this, the menu expands to 100% in IE6 */
.ui-button {
display: inline-block;
@@ -2655,9 +2605,8 @@ button.ui-button::-moz-focus-inner {
.ui-dialog {
position: absolute;
top: 50%;
- left:50%;
+ left: 50%;
transform: translate(-50%, -50%);
- padding;
padding: .2em;
width: 300px;
overflow: hidden;
@@ -2684,7 +2633,6 @@ button.ui-button::-moz-focus-inner {
height: 18px;
}
-/*.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }*/
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus {
padding: 0;
}
@@ -3138,6 +3086,10 @@ body .ui-tooltip {
/* states and images */
.ui-icon {
+ display: block;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
width: 16px;
height: 16px;
background-image: url(/bluelight/images/ui-icons_222222_256x240.png);
@@ -3903,6 +3855,11 @@ body .ui-tooltip {
/* Overlays */
.ui-widget-overlay {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
background: #aaaaaa url(/bluelight/images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
opacity: .3;
filter: Alpha(Opacity=30);
@@ -3921,15 +3878,44 @@ body .ui-tooltip {
}
/* Calendar Button and Image */
-.view-calendar button {
- background: url(/bluelight/images/cal.gif) no-repeat !important;
- display: inline-block;
- border: none;
- vertical-align: center;
- margin-top: 3px;
- margin-left: 6px;
- width: 22px;
- height: 22px;
+.view-calendar {
+ button.ui-datepicker-trigger {
+ background: url(/bluelight/images/cal.gif) no-repeat !important;
+ display: inline-block;
+ border: none;
+ vertical-align: center;
+ margin-top: 3px;
+ margin-left: 6px;
+ width: 22px;
+ height: 22px;
+ }
+
+ &.drp {
+ &.single.no-time input[type="text"] {
+ width: 60px;
+ }
+ &.single.time.no-seconds input[type="text"] {
+ width: 90px;
+ }
+ &.single.time.seconds input[type="text"] {
+ width: 110px;
+ }
+ &.range.no-time input[type="text"] {
+ width: 130px;
+ }
+ &.range.time.no-seconds input[type="text"] {
+ width: 200px;
+ }
+ &.range.time.seconds input[type="text"] {
+ width: 230px;
+ }
+
+ button.clear-calendar {
+ background-color: transparent;
+ border: none;
+ cursor: pointer;
+ }
+ }
}
/* css for timepicker */
@@ -4043,10 +4029,6 @@ body .ui-tooltip {
border: 1px solid #f0f0f0;
}
-.content-messages p {
- display: none;
-}
-
/* From http://jqueryui.com/demos/autocomplete/maxheight.html */
/* When displaying a long list of options, you can simply set the max-height for the autocomplete menu to prevent the menu from growing too large */
.ui-autocomplete {
@@ -4056,6 +4038,8 @@ body .ui-tooltip {
overflow-x: hidden;
/* add padding to account for vertical scrollbar */
padding-right: 20px;
+ position: absolute;
+ cursor: default;
}
/* IE 6 doesn't support max-height
@@ -4063,6 +4047,7 @@ body .ui-tooltip {
*/
* html .ui-autocomplete {
height: 250px;
+ width: 1px;
}
/* The custom CSS for adjust the JsTree */
@@ -4089,13 +4074,14 @@ html > /**/ body .jstree-default a {
}
/*The Custom css for SELECT 2*/
-.select2-container--default .select2-selection--multiple{
+.select2-container--default .select2-selection--multiple {
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
border-radius: 0px;
border-color: #848484 #c1c1c1 #e1e1e1;
min-height: unset !important;
}
+
/* The custom CSS to show mouse pointer on links using featherlight plugin */
a[data-featherlight] {
cursor: pointer;
diff --git a/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl b/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl
index 379b8ae111..85e60d5ec4 100644
--- a/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl
+++ b/themes/common-theme/template/macro/CsvFormMacroLibrary.ftl
@@ -121,3 +121,6 @@ under the License.
<#macro makeHiddenFormLinkForm actionUrl name parameters targetWindow></#macro>
<#macro makeHiddenFormLinkAnchor linkStyle hiddenFormName event action imgSrc description confirmation><@renderField description /></#macro>
<#macro makeHyperlinkString hiddenFormName imgSrc imgTitle title alternate linkUrl description linkStyle="" event="" action="" targetParameters="" targetWindow="" confirmation="" uniqueItemName="" height="" width="" id=""><@renderField description />,<#rt/></#macro>
+<#macro renderDateRangePicker className alert id name value formName event action locale alwaysShowCalendars applyButtonClasses applyLabel autoApply buttonClasses cancelButtonClasses cancelLabel clearTitle
+ drops linkedCalendars maxSpan maxYear minYear opens rangeLastMonthLabel rangeLastWeekLabel rangeNextMonthLabel rangeNextWeekLabel rangeThisMonthLabel rangeThisWeekLabel showDropdowns showIsoWeekNumbers showRanges showWeekNumbers
+ singleDatePicker timePicker timePicker24Hour timePickerIncrement timePickerSeconds conditionGroup="" value2="" titleStyle="" tabindex=""></#macro>
\ No newline at end of file
diff --git a/themes/common-theme/template/macro/FoFormMacroLibrary.ftl b/themes/common-theme/template/macro/FoFormMacroLibrary.ftl
index a48b69925b..730df8314d 100644
--- a/themes/common-theme/template/macro/FoFormMacroLibrary.ftl
+++ b/themes/common-theme/template/macro/FoFormMacroLibrary.ftl
@@ -146,4 +146,7 @@ under the License.
<#macro makeHyperlinkString hiddenFormName imgSrc imgTitle title alternate linkUrl description linkStyle="" event="" action="" targetParameters="" targetWindow="" confirmation="" uniqueItemName="" height="" width="" id=""><@makeBlock linkStyle description /></#macro>
<#macro renderTooltip tooltip tooltipStyle></#macro>
<#macro renderAsterisks requiredField></#macro>
+<#macro renderDateRangePicker className alert id name value formName event action locale alwaysShowCalendars applyButtonClasses applyLabel autoApply buttonClasses cancelButtonClasses cancelLabel clearTitle
+drops linkedCalendars maxSpan maxYear minYear opens rangeLastMonthLabel rangeLastWeekLabel rangeNextMonthLabel rangeNextWeekLabel rangeThisMonthLabel rangeThisWeekLabel showDropdowns showIsoWeekNumbers showRanges showWeekNumbers
+singleDatePicker timePicker timePicker24Hour timePickerIncrement timePickerSeconds conditionGroup="" value2="" titleStyle="" tabindex=""></#macro>
</#escape>
diff --git a/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl b/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl
index 0199d51da1..a9db6463b5 100644
--- a/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl
+++ b/themes/common-theme/template/macro/HtmlFormMacroLibrary.ftl
@@ -616,6 +616,138 @@ under the License.
</#if>
</#macro>
+<#macro renderDateRangePicker className alert id name value formName event action locale
+ alwaysShowCalendars applyButtonClasses applyLabel autoApply buttonClasses cancelButtonClasses cancelLabel clearTitle
+ drops linkedCalendars maxSpan maxYear minYear opens rangeLastMonthLabel rangeLastWeekLabel rangeNextMonthLabel
+ rangeNextWeekLabel rangeThisMonthLabel rangeThisWeekLabel showDropdowns showIsoWeekNumbers showRanges showWeekNumbers
+ singleDatePicker timePicker timePicker24Hour timePickerIncrement timePickerSeconds
+ conditionGroup="" value2="" titleStyle="" tabindex="">
+ <#if conditionGroup?has_content>
+ <input type="hidden" name="${name}_grp" value="${conditionGroup}"/>
+ </#if>
+ <span class="view-calendar drp <#if timePicker>time<#else>no-time</#if> <#if singleDatePicker>single<#else>range</#if> <#if timePickerSeconds>seconds<#else>no-seconds</#if>">
+ <#if !singleDatePicker>
+ <input id="${id}_fld0_op" type="hidden" value="greaterThan" <#if name?has_content> name="${name}_fld0_op"</#if>/>
+ <input id="${id}_fld0_value" type="hidden"
+ <#if name?has_content> name="${name?html}_fld0_value"</#if>
+ <#if value?has_content> value="${value}"</#if>
+ <#if event?has_content && action?has_content> ${event}="${action}"</#if>/>
+ <input id="${id}_fld1_op" type="hidden" value="opLessThan" <#if name?has_content> name="${name}_fld1_op"</#if>/>
+ <input id="${id}_fld1_value" type="hidden"
+ <#if name?has_content> name="${name?html}_fld1_value"</#if>
+ <#if value2?has_content> value="${value2}"</#if>
+ <#if event?has_content && action?has_content> ${event}="${action}"</#if>/>
+ <input id="${id}" type="text" value="" <@renderClass className alert/><#if tabindex?has_content> tabindex="${tabindex}"</#if>/><#rt/>
+ <#else>
+ <input type="text" name="${name}_i18n" <@renderClass className alert /><#rt/>
+ <#if tabindex?has_content> tabindex="${tabindex}"</#if>
+ <#if title?has_content> title="${title}"</#if>
+ <#if value?has_content> value="${value}"</#if>
+ <#if id?has_content> id="${id}_i18n"</#if>/><#rt/>
+ <input type="hidden" name="${name}" <@renderClass className alert /><#rt/>
+ <#if event?has_content && action?has_content> ${event}="${action}"</#if>
+ <#if tabindex?has_content> tabindex="${tabindex}"</#if>
+ <#if value?has_content> value="${value}"</#if>
+ <#if id?has_content> id="${id}"</#if>/><#rt/>
+ </#if>
+ <button id="${id}_clear" class="clear-calendar" title="${clearTitle}">❌</button>
+ <script type="text/javascript">
+ $(document).ready(function () {
+ moment.locale('${locale}');
+ // didn't find how to get rid of freemarker escaping ":"...
+ const u = (i) => i.replaceAll(':', ':');
+ const timePicker = ${timePicker?c};
+ const timePickerSeconds = ${timePickerSeconds?c};
+ const singleDatePicker = ${singleDatePicker?c};
+ const outputFormat = 'YYYY-MM-DD' + ((timePicker || !singleDatePicker) ? ' HH:mm:ss' : '');
+ let displayFormat = 'DD/MM/YYYY' + (timePicker ? ' HH:mm' : '') + (timePicker && timePickerSeconds ? ':ss' : '');
+ const start = u('${value}');
+ const end = u('${value2}');
+ const visibleInput = singleDatePicker ? $('input[name="${name}_i18n"]') : $('#${id}');
+ const hiddenInputs = singleDatePicker ? $('[name="${name}"]') : $('#${id}_fld0_value, #${id}_fld1_value');
+
+ visibleInput.daterangepicker({
+ alwaysShowCalendars: ${alwaysShowCalendars?c},
+ <#if applyButtonClasses?has_content>applyButtonClasses: '${applyButtonClasses}',</#if>
+ autoUpdateInput: false,
+ autoApply: ${autoApply?c},
+ <#if buttonClasses?has_content>buttonClasses: '${buttonClasses}',</#if>
+ <#if cancelButtonClasses?has_content>cancelButtonClasses: '${cancelButtonClasses}',</#if>
+ <#if drops?has_content>drops: '${drops}',</#if>
+ endDate: end ? moment(end) : undefined,
+ linkedCalendars: ${linkedCalendars?c},
+ locale: {
+ <#if applyLabel?has_content>applyLabel: '${applyLabel}',</#if>
+ <#if cancelLabel?has_content>cancelLabel: '${cancelLabel}',</#if>
+ weekLabel: 'S'
+ },
+ <#if maxSpan?has_content>maxSpan: { days: ${maxSpan} },</#if>
+ <#if maxYear?has_content>maxYear: ${maxYear},</#if>
+ <#if minYear?has_content>minYear: ${minYear},</#if>
+ <#if opens?has_content>opens: '${opens}',</#if>
+ <#if showRanges && !singleDatePicker>
+ ranges: {
+ '${rangeThisWeekLabel}': [moment().startOf('week'), moment().endOf('week')],
+ '${rangeLastWeekLabel}': [moment().subtract(1, 'week').startOf('week'), moment().subtract(1, 'week').endOf('week')],
+ '${rangeNextWeekLabel}': [moment().add(1, 'week').startOf('week'), moment().add(1, 'week').endOf('week')],
+ '${rangeThisMonthLabel}': [moment().startOf('month'), moment().endOf('month')],
+ '${rangeLastMonthLabel}': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
+ '${rangeNextMonthLabel}': [moment().add(1, 'month').startOf('month'), moment().add(1, 'month').endOf('month')],
+ },
+ </#if>
+ showCustomRangeLabel: false,
+ showDropdowns: ${showDropdowns?c},
+ showIsoWeekNumbers: ${showIsoWeekNumbers?c},
+ showWeekNumbers: ${showWeekNumbers?c},
+ singleDatePicker: ${singleDatePicker?c},
+ startDate: start ? moment(start) : undefined,
+ timePicker,
+ timePicker24Hour: ${timePicker24Hour?c},
+ <#if timePickerIncrement?has_content>timePickerIncrement: ${timePickerIncrement},</#if>
+ timePickerSeconds
+ });
+
+ updateInputs(moment(start), moment(end));
+ visibleInput.on('apply.daterangepicker', function (ev, picker) { updateInputs(picker.startDate, picker.endDate) });
+ $('#${id}_clear').on('click', function (e) {
+ e.preventDefault();
+ visibleInput.val('')
+ hiddenInputs.val('');
+ });
+
+ visibleInput.on('paste', function (e) {
+ e.preventDefault();
+ const text = (e.originalEvent || e).clipboardData.getData('text/plain');
+ updateInputs(moment(text, displayFormat));
+ });
+
+ visibleInput.on('input', function (e) {
+ const text = e.target.value;
+ if (text.length === 10) {
+ updateInputs(moment(text, displayFormat));
+ }
+ });
+
+ function updateInputs(start, end) {
+ if (start.isValid()) {
+ if (singleDatePicker) {
+ visibleInput.val(start.format(displayFormat));
+ hiddenInputs.val(start.format(outputFormat)).trigger('change');
+ } else {
+ if (end.isValid()) {
+ visibleInput.val(start.format(displayFormat) + ' ➜ ' + end.format(displayFormat)).trigger('change');
+ $('#${id}_fld0_value').val(start.format(outputFormat)).trigger('change');
+ $('#${id}_fld1_value').val(end.format(outputFormat)).trigger('change');
+ }
+ }
+ }
+ }
+ });
+ </script>
+ </span>
+</#macro>
+
+
<#--
@renderLookupField
diff --git a/themes/common-theme/template/macro/TextFormMacroLibrary.ftl b/themes/common-theme/template/macro/TextFormMacroLibrary.ftl
index 42cc065153..c4223d4f0f 100644
--- a/themes/common-theme/template/macro/TextFormMacroLibrary.ftl
+++ b/themes/common-theme/template/macro/TextFormMacroLibrary.ftl
@@ -120,3 +120,6 @@ under the License.
<#macro makeHiddenFormLinkForm actionUrl name parameters targetWindow></#macro>
<#macro makeHiddenFormLinkAnchor linkStyle hiddenFormName event action imgSrc description confirmation><@renderField description /></#macro>
<#macro makeHyperlinkString linkStyle hiddenFormName event action imgSrc title targetParameters alternate linkUrl targetWindow description confirmation uniqueItemName="" height="" width="" id=""><@renderField description /></#macro>
+<#macro renderDateRangePicker className alert id name value formName event action locale alwaysShowCalendars applyButtonClasses applyLabel autoApply buttonClasses cancelButtonClasses cancelLabel clearTitle
+drops linkedCalendars maxSpan maxYear minYear opens rangeLastMonthLabel rangeLastWeekLabel rangeNextMonthLabel rangeNextWeekLabel rangeThisMonthLabel rangeThisWeekLabel showDropdowns showIsoWeekNumbers showRanges showWeekNumbers
+singleDatePicker timePicker timePicker24Hour timePickerIncrement timePickerSeconds conditionGroup="" value2="" titleStyle="" tabindex=""></#macro>
\ No newline at end of file
diff --git a/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl b/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl
index c5dd16e416..375d5acf48 100644
--- a/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl
+++ b/themes/common-theme/template/macro/XlsFormMacroLibrary.ftl
@@ -155,3 +155,6 @@ under the License.
<#macro makeHiddenFormLinkForm actionUrl name parameters targetWindow></#macro>
<#macro makeHiddenFormLinkAnchor linkStyle hiddenFormName event action imgSrc description confirmation><td>${description!}</td></#macro>
<#macro makeHyperlinkString linkStyle hiddenFormName event action imgSrc title targetParameters alternate linkUrl targetWindow description confirmation uniqueItemName="" height="" width="" id=""></#macro>
+<#macro renderDateRangePicker className alert id name value formName event action locale alwaysShowCalendars applyButtonClasses applyLabel autoApply buttonClasses cancelButtonClasses cancelLabel clearTitle
+drops linkedCalendars maxSpan maxYear minYear opens rangeLastMonthLabel rangeLastWeekLabel rangeNextMonthLabel rangeNextWeekLabel rangeThisMonthLabel rangeThisWeekLabel showDropdowns showIsoWeekNumbers showRanges showWeekNumbers
+singleDatePicker timePicker timePicker24Hour timePickerIncrement timePickerSeconds conditionGroup="" value2="" titleStyle="" tabindex=""></#macro>
\ No newline at end of file
diff --git a/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl b/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl
index 3845880b1d..0af6fd0937 100644
--- a/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl
+++ b/themes/common-theme/template/macro/XmlFormMacroLibrary.ftl
@@ -119,3 +119,6 @@ under the License.
<#macro makeHyperlinkString linkStyle hiddenFormName event action imgSrc title targetParameters alternate linkUrl targetWindow description confirmation uniqueItemName="" height="" width="" id=""><@renderField description /></#macro>
<#macro renderTooltip tooltip tooltipStyle></#macro>
<#macro renderAsterisks requiredField></#macro>
+<#macro renderDateRangePicker className alert id name value formName event action locale alwaysShowCalendars applyButtonClasses applyLabel autoApply buttonClasses cancelButtonClasses cancelLabel clearTitle
+drops linkedCalendars maxSpan maxYear minYear opens rangeLastMonthLabel rangeLastWeekLabel rangeNextMonthLabel rangeNextWeekLabel rangeThisMonthLabel rangeThisWeekLabel showDropdowns showIsoWeekNumbers showRanges showWeekNumbers
+singleDatePicker timePicker timePicker24Hour timePickerIncrement timePickerSeconds conditionGroup="" value2="" titleStyle="" tabindex=""></#macro>
diff --git a/themes/common-theme/webapp/common-theme/js/package-lock.json b/themes/common-theme/webapp/common-theme/js/package-lock.json
index 0f15ad6494..d0bbecb350 100644
--- a/themes/common-theme/webapp/common-theme/js/package-lock.json
+++ b/themes/common-theme/webapp/common-theme/js/package-lock.json
@@ -8,6 +8,7 @@
"license": "Apache-2.0",
"dependencies": {
"@chinchilla-software/jquery-ui-timepicker-addon": "^1.6.3",
+ "daterangepicker": "^3.1.0",
"dompurify": "^3.2.4",
"featherlight": "^1.7.14",
"flot": "^4.2.6",
@@ -17,6 +18,8 @@
"jquery-ui-dist": "^1.13.3",
"jquery-validation": "^1.21.0",
"jquery.browser": "^0.1.0",
+ "moment-timezone": "^0.5.47",
+ "moment-with-locales-es6": "^1.0.1",
"trumbowyg": "^2.30.0",
"uglify-js": "3.19.3"
}
@@ -35,6 +38,16 @@
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
"optional": true
},
+ "node_modules/daterangepicker": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/daterangepicker/-/daterangepicker-3.1.0.tgz",
+ "integrity": "sha512-DxWXvvPq4srWLCqFugqSV+6CBt/CvQ0dnpXhQ3gl0autcIDAruG1PuGG3gC7yPRNytAD1oU1AcUOzaYhOawhTw==",
+ "license": "MIT",
+ "dependencies": {
+ "jquery": ">=1.10",
+ "moment": "^2.9.0"
+ }
+ },
"node_modules/dompurify": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz",
@@ -96,6 +109,36 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/moment": {
+ "version": "2.30.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
+ "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/moment-timezone": {
+ "version": "0.5.47",
+ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.47.tgz",
+ "integrity": "sha512-UbNt/JAWS0m/NJOebR0QMRHBk0hu03r5dx9GK8Cs0AS3I81yDcOc9k+DytPItgVvBP7J6Mf6U2n3BPAacAV9oA==",
+ "license": "MIT",
+ "dependencies": {
+ "moment": "^2.29.4"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/moment-with-locales-es6": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/moment-with-locales-es6/-/moment-with-locales-es6-1.0.1.tgz",
+ "integrity": "sha512-aKHuk7hHGVGk1X86rhu4aVwSEpBEwL3Lo5BEvZnqGueZeVK9pfpTrlLT3qN4A64vMkiKkxWpwQCcyg2YpoZGaQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "moment": "^2.0.0"
+ }
+ },
"node_modules/trumbowyg": {
"version": "2.30.0",
"resolved": "https://registry.npmjs.org/trumbowyg/-/trumbowyg-2.30.0.tgz",
diff --git a/themes/common-theme/webapp/common-theme/js/package.json b/themes/common-theme/webapp/common-theme/js/package.json
index b247c2e273..f17004c29b 100644
--- a/themes/common-theme/webapp/common-theme/js/package.json
+++ b/themes/common-theme/webapp/common-theme/js/package.json
@@ -5,6 +5,7 @@
"license": "Apache-2.0",
"dependencies": {
"@chinchilla-software/jquery-ui-timepicker-addon": "^1.6.3",
+ "daterangepicker": "^3.1.0",
"dompurify": "^3.2.4",
"featherlight": "^1.7.14",
"flot": "^4.2.6",
@@ -14,6 +15,8 @@
"jquery-ui-dist": "^1.13.3",
"jquery-validation": "^1.21.0",
"jquery.browser": "^0.1.0",
+ "moment-timezone": "^0.5.47",
+ "moment-with-locales-es6": "^1.0.1",
"trumbowyg": "^2.30.0",
"uglify-js": "3.19.3"
},
diff --git a/themes/common-theme/webapp/common-theme/js/plugins/moment-timezone/moment-timezone-with-data.min.js b/themes/common-theme/webapp/common-theme/js/plugins/moment-timezone/moment-timezone-with-data.min.js
deleted file mode 100644
index 2e2ff9b977..0000000000
--- a/themes/common-theme/webapp/common-theme/js/plugins/moment-timezone/moment-timezone-with-data.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-//! moment-timezone.js
-//! version : 0.5.10
-//! Copyright (c) JS Foundation and other contributors
-//! license : MIT
-//! github.com/moment/moment-timezone
-!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["moment"],b):"object"==typeof module&&module.exports?module.exports=b(require("moment")):b(a.moment)}(this,function(a){"use strict";function b(a){return a>96?a-87:a>64?a-29:a-48}function c(a){var c,d=0,e=a.split("."),f=e[0],g=e[1]||"",h=1,i=0,j=1;for(45===a.charCodeAt(0)&&(d=1,j=-1),d;d<f.length;d++)c=b(f.charCodeAt(d)),i=60*i+c;for(d=0;d<g.length;d++)h/=60,c=b(g.charCodeAt(d)),i+=c*h;return i*j}function d(a){for(v [...]
-links:["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Sao_Tome","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Khartoum|Africa/Juba","A [...]
\ No newline at end of file
diff --git a/themes/common-theme/webapp/common-theme/js/plugins/moment-timezone/moment-with-locales.min.js b/themes/common-theme/webapp/common-theme/js/plugins/moment-timezone/moment-with-locales.min.js
deleted file mode 100644
index 1042d276d3..0000000000
--- a/themes/common-theme/webapp/common-theme/js/plugins/moment-timezone/moment-with-locales.min.js
+++ /dev/null
@@ -1,1216 +0,0 @@
-!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return le.apply(null,arguments)}
-// This is done to register the method called with moment()
-// without creating circular dependencies.
-function b(a){le=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){
-// IE8 will treat undefined and null as object if it wasn't for
-// input != null
-return null!=a&&"[object Object]"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a)
-// even if its not own property I'd still call it non-empty
-return!1;return!0}function f(a){return"number"==typeof a||"[object Number]"===Object.prototype.toString.call(a)}function g(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function h(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function i(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function j(a,b){for(var c in b)i(b,c)&&(a[c]=b[c]);return i(b,"toString")&&(a.toString=b.toString),i(b,"valueOf")&&(a.valueOf=b.valueOf),a}functio [...]
-// We need to deep clone this object.
-return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function m(a){return null==a._pf&&(a._pf=l()),a._pf}function n(a){if(null==a._isValid){var b=m(a),c=ne.call(b.parsedDateParts,function(a){return null!=a}),d=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b. [...]
-// Moment prototype object
-function r(b){q(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),
-// Prevent infinite loop in case updateOffset creates new moment
-// objects.
-pe===!1&&(pe=!0,a.updateOffset(this),pe=!1)}function s(a){return a instanceof r||null!=a&&null!=a._isAMomentObject}function t(a){return a<0?Math.ceil(a)||0:Math.floor(a)}function u(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=t(b)),c}
-// compare two arrays, return the number of differences
-function v(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;d<e;d++)(c&&a[d]!==b[d]||!c&&u(a[d])!==u(b[d]))&&g++;return g+f}function w(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function x(b,c){var d=!0;return j(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,b),d){for(var e,f=[],g=0;g<arguments.length;g++){if(e="","object"==typeof arguments[g]){e+="\n["+ [...]
-// Lenient ordinal parsing accepts just a number in addition to
-// number + (possibly) stuff coming from _ordinalParseLenient.
-this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function B(a,b){var c,e=j({},a);for(c in b)i(b,c)&&(d(a[c])&&d(b[c])?(e[c]={},j(e[c],a[c]),j(e[c],b[c])):null!=b[c]?e[c]=b[c]:delete e[c]);for(c in a)i(a,c)&&!i(b,c)&&d(a[c])&&(
-// make sure changes to properties don't modify parent config
-e[c]=j({},e[c]));return e}function C(a){null!=a&&this.set(a)}function D(a,b,c){var d=this._calendar[a]||this._calendar.sameElse;return z(d)?d.call(b,c):d}function E(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function F(){return this._invalidDate}function G(a){return this._ordinal.replace("%d",a)}function H(a,b,c,d){var e=this._relativ [...]
-// MOMENTS
-function R(a){return a=K(a),z(this[a])?this[a]():this}function S(a,b){if("object"==typeof a){a=L(a);for(var c=N(a),d=0;d<c.length;d++)this[c[d].unit](a[c[d].unit])}else if(a=K(a),z(this[a]))return this[a](b);return this}function T(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}
-// token: 'M'
-// padded: ['MM', 2]
-// ordinal: 'Mo'
-// callback: function () { this.month() + 1 }
-function U(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Fe[a]=e),b&&(Fe[b[0]]=function(){return T(e.apply(this,arguments),b[1],b[2])}),c&&(Fe[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function V(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function W(a){var b,c,d=a.match(Ce);for(b=0,c=d.length;b<c;b++)Fe[d[b]]?d[b]=Fe[d[b]]:d[b]=V(d[b]);return function(b){var e,f="";for(e=0;e<c;e++)f+=d[e]instanc [...]
-// format date using native date object
-function X(a,b){return a.isValid()?(b=Y(b,a.localeData()),Ee[b]=Ee[b]||W(b),Ee[b](a)):a.localeData().invalidDate()}function Y(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(De.lastIndex=0;d>=0&&De.test(a);)a=a.replace(De,c),De.lastIndex=0,d-=1;return a}function Z(a,b,c){Xe[a]=z(b)?b:function(a,d){return a&&c?c:b}}function $(a,b){return i(Xe,a)?Xe[a](b._strict,b._locale):new RegExp(_(a))}
-// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
-function _(a){return aa(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function aa(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ba(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),f(b)&&(d=function(a,c){c[b]=u(a)}),c=0;c<a.length;c++)Ye[a[c]]=d}function ca(a,b){ba(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function da(a,b,c){null!=b&&i(Ye,a)&&Ye[a](b,c._a,c,a)}function ea(a,b){return new Date(Date.UTC(a,b+1, [...]
-// this is not used
-this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;d<12;++d)f=k([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=gf.call(this._shortMonthsParse,g),e!==-1?e:null):(e=gf.call(this._longMonthsParse,g),e!==-1?e:null):"MMM"===b?(e=gf.call(this._shortMonthsParse,g),e!==-1?e:(e=gf.call(this._longMonthsParse,g),e!==-1?e:null)):(e=gf.call(this._longMonthsParse [...]
-// TODO: add sorting
-// Sorting makes sure if one month (or abbr) is a prefix of another
-// see sorting in computeMonthsParse
-for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;d<12;d++){
-// test the regex
-if(
-// make the regex if we don't have it already
-e=k([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse [...]
-// MOMENTS
-function ja(a,b){var c;if(!a.isValid())
-// No op
-return a;if("string"==typeof b)if(/^\d+$/.test(b))b=u(b);else
-// TODO: Another silent failure?
-if(b=a.localeData().monthsParse(b),!f(b))return a;return c=Math.min(a.date(),ea(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ka(b){return null!=b?(ja(this,b),a.updateOffset(this,!0),this):P(this,"Month")}function la(){return ea(this.year(),this.month())}function ma(a){return this._monthsParseExact?(i(this,"_monthsRegex")||oa.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):(i(this,"_monthsShortRegex")||(this._monthsShortRegex=lf),this._monthsShort [...]
-// make the regex if we don't have it already
-c=k([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(
-// Sorting makes sure if one month (or abbr) is a prefix of another it
-// will match the longer piece.
-d.sort(a),e.sort(a),f.sort(a),b=0;b<12;b++)d[b]=aa(d[b]),e[b]=aa(e[b]);for(b=0;b<24;b++)f[b]=aa(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}
-// HELPERS
-function pa(a){return qa(a)?366:365}function qa(a){return a%4===0&&a%100!==0||a%400===0}function ra(){return qa(this.year())}function sa(a,b,c,d,e,f,g){
-//can't just apply() to create a date:
-//http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
-var h=new Date(a,b,c,d,e,f,g);
-//the date constructor remaps years 0-99 to 1900-1999
-return a<100&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ta(a){var b=new Date(Date.UTC.apply(null,arguments));
-//the Date.UTC function remaps years 0-99 to 1900-1999
-return a<100&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}
-// start-of-first-week - start-of-year
-function ua(a,b,c){var// first-week day -- which january is always in the first week (4 for iso, 1 for other)
-d=7+b-c,
-// first-week day local weekday -- which local weekday is fwd
-e=(7+ta(a,0,d).getUTCDay()-b)%7;return-e+d-1}
-//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
-function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return j<=0?(f=a-1,g=pa(f)+j):j>pa(a)?(f=a+1,g=j-pa(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return g<1?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(pa(a)-d+e)/7}
-// HELPERS
-// LOCALES
-function ya(a){return wa(a,this._week.dow,this._week.doy).week}function za(){return this._week.dow}function Aa(){return this._week.doy}
-// MOMENTS
-function Ba(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Ca(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}
-// HELPERS
-function Da(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Ea(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Fa(a,b){return a?c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]:this._weekdays}function Ga(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ha(a){return a?this._weekdaysMin[a.day()]:this._w [...]
-// test the regex
-if(
-// make the regex if we don't have it already
-e=k([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i [...]
-// MOMENTS
-function Ka(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Da(a,this.localeData()),this.add(a-b,"d")):b}function La(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Ma(a){if(!this.isValid())return null!=a?this:NaN;
-// behaves the same as moment#day except
-// as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
-// as a setter, sunday should belong to the previous week.
-if(null!=a){var b=Ea(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Na(a){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(i(this,"_weekdaysRegex")||(this._weekdaysRegex=sf),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Oa(a){return this._weekdaysParseExact?(i(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysShortStrictRegex:this._w [...]
-// make the regex if we don't have it already
-c=k([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),h.push(e),i.push(f),j.push(d),j.push(e),j.push(f);for(
-// Sorting makes sure if one weekday (or abbr) is a prefix of another it
-// will match the longer piece.
-g.sort(a),h.sort(a),i.sort(a),j.sort(a),b=0;b<7;b++)h[b]=aa(h[b]),i[b]=aa(i[b]),j[b]=aa(j[b]);this._weekdaysRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}
-// FORMATTING
-function Ra(){return this.hours()%12||12}function Sa(){return this.hours()||24}function Ta(a,b){U(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}
-// PARSING
-function Ua(a,b){return b._meridiemParse}
-// LOCALES
-function Va(a){
-// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
-// Using charAt should be more compatible.
-return"p"===(a+"").toLowerCase().charAt(0)}function Wa(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Xa(a){return a?a.toLowerCase().replace("_","-"):a}
-// pick the locale from the array
-// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
-// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
-function Ya(a){for(var b,c,d,e,f=0;f<a.length;){for(e=Xa(a[f]).split("-"),b=e.length,c=Xa(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=Za(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)
-//the next array item is better than a shallower substring of this one
-break;b--}f++}return null}function Za(a){var b=null;
-// TODO: Find a better way to register and load all the locales in Node
-if(!zf[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=vf._abbr,require("./locale/"+a),
-// because defineLocale currently also sets the global locale, we
-// want to undo that for lazy loaded locales
-$a(b)}catch(a){}return zf[a]}
-// This function will load locale and then set the global locale. If
-// no arguments are passed in, it will simply return the current global
-// locale key.
-function $a(a,b){var c;
-// moment.duration._locale = moment._locale = data;
-return a&&(c=p(b)?bb(a):_a(a,b),c&&(vf=c)),vf._abbr}function _a(a,b){if(null!==b){var c=yf;if(b.abbr=a,null!=zf[a])y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),c=zf[a]._config;else if(null!=b.parentLocale){if(null==zf[b.parentLocale])return Af[b.parentLocale]||(Af[b.parentLoca [...]
-// backwards compat for now: also set the locale
-// make sure we set the locale AFTER all child locales have been
-// created, so we won't end up with the child locale set.
-return zf[a]=new C(B(c,b)),Af[a]&&Af[a].forEach(function(a){_a(a.name,a.config)}),$a(a),zf[a]}
-// useful for testing
-return delete zf[a],null}function ab(a,b){if(null!=b){var c,d=yf;
-// MERGE
-null!=zf[a]&&(d=zf[a]._config),b=B(d,b),c=new C(b),c.parentLocale=zf[a],zf[a]=c,
-// backwards compat for now: also set the locale
-$a(a)}else
-// pass null for config to unupdate, useful for tests
-null!=zf[a]&&(null!=zf[a].parentLocale?zf[a]=zf[a].parentLocale:null!=zf[a]&&delete zf[a]);return zf[a]}
-// returns locale data
-function bb(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return vf;if(!c(a)){if(
-//short-circuit everything else
-b=Za(a))return b;a=[a]}return Ya(a)}function cb(){return te(zf)}function db(a){var b,c=a._a;return c&&m(a).overflow===-2&&(b=c[$e]<0||c[$e]>11?$e:c[_e]<1||c[_e]>ea(c[Ze],c[$e])?_e:c[af]<0||c[af]>24||24===c[af]&&(0!==c[bf]||0!==c[cf]||0!==c[df])?af:c[bf]<0||c[bf]>59?bf:c[cf]<0||c[cf]>59?cf:c[df]<0||c[df]>999?df:-1,m(a)._overflowDayOfYear&&(b<Ze||b>_e)&&(b=_e),m(a)._overflowWeeks&&b===-1&&(b=ef),m(a)._overflowWeekday&&b===-1&&(b=ff),m(a).overflow=b),a}
-// date from iso format
-function eb(a){var b,c,d,e,f,g,h=a._i,i=Bf.exec(h)||Cf.exec(h);if(i){for(m(a).iso=!0,b=0,c=Ef.length;b<c;b++)if(Ef[b][1].exec(i[1])){e=Ef[b][0],d=Ef[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Ff.length;b<c;b++)if(Ff[b][1].exec(i[3])){
-// match[2] should be 'T' or space
-f=(i[2]||" ")+Ff[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Df.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),kb(a)}else a._isValid=!1}
-// date from iso format or fallback
-function fb(b){var c=Gf.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(eb(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))}
-// Pick the first defined of two or three arguments.
-function gb(a,b,c){return null!=a?a:null!=b?b:c}function hb(b){
-// hooks is actually the exported moment object
-var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}
-// convert an array to a date.
-// the array should mirror the parameters below
-// note: all values past the year are optional and will default to the lowest possible value.
-// [year, month, day , hour, minute, second, millisecond]
-function ib(a){var b,c,d,e,f=[];if(!a._d){
-// Default to current date.
-// * if no year, month, day of month are given, default to today
-// * if day of month is given, default month and year
-// * if month is given, default only year
-// * if year is given, don't default anything
-for(d=hb(a),
-//compute day of the year from weeks and weekdays
-a._w&&null==a._a[_e]&&null==a._a[$e]&&jb(a),
-//if the day of the year is set, figure out what it is
-a._dayOfYear&&(e=gb(a._a[Ze],d[Ze]),a._dayOfYear>pa(e)&&(m(a)._overflowDayOfYear=!0),c=ta(e,0,a._dayOfYear),a._a[$e]=c.getUTCMonth(),a._a[_e]=c.getUTCDate()),b=0;b<3&&null==a._a[b];++b)a._a[b]=f[b]=d[b];
-// Zero out whatever was not defaulted, including time
-for(;b<7;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];
-// Check for 24:00:00.000
-24===a._a[af]&&0===a._a[bf]&&0===a._a[cf]&&0===a._a[df]&&(a._nextDay=!0,a._a[af]=0),a._d=(a._useUTC?ta:sa).apply(null,f),
-// Apply timezone offset from input. The actual utcOffset can be changed
-// with parseZone.
-null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[af]=24)}}function jb(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,
-// TODO: We need to take the current isoWeekYear, but that depends on
-// how we interpret now (local, utc, fixed offset). So create
-// a now version of current config (take local/utc/offset flags, and
-// create now).
-c=gb(b.GG,a._a[Ze],wa(sb(),1,4).year),d=gb(b.W,1),e=gb(b.E,1),(e<1||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=wa(sb(),f,g);c=gb(b.gg,a._a[Ze],j.year),
-// Default to current week.
-d=gb(b.w,j.week),null!=b.d?(
-// weekday -- low day numbers are considered next week
-e=b.d,(e<0||e>6)&&(i=!0)):null!=b.e?(
-// local weekday -- counting starts from begining of week
-e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):
-// default to begining of week
-e=f}d<1||d>xa(c,f,g)?m(a)._overflowWeeks=!0:null!=i?m(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[Ze]=h.year,a._dayOfYear=h.dayOfYear)}
-// date from string and format string
-function kb(b){
-// TODO: Move this to another part of the creation flow to prevent circular deps
-if(b._f===a.ISO_8601)return void eb(b);b._a=[],m(b).empty=!0;
-// This array is used to make a Date, either with `new Date` or `Date.UTC`
-var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=Y(b._f,b._locale).match(Ce)||[],c=0;c<e.length;c++)f=e[c],d=(h.match($(f,b))||[])[0],
-// console.log('token', token, 'parsedInput', parsedInput,
-// 'regex', getParseRegexForToken(token, config));
-d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&m(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),
-// don't parse if it's not a known token
-Fe[f]?(d?m(b).empty=!1:m(b).unusedTokens.push(f),da(f,d,b)):b._strict&&!d&&m(b).unusedTokens.push(f);
-// add remaining unparsed input length to the string
-m(b).charsLeftOver=i-j,h.length>0&&m(b).unusedInput.push(h),
-// clear _12h flag if hour is <= 12
-b._a[af]<=12&&m(b).bigHour===!0&&b._a[af]>0&&(m(b).bigHour=void 0),m(b).parsedDateParts=b._a.slice(0),m(b).meridiem=b._meridiem,
-// handle meridiem
-b._a[af]=lb(b._locale,b._a[af],b._meridiem),ib(b),db(b)}function lb(a,b,c){var d;
-// Fallback
-return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&b<12&&(b+=12),d||12!==b||(b=0),b):b}
-// date from string and array of format strings
-function mb(a){var b,c,d,e,f;if(0===a._f.length)return m(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=q({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],kb(b),n(b)&&(
-// if there is any input that was not parsed add a penalty for that format
-f+=m(b).charsLeftOver,
-//or tokens
-f+=10*m(b).unusedTokens.length,m(b).score=f,(null==d||f<d)&&(d=f,c=b));j(a,c||b)}function nb(a){if(!a._d){var b=L(a._i);a._a=h([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),ib(a)}}function ob(a){var b=new r(db(pb(a)));
-// Adding is smart enough around DST
-return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function pb(a){var b=a._i,d=a._f;return a._locale=a._locale||bb(a._l),null===b||void 0===d&&""===b?o({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),s(b)?new r(db(b)):(g(b)?a._d=b:c(d)?mb(a):d?kb(a):qb(a),n(a)||(a._d=null),a))}function qb(b){var d=b._i;void 0===d?b._d=new Date(a.now()):g(d)?b._d=new Date(d.valueOf()):"string"==typeof d?fb(b):c(d)?(b._a=h(d.slice(0),function(a){return parseInt(a,10)}),ib(b)):"object [...]
-// from milliseconds
-b._d=new Date(d):a.createFromInputFallback(b)}function rb(a,b,f,g,h){var i={};
-// object construction must be done this way.
-// https://github.com/moment/moment/issues/1423
-return f!==!0&&f!==!1||(g=f,f=void 0),(d(a)&&e(a)||c(a)&&0===a.length)&&(a=void 0),i._isAMomentObject=!0,i._useUTC=i._isUTC=h,i._l=f,i._i=a,i._f=b,i._strict=g,ob(i)}function sb(a,b,c,d){return rb(a,b,c,d,!1)}
-// Pick a moment m from moments so that m[fn](other) is true for all
-// other. This relies on the function fn to be transitive.
-//
-// moments should either be an array of moment objects or an array, whose
-// first element is an array of moment objects.
-function tb(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return sb();for(d=b[0],e=1;e<b.length;++e)b[e].isValid()&&!b[e][a](d)||(d=b[e]);return d}
-// TODO: Use [].sort instead?
-function ub(){var a=[].slice.call(arguments,0);return tb("isBefore",a)}function vb(){var a=[].slice.call(arguments,0);return tb("isAfter",a)}function wb(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;
-// representation for dateAddRemove
-this._milliseconds=+k+1e3*j+// 1000
-6e4*i+// 1000 * 60
-1e3*h*60*60,//using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
-// Because of dateAddRemove treats 24 hours as different from a
-// day when working around DST, we need to store them separately
-this._days=+g+7*f,
-// It is impossible translate months into days without knowing
-// which months you are are talking about, so we have to store
-// it separately.
-this._months=+e+3*d+12*c,this._data={},this._locale=bb(),this._bubble()}function xb(a){return a instanceof wb}function yb(a){return a<0?Math.round(-1*a)*-1:Math.round(a)}
-// FORMATTING
-function zb(a,b){U(a,0,0,function(){var a=this.utcOffset(),c="+";return a<0&&(a=-a,c="-"),c+T(~~(a/60),2)+b+T(~~a%60,2)})}function Ab(a,b){var c=(b||"").match(a);if(null===c)return null;var d=c[c.length-1]||[],e=(d+"").match(Kf)||["-",0,0],f=+(60*e[1])+u(e[2]);return 0===f?0:"+"===e[0]?f:-f}
-// Return a moment from input, that is local/utc/zone equivalent to model.
-function Bb(b,c){var d,e;
-// Use low-level api, because this fn is low-level api.
-return c._isUTC?(d=c.clone(),e=(s(b)||g(b)?b.valueOf():sb(b).valueOf())-d.valueOf(),d._d.setTime(d._d.valueOf()+e),a.updateOffset(d,!1),d):sb(b).local()}function Cb(a){
-// On Firefox.24 Date#getTimezoneOffset returns a floating point.
-// https://github.com/moment/moment/pull/1871
-return 15*-Math.round(a._d.getTimezoneOffset()/15)}
-// MOMENTS
-// keepLocalTime = true means only change the timezone, without
-// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
-// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
-// +0200, so we adjust the time as needed, to be valid.
-//
-// Keeping the time actually adds/subtracts (one hour)
-// from the actual represented time. That is why we call updateOffset
-// a second time. In case it wants us to change the offset again
-// _changeInProgress == true case, then we have to adjust, because
-// there is no such time in the given timezone.
-function Db(b,c){var d,e=this._offset||0;if(!this.isValid())return null!=b?this:NaN;if(null!=b){if("string"==typeof b){if(b=Ab(Ue,b),null===b)return this}else Math.abs(b)<16&&(b=60*b);return!this._isUTC&&c&&(d=Cb(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?Tb(this,Ob(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?e:Cb(this)}function Eb(a,b) [...]
-// matching against regexp is expensive, do it on demand
-h=null;// checks for null or undefined
-return xb(a)?g={ms:a._milliseconds,d:a._days,M:a._months}:f(a)?(g={},b?g[b]=a:g.milliseconds=a):(h=Lf.exec(a))?(c="-"===h[1]?-1:1,g={y:0,d:u(h[_e])*c,h:u(h[af])*c,m:u(h[bf])*c,s:u(h[cf])*c,ms:u(yb(1e3*h[df]))*c}):(h=Mf.exec(a))?(c="-"===h[1]?-1:1,g={y:Pb(h[2],c),M:Pb(h[3],c),w:Pb(h[4],c),d:Pb(h[5],c),h:Pb(h[6],c),m:Pb(h[7],c),s:Pb(h[8],c)}):null==g?g={}:"object"==typeof g&&("from"in g||"to"in g)&&(e=Rb(sb(g.from),sb(g.to)),g={},g.ms=e.milliseconds,g.M=e.months),d=new wb(g),xb(a)&&i(a,"_l [...]
-// We'd normally use ~~inp for this, but unfortunately it also
-// converts floats to ints.
-// inp may be undefined, so careful calling replace on it.
-var c=a&&parseFloat(a.replace(",","."));
-// apply sign while we're at it
-return(isNaN(c)?0:c)*b}function Qb(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Rb(a,b){var c;return a.isValid()&&b.isValid()?(b=Bb(b,a),a.isBefore(b)?c=Qb(a,b):(c=Qb(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}
-// TODO: remove 'name' arg after deprecation is removed
-function Sb(a,b){return function(c,d){var e,f;
-//invert the arguments, but complain about it
-return null===d||isNaN(+d)||(y(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Ob(c,d),Tb(this,e,a),this}}function Tb(b,c,d,e){var f=c._milliseconds,g=yb(c._days),h=yb(c._months);b.isValid()&&(e=null==e||e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&Q(b,"Date",P(b,"Date")+g*d),h&&ja(b,P(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}fu [...]
-// We want to compare the start of today, vs this.
-// Getting start-of-today depends on whether we're local/utc/offset or not.
-var d=b||sb(),e=Bb(d,this).startOf("day"),f=a.calendarFormat(this,e)||"sameElse",g=c&&(z(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,sb(d)))}function Wb(){return new r(this)}function Xb(a,b){var c=s(a)?a:sb(a);return!(!this.isValid()||!c.isValid())&&(b=K(p(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf())}function Yb(a,b){var c=s(a)?a:sb(a);return!(!this.isValid()||!c.isValid())&&(b=K( [...]
-// 1000 * 60
-// 1000 * 60 * 60
-// 1000 * 60 * 60 * 24, negate dst
-// 1000 * 60 * 60 * 24 * 7, negate dst
-return this.isValid()?(d=Bb(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),"year"===b||"month"===b||"quarter"===b?(g=cc(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:t(g)):NaN):NaN}function cc(a,b){
-// difference in months
-var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),
-// b is in (anchor - 1 month, anchor + 1 month)
-f=a.clone().add(e,"months");
-//check for negative zero, return zero if negative zero
-// linear across the month
-// linear across the month
-return b-f<0?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function dc(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function ec(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?z(Date.prototype.toISOString)?this.toDate().toISOString():X(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):X(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}/**
- * Return a human readable representation of a moment that can
- * also be evaluated to get a new moment which is the same
- *
- * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
- */
-function fc(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var a="moment",b="";this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",b="Z");var c="["+a+'("]',d=0<this.year()&&this.year()<=9999?"YYYY":"YYYYYY",e="-MM-DD[T]HH:mm:ss.SSS",f=b+'[")]';return this.format(c+d+e+f)}function gc(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=X(this,b);return this.localeData().postformat(c)}function hc(a,b){return this.isValid()&&(s(a)&&a.isValid()| [...]
-// If passed a locale key, it will set the locale for this
-// instance. Otherwise, it will return the locale configuration
-// variables for this instance.
-function lc(a){var b;return void 0===a?this._locale._abbr:(b=bb(a),null!=b&&(this._locale=b),this)}function mc(){return this._locale}function nc(a){
-// the following switch intentionally omits break keywords
-// to utilize falling through the cases.
-switch(a=K(a)){case"year":this.month(0);/* falls through */
-case"quarter":case"month":this.date(1);/* falls through */
-case"week":case"isoWeek":case"day":case"date":this.hours(0);/* falls through */
-case"hour":this.minutes(0);/* falls through */
-case"minute":this.seconds(0);/* falls through */
-case"second":this.milliseconds(0)}
-// weeks are a special case
-// quarters are also special
-return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function oc(a){
-// 'date' is an alias for 'day', so it should be considered as such.
-return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function pc(){return this._d.valueOf()-6e4*(this._offset||0)}function qc(){return Math.floor(this.valueOf()/1e3)}function rc(){return new Date(this.valueOf())}function sc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function tc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hou [...]
-// new Date(NaN).toJSON() === null
-return this.isValid()?this.toISOString():null}function vc(){return n(this)}function wc(){return j({},m(this))}function xc(){return m(this).overflow}function yc(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function zc(a,b){U(0,[a,a.length],0,b)}
-// MOMENTS
-function Ac(a){return Ec.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Bc(a){return Ec.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Cc(){return xa(this.year(),1,4)}function Dc(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ec(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Fc.call(this,a,b,c,d,e))}function Fc(a,b,c,d,e){var f=va(a,b,c,d,e),g=ta(f.year,0,f.dayOfY [...]
-// MOMENTS
-function Gc(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}
-// HELPERS
-// MOMENTS
-function Hc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function Ic(a,b){b[df]=u(1e3*("0."+a))}
-// MOMENTS
-function Jc(){return this._isUTC?"UTC":""}function Kc(){return this._isUTC?"Coordinated Universal Time":""}function Lc(a){return sb(1e3*a)}function Mc(){return sb.apply(null,arguments).parseZone()}function Nc(a){return a}function Oc(a,b,c,d){var e=bb(),f=k().set(d,b);return e[c](f,a)}function Pc(a,b,c){if(f(a)&&(b=a,a=void 0),a=a||"",null!=b)return Oc(a,b,c,"month");var d,e=[];for(d=0;d<12;d++)e[d]=Oc(a,d,c,"month");return e}
-// ()
-// (5)
-// (fmt, 5)
-// (fmt)
-// (true)
-// (true, 5)
-// (true, fmt, 5)
-// (true, fmt)
-function Qc(a,b,c,d){"boolean"==typeof a?(f(b)&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,f(b)&&(c=b,b=void 0),b=b||"");var e=bb(),g=a?e._week.dow:0;if(null!=c)return Oc(b,(c+g)%7,d,"day");var h,i=[];for(h=0;h<7;h++)i[h]=Oc(b,(h+g)%7,d,"day");return i}function Rc(a,b){return Pc(a,b,"months")}function Sc(a,b){return Pc(a,b,"monthsShort")}function Tc(a,b,c){return Qc(a,b,c,"weekdays")}function Uc(a,b,c){return Qc(a,b,c,"weekdaysShort")}function Vc(a,b,c){return Qc(a,b,c,"weekdaysMin")}function [...]
-// supports only 2.0-style add(1, 's') or add(duration)
-function Yc(a,b){return Xc(this,a,b,1)}
-// supports only 2.0-style subtract(1, 's') or subtract(duration)
-function Zc(a,b){return Xc(this,a,b,-1)}function $c(a){return a<0?Math.floor(a):Math.ceil(a)}function _c(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;
-// if we have a mix of positive and negative values, bubble down first
-// check: https://github.com/moment/moment/issues/2166
-// The following code bubbles up values, see the tests for
-// examples of what that means.
-// convert days to months
-// 12 months -> 1 year
-return f>=0&&g>=0&&h>=0||f<=0&&g<=0&&h<=0||(f+=864e5*$c(bd(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=t(f/1e3),i.seconds=a%60,b=t(a/60),i.minutes=b%60,c=t(b/60),i.hours=c%24,g+=t(c/24),e=t(ad(g)),h+=e,g-=$c(bd(e)),d=t(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function ad(a){
-// 400 years have 146097 days (taking into account leap year rules)
-// 400 years have 12 months === 4800
-return 4800*a/146097}function bd(a){
-// the reverse of daysToMonths
-return 146097*a/4800}function cd(a){var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+ad(b),"month"===a?c:c/12;switch(
-// handle milliseconds separately because of floating point math errors (issue #1867)
-b=this._days+Math.round(bd(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;
-// Math.floor prevents floating point math errors here
-case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}
-// TODO: Use this.as('ms')?
-function dd(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*u(this._months/12)}function ed(a){return function(){return this.as(a)}}function fd(a){return a=K(a),this[a+"s"]()}function gd(a){return function(){return this._data[a]}}function hd(){return t(this.days()/7)}
-// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
-function id(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function jd(a,b,c){var d=Ob(a).abs(),e=lg(d.as("s")),f=lg(d.as("m")),g=lg(d.as("h")),h=lg(d.as("d")),i=lg(d.as("M")),j=lg(d.as("y")),k=e<mg.s&&["s",e]||f<=1&&["m"]||f<mg.m&&["mm",f]||g<=1&&["h"]||g<mg.h&&["hh",g]||h<=1&&["d"]||h<mg.d&&["dd",h]||i<=1&&["M"]||i<mg.M&&["MM",i]||j<=1&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,id.apply(null,k)}
-// This function allows you to set the rounding function for relative time strings
-function kd(a){return void 0===a?lg:"function"==typeof a&&(lg=a,!0)}
-// This function allows you to set a threshold for relative time strings
-function ld(a,b){return void 0!==mg[a]&&(void 0===b?mg[a]:(mg[a]=b,!0))}function md(a){var b=this.localeData(),c=jd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function nd(){
-// for ISO strings we do not use the normal bubbling rules:
-// * milliseconds bubble up until they become hours
-// * days do not bubble at all
-// * months bubble up until they become years
-// This is because there is no context-free conversion between hours and days
-// (think of clock changes)
-// and also not between days and months (28-31 days per month)
-var a,b,c,d=ng(this._milliseconds)/1e3,e=ng(this._days),f=ng(this._months);
-// 3600 seconds -> 60 minutes -> 1 hour
-a=t(d/60),b=t(a/60),d%=60,a%=60,
-// 12 months -> 1 year
-c=t(f/12),f%=12;
-// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
-var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(m<0?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}
-//! moment.js locale configuration
-//! locale : Belarusian [be]
-//! author : Dmitry Demidov : https://github.com/demidov91
-//! author: Praleska: http://praleska.pro/
-//! Author : Menelion Elensúle : https://github.com/Oire
-function od(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function pd(a,b,c){var d={mm:b?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:b?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"меÑÑц_меÑÑцы_меÑÑцаў",yy:"год_гады_гадоў"};return"m"===c?b?"хвіліна":"хвіліну [...]
-//! moment.js locale configuration
-//! locale : Breton [br]
-//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
-function qd(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+td(d[c],a)}function rd(a){switch(sd(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function sd(a){return a>9?sd(a%10):a}function td(a,b){return 2===b?ud(a):a}function ud(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)}
-//! moment.js locale configuration
-//! locale : Bosnian [bs]
-//! author : Nedim Cholich : https://github.com/frontyard
-//! based on (hr) translation by Bojan Marković
-function vd(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function wd(a){return a>1&&a<5&&1!==~~( [...]
-return b||d?"pár sekund":"pár sekundami";case"m":// a minute / in a minute / a minute ago
-return b?"minuta":d?"minutu":"minutou";case"mm":// 9 minutes / in 9 minutes / 9 minutes ago
-// 9 minutes / in 9 minutes / 9 minutes ago
-return b||d?e+(wd(a)?"minuty":"minut"):e+"minutami";break;case"h":// an hour / in an hour / an hour ago
-return b?"hodina":d?"hodinu":"hodinou";case"hh":// 9 hours / in 9 hours / 9 hours ago
-// 9 hours / in 9 hours / 9 hours ago
-return b||d?e+(wd(a)?"hodiny":"hodin"):e+"hodinami";break;case"d":// a day / in a day / a day ago
-return b||d?"den":"dnem";case"dd":// 9 days / in 9 days / 9 days ago
-// 9 days / in 9 days / 9 days ago
-return b||d?e+(wd(a)?"dny":"dnÃ"):e+"dny";break;case"M":// a month / in a month / a month ago
-return b||d?"mÄ›sÃc":"mÄ›sÃcem";case"MM":// 9 months / in 9 months / 9 months ago
-// 9 months / in 9 months / 9 months ago
-return b||d?e+(wd(a)?"mÄ›sÃce":"mÄ›sÃců"):e+"mÄ›sÃci";break;case"y":// a year / in a year / a year ago
-return b||d?"rok":"rokem";case"yy":// 9 years / in 9 years / 9 years ago
-// 9 years / in 9 years / 9 years ago
-return b||d?e+(wd(a)?"roky":"let"):e+"lety"}}
-//! moment.js locale configuration
-//! locale : German (Austria) [de-at]
-//! author : lluchs : https://github.com/lluchs
-//! author: Menelion Elensúle: https://github.com/Oire
-//! author : Martin Groller : https://github.com/MadMG
-//! author : Mikolaj Dadela : https://github.com/mik01aj
-function yd(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}
-//! moment.js locale configuration
-//! locale : German [de]
-//! author : lluchs : https://github.com/lluchs
-//! author: Menelion Elensúle: https://github.com/Oire
-//! author : Mikolaj Dadela : https://github.com/mik01aj
-function zd(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}
-//! moment.js locale configuration
-//! locale : Estonian [et]
-//! author : Henry Kehlmann : https://github.com/madhenry
-//! improvements : Illimar Tambek : https://github.com/ragulka
-function Ad(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}function Bd(a,b,c,d){var e="";switch(c){case"s":return d?"muutaman sekunnin [...]
-//! moment.js locale configuration
-//! locale : Croatian [hr]
-//! author : Bojan Marković : https://github.com/bmarkovic
-function Dd(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Ed(a,b,c,d){var e=a;switch(c){ [...]
-//! moment.js locale configuration
-//! locale : Icelandic [is]
-//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
-function Gd(a){return a%100===11||a%10!==1}function Hd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return b?"mÃnúta":"mÃnútu";case"mm":return Gd(a)?e+(b||d?"mÃnútur":"mÃnútum"):b?e+"mÃnúta":e+"mÃnútu";case"hh":return Gd(a)?e+(b||d?"klukkustundir":"klukkustundum"):e+"klukkustund";case"d":return b?"dagur":d?"dag":"degi";case"dd":return Gd(a)?b?e+"dagar":e+(d?"daga":"dögum"):b?e+"dagur":e+(d?"dag":"degi");case"M":return b?" [...]
-//! moment.js locale configuration
-//! locale : Luxembourgish [lb]
-//! author : mweimerskirch : https://github.com/mweimerskirch
-//! author : David Raison : https://github.com/kwisatz
-function Id(a,b,c,d){var e={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return b?e[c][0]:e[c][1]}function Jd(a){var b=a.substr(0,a.indexOf(" "));return Ld(b)?"a "+a:"an "+a}function Kd(a){var b=a.substr(0,a.indexOf(" "));return Ld(b)?"viru "+a:"virun "+a}/**
- * Returns true if the word before the given number loses the '-n' ending.
- * e.g. 'an 10 Deeg' but 'a 5 Deeg'
- *
- * @param number {integer}
- * @returns {boolean}
- */
-function Ld(a){if(a=parseInt(a,10),isNaN(a))return!1;if(a<0)
-// Negative Number --> always true
-return!0;if(a<10)
-// Only 1 digit
-return 4<=a&&a<=7;if(a<100){
-// 2 digits
-var b=a%10,c=a/10;return Ld(0===b?c:b)}if(a<1e4){
-// 3 or 4 digits --> recursively check first digit
-for(;a>=10;)a/=10;return Ld(a)}
-// Anything larger than 4 digits: recursively check first n-3 digits
-return a/=1e3,Ld(a)}function Md(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function Nd(a,b,c,d){return b?Pd(c)[0]:d?Pd(c)[1]:Pd(c)[2]}function Od(a){return a%10===0||a>10&&a<20}function Pd(a){return dh[a].split("_")}function Qd(a,b,c,d){var e=a+" ";return 1===a?e+Nd(a,b,c[0],d):b?e+(Od(a)?Pd(c)[1]:Pd(c)[0]):d?e+Pd(c)[1]:e+(Od(a)?Pd(c)[1]:Pd(c)[2])}/**
- * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
- */
-function Rd(a,b,c){return c?b%10===1&&b%100!==11?a[2]:a[3]:b%10===1&&b%100!==11?a[0]:a[1]}function Sd(a,b,c){return a+" "+Rd(eh[c],a,b)}function Td(a,b,c){return Rd(eh[c],a,b)}function Ud(a,b){return b?"dažas sekundes":"dažÄm sekundÄ“m"}function Vd(a,b,c,d){var e="";if(b)switch(c){case"s":e="काही सेकंद";break;case"m":e="à¤à¤• मिनिट";break;case"mm":e="%d मिनिटे";break;case"h":e="à¤à¤• तास";break;case"hh":e="%d तास";break;case"d":e=" [...]
-//! moment.js locale configuration
-//! locale : Romanian [ro]
-//! author : Vlad Gurdiga : https://github.com/gurdiga
-//! author : Valentin Agachi : https://github.com/avaly
-function Yd(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}
-//! moment.js locale configuration
-//! locale : Russian [ru]
-//! author : Viktorminator : https://github.com/Viktorminator
-//! Author : Menelion Elensúle : https://github.com/Oire
-//! author : Коренберг Марк : https://github.com/socketpair
-function Zd(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function $d(a,b,c){var d={mm:b?"минута_минуты_минут":"минуту_минуты_минут",hh:"чаÑ_чаÑа_чаÑов",dd:"день_днÑ_дней",MM:"меÑÑц_меÑÑца_меÑÑцев",yy:"год_года_лет"};return"m"===c?b?"минута":"минуту":a+" "+Zd(d[c],+a)}function _d(a){return a>1&&a<5}function ae(a,b,c,d){var e=a+" ";s [...]
-return b||d?"pár sekúnd":"pár sekundami";case"m":// a minute / in a minute / a minute ago
-return b?"minúta":d?"minútu":"minútou";case"mm":// 9 minutes / in 9 minutes / 9 minutes ago
-// 9 minutes / in 9 minutes / 9 minutes ago
-return b||d?e+(_d(a)?"minúty":"minút"):e+"minútami";break;case"h":// an hour / in an hour / an hour ago
-return b?"hodina":d?"hodinu":"hodinou";case"hh":// 9 hours / in 9 hours / 9 hours ago
-// 9 hours / in 9 hours / 9 hours ago
-return b||d?e+(_d(a)?"hodiny":"hodÃn"):e+"hodinami";break;case"d":// a day / in a day / a day ago
-return b||d?"deň":"dňom";case"dd":// 9 days / in 9 days / 9 days ago
-// 9 days / in 9 days / 9 days ago
-return b||d?e+(_d(a)?"dni":"dnÃ"):e+"dňami";break;case"M":// a month / in a month / a month ago
-return b||d?"mesiac":"mesiacom";case"MM":// 9 months / in 9 months / 9 months ago
-// 9 months / in 9 months / 9 months ago
-return b||d?e+(_d(a)?"mesiace":"mesiacov"):e+"mesiacmi";break;case"y":// a year / in a year / a year ago
-return b||d?"rok":"rokom";case"yy":// 9 years / in 9 years / 9 years ago
-// 9 years / in 9 years / 9 years ago
-return b||d?e+(_d(a)?"roky":"rokov"):e+"rokmi"}}
-//! moment.js locale configuration
-//! locale : Slovenian [sl]
-//! author : Robert Sedovšek : https://github.com/sedovsek
-function be(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":a<5?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":a<5?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem [...]
-//! moment.js locale configuration
-//! locale : Ukrainian [uk]
-//! author : zemlanin : https://github.com/zemlanin
-//! Author : Menelion Elensúle : https://github.com/Oire
-function he(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function ie(a,b,c){var d={mm:b?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:b?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"міÑÑць_міÑÑці_міÑÑців",yy:"рік_роки_років"};return"m"===c?b?"хвилина":"хвилину":"h"===c?b? [...]
-// I know
-var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1};var gf=se;
-// FORMATTING
-U("M",["MM",2],"Mo",function(){return this.month()+1}),U("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),U("MMMM",0,0,function(a){return this.localeData().months(this,a)}),
-// ALIASES
-J("month","M"),
-// PRIORITY
-M("month",8),
-// PARSING
-Z("M",Le),Z("MM",Le,He),Z("MMM",function(a,b){return b.monthsShortRegex(a)}),Z("MMMM",function(a,b){return b.monthsRegex(a)}),ba(["M","MM"],function(a,b){b[$e]=u(a)-1}),ba(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);
-// if we didn't find a month name, mark the date as invalid.
-null!=e?b[$e]=e:m(c).invalidMonth=a});
-// LOCALES
-var hf=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,jf="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),kf="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),lf=We,mf=We;
-// FORMATTING
-U("Y",0,0,function(){var a=this.year();return a<=9999?""+a:"+"+a}),U(0,["YY",2],0,function(){return this.year()%100}),U(0,["YYYY",4],0,"year"),U(0,["YYYYY",5],0,"year"),U(0,["YYYYYY",6,!0],0,"year"),
-// ALIASES
-J("year","y"),
-// PRIORITIES
-M("year",1),
-// PARSING
-Z("Y",Se),Z("YY",Le,He),Z("YYYY",Pe,Je),Z("YYYYY",Qe,Ke),Z("YYYYYY",Qe,Ke),ba(["YYYYY","YYYYYY"],Ze),ba("YYYY",function(b,c){c[Ze]=2===b.length?a.parseTwoDigitYear(b):u(b)}),ba("YY",function(b,c){c[Ze]=a.parseTwoDigitYear(b)}),ba("Y",function(a,b){b[Ze]=parseInt(a,10)}),
-// HOOKS
-a.parseTwoDigitYear=function(a){return u(a)+(u(a)>68?1900:2e3)};
-// MOMENTS
-var nf=O("FullYear",!0);
-// FORMATTING
-U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),
-// ALIASES
-J("week","w"),J("isoWeek","W"),
-// PRIORITIES
-M("week",5),M("isoWeek",5),
-// PARSING
-Z("w",Le),Z("ww",Le,He),Z("W",Le),Z("WW",Le,He),ca(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=u(a)});var of={dow:0,// Sunday is the first day of the week.
-doy:6};
-// FORMATTING
-U("d",0,"do","day"),U("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),U("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),U("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),
-// ALIASES
-J("day","d"),J("weekday","e"),J("isoWeekday","E"),
-// PRIORITY
-M("day",11),M("weekday",11),M("isoWeekday",11),
-// PARSING
-Z("d",Le),Z("e",Le),Z("E",Le),Z("dd",function(a,b){return b.weekdaysMinRegex(a)}),Z("ddd",function(a,b){return b.weekdaysShortRegex(a)}),Z("dddd",function(a,b){return b.weekdaysRegex(a)}),ca(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);
-// if we didn't get a weekday name, mark the date as invalid
-null!=e?b.d=e:m(c).invalidWeekday=a}),ca(["d","e","E"],function(a,b,c,d){b[d]=u(a)});
-// LOCALES
-var pf="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),qf="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),rf="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),sf=We,tf=We,uf=We;U("H",["HH",2],0,"hour"),U("h",["hh",2],0,Ra),U("k",["kk",2],0,Sa),U("hmm",0,0,function(){return""+Ra.apply(this)+T(this.minutes(),2)}),U("hmmss",0,0,function(){return""+Ra.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+T(this.minutes(),2)}),U("Hmmss",0,0,function [...]
-// ALIASES
-J("hour","h"),
-// PRIORITY
-M("hour",13),Z("a",Ua),Z("A",Ua),Z("H",Le),Z("h",Le),Z("HH",Le,He),Z("hh",Le,He),Z("hmm",Me),Z("hmmss",Ne),Z("Hmm",Me),Z("Hmmss",Ne),ba(["H","HH"],af),ba(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),ba(["h","hh"],function(a,b,c){b[af]=u(a),m(c).bigHour=!0}),ba("hmm",function(a,b,c){var d=a.length-2;b[af]=u(a.substr(0,d)),b[bf]=u(a.substr(d)),m(c).bigHour=!0}),ba("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[af]=u(a.substr(0,d)),b[bf]=u(a.substr(d,2)),b[cf [...]
-// YYYYMM is NOT allowed by the standard
-["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ff=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Gf=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=x("value provided is not in a recognized ISO format. moment construction falls back to js Dat [...]
-// constant that refers to the ISO standard
-a.ISO_8601=function(){};var Hf=x("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=sb.apply(null,arguments);return this.isValid()&&a.isValid()?a<this?this:a:o()}),If=x("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=sb.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:o()}),Jf=function(){return Date.now?Date.now():+new Date};zb("Z" [...]
-// PARSING
-Z("Z",Ue),Z("ZZ",Ue),ba(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Ab(Ue,a)});
-// HELPERS
-// timezone chunker
-// '+10:00' > ['10', '00']
-// '-1530' > ['-15', '30']
-var Kf=/([\+\-]|\d\d)/gi;
-// HOOKS
-// This function will be called whenever a moment is mutated.
-// It is intended to keep the offset in sync with the timezone.
-a.updateOffset=function(){};
-// ASP.NET json date format regex
-var Lf=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Mf=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Ob.fn=wb.prototype;var Nf=Sb(1,"add"),Of=Sb(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Pf=x("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change [...]
-// FORMATTING
-U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),zc("gggg","weekYear"),zc("ggggg","weekYear"),zc("GGGG","isoWeekYear"),zc("GGGGG","isoWeekYear"),
-// ALIASES
-J("weekYear","gg"),J("isoWeekYear","GG"),
-// PRIORITY
-M("weekYear",1),M("isoWeekYear",1),
-// PARSING
-Z("G",Se),Z("g",Se),Z("GG",Le,He),Z("gg",Le,He),Z("GGGG",Pe,Je),Z("gggg",Pe,Je),Z("GGGGG",Qe,Ke),Z("ggggg",Qe,Ke),ca(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=u(a)}),ca(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),
-// FORMATTING
-U("Q",0,"Qo","quarter"),
-// ALIASES
-J("quarter","Q"),
-// PRIORITY
-M("quarter",7),
-// PARSING
-Z("Q",Ge),ba("Q",function(a,b){b[$e]=3*(u(a)-1)}),
-// FORMATTING
-U("D",["DD",2],"Do","date"),
-// ALIASES
-J("date","D"),
-// PRIOROITY
-M("date",9),
-// PARSING
-Z("D",Le),Z("DD",Le,He),Z("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),ba(["D","DD"],_e),ba("Do",function(a,b){b[_e]=u(a.match(Le)[0],10)});
-// MOMENTS
-var Qf=O("Date",!0);
-// FORMATTING
-U("DDD",["DDDD",3],"DDDo","dayOfYear"),
-// ALIASES
-J("dayOfYear","DDD"),
-// PRIORITY
-M("dayOfYear",4),
-// PARSING
-Z("DDD",Oe),Z("DDDD",Ie),ba(["DDD","DDDD"],function(a,b,c){c._dayOfYear=u(a)}),
-// FORMATTING
-U("m",["mm",2],0,"minute"),
-// ALIASES
-J("minute","m"),
-// PRIORITY
-M("minute",14),
-// PARSING
-Z("m",Le),Z("mm",Le,He),ba(["m","mm"],bf);
-// MOMENTS
-var Rf=O("Minutes",!1);
-// FORMATTING
-U("s",["ss",2],0,"second"),
-// ALIASES
-J("second","s"),
-// PRIORITY
-M("second",15),
-// PARSING
-Z("s",Le),Z("ss",Le,He),ba(["s","ss"],cf);
-// MOMENTS
-var Sf=O("Seconds",!1);
-// FORMATTING
-U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){ret [...]
-// ALIASES
-J("millisecond","ms"),
-// PRIORITY
-M("millisecond",16),
-// PARSING
-Z("S",Oe,Ge),Z("SS",Oe,He),Z("SSS",Oe,Ie);var Tf;for(Tf="SSSS";Tf.length<=9;Tf+="S")Z(Tf,Re);for(Tf="S";Tf.length<=9;Tf+="S")ba(Tf,Ic);
-// MOMENTS
-var Uf=O("Milliseconds",!1);
-// FORMATTING
-U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var Vf=r.prototype;Vf.add=Nf,Vf.calendar=Vb,Vf.clone=Wb,Vf.diff=bc,Vf.endOf=oc,Vf.format=gc,Vf.from=hc,Vf.fromNow=ic,Vf.to=jc,Vf.toNow=kc,Vf.get=R,Vf.invalidAt=xc,Vf.isAfter=Xb,Vf.isBefore=Yb,Vf.isBetween=Zb,Vf.isSame=$b,Vf.isSameOrAfter=_b,Vf.isSameOrBefore=ac,Vf.isValid=vc,Vf.lang=Pf,Vf.locale=lc,Vf.localeData=mc,Vf.max=If,Vf.min=Hf,Vf.parsingFlags=wc,Vf.set=S,Vf.startOf=nc,Vf.subtract=Of,Vf.toArray=sc,Vf.toObject=tc,Vf.toDate=rc,Vf.toISOStr [...]
-// Year
-Vf.year=nf,Vf.isLeapYear=ra,
-// Week Year
-Vf.weekYear=Ac,Vf.isoWeekYear=Bc,
-// Quarter
-Vf.quarter=Vf.quarters=Gc,
-// Month
-Vf.month=ka,Vf.daysInMonth=la,
-// Week
-Vf.week=Vf.weeks=Ba,Vf.isoWeek=Vf.isoWeeks=Ca,Vf.weeksInYear=Dc,Vf.isoWeeksInYear=Cc,
-// Day
-Vf.date=Qf,Vf.day=Vf.days=Ka,Vf.weekday=La,Vf.isoWeekday=Ma,Vf.dayOfYear=Hc,
-// Hour
-Vf.hour=Vf.hours=xf,
-// Minute
-Vf.minute=Vf.minutes=Rf,
-// Second
-Vf.second=Vf.seconds=Sf,
-// Millisecond
-Vf.millisecond=Vf.milliseconds=Uf,
-// Offset
-Vf.utcOffset=Db,Vf.utc=Fb,Vf.local=Gb,Vf.parseZone=Hb,Vf.hasAlignedHourOffset=Ib,Vf.isDST=Jb,Vf.isLocal=Lb,Vf.isUtcOffset=Mb,Vf.isUtc=Nb,Vf.isUTC=Nb,
-// Timezone
-Vf.zoneAbbr=Jc,Vf.zoneName=Kc,
-// Deprecations
-Vf.dates=x("dates accessor is deprecated. Use date instead.",Qf),Vf.months=x("months accessor is deprecated. Use month instead",ka),Vf.years=x("years accessor is deprecated. Use year instead",nf),Vf.zone=x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Eb),Vf.isDSTShifted=x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Kb);var Wf=C.prototype;Wf.calendar=D,Wf.longDateFor [...]
-// Month
-Wf.months=fa,Wf.monthsShort=ga,Wf.monthsParse=ia,Wf.monthsRegex=na,Wf.monthsShortRegex=ma,
-// Week
-Wf.week=ya,Wf.firstDayOfYear=Aa,Wf.firstDayOfWeek=za,
-// Day of Week
-Wf.weekdays=Fa,Wf.weekdaysMin=Ha,Wf.weekdaysShort=Ga,Wf.weekdaysParse=Ja,Wf.weekdaysRegex=Na,Wf.weekdaysShortRegex=Oa,Wf.weekdaysMinRegex=Pa,
-// Hours
-Wf.isPM=Va,Wf.meridiem=Wa,$a("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===u(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),
-// Side effect imports
-a.lang=x("moment.lang is deprecated. Use moment.locale instead.",$a),a.langData=x("moment.langData is deprecated. Use moment.localeData instead.",bb);var Xf=Math.abs,Yf=ed("ms"),Zf=ed("s"),$f=ed("m"),_f=ed("h"),ag=ed("d"),bg=ed("w"),cg=ed("M"),dg=ed("y"),eg=gd("milliseconds"),fg=gd("seconds"),gg=gd("minutes"),hg=gd("hours"),ig=gd("days"),jg=gd("months"),kg=gd("years"),lg=Math.round,mg={s:45,// seconds to minute
-m:45,// minutes to hour
-h:22,// hours to day
-d:26,// days to month
-M:11},ng=Math.abs,og=wb.prototype;og.abs=Wc,og.add=Yc,og.subtract=Zc,og.as=cd,og.asMilliseconds=Yf,og.asSeconds=Zf,og.asMinutes=$f,og.asHours=_f,og.asDays=ag,og.asWeeks=bg,og.asMonths=cg,og.asYears=dg,og.valueOf=dd,og._bubble=_c,og.get=fd,og.milliseconds=eg,og.seconds=fg,og.minutes=gg,og.hours=hg,og.days=ig,og.weeks=hd,og.months=jg,og.years=kg,og.humanize=md,og.toISOString=nd,og.toString=nd,og.toJSON=nd,og.locale=lc,og.localeData=mc,
-// Deprecations
-og.toIsoString=x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",nd),og.lang=Pf,
-// Side effect imports
-// FORMATTING
-U("X",0,0,"unix"),U("x",0,0,"valueOf"),
-// PARSING
-Z("x",Se),Z("X",Ve),ba("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),ba("x",function(a,b,c){c._d=new Date(u(a))}),
-// Side effect imports
-//! moment.js
-//! version : 2.17.1
-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
-//! license : MIT
-//! momentjs.com
-a.version="2.17.1",b(sb),a.fn=Vf,a.min=ub,a.max=vb,a.now=Jf,a.utc=k,a.unix=Lc,a.months=Rc,a.isDate=g,a.locale=$a,a.invalid=o,a.duration=Ob,a.isMoment=s,a.weekdays=Tc,a.parseZone=Mc,a.localeData=bb,a.isDuration=xb,a.monthsShort=Sc,a.weekdaysMin=Vc,a.defineLocale=_a,a.updateLocale=ab,a.locales=cb,a.weekdaysShort=Uc,a.normalizeUnits=K,a.relativeTimeRounding=kd,a.relativeTimeThreshold=ld,a.calendarFormat=Ub,a.prototype=Vf,
-//! moment.js locale configuration
-//! locale : Afrikaans [af]
-//! author : Werner Mollentze : https://github.com/wernerm
-a.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return a<12?c?"vm [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Arabic (Algeria) [ar-dz]
-//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme
-a.defineLocale("ar-dz",{months:"جانÙÙŠ_ÙÙŠÙØ±ÙŠ_مارس_Ø£ÙØ±ÙŠÙ„_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),monthsShort:"جانÙÙŠ_ÙÙŠÙØ±ÙŠ_مارس_Ø£ÙØ±ÙŠÙ„_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdays:"Ø§Ù„Ø£ØØ¯_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"Ø§ØØ¯_اثنين_Ø«Ù„Ø§Ø«Ø§Ø [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Arabic (Lybia) [ar-ly]
-//! author : Ali Hmer: https://github.com/kikoanis
-var pg={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},qg=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&a%100<=10?3:a%100>=11?4:5},rg={s:["أقل من ثانية","ثانية ÙˆØ§ØØ¯Ø©",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة ÙˆØ§ØØ¯Ø©",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة ÙˆØ§ØØ¯Ø©",["ساعتان", [...]
-doy:12}}),
-//! moment.js locale configuration
-//! locale : Arabic (Morocco) [ar-ma]
-//! author : ElFadili Yassine : https://github.com/ElFadiliY
-//! author : Abdel Said : https://github.com/abdelsaid
-a.defineLocale("ar-ma",{months:"يناير_ÙØ¨Ø±Ø§ÙŠØ±_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_ÙØ¨Ø±Ø§ÙŠØ±_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"Ø§Ù„Ø£ØØ¯_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"Ø§ØØ¯_اتنين_ثلاثاء_ا [...]
-doy:12}});
-//! moment.js locale configuration
-//! locale : Arabic (Saudi Arabia) [ar-sa]
-//! author : Suhail Alkowaileet : https://github.com/xsoh
-var ug={1:"Ù¡",2:"Ù¢",3:"Ù£",4:"Ù¤",5:"Ù¥",6:"Ù¦",7:"Ù§",8:"Ù¨",9:"Ù©",0:"Ù "},vg={"Ù¡":"1","Ù¢":"2","Ù£":"3","Ù¤":"4","Ù¥":"5","Ù¦":"6","Ù§":"7","Ù¨":"8","Ù©":"9","Ù ":"0"};a.defineLocale("ar-sa",{months:"يناير_ÙØ¨Ø±Ø§ÙŠØ±_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),monthsShort:"يناير_ÙØ¨Ø±Ø§ÙŠØ±_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙÙ…Ø¨Ø [...]
-doy:6}}),
-//! moment.js locale configuration
-//! locale : Arabic (Tunisia) [ar-tn]
-//! author : Nader Toukabri : https://github.com/naderio
-a.defineLocale("ar-tn",{months:"جانÙÙŠ_ÙÙŠÙØ±ÙŠ_مارس_Ø£ÙØ±ÙŠÙ„_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),monthsShort:"جانÙÙŠ_ÙÙŠÙØ±ÙŠ_مارس_Ø£ÙØ±ÙŠÙ„_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdays:"Ø§Ù„Ø£ØØ¯_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"Ø£ØØ¯_إثنين_Ø«Ù„Ø§Ø«Ø§Ø [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Arabic [ar]
-//! author : Abdel Said: https://github.com/abdelsaid
-//! author : Ahmed Elkhatib
-//! author : forabi https://github.com/forabi
-var wg={1:"Ù¡",2:"Ù¢",3:"Ù£",4:"Ù¤",5:"Ù¥",6:"Ù¦",7:"Ù§",8:"Ù¨",9:"Ù©",0:"Ù "},xg={"Ù¡":"1","Ù¢":"2","Ù£":"3","Ù¤":"4","Ù¥":"5","Ù¦":"6","Ù§":"7","Ù¨":"8","Ù©":"9","Ù ":"0"},yg=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&a%100<=10?3:a%100>=11?4:5},zg={s:["أقل من ثانية","ثانية ÙˆØ§ØØ¯Ø©",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة ÙˆØ§ØØ¯Ø©",["دقيقتان","دقيقتين"],"%d دق [...]
-doy:12}});
-//! moment.js locale configuration
-//! locale : Azerbaijani [az]
-//! author : topchiyev : https://github.com/topchiyev
-var Cg={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};a.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənb [...]
-return a+"-ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Cg[b]||Cg[c]||Cg[d])},week:{dow:1,// Monday is the first day of the week.
-doy:7}}),a.defineLocale("be",{months:{format:"ÑтудзенÑ_лютага_Ñакавіка_краÑавіка_траўнÑ_чÑрвенÑ_ліпенÑ_жніўнÑ_вераÑнÑ_каÑтрычніка_ліÑтапада_ÑнежнÑ".split("_"),standalone:"Ñтудзень_люты_Ñакавік_краÑавік_травень_чÑрвень_ліпень_жнівень_вераÑень_каÑтрычнік_ліÑтапад_Ñнежань".split("_")},monthsShort:"Ñтуд_лют_Ñа [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Bulgarian [bg]
-//! author : Krasen Borisov : https://github.com/kraz
-a.defineLocale("bg",{months:"Ñнуари_февруари_март_април_май_юни_юли_авгуÑÑ‚_Ñептември_октомври_ноември_декември".split("_"),monthsShort:"Ñнр_фев_мар_апр_май_юни_юли_авг_Ñеп_окт_ное_дек".split("_"),weekdays:"неделÑ_понеделник_вторник_ÑÑ€Ñда_четвъртък_петък_Ñъбота".split("_"),weekdaysShort:"нед_пон_вто_ÑÑ€Ñ_чет_пет_Ñъб". [...]
-doy:7}});
-//! moment.js locale configuration
-//! locale : Bengali [bn]
-//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
-var Dg={1:"à§§",2:"২",3:"à§©",4:"৪",5:"à§«",6:"৬",7:"à§",8:"à§®",9:"৯",0:"০"},Eg={"à§§":"1","২":"2","à§©":"3","৪":"4","à§«":"5","৬":"6","à§":"7","à§®":"8","৯":"9","০":"0"};a.defineLocale("bn",{months:"জানà§à§Ÿà¦¾à¦°à§€_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°".split("_"),monthsShort:"জà [...]
-doy:6}});
-//! moment.js locale configuration
-//! locale : Tibetan [bo]
-//! author : Thupten N. Chakrishar : https://github.com/vajradog
-var Fg={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},Gg={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};a.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ [...]
-doy:6}}),a.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz [...]
-doy:4}}),a.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._Äet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_Äe_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Catalan [ca]
-//! author : Juan G. Hurtado : https://github.com/juanghurtado
-a.defineLocale("ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL: [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Czech [cs]
-//! author : petrbela : https://github.com/petrbela
-var Hg="leden_únor_bÅ™ezen_duben_kvÄ›ten_Äerven_Äervenec_srpen_zářÃ_Å™Ãjen_listopad_prosinec".split("_"),Ig="led_úno_bÅ™e_dub_kvÄ›_Ävn_Ävc_srp_zář_Å™Ãj_lis_pro".split("_");a.defineLocale("cs",{months:Hg,monthsShort:Ig,monthsParse:function(a,b){var c,d=[];for(c=0;c<12;c++)
-// use custom parser to solve problem with July (Äervenec)
-d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(Hg,Ig),shortMonthsParse:function(a){var b,c=[];for(b=0;b<12;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(Ig),longMonthsParse:function(a){var b,c=[];for(b=0;b<12;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(Hg),weekdays:"nedÄ›le_pondÄ›lÃ_úterý_stÅ™eda_Ätvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_Ät_pá_so".split("_"),weekdaysMin:"ne_po_út_st_Ät_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L: [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Chuvash [cv]
-//! author : Anatoly Mironov : https://github.com/mirontoli
-a.defineLocale("cv",{months:"кӑрлач_нарӑÑ_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_Ò«Ó—Ñ€_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырÑарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_Ñрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_Ñрн_шӑм".split("_"),weekdaysM [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Welsh [cy]
-//! author : Robert Allen : https://github.com/robgallen
-//! author : https://github.com/ryangreaves
-a.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,
-// time formats are the same as en-gb
-longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},ordinalParse:/\d{1 [...]
-// traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
-ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed",// 1af to 10fed
-"eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,// Monday is the first day of the week.
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Danish [da]
-//! author : Ulrik Nielsen : https://github.com/mrbase
-a.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d. [...]
-doy:4}}),a.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss", [...]
-doy:4}}),a.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Maldivian [dv]
-//! author : Jawish Hameed : https://github.com/jawish
-var Jg=["Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©","ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©","Þ‰Þ§ÞƒÞ¨Þ—Þª","Þ‡ÞÞ•Þ°ÞƒÞ©ÞÞª","Þ‰Þ","Þ–Þ«Þ‚Þ°","Þ–ÞªÞÞ¦Þ‡Þ¨","Þ‡Þ¯ÞŽÞ¦ÞÞ°Þ“Þª","ÞÞ¬Þ•Þ°Þ“Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞª","Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª","Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª","Þ‘Þ¨ÞÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª"],Kg=["އާދިއްތަ","Þ€Þ¯Þ‰Þ¦","Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦","Þ„ÞªÞ‹Þ¦","Þ„ÞªÞƒÞ§Þްފަތި","Þ€ÞªÞ†ÞªÞƒÞª","Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª"];a.defineLocale("dv",{months:Jg,monthsShort:Jg,weekdays:Kg,weekdaysShort:Kg,weekdaysMin:"Þ‡Þ§Þ‹Þ¨_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§_Þ€Þª [...]
-doy:12}}),
-//! moment.js locale configuration
-//! locale : Greek [el]
-//! author : Aggelos Karalias : https://github.com/mehiel
-a.defineLocale("el",{monthsNominativeEl:"ΙανουάÏιος_ΦεβÏουάÏιος_ΜάÏτιος_ΑπÏίλιος_Μάιος_ΙοÏνιος_ΙοÏλιος_ΑÏγουστος_ΣεπτÎμβÏιος_ΟκτώβÏιος_ÎοÎμβÏιος_ΔεκÎμβÏιος".split("_"),monthsGenitiveEl:"ΙανουαÏίου_ΦεβÏουαÏίου_ΜαÏτίου_ΑπÏιλίου_ΜαÎου_Ιουνίου_Ιουλίου_ΑυγοÏστου_ΣεπτεμβÏίου_ΟκτωβÏίου_ÎοεμβÏίου_Δεκ [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : English (Australia) [en-au]
-//! author : Jared Morse : https://github.com/jarcoal
-a.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dd [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : English (Canada) [en-ca]
-//! author : Jonathan Abourbih : https://github.com/jonbca
-a.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:" [...]
-//! moment.js locale configuration
-//! locale : English (United Kingdom) [en-gb]
-//! author : Chris Gedrim : https://github.com/chrisgedrim
-a.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : English (Ireland) [en-ie]
-//! author : Chris Cartlidge : https://github.com/chriscartlidge
-a.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : English (New Zealand) [en-nz]
-//! author : Luke McGregor : https://github.com/lukemcgregor
-a.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dd [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Esperanto [eo]
-//! author : Colin Dean : https://github.com/colindean
-//! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
-//! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
-a.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aÅgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aÅg_sep_okt_nov_dec".split("_"),weekdays:"Dimanĉo_Lundo_Mardo_Merkredo_Ä´aÅdo_Vendredo_Sabato".split("_"),weekdaysShort:"Dim_Lun_Mard_Merk_Ä´aÅ_Ven_Sab".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Ä´a_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-an de] MMMM, YYYY",LLL:"D[-an de] MMMM, [...]
-dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},ordinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,// Monday is the first day of the week.
-doy:7}});
-//! moment.js locale configuration
-//! locale : Spanish (Dominican Republic) [es-do]
-var Lg="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Mg="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");a.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Mg[a.month()]:Lg[a.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._ [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Spanish [es]
-//! author : Julio Napurà : https://github.com/julionc
-var Ng="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Og="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");a.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Og[a.month()]:Ng[a.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie [...]
-doy:4}}),a.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H: [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Basque [eu]
-//! author : Eneko Illarramendi : https://github.com/eillarra
-a.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss [...]
-doy:7}});
-//! moment.js locale configuration
-//! locale : Persian [fa]
-//! author : Ebrahim Byagowi : https://github.com/ebraminio
-var Pg={1:"Û±",2:"Û²",3:"Û³",4:"Û´",5:"Ûµ",6:"Û¶",7:"Û·",8:"Û¸",9:"Û¹",0:"Û°"},Qg={"Û±":"1","Û²":"2","Û³":"3","Û´":"4","Ûµ":"5","Û¶":"6","Û·":"7","Û¸":"8","Û¹":"9","Û°":"0"};a.defineLocale("fa",{months:"ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split(" [...]
-doy:12}});
-//! moment.js locale configuration
-//! locale : Finnish [fi]
-//! author : Tarmo Aidantausta : https://github.com/bleadof
-var Rg="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),Sg=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",Rg[7],Rg[8],Rg[9]];a.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_la [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Faroese [fo]
-//! author : Ragnar Johannesen : https://github.com/ragnar123
-a.defineLocale("fo",{months:"januar_februar_mars_aprÃl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_frÃggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frÃ_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : French (Canada) [fr-ca]
-//! author : Jonathan Abourbih : https://github.com/jonbca
-a.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:" [...]
-//! moment.js locale configuration
-//! locale : French (Switzerland) [fr-ch]
-//! author : Gaspard Bucher : https://github.com/gaspard
-a.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:" [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : French [fr]
-//! author : John Fischer : https://github.com/jfroffice
-a.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/ [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Frisian [fy]
-//! author : Robin van der Vliet : https://github.com/robin0van0der0v
-var Tg="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),Ug="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");a.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(a,b){return/-MMM-/.test(b)?Ug[a.month()]:Tg[a.month()]},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._s [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Scottish Gaelic [gd]
-//! author : Jon Ashdown : https://github.com/jonashdown
-var Vg=["Am Faoilleach","An Gearran","Am Mà rt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dà mhair","An t-Samhain","An Dùbhlachd"],Wg=["Faoi","Gear","Mà rt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dà mh","Samh","Dùbh"],Xg=["Didòmhnaich","Diluain","Dimà irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],Yg=["Did","Dil","Dim","Dic","Dia","Dih","Dis"],Zg=["Dò","Lu","Mà ","Ci","Ar","Ha","Sa"];a.defineLocale("gd",{months:Vg,monthsS [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Galician [gl]
-//! author : Juan G. Hurtado : https://github.com/juanghurtado
-a.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/Y [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Hebrew [he]
-//! author : Tomer Cohen : https://github.com/tomer
-//! author : Moshe Simantov : https://github.com/DevelopmentIL
-//! author : Tal Ater : https://github.com/TalAter
-a.defineLocale("he",{months:"×™× ×•×ר_פברו×ר_מרץ_×פריל_מ××™_×™×•× ×™_יולי_×וגוסט_ספטמבר_×וקטובר_× ×•×‘×ž×‘×¨_דצמבר".split("_"),monthsShort:"×™× ×•×³_פבר׳_מרץ_×פר׳_מ××™_×™×•× ×™_יולי_×וג׳_ספט׳_×וק׳_× ×•×‘×³_דצמ׳".split("_"),weekdays:"ר×שון_×©× ×™_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"×׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"×_ב_×’_ד_×”_ו_ש".spli [...]
-//! moment.js locale configuration
-//! locale : Hindi [hi]
-//! author : Mayank Singhal : https://github.com/mayanksinghal
-var $g={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"à¥",8:"८",9:"९",0:"०"},_g={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","à¥":"7","८":"8","९":"9","०":"0"};a.defineLocale("hi",{months:"जनवरी_फ़रवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितमà¥à¤¬à¤°_अकà¥à¤Ÿà¥‚बर_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°".split("_"),monthsShort:"जन._फ़र._मारà¥à¤š_अठ[...]
-// Hindi notation for meridiems are quite fuzzy in practice. While there exists
-// a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
-meridiemParse:/रात|सà¥à¤¬à¤¹|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?a<4?a:a+12:"सà¥à¤¬à¤¹"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"रात":a<10?"सà¥à¤¬à¤¹":a<17?"दोपहर":a<20?"शाम":"रात"},week:{dow:0,// Sunday is the first day of the week.
-doy:6}}),a.defineLocale("hr",{months:{format:"sijeÄnja_veljaÄe_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sijeÄanj_veljaÄa_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon [...]
-doy:7}});
-//! moment.js locale configuration
-//! locale : Hungarian [hu]
-//! author : Adam Brunner : https://github.com/adambrunner
-var ah="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");a.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo" [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Armenian [hy-am]
-//! author : Armendarabyan : https://github.com/armendarabyan
-a.defineLocale("hy-am",{months:{format:"Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«".split("_"),standalone:"Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€_Õ´Õ¡Ö€Õ¿_Õ¡ÕºÖ€Õ«Õ¬_Õ´Õ¡ÕµÕ«Õ½_Õ°Õ¸Ö‚Õ¶Õ«Õ½_Õ°Õ¸Ö‚Õ¬Õ«Õ½_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€".split("_")},monthsShort:"Õ°Õ¶Õ¾_ÖƒÕ¿Ö€_Õ´Ö€Õ¿_Õ¡ÕºÖ [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Indonesian [id]
-//! author : Mohammad Satrio Utomo : https://github.com/tyok
-//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
-a.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM [...]
-doy:7}}),a.defineLocale("is",{months:"janúar_febrúar_mars_aprÃl_maÃ_júnÃ_júlÃ_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maÃ_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Italian [it]
-//! author : Lorenzo : https://github.com/aliem
-//! author: Mattia Larentis: https://github.com/nostalgiaz
-a.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",L [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Japanese [ja]
-//! author : LI Long : https://github.com/baryon
-a.defineLocale("ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_ç«æ›œæ—¥_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"æ—¥_月_ç«_æ°´_木_金_土".split("_"),weekdaysMin:"æ—¥_月_ç«_æ°´_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分sç§’",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M [...]
-//! moment.js locale configuration
-//! locale : Javanese [jv]
-//! author : Rony Lantip : https://github.com/lantip
-//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
-a.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMM [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Georgian [ka]
-//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
-a.defineLocale("ka",{months:{standalone:"იáƒáƒœáƒ•áƒáƒ ი_თებერვáƒáƒšáƒ˜_მáƒáƒ ტი_áƒáƒžáƒ ილი_მáƒáƒ˜áƒ¡áƒ˜_ივნისი_ივლისი_áƒáƒ’ვისტáƒ_სექტემბერი_áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი_ნáƒáƒ”მბერი_დეკემბერი".split("_"),format:"იáƒáƒœáƒ•áƒáƒ ს_თებერვáƒáƒšáƒ¡_მáƒáƒ ტს_áƒáƒžáƒ ილის_მáƒáƒ˜áƒ¡áƒ¡_ივნისს_ივლისს_áƒáƒ’ვისá [...]
-//! moment.js locale configuration
-//! locale : Kazakh [kk]
-//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
-var bh={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};a.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_Ñәуір_мамыр_мауÑым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқÑан".split("_"),monthsShort:"қаң_ақп_нау_Ñәу_мам_мау_шіл_там_қыр_Ò [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Cambodian [km]
-//! author : Kruy Vanna : https://github.com/kruyvanna
-a.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“áž¶_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“áž¶_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិážáŸ’áž™_áž…áŸáž“្ទ_ [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Korean [ko]
-//! author : Kyungwook, Park : https://github.com/kyungw00k
-//! author : Jeeeyul Lee <je...@gmail.com>
-a.defineLocale("ko",{months:"1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”".split("_"),monthsShort:"1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”".split("_"),weekdays:"ì¼ìš”ì¼_월요ì¼_화요ì¼_수요ì¼_목요ì¼_금요ì¼_í† ìš”ì¼".split("_"),weekdaysShort:"ì¼_ì›”_í™”_수_목_금_í† ".split("_"),weekdaysMin:"ì¼_ì›”_í™”_수_목_금_í† ".split("_"),longDateFormat:{LT:"A h시 më¶„",LTS:"A h시 më¶„ sì´ˆ",L:"YYYY.MM.DD",LL:"YYYYë…„ MMMM Dì¼",LLL:"Y [...]
-//! moment.js locale configuration
-//! locale : Kyrgyz [ky]
-//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
-var ch={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};a.defineLocale("ky",{months:"Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь".split("_"),monthsShort:"Ñнв_фев_март_апр_май_июнь_июль_авг_Ñен_Ð [...]
-doy:7}}),a.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer [...]
-// Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
-switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:Jd,past:Kd,s:"e puer Sekonnen",m:Id,mm:"%d Minutten",h:Id,hh:"%d Stonnen",d:Id,dd:"%d Deeg",M:Id,MM:"%d Méint",y:Id,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,// Monday is the first day of the week.
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Lao [lo]
-//! author : Ryan Hart : https://github.com/ryanhart2
-a.defineLocale("lo",{months:"ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ".split("_"),monthsShort:"ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ".split("_"),weekdays:"àºàº²àº—ິຠ[...]
-//! moment.js locale configuration
-//! locale : Lithuanian [lt]
-//! author : Mindaugas Mozūras : https://github.com/mmozuras
-var dh={m:"minutÄ—_minutÄ—s_minutÄ™",mm:"minutÄ—s_minuÄių_minutes",h:"valanda_valandos_valandÄ…",hh:"valandos_valandų_valandas",d:"diena_dienos_dienÄ…",dd:"dienos_dienų_dienas",M:"mÄ—nuo_mÄ—nesio_mÄ—nesį",MM:"mÄ—nesiai_mÄ—nesių_mÄ—nesius",y:"metai_metų_metus",yy:"metai_metų_metus"};a.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjÅ«Äio_rugsÄ—jo_spalio_lapkriÄio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_geg [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Latvian [lv]
-//! author : Kristaps Karlsons : https://github.com/skakri
-//! author : JÄnis Elmeris : https://github.com/JanisE
-var eh={m:"minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes".split("_"),mm:"minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes".split("_"),h:"stundas_stundÄm_stunda_stundas".split("_"),hh:"stundas_stundÄm_stunda_stundas".split("_"),d:"dienas_dienÄm_diena_dienas".split("_"),dd:"dienas_dienÄm_diena_dienas".split("_"),M:"mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i".split("_"),MM:"mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};a.defineLocale(" [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Montenegrin [me]
-//! author : Miodrag NikaÄ <mi...@restartit.me> : https://github.com/miodragnikac
-var fh={words:{//Different grammatical cases
-m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,b,c){var d=fh.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+fh.correctGrammaticalCase(a,d)}};a.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_okto [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Maori [mi]
-//! author : John Corrigan <ro...@gmail.com> : https://github.com/johnideal
-a.defineLocale("mi",{months:"Kohi-tÄte_Hui-tanguru_PoutÅ«-te-rangi_Paenga-whÄwhÄ_Haratua_Pipiri_HÅngoingoi_Here-turi-kÅkÄ_Mahuru_Whiringa-Ä-nuku_Whiringa-Ä-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_HÅngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014 [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Macedonian [mk]
-//! author : Borislav Mickov : https://github.com/B0k0
-a.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_авгуÑÑ‚_Ñептември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_Ñеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_Ñреда_четврток_петок_Ñабота".split("_"),weekdaysShort:"нед_пон_вто_Ñре_чет_пет_Ñа [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Malayalam [ml]
-//! author : Floyd Pink : https://github.com/floydpink
-a.defineLocale("ml",{months:"ജനàµà´µà´°à´¿_ഫെബàµà´°àµà´µà´°à´¿_മാർചàµà´šàµ_à´à´ªàµà´°à´¿àµ½_മേയàµ_ജൂൺ_ജൂലൈ_à´“à´—à´¸àµà´±àµà´±àµ_സെപàµà´±àµà´±à´‚ബർ_à´’à´•àµà´Ÿàµ‹à´¬àµ¼_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനàµ._ഫെബàµà´°àµ._മാർ._à´à´ªàµà´°à´¿._മേയàµ_ജൂൺ_ജൂലൈ._à´“à´—._സെപàµà´±àµà´±._à´’à´•àµà´Ÿàµ‹._നവം._ഡിസം.".split("_"),monthsParseExact:!0, [...]
-//! moment.js locale configuration
-//! locale : Marathi [mr]
-//! author : Harshad Kale : https://github.com/kalehv
-//! author : Vivek Athalye : https://github.com/vnathalye
-var gh={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"à¥",8:"८",9:"९",0:"०"},hh={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","à¥":"7","८":"8","९":"9","०":"0"};a.defineLocale("mr",{months:"जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¤¿à¤²_मे_जून_जà¥à¤²à¥ˆ_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर".split("_"),monthsShort:"जानà [...]
-doy:6}}),
-//! moment.js locale configuration
-//! locale : Malay [ms-my]
-//! note : DEPRECATED, the correct one is [ms]
-//! author : Weldan Jamili : https://github.com/weldan
-a.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YY [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Malay [ms]
-//! author : Weldan Jamili : https://github.com/weldan
-a.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [...]
-doy:7}});
-//! moment.js locale configuration
-//! locale : Burmese [my]
-//! author : Squar team, mysquar.com
-//! author : David Rossellat : https://github.com/gholadr
-//! author : Tin Aung Lin : https://github.com/thanyawzinmin
-var ih={1:"á",2:"á‚",3:"áƒ",4:"á„",5:"á…",6:"á†",7:"á‡",8:"áˆ",9:"á‰",0:"á€"},jh={"á":"1","á‚":"2","áƒ":"3","á„":"4","á…":"5","á†":"6","á‡":"7","áˆ":"8","á‰":"9","á€":"0"};a.defineLocale("my",{months:"ဇန်နá€á€«á€›á€®_ဖေဖော်á€á€«á€›á€®_မá€á€º_ဧပြီ_မေ_ဇွန်_ဇူလá€á€¯á€„်_သြဂုá€á€º_စက်á€á€„်ဘာ_အောက်á€á€á€¯á€˜á€¬_နá€á€¯á€á€„်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"á [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Norwegian Bokmål [nb]
-//! authors : Espen Hovlandsdal : https://github.com/rexxars
-//! Sigurd Gartmann : https://github.com/sigurdga
-a.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:" [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Nepalese [ne]
-//! author : suvash : https://github.com/suvash
-var kh={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"à¥",8:"८",9:"९",0:"०"},lh={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","à¥":"7","८":"8","९":"9","०":"0"};a.defineLocale("ne",{months:"जनवरी_फेबà¥à¤°à¥à¤µà¤°à¥€_मारà¥à¤š_अपà¥à¤°à¤¿à¤²_मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ_अगषà¥à¤Ÿ_सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°_अकà¥à¤Ÿà¥‹à¤¬à¤°_नोà¤à¥‡à¤®à¥à¤¬à¤°_डिसेमà¥à¤¬à¤°".split("_"),monthsShort:"जन._फॠ[...]
-doy:6}});
-//! moment.js locale configuration
-//! locale : Dutch (Belgium) [nl-be]
-//! author : Joris Röling : https://github.com/jorisroling
-//! author : Jacob Middag : https://github.com/middagj
-var mh="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),nh="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),oh=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],ph=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;a.defineLocale("nl-be",{months:"januari_februari_maa [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Dutch [nl]
-//! author : Joris Röling : https://github.com/jorisroling
-//! author : Jacob Middag : https://github.com/middagj
-var qh="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),rh="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),sh=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],th=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;a.defineLocale("nl",{months:"januari_februari_maart_ [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Nynorsk [nn]
-//! author : https://github.com/mechuwind
-a.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Punjabi (India) [pa-in]
-//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
-var uh={1:"à©§",2:"੨",3:"à©©",4:"੪",5:"à©«",6:"੬",7:"à©",8:"à©®",9:"੯",0:"੦"},vh={"à©§":"1","੨":"2","à©©":"3","੪":"4","à©«":"5","੬":"6","à©":"7","à©®":"8","੯":"9","੦":"0"};a.defineLocale("pa-in",{
-// There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.
-months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"à¨à¨¤à¨µà¨¾à¨°_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬà©à¨§à¨µà¨¾à¨°_à [...]
-// Punjabi notation for meridiems are quite fuzzy in practice. While there exists
-// a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
-meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦà©à¨ªà¨¹à¨¿à¨°|ਸ਼ਾਮ/,meridiemHour:function(a,b){return 12===a&&(a=0),"ਰਾਤ"===b?a<4?a:a+12:"ਸਵੇਰ"===b?a:"ਦà©à¨ªà¨¹à¨¿à¨°"===b?a>=10?a:a+12:"ਸ਼ਾਮ"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"ਰਾਤ":a<10?"ਸਵੇਰ":a<17?"ਦà©à¨ªà¨¹à¨¿à¨°":a<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,// Sunday is the first day of the week.
-doy:6}});
-//! moment.js locale configuration
-//! locale : Polish [pl]
-//! author : Rafal Hirsz : https://github.com/evoL
-var wh="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),xh="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");a.defineLocale("pl",{months:function(a,b){return""===b?"("+xh[a.month()]+"|"+wh[a.month()]+")":/D MMMM/.test(b)?xh[a.month()]:wh[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wto [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Portuguese (Brazil) [pt-br]
-//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
-a.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM [...]
-return 0===this.day()||6===this.day()?"[Último] dddd [à s] LT":"[Última] dddd [à s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"}),
-//! moment.js locale configuration
-//! locale : Portuguese [pt]
-//! author : Jefferson : https://github.com/jalex79
-a.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YY [...]
-return 0===this.day()||6===this.day()?"[Último] dddd [à s] LT":"[Última] dddd [à s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,// Monday is the first day of the week.
-doy:4}}),a.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:" [...]
-doy:7}});var yh=[/^Ñнв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йÑ]/i,/^июн/i,/^июл/i,/^авг/i,/^Ñен/i,/^окт/i,/^ноÑ/i,/^дек/i];
-// http://new.gramota.ru/spravka/rules/139-prop : § 103
-// Ð¡Ð¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¼ÐµÑÑцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
-// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
-a.defineLocale("ru",{months:{format:"ÑнварÑ_февралÑ_марта_апрелÑ_маÑ_июнÑ_июлÑ_авгуÑта_ÑентÑбрÑ_октÑбрÑ_ноÑбрÑ_декабрÑ".split("_"),standalone:"Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь".split("_")},monthsShort:{
-// по CLDR именно "июл." и "июн.", но какой ÑмыÑл менÑть букву на точку ?
-format:"Ñнв._февр._мар._апр._маÑ_июнÑ_июлÑ_авг._Ñент._окт._ноÑб._дек.".split("_"),standalone:"Ñнв._февр._март_апр._май_июнь_июль_авг._Ñент._окт._ноÑб._дек.".split("_")},weekdays:{standalone:"воÑкреÑенье_понедельник_вторник_Ñреда_четверг_пÑтница_Ñуббота".split("_"),format:"воÑкреÑенье_понедельник_вторник_Ñреду_четвР[...]
-// полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸, по три буквы, Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ…, по 4 буквы, ÑÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ и без точки
-monthsRegex:/^(Ñнвар[ÑŒÑ]|Ñнв\.?|феврал[ÑŒÑ]|февр?\.?|марта?|мар\.?|апрел[ÑŒÑ]|апр\.?|ма[йÑ]|июн[ÑŒÑ]|июн\.?|июл[ÑŒÑ]|июл\.?|авгуÑта?|авг\.?|ÑентÑбр[ÑŒÑ]|Ñент?\.?|октÑбр[ÑŒÑ]|окт\.?|ноÑбр[ÑŒÑ]|ноÑб?\.?|декабр[ÑŒÑ]|дек\.?)/i,
-// ÐºÐ¾Ð¿Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ³Ð¾
-monthsShortRegex:/^(Ñнвар[ÑŒÑ]|Ñнв\.?|феврал[ÑŒÑ]|февр?\.?|марта?|мар\.?|апрел[ÑŒÑ]|апр\.?|ма[йÑ]|июн[ÑŒÑ]|июн\.?|июл[ÑŒÑ]|июл\.?|авгуÑта?|авг\.?|ÑентÑбр[ÑŒÑ]|Ñент?\.?|октÑбр[ÑŒÑ]|окт\.?|ноÑбр[ÑŒÑ]|ноÑб?\.?|декабр[ÑŒÑ]|дек\.?)/i,
-// полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸
-monthsStrictRegex:/^(Ñнвар[ÑÑŒ]|феврал[ÑÑŒ]|марта?|апрел[ÑÑŒ]|ма[Ñй]|июн[ÑÑŒ]|июл[ÑÑŒ]|авгуÑта?|ÑентÑбр[ÑÑŒ]|октÑбр[ÑÑŒ]|ноÑбр[ÑÑŒ]|декабр[ÑÑŒ])/i,
-// Выражение, которое ÑоотвеÑтвует только Ñокращённым формам
-monthsShortStrictRegex:/^(Ñнв\.|февр?\.|мар[Ñ‚.]|апр\.|ма[Ñй]|июн[ÑŒÑ.]|июл[ÑŒÑ.]|авг\.|Ñент?\.|окт\.|ноÑб?\.|дек\.)/i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Ð²] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [Ð [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Northern Sami [se]
-//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell
-a.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukÄamánnu_cuoÅ‹ománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_ÄakÄamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_ÄakÄ_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maÅ‹_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split( [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Sinhalese [si]
-//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
-/*jshint -W100*/
-a.defineLocale("si",{months:"ජනවà·à¶»à·’_පෙබරවà·à¶»à·’_මà·à¶»à·Šà¶à·”_à¶…à¶´à·Šâ€à¶»à·šà¶½à·Š_මà·à¶ºà·’_ජූනි_ජූලි_à¶…à¶œà·à·ƒà·Šà¶à·”_à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š_ඔක්à¶à·à¶¶à¶»à·Š_නොවà·à¶¸à·Šà¶¶à¶»à·Š_දෙසà·à¶¸à·Šà¶¶à¶»à·Š".split("_"),monthsShort:"ජන_පෙබ_මà·à¶»à·Š_à¶…à¶´à·Š_මà·à¶ºà·’_ජූනි_ජූලි_à¶…à¶œà·_à·ƒà·à¶´à·Š_ඔක්_නොවà·_දෙසà·".split("_"),weekdays:"ඉරිද෠[...]
-//! moment.js locale configuration
-//! locale : Slovak [sk]
-//! author : Martin Minka : https://github.com/k2s
-//! based on work of petrbela : https://github.com/petrbela
-var zh="január_február_marec_aprÃl_máj_jún_júl_august_september_október_november_december".split("_"),Ah="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");a.defineLocale("sk",{months:zh,monthsShort:Ah,weekdays:"nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_Å¡t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_Å¡t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",L [...]
-doy:4}}),a.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_Äetrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._Äet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_Äe_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : Albanian [sq]
-//! author : Flakërim Ismani : https://github.com/flakerimi
-//! author : Menelion Elensúle : https://github.com/Oire
-//! author : Oerd Cukalla : https://github.com/oerd
-a.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(a){return"M"===a.charAt(0)},meridiem:function(a,b,c){r [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Serbian Cyrillic [sr-cyrl]
-//! author : Milan JanaÄković<mi...@gmail.com> : https://github.com/milan-j
-var Bh={words:{//Different grammatical cases
-m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један Ñат","једног Ñата"],hh:["Ñат","Ñата","Ñати"],dd:["дан","дана","дана"],MM:["меÑец","меÑеца","меÑеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,b,c){var d=Bh.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Bh.correctGr [...]
-doy:7}});
-//! moment.js locale configuration
-//! locale : Serbian [sr]
-//! author : Milan JanaÄković<mi...@gmail.com> : https://github.com/milan-j
-var Ch={words:{//Different grammatical cases
-m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,b,c){var d=Ch.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Ch.correctGrammaticalCase(a,d)}};a.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_ [...]
-doy:7}}),
-//! moment.js locale configuration
-//! locale : siSwati [ss]
-//! author : Nicolai Davies<ma...@nicolai.io> : https://github.com/nicolaidavies
-a.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Swedish [sv]
-//! author : Jens Alm : https://github.com/ulmus
-a.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:" [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Swahili [sw]
-//! author : Fahad Kassim : https://github.com/fadsel
-a.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM [...]
-doy:7}});
-//! moment.js locale configuration
-//! locale : Tamil [ta]
-//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
-var Dh={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"à¯",8:"௮",9:"௯",0:"௦"},Eh={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","à¯":"7","௮":"8","௯":"9","௦":"0"};a.defineLocale("ta",{months:"ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯".split("_"),monthsShort:"ஜà [...]
-// refer http://ta.wikipedia.org/s/1er1
-meridiemParse:/யாமமà¯|வைகறை|காலை|நணà¯à®ªà®•லà¯|எறà¯à®ªà®¾à®Ÿà¯|மாலை/,meridiem:function(a,b,c){return a<2?" யாமமà¯":a<6?" வைகறை":a<10?" காலை":a<14?" நணà¯à®ªà®•லà¯":a<18?" எறà¯à®ªà®¾à®Ÿà¯":a<22?" மாலை":" யாமமà¯"},meridiemHour:function(a,b){return 12===a&&(a=0),"யாமமà¯"===b?a<2?a:a+12:"வைகறை"===b||"காலை"===b?a:"நணà¯à®ªà®•லà¯"===b&&a>=10?a:a+12},week:{ [...]
-doy:6}}),
-//! moment.js locale configuration
-//! locale : Telugu [te]
-//! author : Krishna Chaitanya Thota : https://github.com/kcthota
-a.defineLocale("te",{months:"జనవరి_à°«à°¿à°¬à±à°°à°µà°°à°¿_మారà±à°šà°¿_à°à°ªà±à°°à°¿à°²à±_మే_జూనà±_జూలై_ఆగసà±à°Ÿà±_సెపà±à°Ÿà±†à°‚బరà±_à°…à°•à±à°Ÿà±‹à°¬à°°à±_నవంబరà±_డిసెంబరà±".split("_"),monthsShort:"జన._à°«à°¿à°¬à±à°°._మారà±à°šà°¿_à°à°ªà±à°°à°¿._మే_జూనà±_జూలై_ఆగ._సెపà±._à°…à°•à±à°Ÿà±‹._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"à [...]
-doy:6}}),
-//! moment.js locale configuration
-//! locale : Tetun Dili (East Timor) [tet]
-//! author : Joshua Brooks : https://github.com/joshbrooks
-//! author : Onorio De J. Afonso : https://github.com/marobo
-a.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sext_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Sex_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D [...]
-doy:4}}),
-//! moment.js locale configuration
-//! locale : Thai [th]
-//! author : Kridsada Thanabulpong : https://github.com/sirn
-a.defineLocale("th",{months:"มà¸à¸£à¸²à¸„ม_à¸à¸¸à¸¡à¸ าพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_à¸à¸£à¸à¸Žà¸²à¸„ม_สิงหาคม_à¸à¸±à¸™à¸¢à¸²à¸¢à¸™_ตุลาคม_พฤศจิà¸à¸²à¸¢à¸™_ธันวาคม".split("_"),monthsShort:"ม.ค._à¸.พ._มี.ค._เม.ย._พ.ค._มิ.ย._à¸.ค._ส.ค._à¸.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"à¸à¸²à¸— [...]
-weekdaysMin:"à¸à¸²._จ._à¸._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/à¸à¹ˆà¸à¸™à¹€à¸—ี่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return a<12?"à¸à¹ˆà¸à¸™à¹€à¸—ี่ยง":"หลังเที่à [...]
-//! moment.js locale configuration
-//! locale : Tagalog (Philippines) [tl-ph]
-//! author : Dan Hagman : https://github.com/hagmandan
-a.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"ddd [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Klingon [tlh]
-//! author : Dominika Kruk : https://github.com/amaranthrose
-var Fh="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");a.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".s [...]
-doy:4}});
-//! moment.js locale configuration
-//! locale : Turkish [tr]
-//! authors : Erhan Gundogan : https://github.com/erhangundogan,
-//! Burak YiÄŸit Kaya: https://github.com/BYK
-var Gh={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};
-//! moment.js locale configuration
-//! locale : Talossan [tzl]
-//! author : Robin van der Vliet : https://github.com/robin0van0der0v
-//! author : Iustì Canun
-// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
-// This is currently too difficult (maybe even impossible) to add.
-//! moment.js locale configuration
-//! locale : Central Atlas Tamazight Latin [tzm-latn]
-//! author : Abdel Said : https://github.com/abdelsaid
-//! moment.js locale configuration
-//! locale : Central Atlas Tamazight [tzm]
-//! author : Abdel Said : https://github.com/abdelsaid
-//! moment.js locale configuration
-//! locale : Uzbek [uz]
-//! author : Sardor Muminov : https://github.com/muminoff
-//! moment.js locale configuration
-//! locale : Vietnamese [vi]
-//! author : Bang Nguyen : https://github.com/bangnk
-//! moment.js locale configuration
-//! locale : Pseudo [x-pseudo]
-//! author : Andrew Hood : https://github.com/andrewhood125
-//! moment.js locale configuration
-//! locale : Yoruba Nigeria [yo]
-//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
-//! moment.js locale configuration
-//! locale : Chinese (China) [zh-cn]
-//! author : suupic : https://github.com/suupic
-//! author : Zeno Zeng : https://github.com/zenozeng
-//! moment.js locale configuration
-//! locale : Chinese (Hong Kong) [zh-hk]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-//! author : Konstantin : https://github.com/skfd
-//! moment.js locale configuration
-//! locale : Chinese (Taiwan) [zh-tw]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-return a.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"d [...]
-return a+"'ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Gh[b]||Gh[c]||Gh[d])},week:{dow:1,// Monday is the first day of the week.
-doy:7}}),a.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LL [...]
-doy:4}}),a.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_ [...]
-doy:12}}),a.defineLocale("tzm",{months:"ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”".split("_"),monthsShort:"ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ [...]
-doy:12}}),a.defineLocale("uk",{months:{format:"ÑічнÑ_лютого_березнÑ_квітнÑ_травнÑ_червнÑ_липнÑ_ÑерпнÑ_вереÑнÑ_жовтнÑ_лиÑтопада_груднÑ".split("_"),standalone:"Ñічень_лютий_березень_квітень_травень_червень_липень_Ñерпень_вереÑень_жовтень_лиÑтопад_грудень".split("_")},monthsShort:"Ñіч_лют_бер_квіт_трав_черв_лип_ [...]
-// M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
-meridiemParse:/ночі|ранку|днÑ|вечора/,isPM:function(a){return/^(днÑ|вечора)$/.test(a)},meridiem:function(a,b,c){return a<4?"ночі":a<12?"ранку":a<17?"днÑ":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,// Monday is the first day of the week.
-doy:7}}),a.defineLocale("uz",{months:"Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр".split("_"),monthsShort:"Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekda [...]
-doy:7}}),a.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chá»§ nháºt_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemPars [...]
-doy:4}}),a.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Ãp~rÃl_~Máý_~Júñé~_Júl~ý_Ãú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frà [...]
-doy:4}}),a.defineLocale("yo",{months:"SẹÌrẹÌ_EÌ€reÌ€leÌ€_Ẹrẹ̀naÌ€_IÌ€gbeÌ_EÌ€bibi_OÌ€kuÌ€du_Agẹmo_OÌ€guÌn_Owewe_Ọ̀waÌ€raÌ€_BeÌluÌ_Ọ̀pẹ̀̀".split("_"),monthsShort:"SẹÌr_EÌ€rl_Ẹrn_IÌ€gb_EÌ€bi_OÌ€kuÌ€_Agẹ_OÌ€guÌ_Owe_Ọ̀waÌ€_BeÌl_Ọ̀pẹ̀̀".split("_"),weekdays:"AÌ€iÌ€kuÌ_AjeÌ_IÌ€sẹÌgun_Ọjá»ÌruÌ_Ọjá»Ìbá»_ẸtiÌ€_AÌ€baÌmẹÌta".split("_"),weekdaysShort:"AÌ€iÌ€k_AjeÌ_IÌ€sẹÌ_Ọjr_Ọjb_ẸtiÌ€_AÌ€baÌ".split("_"),weekdaysMin:"AÌ€iÌ€_ [...]
-doy:4}}),a.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ahç [...]
-// GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•》与ISO 8601:1988ç‰æ•ˆ
-dow:1,// Monday is the first day of the week.
-doy:4}}),a.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_å…æœˆ_七月_八月_乿œˆ_åæœˆ_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),longDateFormat:{LT:"Ah點mm分",LTS:"Ahé [...]
\ No newline at end of file
diff --git a/themes/common-theme/webapp/common-theme/js/util/setUserTimeZone.js b/themes/common-theme/webapp/common-theme/js/util/setUserTimeZone.js
index 0c29340b42..d2ee292d7f 100644
--- a/themes/common-theme/webapp/common-theme/js/util/setUserTimeZone.js
+++ b/themes/common-theme/webapp/common-theme/js/util/setUserTimeZone.js
@@ -19,21 +19,16 @@ under the License.
// Only once by session (ref https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
if (sessionStorage.getItem("SetTimeZoneFromBrowser") === null || sessionStorage.getItem("SetTimeZoneFromBrowser") !== "done") {
- var libraryFiles = ["/common/js/plugins/moment-timezone/moment-with-locales.min.js"];
- importLibrary(libraryFiles, function(){
- importLibrary(["/common/js/plugins/moment-timezone/moment-timezone-with-data.min.js"], function(){
- var timezone = moment.tz.guess();
- $.ajax({
- url: "SetTimeZoneFromBrowser",
- type: "POST",
- async: false,
- data: "localeName=" + timezone,
- success: function(success) {
- if (success._ERROR_MESSAGE_ === undefined && success._ERROR_MESSAGE_LIST_ === undefined) {
- sessionStorage.setItem("SetTimeZoneFromBrowser", "done");
- }
- }
- });
- });
+ const timezone = moment.tz.guess();
+ $.ajax({
+ url: "SetTimeZoneFromBrowser",
+ type: "POST",
+ async: false,
+ data: "localeName=" + timezone,
+ success: function (success) {
+ if (success._ERROR_MESSAGE_ === undefined && success._ERROR_MESSAGE_LIST_ === undefined) {
+ sessionStorage.setItem("SetTimeZoneFromBrowser", "done");
+ }
+ }
});
}
diff --git a/themes/common-theme/widget/Theme.xml b/themes/common-theme/widget/Theme.xml
index ec51955a92..ab41e20e77 100644
--- a/themes/common-theme/widget/Theme.xml
+++ b/themes/common-theme/widget/Theme.xml
@@ -63,6 +63,9 @@ under the License.
<property name="VT_HDR_JAVASCRIPT['add']" value="/common/js/node_modules/jquery-ui-dist/jquery-ui.min.js"/>
<property name="VT_HDR_JAVASCRIPT['add']" value="/common/js/node_modules/jquery-validation/dist/jquery.validate.min.js"/>
<property name="VT_HDR_JAVASCRIPT['add']" value="/common/js/node_modules/dompurify/dist/purify.min.js"/>
+ <property name="VT_HDR_JAVASCRIPT['add']" value="/common/js/node_modules/moment/min/moment-with-locales.js"/>
+ <property name="VT_HDR_JAVASCRIPT['add']" value="/common/js/node_modules/moment-timezone/builds/moment-timezone-with-data.js"/>
+ <property name="VT_HDR_JAVASCRIPT['add']" value="/common/js/node_modules/daterangepicker/daterangepicker.js"/>
<property name="VT_HDR_JAVASCRIPT['add']" value="/common/js/util/OfbizUtil.js"/>
<property name="VT_HDR_JAVASCRIPT['add']" value="/common/js/util/fieldlookup.js"/>
<property name="VT_HDR_JAVASCRIPT['add']" value="/common/js/plugins/date/date.timezone-min.js"/>
@@ -75,6 +78,7 @@ under the License.
<!--Css styles: don't load them since they differ depending on theme -->
<property name="VT_STYLESHEET['add']" value="/common/js/node_modules/jquery-ui-dist/jquery-ui.min.css"/>
<property name="VT_STYLESHEET['add']" value="/common/css/info.css"/>
+ <property name="VT_STYLESHEET['add']" value="/common/js/node_modules/daterangepicker/daterangepicker.css"/>
</theme-properties>
<templates><!-- Freemarker template use by this theme to render widget model-->
diff --git a/themes/flatgrey/webapp/flatgrey/javascript.css b/themes/flatgrey/webapp/flatgrey/javascript.css
index 36d19ecd77..2d9bbf1e43 100644
--- a/themes/flatgrey/webapp/flatgrey/javascript.css
+++ b/themes/flatgrey/webapp/flatgrey/javascript.css
@@ -624,7 +624,7 @@ button.ui-button::-moz-focus-inner {
.ui-dialog {
position: absolute;
top: 50%;
- left:50%;
+ left: 50%;
transform: translate(-50%, -50%);
padding: .2em;
width: 300px;
@@ -1887,15 +1887,43 @@ body .ui-tooltip {
}
/* Calendar Button and Image */
-.view-calendar button {
- background: url(/images/cal.gif) no-repeat !important;
- display: inline-block;
- border: none;
- vertical-align: middle;
- /*wt;begin/end*/
- margin: 2px 2px 2px 2px;
- height: 18px;
- width: 18px;
+.view-calendar {
+ button.ui-datepicker-trigger {
+ background: url(/images/cal.gif) no-repeat !important;
+ display: inline-block;
+ border: none;
+ vertical-align: middle;
+ margin: 2px 2px 2px 2px;
+ height: 18px;
+ width: 18px;
+ }
+
+ &.drp {
+ &.single.no-time input[type="text"] {
+ width: 80px;
+ }
+ &.single.time.no-seconds input[type="text"] {
+ width: 120px;
+ }
+ &.single.time.seconds input[type="text"] {
+ width: 140px;
+ }
+ &.range.no-time input[type="text"] {
+ width: 170px;
+ }
+ &.range.time.no-seconds input[type="text"] {
+ width: 240px;
+ }
+ &.range.time.seconds input[type="text"] {
+ width: 280px;
+ }
+
+ button.clear-calendar {
+ background: none;
+ border: none;
+ cursor: pointer;
+ }
+ }
}
/* css for timepicker */
diff --git a/themes/helveticus/webapp/helveticus/javascript.css b/themes/helveticus/webapp/helveticus/javascript.css
index e8362c2271..c0f34aebfa 100644
--- a/themes/helveticus/webapp/helveticus/javascript.css
+++ b/themes/helveticus/webapp/helveticus/javascript.css
@@ -1883,20 +1883,46 @@ body .ui-tooltip {
}
/* Calendar Button and Image */
-.view-calendar button {
- background-repeat: no-repeat;
- background-size: 16px 16px;
- background-position: left center;
- background-color: transparent;
- cursor: pointer;
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="%233699ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>');
- display: inline-block;
- border: none;
- vertical-align: middle;
- /*wt;begin/end*/
- margin: 2px 2px 2px 2px;
- height: 18px;
- width: 18px;
+.view-calendar {
+ button.ui-datepicker-trigger {
+ background-repeat: no-repeat;
+ background-size: 16px 16px;
+ background-position: left center;
+ background-color: transparent;
+ cursor: pointer;
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="%233699ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>');
+ display: inline-block;
+ border: none;
+ vertical-align: middle;
+ margin: 2px 2px 2px 2px;
+ height: 18px;
+ width: 18px;
+ }
+
+ &.drp {
+ &.single.no-time input[type="text"] {
+ width: 80px;
+ }
+ &.single.time.no-seconds input[type="text"] {
+ width: 110px;
+ }
+ &.single.time.seconds input[type="text"] {
+ width: 130px;
+ }
+ &.range.no-time input[type="text"] {
+ width: 160px;
+ }
+ &.range.time.no-seconds input[type="text"] {
+ width: 240px;
+ }
+ &.range.time.seconds input[type="text"] {
+ width: 280px;
+ }
+
+ button.clear-calendar {
+ background-color: transparent;
+ }
+ }
}
/* css for timepicker */
diff --git a/themes/rainbowstone/webapp/rainbowstone/javascript.css b/themes/rainbowstone/webapp/rainbowstone/javascript.css
index 83e01d6b12..2c74b21149 100644
--- a/themes/rainbowstone/webapp/rainbowstone/javascript.css
+++ b/themes/rainbowstone/webapp/rainbowstone/javascript.css
@@ -43,7 +43,6 @@ ajax auto complete
div.autocomplete {
position: absolute;
width: auto !important;
- /* min-width:154px; */
background-color: #f8f8f8;
border: 1px solid #999999;
margin: 0;
@@ -66,7 +65,6 @@ div.autocomplete ul li {
float: none;
margin: 0;
padding: 2px;
- /*height:32px;*/
cursor: pointer;
}
@@ -139,17 +137,6 @@ div.autocomplete ul li {
cursor: default !important;
}
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
- display: block;
- text-indent: -99999px;
- overflow: hidden;
- background-repeat: no-repeat;
-}
-
/* Misc visuals
----------------------------------*/
@@ -160,6 +147,9 @@ div.autocomplete ul li {
left: 0;
width: 100%;
height: 100%;
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
+ opacity: .3;
+ filter: Alpha(Opacity=30);
}
.ui-resizable {
@@ -624,9 +614,8 @@ button.ui-button::-moz-focus-inner {
.ui-dialog {
position: absolute;
top: 50%;
- left:50%;
+ left: 50%;
transform: translate(-50%, -50%);
- padding;
padding: .2em;
width: 300px;
overflow: hidden;
@@ -653,7 +642,6 @@ button.ui-button::-moz-focus-inner {
height: 18px;
}
-/*.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }*/
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus {
padding: 0;
}
@@ -1108,6 +1096,10 @@ body .ui-tooltip {
width: 16px;
height: 16px;
background-image: url(images/ui-icons_469bdd_256x240.png);
+ display: block;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
}
.ui-widget-content .ui-icon {
@@ -1868,13 +1860,6 @@ body .ui-tooltip {
border-bottom-right-radius: 5px;
}
-/* Overlays */
-.ui-widget-overlay {
- background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
- opacity: .3;
- filter: Alpha(Opacity=30);
-}
-
.ui-widget-shadow {
margin: -8px 0 0 -8px;
padding: 8px;
@@ -1888,15 +1873,46 @@ body .ui-tooltip {
}
/* Calendar Button and Image */
-.view-calendar button {
- background: url(/images/cal.gif) no-repeat !important;
- display: inline-block;
- border: none;
- vertical-align: middle;
- /*wt;begin/end*/
- margin: 2px 2px 2px 2px;
- height: 18px;
- width: 18px;
+.view-calendar {
+ button.ui-datepicker-trigger {
+ background-repeat: no-repeat;
+ background-size: 16px 16px;
+ background-position: left center;
+ background-color: transparent;
+ cursor: pointer;
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="%233699ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>');
+ display: inline-block;
+ border: none;
+ vertical-align: middle;
+ margin: 2px 2px 2px 2px;
+ height: 18px;
+ width: 18px;
+ }
+
+ &.drp {
+ &.single.no-time input[type="text"] {
+ width: 80px;
+ }
+ &.single.time.no-seconds input[type="text"] {
+ width: 110px;
+ }
+ &.single.time.seconds input[type="text"] {
+ width: 130px;
+ }
+ &.range.no-time input[type="text"] {
+ width: 160px;
+ }
+ &.range.time.no-seconds input[type="text"] {
+ width: 240px;
+ }
+ &.range.time.seconds input[type="text"] {
+ width: 280px;
+ }
+
+ button.clear-calendar {
+ background-color: transparent;
+ }
+ }
}
/* css for timepicker */
diff --git a/themes/tomahawk/webapp/tomahawk/css/style.css b/themes/tomahawk/webapp/tomahawk/css/style.css
index 0590fa66b7..ea4206fbef 100644
--- a/themes/tomahawk/webapp/tomahawk/css/style.css
+++ b/themes/tomahawk/webapp/tomahawk/css/style.css
@@ -40,7 +40,6 @@ table, caption, tbody, tfoot, thead, tr, th, td {
body {
line-height: 1.5em;
color: black;
- _background-image: url:(. . /images/ header_top_bg . gif);
background-color: black;
font-size: 62.5%;
position: relative;
@@ -360,7 +359,6 @@ A.buttontext, .buttontextdisabled {
line-height: 2.9em;
margin-left: 0.0em;
padding: 0.4em 0.6em 0.4em 0.6em;
- /*white-space: nowrap;*/
}
A.buttontext {
@@ -533,6 +531,7 @@ A IMG.imageborder {
.content-messages p {
margin: 0.5em 0 0.5em 0;
+ display: none;
}
.mediumSubmit, .largeSubmit, .loginButton {
@@ -586,7 +585,6 @@ A IMG.imageborder {
.productsummary .smallimage {
float: left;
- /* position: absolute; top: 5px; left: 5px; */
margin: 0 0.5em 0.5em 0;
}
@@ -602,7 +600,7 @@ A IMG.imageborder {
width: 15em;
}
-.productsummary .productinfo { /* margin-left: 60px; */
+.productsummary .productinfo {
text-align: left;
}
@@ -935,26 +933,33 @@ in contained elements. */
/* ===== Used to align elements ===== */
/* ================================== */
.align-bottom {
- vertical-align: bottom;;
+ vertical-align: bottom;
}
+
.align-center {
text-align: center;
}
+
.align-justify {
text-align: justify;
}
+
.align-left {
text-align: left;
}
+
.align-middle {
- vertical-align: bottom;;
+ vertical-align: bottom;
}
+
.align-right {
text-align: right;
}
+
.align-text {
text-align: right;
}
+
.align-top {
vertical-align: top;
}
@@ -1412,7 +1417,6 @@ ajax auto complete
div.autocomplete {
position: absolute;
width: auto !important;
- /* min-width:154px; */
background-color: #f8f8f8;
border: 1px solid #999999;
margin: 0;
@@ -1435,7 +1439,6 @@ div.autocomplete ul li {
float: none;
margin: 0;
padding: 2px;
- /*height:32px;*/
cursor: pointer;
}
@@ -1463,12 +1466,6 @@ div.autocomplete ul li {
padding-left: 1em;
}
-.basic-nav ul { /* placeholder */
-}
-
-.basic-nav ul li {
-}
-
.basic-nav ul a {
padding-left: 0.5em;
padding-right: 0.5em;
@@ -1636,7 +1633,7 @@ div.autocomplete ul li {
.button-style-2 a.disabled:hover {
background-image: url(../images/tab_normal1.png);
- background-color: none;
+ background-color: transparent;
}
/* ===== In line bar ===== */
@@ -2194,7 +2191,6 @@ render borders around empty <td> elements */
.field-lookup a {
background: url(../images/fieldlookup.png) no-repeat 0 0;
display: inline-block;
- /* margin: 3px 10px 0px 4px; */
vertical-align: top;
margin-top: 3px;
width: 35px;
@@ -2516,25 +2512,21 @@ Lookups
}
img.cssImgXLarge {
- /*border: 1px black solid;*/
max-width: 200px;
max-height: 150px;
}
img.cssImgLarge {
- /*border: 1px black solid;*/
max-width: 100px;
max-height: 75px;
}
img.cssImgStandard {
- /*border: 1px black solid;*/
max-width: 70px;
max-height: 52px;
}
img.cssImgSmall {
- /*border: 1px black solid;*/
max-width: 50px;
max-height: 37px;
}
@@ -2603,17 +2595,6 @@ img.cssImgSmall {
cursor: default !important;
}
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon {
- display: block;
- text-indent: -99999px;
- overflow: hidden;
- background-repeat: no-repeat;
-}
-
/* Misc visuals
----------------------------------*/
@@ -2624,6 +2605,9 @@ img.cssImgSmall {
left: 0;
width: 100%;
height: 100%;
+ background: #aaaaaa url(../images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
+ opacity: .3;
+ filter: Alpha(Opacity=30);
}
.ui-accordion .ui-accordion-header {
@@ -2661,14 +2645,10 @@ img.cssImgSmall {
zoom: 1;
}
-.ui-autocomplete {
- position: absolute;
- cursor: default;
-}
-
/* workarounds */
* html .ui-autocomplete {
width: 1px;
+ height: 250px;
}
/* without this, the menu expands to 100% in IE6 */
@@ -3004,7 +2984,7 @@ button.ui-button::-moz-focus-inner {
.ui-dialog {
position: absolute;
top: 50%;
- left:50%;
+ left: 50%;
transform: translate(-50%, -50%);
padding: .2em;
width: 300px;
@@ -3037,7 +3017,6 @@ button.ui-button::-moz-focus-inner {
height: 20px;
}
-/*.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }*/
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus {
padding: 0;
}
@@ -3581,6 +3560,10 @@ body .ui-tooltip {
width: 16px;
height: 16px;
background-image: url(../images/ui-icons_222222_256x240.png);
+ display: block;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
}
.ui-widget-content .ui-icon {
@@ -4341,13 +4324,6 @@ body .ui-tooltip {
border-bottom-right-radius: 4px;
}
-/* Overlays */
-.ui-widget-overlay {
- background: #aaaaaa url(../images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
- opacity: .3;
- filter: Alpha(Opacity=30);
-}
-
.ui-widget-shadow {
margin: -8px 0 0 -8px;
padding: 8px;
@@ -4361,14 +4337,43 @@ body .ui-tooltip {
}
/* Calendar Button and Image */
-.view-calendar button {
- background: url(../images/cal.png) no-repeat !important;
- display: inline-block;
- border: none !important;
- vertical-align: top;
- margin-top: 3px;
- width: 22px;
- height: 22px;
+.view-calendar {
+ button.ui-datepicker-trigger {
+ background: url(../images/cal.png) no-repeat !important;
+ display: inline-block;
+ border: none !important;
+ vertical-align: top;
+ margin-top: 3px;
+ width: 22px;
+ height: 22px;
+ }
+
+ &.drp {
+ &.single.no-time input[type="text"] {
+ width: 60px;
+ }
+ &.single.time.no-seconds input[type="text"] {
+ width: 90px;
+ }
+ &.single.time.seconds input[type="text"] {
+ width: 110px;
+ }
+ &.range.no-time input[type="text"] {
+ width: 140px;
+ }
+ &.range.time.no-seconds input[type="text"] {
+ width: 200px;
+ }
+ &.range.time.seconds input[type="text"] {
+ width: 230px;
+ }
+
+ button.clear-calendar {
+ background: none;
+ border: none;
+ cursor: pointer;
+ }
+ }
}
/* css for timepicker */
@@ -4482,10 +4487,6 @@ body .ui-tooltip {
border: 1px solid #f0f0f0;
}
-.content-messages p {
- display: none;
-}
-
/* From http://jqueryui.com/demos/autocomplete/maxheight.html */
/* When displaying a long list of options, you can simply set the max-height for the autocomplete menu to prevent the menu from growing too large */
.ui-autocomplete {
@@ -4495,13 +4496,8 @@ body .ui-tooltip {
overflow-x: hidden;
/* add padding to account for vertical scrollbar */
padding-right: 20px;
-}
-
-/* IE 6 doesn't support max-height
- * we use height instead, but this forces the menu to always be this tall
- */
-* html .ui-autocomplete {
- height: 250px;
+ position: absolute;
+ cursor: default;
}
/* The custom CSS for adjust the JsTree */
@@ -4529,7 +4525,7 @@ html > /**/ body .jstree-default a {
/*The Custom css for SELECT 2*/
-.select2-container--default .select2-selection--multiple{
+.select2-container--default .select2-selection--multiple {
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
border-radius: 0px;
@@ -4538,8 +4534,9 @@ html > /**/ body .jstree-default a {
}
.button-bar > a.buttontext {
- text-transform:none!important;
+ text-transform: none !important;
}
+
/* The custom CSS to show mouse pointer on links using featherlight plugin */
a[data-featherlight] {
cursor: pointer;