@beinformed/ui 1.59.5 → 1.59.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/esm/models/attributes/DatetimeAttributeModel.js +28 -15
- package/esm/models/attributes/DatetimeAttributeModel.js.map +1 -1
- package/esm/redux/_modularui/ModularUIActions.js +1 -8
- package/esm/redux/_modularui/ModularUIActions.js.map +1 -1
- package/lib/models/attributes/DatetimeAttributeModel.js +28 -15
- package/lib/models/attributes/DatetimeAttributeModel.js.flow +33 -16
- package/lib/models/attributes/DatetimeAttributeModel.js.map +1 -1
- package/lib/models/attributes/__tests__/DatetimeAttributeModel_offset.spec.js.flow +30 -8
- package/lib/redux/_modularui/ModularUIActions.js +1 -8
- package/lib/redux/_modularui/ModularUIActions.js.flow +1 -12
- package/lib/redux/_modularui/ModularUIActions.js.map +1 -1
- package/package.json +1 -1
- package/src/models/attributes/DatetimeAttributeModel.js +33 -16
- package/src/models/attributes/__tests__/DatetimeAttributeModel_offset.spec.js +30 -8
- package/src/redux/_modularui/ModularUIActions.js +1 -12
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [1.59.7](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.59.6...v1.59.7) (2024-12-12)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **load-model:** allow duplicate request, fixes jmeter test ([8d1a630](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/8d1a630e20c1a0db392770e1ed0af54802bf11cd))
|
|
11
|
+
|
|
12
|
+
## [1.59.6](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.59.5...v1.59.6) (2024-12-11)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **datetime:** improve date input format for timestamps ([d250b03](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/d250b03cffefd59ba9a45c0708e1f44f7c343031))
|
|
18
|
+
|
|
5
19
|
## [1.59.5](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.59.4...v1.59.5) (2024-12-11)
|
|
6
20
|
|
|
7
21
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
|
2
2
|
import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
|
|
3
3
|
import _trimInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/trim";
|
|
4
|
+
import _Set from "@babel/runtime-corejs3/core-js-stable/set";
|
|
4
5
|
import { has } from "../../utils/helpers/objects";
|
|
5
6
|
import { DateUtil, DateTimeUtil, TimeUtil, TimestampUtil } from "../../utils/datetime/DateTimeUtil";
|
|
6
7
|
import StringAttributeModel from "./StringAttributeModel";
|
|
@@ -208,28 +209,40 @@ class DatetimeAttributeModel extends StringAttributeModel {
|
|
|
208
209
|
|
|
209
210
|
/**
|
|
210
211
|
*/
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
if (this._dateInputFormat) {
|
|
216
|
-
return this._dateInputFormat;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
// remove time and offset tokens
|
|
220
|
-
const charsToRemove = "HhaKmsSzXxO:";
|
|
212
|
+
extractDateInputFormat() {
|
|
213
|
+
const dateEraChars = new _Set("yMLdQDEewGu");
|
|
214
|
+
const timeOffsetChars = new _Set("HhaKmsSZzXxO");
|
|
215
|
+
const format = this.format;
|
|
221
216
|
let inputFormat = "";
|
|
222
217
|
let isInQuotes = false;
|
|
223
|
-
|
|
224
|
-
|
|
218
|
+
let keep = false;
|
|
219
|
+
for (let i = 0; i < format.length; i++) {
|
|
220
|
+
const prevChar = i > 0 ? format[i - 1] : "";
|
|
221
|
+
const nextChar = i < format.length ? format[i + 1] : "";
|
|
222
|
+
const char = format[i];
|
|
225
223
|
if (char === "'") {
|
|
226
|
-
isInQuotes = !isInQuotes;
|
|
224
|
+
isInQuotes = prevChar === "'" || nextChar === "'" || !isInQuotes;
|
|
225
|
+
} else if (!isInQuotes && dateEraChars.has(char)) {
|
|
226
|
+
keep = true;
|
|
227
|
+
} else if (!isInQuotes && timeOffsetChars.has(char)) {
|
|
228
|
+
keep = false;
|
|
227
229
|
}
|
|
228
|
-
if (
|
|
230
|
+
if (keep) {
|
|
229
231
|
inputFormat += char;
|
|
230
232
|
}
|
|
231
233
|
}
|
|
232
|
-
|
|
234
|
+
return _trimInstanceProperty(inputFormat).call(inputFormat);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
*/
|
|
239
|
+
get dateInputFormat() {
|
|
240
|
+
if (!this.hasDate) {
|
|
241
|
+
return "";
|
|
242
|
+
}
|
|
243
|
+
if (!this._dateInputFormat) {
|
|
244
|
+
this._dateInputFormat = this.extractDateInputFormat();
|
|
245
|
+
}
|
|
233
246
|
return this._dateInputFormat;
|
|
234
247
|
}
|
|
235
248
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatetimeAttributeModel.js","names":["has","DateUtil","DateTimeUtil","TimeUtil","TimestampUtil","StringAttributeModel","ConstraintCollection","DateTimeDateFormatConstraint","DateTimeTimeFormatConstraint","DatetimeFormatConstraint","DateBoundaryConstraint","isIncludeTimeOffsetInDateTimes","ATTRIBUTE_WIDTH","DATETIME_OFFSET_FORMAT","ISO_DATE_FORMAT","DatetimeAttributeModel","constructor","attribute","attributeContributions","modelOptions","_defineProperty","updateInitValue","isApplicableModel","contributions","_context","_includesInstanceProperty","call","type","formatUtil","getInitValue","value","data","length","toFormat","getIsoFormat","toISO","hasTime","getTimeValue","_context2","_context3","_context4","_context5","timeValue","timeInputFormat","toLowerCase","setHour","setMinute","setSecond","setMilliseconds","oldOffset","newOffset","replace","_initvalue","_inputvalue","getInitialInputValue","_value","initValue","inputFormat","getContribution","getInputValue","toString","inputvalue","validate","format","convertFormat","hasDate","formatLabel","dateInputFormat","inputFormatWithoutOffset","_context6","_trimInstanceProperty","_dateInputFormat","charsToRemove","isInQuotes","i","char","dateReadonlyFormat","_context7","placeholder","_placeholder","split","_timeInputFormat","timeFormatParts","push","timeFormat","join","timeReadonlyFormat","dateInputValue","timeInputValue","formatValue","hasFormat","readonlyvalue","isAmbiguous","offset","getOffset","mindate","maxdate","addServerError","error","id","message","properties","layouthint","_errorCollection","getFormatConstraint","addConstraints","constraints","add","readonlyWidth","SMALL","MEDIUM","updateByAttribute","otherAttribute","reset","otherValue","inputValue","update","console"],"sources":["../../../src/models/attributes/DatetimeAttributeModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport {\n DateUtil,\n DateTimeUtil,\n TimeUtil,\n TimestampUtil,\n} from \"../../utils/datetime/DateTimeUtil\";\n\nimport StringAttributeModel from \"./StringAttributeModel\";\n\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport DateTimeDateFormatConstraint from \"./input-constraints/DateTimeDateFormatConstraint\";\nimport DateTimeTimeFormatConstraint from \"./input-constraints/DateTimeTimeFormatConstraint\";\nimport DatetimeFormatConstraint from \"./input-constraints/DatetimeFormatConstraint\";\nimport DateBoundaryConstraint from \"./input-constraints/DateBoundaryConstraint\";\n\nimport {\n isIncludeTimeOffsetInDateTimes,\n ATTRIBUTE_WIDTH,\n DATETIME_OFFSET_FORMAT,\n ISO_DATE_FORMAT,\n} from \"../../constants\";\n\nimport type {\n FormErrorAnchor,\n IConstraintModel,\n AttributeType,\n ModelOptions,\n} from \"../types\";\nimport type { OffsetInfo } from \"../../utils/datetime/DateTimeUtil\";\n\n/**\n */\nclass DatetimeAttributeModel extends StringAttributeModel {\n _dateInputFormat: ?string;\n _timeInputFormat: ?string;\n\n /**\n */\n constructor(\n attribute: Object,\n attributeContributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(attribute, attributeContributions, modelOptions);\n\n this.updateInitValue();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return [\"date\", \"time\", \"datetime\", \"timestamp\"].includes(\n contributions.type,\n );\n }\n\n /**\n */\n get formatUtil():\n | typeof TimeUtil\n | typeof TimestampUtil\n | typeof DateTimeUtil\n | typeof DateUtil {\n switch (this.type) {\n case \"time\":\n return TimeUtil;\n case \"timestamp\":\n return TimestampUtil;\n case \"datetime\":\n return DateTimeUtil;\n default:\n return DateUtil;\n }\n }\n\n /**\n */\n getInitValue(): string | null {\n let value = this.data.value;\n if (value != null) {\n if (this.type === \"time\" && value.length === 5) {\n value = `${value}:00`;\n }\n\n // handle old datetime values, which contained ms\n if (this.type === \"datetime\" && value.includes(\".\")) {\n value = TimestampUtil.toFormat(value, DateTimeUtil.getIsoFormat());\n } else {\n value = this.formatUtil.toISO(value);\n }\n\n if (this.hasTime) {\n value = this.getTimeValue(value);\n }\n }\n\n return value;\n }\n\n /**\n */\n getTimeValue(value: string): string {\n let timeValue = value;\n if (!this.timeInputFormat.toLowerCase().includes(\"h\")) {\n timeValue = this.formatUtil.setHour(value, 0);\n }\n if (!this.timeInputFormat.includes(\"m\")) {\n timeValue = this.formatUtil.setMinute(value, 0);\n }\n if (!this.timeInputFormat.includes(\"s\")) {\n timeValue = this.formatUtil.setSecond(value, 0);\n }\n if (this.type === \"timestamp\" && !this.timeInputFormat.includes(\"S\")) {\n timeValue = this.formatUtil.setMilliseconds(value, 0);\n }\n\n if (isIncludeTimeOffsetInDateTimes()) {\n // https://github.com/date-fns/date-fns/issues/3579\n const oldOffset = this.formatUtil.toFormat(value, DATETIME_OFFSET_FORMAT);\n const newOffset = this.formatUtil.toFormat(\n timeValue,\n DATETIME_OFFSET_FORMAT,\n );\n timeValue = timeValue.replace(newOffset, oldOffset);\n }\n\n return timeValue;\n }\n\n /**\n * Set time in the correct value based on available elements in the time format\n */\n updateInitValue() {\n const value = this.getInitValue();\n if (value != null) {\n this._initvalue = value;\n this._inputvalue = this.getInitialInputValue(value);\n this._value = value;\n }\n }\n\n /**\n * Get initial user input value\n */\n getInitialInputValue(value?: string): string {\n if (!value) {\n return \"\";\n }\n\n let initValue = value;\n if (this.type === \"time\" && value.length === 5) {\n initValue = `${value}:00`;\n }\n\n return this.formatUtil.toFormat(initValue, this.inputFormat);\n }\n\n /**\n * Set type to date\n */\n get type(): string {\n return this.getContribution(\"type\", \"date\");\n }\n\n /**\n * Returns the value as entered by the user. This can differ from the internal iso value that is stored\n */\n getInputValue(): string {\n return this._inputvalue ? this._inputvalue.toString() : \"\";\n }\n\n /**\n * Get input value\n */\n get inputvalue(): string {\n return this.getInputValue();\n }\n\n /**\n * Sets the input value to the value entered by the user\n */\n set inputvalue(value: string) {\n this.validate(value);\n\n this._inputvalue = value;\n\n this.value =\n value !== null && value !== \"\"\n ? this.formatUtil.toISO(value, this.inputFormat)\n : null;\n }\n\n /**\n * Get date format\n */\n get format(): string {\n const format = this.getContribution(\"format\", \"\");\n return this.formatUtil.convertFormat(format);\n }\n\n /**\n */\n get hasDate(): boolean {\n return (\n this.type === \"date\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get hasTime(): boolean {\n return (\n this.type === \"time\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get formatLabel(): string {\n switch (this.type) {\n case \"date\":\n return this.dateInputFormat.toLowerCase();\n case \"time\":\n return this.timeInputFormat.toLowerCase();\n default:\n return this.format.toLowerCase();\n }\n }\n\n /**\n */\n get inputFormatWithoutOffset(): string {\n if (this.hasDate && this.hasTime) {\n return `${this.dateInputFormat} ${this.timeInputFormat}`.trim();\n }\n\n if (this.hasDate) {\n return this.dateInputFormat;\n }\n\n if (this.hasTime) {\n return this.timeInputFormat;\n }\n\n return \"\";\n }\n\n /**\n */\n get inputFormat(): string {\n if (\n isIncludeTimeOffsetInDateTimes() &&\n this.dateInputFormat !== \"\" &&\n this.timeInputFormat !== \"\"\n ) {\n return `${this.inputFormatWithoutOffset} ${DATETIME_OFFSET_FORMAT}`;\n }\n return this.inputFormatWithoutOffset;\n }\n\n /**\n */\n get dateInputFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n if (this._dateInputFormat) {\n return this._dateInputFormat;\n }\n\n // remove time and offset tokens\n const charsToRemove = \"HhaKmsSzXxO:\";\n\n let inputFormat = \"\";\n let isInQuotes = false;\n for (let i = 0; i < this.format.length; i++) {\n const char = this.format[i];\n if (char === \"'\") {\n isInQuotes = !isInQuotes;\n }\n if (isInQuotes || !charsToRemove.includes(char)) {\n inputFormat += char;\n }\n }\n\n this._dateInputFormat = inputFormat.trim();\n return this._dateInputFormat;\n }\n\n /**\n */\n get dateReadonlyFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n return this.hasTime\n ? this.format.replace(this.timeInputFormat, \"\").trim()\n : this.format;\n }\n\n /**\n * return attribute placeholder or return formatlabel without time input format from contributions\n */\n get placeholder(): string {\n if (this._placeholder !== \"\") {\n return this._placeholder;\n }\n\n const formatLabel = this.getContribution(\"formatlabel\", \"\");\n\n if (this.hasDate && this.hasTime && formatLabel.includes(\" \")) {\n // return first part of formatlabel to keep placeholder matching date input\n return formatLabel.split(\" \")[0];\n }\n\n return formatLabel;\n }\n\n /**\n * Set placeholder text\n */\n set placeholder(placeholder: string) {\n this._placeholder = placeholder;\n }\n\n /**\n */\n get timeInputFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n if (this._timeInputFormat) {\n return this._timeInputFormat;\n }\n\n const format = this.format;\n\n let timeFormatParts = [];\n if (format.includes(\"H\")) {\n timeFormatParts.push(\"HH\");\n } else if (format.includes(\"h\")) {\n timeFormatParts.push(\"hh\");\n }\n if (format.includes(\"m\")) {\n timeFormatParts.push(\"mm\");\n }\n if (format.includes(\"s\")) {\n timeFormatParts.push(\"ss\");\n }\n\n let timeFormat = timeFormatParts.join(\":\");\n if (format.includes(\"S\")) {\n timeFormat = `${timeFormat}.SSS`;\n }\n if (format.includes(\"a\")) {\n timeFormat = `${timeFormat} a`;\n }\n\n this._timeInputFormat = timeFormat;\n return this._timeInputFormat;\n }\n\n /**\n */\n get timeReadonlyFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n return this.timeInputFormat;\n }\n\n /**\n */\n get dateInputValue(): string {\n return typeof this.value === \"string\" && this.dateInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.dateInputFormat)\n : \"\";\n }\n\n /**\n */\n get timeInputValue(): string {\n return typeof this.value === \"string\" && this.timeInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.timeInputFormat)\n : \"\";\n }\n\n /**\n * format value in readonly rendering\n */\n formatValue(value: ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n // when the value is exactly an iso date, render as date\n if (\n (this.type === \"datetime\" || this.type === \"timestamp\") &&\n DateUtil.hasFormat(value, ISO_DATE_FORMAT)\n ) {\n return DateUtil.toFormat(value, this.dateReadonlyFormat);\n }\n\n return this.formatUtil.toFormat(value, this.format);\n }\n\n /**\n * Retrieve readonly value, the date in the configurated format\n */\n get readonlyvalue(): string {\n if (typeof this.value === \"string\") {\n return this.formatValue(this.value.toString());\n }\n\n return \"\";\n }\n\n /**\n */\n get isAmbiguous(): boolean {\n if (typeof this.value === \"string\") {\n return this.formatUtil.isAmbiguous(this.value);\n }\n return false;\n }\n\n /**\n */\n get offset(): OffsetInfo | null {\n if (typeof this.value === \"string\") {\n return this.formatUtil.getOffset(this.value);\n }\n return null;\n }\n\n /**\n * Get minimum date\n */\n get mindate(): string | null {\n return this.getContribution(\"mindate\");\n }\n\n /**\n * Get maximum date\n */\n get maxdate(): string | null {\n return this.getContribution(\"maxdate\");\n }\n\n /**\n * Registers an error that was received from a server response\n */\n addServerError(error: FormErrorAnchor) {\n const { id, message, properties, layouthint } = error;\n if (properties && has(properties, \"format\") && this.formatLabel) {\n properties.format = this.formatLabel;\n }\n\n this._errorCollection.addServerError(id, message, properties, layouthint);\n }\n\n /**\n */\n getFormatConstraint(): IConstraintModel {\n switch (this.type) {\n case \"date\":\n return new DateTimeDateFormatConstraint(\n this.dateInputFormat,\n this.formatLabel,\n );\n case \"time\":\n return new DateTimeTimeFormatConstraint(\n this.timeInputFormat,\n this.formatLabel,\n );\n default:\n return new DatetimeFormatConstraint(\n this.type,\n this.inputFormat,\n this.formatLabel,\n );\n }\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this.getFormatConstraint());\n\n if (this.mindate || this.maxdate) {\n constraints.add(\n new DateBoundaryConstraint(\n this.type,\n this.mindate,\n this.maxdate,\n this.inputFormat,\n ),\n );\n }\n\n return constraints;\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"date\" || this.type === \"time\") {\n return ATTRIBUTE_WIDTH.SMALL;\n }\n\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n this.reset();\n if (otherAttribute instanceof DatetimeAttributeModel) {\n const otherValue = otherAttribute.value;\n if (otherValue != null) {\n const inputValue = this.formatUtil.toFormat(\n otherValue,\n this.inputFormat,\n );\n this.update(inputValue);\n }\n } else {\n console.error(\n `update of datetime attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n}\n\nexport default DatetimeAttributeModel;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DatetimeAttributeModel.js","names":["has","DateUtil","DateTimeUtil","TimeUtil","TimestampUtil","StringAttributeModel","ConstraintCollection","DateTimeDateFormatConstraint","DateTimeTimeFormatConstraint","DatetimeFormatConstraint","DateBoundaryConstraint","isIncludeTimeOffsetInDateTimes","ATTRIBUTE_WIDTH","DATETIME_OFFSET_FORMAT","ISO_DATE_FORMAT","DatetimeAttributeModel","constructor","attribute","attributeContributions","modelOptions","_defineProperty","updateInitValue","isApplicableModel","contributions","_context","_includesInstanceProperty","call","type","formatUtil","getInitValue","value","data","length","toFormat","getIsoFormat","toISO","hasTime","getTimeValue","_context2","_context3","_context4","_context5","timeValue","timeInputFormat","toLowerCase","setHour","setMinute","setSecond","setMilliseconds","oldOffset","newOffset","replace","_initvalue","_inputvalue","getInitialInputValue","_value","initValue","inputFormat","getContribution","getInputValue","toString","inputvalue","validate","format","convertFormat","hasDate","formatLabel","dateInputFormat","inputFormatWithoutOffset","_context6","_trimInstanceProperty","extractDateInputFormat","dateEraChars","_Set","timeOffsetChars","isInQuotes","keep","i","prevChar","nextChar","char","_dateInputFormat","dateReadonlyFormat","_context7","placeholder","_placeholder","split","_timeInputFormat","timeFormatParts","push","timeFormat","join","timeReadonlyFormat","dateInputValue","timeInputValue","formatValue","hasFormat","readonlyvalue","isAmbiguous","offset","getOffset","mindate","maxdate","addServerError","error","id","message","properties","layouthint","_errorCollection","getFormatConstraint","addConstraints","constraints","add","readonlyWidth","SMALL","MEDIUM","updateByAttribute","otherAttribute","reset","otherValue","inputValue","update","console"],"sources":["../../../src/models/attributes/DatetimeAttributeModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport {\n DateUtil,\n DateTimeUtil,\n TimeUtil,\n TimestampUtil,\n} from \"../../utils/datetime/DateTimeUtil\";\n\nimport StringAttributeModel from \"./StringAttributeModel\";\n\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport DateTimeDateFormatConstraint from \"./input-constraints/DateTimeDateFormatConstraint\";\nimport DateTimeTimeFormatConstraint from \"./input-constraints/DateTimeTimeFormatConstraint\";\nimport DatetimeFormatConstraint from \"./input-constraints/DatetimeFormatConstraint\";\nimport DateBoundaryConstraint from \"./input-constraints/DateBoundaryConstraint\";\n\nimport {\n isIncludeTimeOffsetInDateTimes,\n ATTRIBUTE_WIDTH,\n DATETIME_OFFSET_FORMAT,\n ISO_DATE_FORMAT,\n} from \"../../constants\";\n\nimport type {\n FormErrorAnchor,\n IConstraintModel,\n AttributeType,\n ModelOptions,\n} from \"../types\";\nimport type { OffsetInfo } from \"../../utils/datetime/DateTimeUtil\";\n\n/**\n */\nclass DatetimeAttributeModel extends StringAttributeModel {\n _dateInputFormat: ?string;\n _timeInputFormat: ?string;\n\n /**\n */\n constructor(\n attribute: Object,\n attributeContributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(attribute, attributeContributions, modelOptions);\n\n this.updateInitValue();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return [\"date\", \"time\", \"datetime\", \"timestamp\"].includes(\n contributions.type,\n );\n }\n\n /**\n */\n get formatUtil():\n | typeof TimeUtil\n | typeof TimestampUtil\n | typeof DateTimeUtil\n | typeof DateUtil {\n switch (this.type) {\n case \"time\":\n return TimeUtil;\n case \"timestamp\":\n return TimestampUtil;\n case \"datetime\":\n return DateTimeUtil;\n default:\n return DateUtil;\n }\n }\n\n /**\n */\n getInitValue(): string | null {\n let value = this.data.value;\n if (value != null) {\n if (this.type === \"time\" && value.length === 5) {\n value = `${value}:00`;\n }\n\n // handle old datetime values, which contained ms\n if (this.type === \"datetime\" && value.includes(\".\")) {\n value = TimestampUtil.toFormat(value, DateTimeUtil.getIsoFormat());\n } else {\n value = this.formatUtil.toISO(value);\n }\n\n if (this.hasTime) {\n value = this.getTimeValue(value);\n }\n }\n\n return value;\n }\n\n /**\n */\n getTimeValue(value: string): string {\n let timeValue = value;\n if (!this.timeInputFormat.toLowerCase().includes(\"h\")) {\n timeValue = this.formatUtil.setHour(value, 0);\n }\n if (!this.timeInputFormat.includes(\"m\")) {\n timeValue = this.formatUtil.setMinute(value, 0);\n }\n if (!this.timeInputFormat.includes(\"s\")) {\n timeValue = this.formatUtil.setSecond(value, 0);\n }\n if (this.type === \"timestamp\" && !this.timeInputFormat.includes(\"S\")) {\n timeValue = this.formatUtil.setMilliseconds(value, 0);\n }\n\n if (isIncludeTimeOffsetInDateTimes()) {\n // https://github.com/date-fns/date-fns/issues/3579\n const oldOffset = this.formatUtil.toFormat(value, DATETIME_OFFSET_FORMAT);\n const newOffset = this.formatUtil.toFormat(\n timeValue,\n DATETIME_OFFSET_FORMAT,\n );\n timeValue = timeValue.replace(newOffset, oldOffset);\n }\n\n return timeValue;\n }\n\n /**\n * Set time in the correct value based on available elements in the time format\n */\n updateInitValue() {\n const value = this.getInitValue();\n if (value != null) {\n this._initvalue = value;\n this._inputvalue = this.getInitialInputValue(value);\n this._value = value;\n }\n }\n\n /**\n * Get initial user input value\n */\n getInitialInputValue(value?: string): string {\n if (!value) {\n return \"\";\n }\n\n let initValue = value;\n if (this.type === \"time\" && value.length === 5) {\n initValue = `${value}:00`;\n }\n\n return this.formatUtil.toFormat(initValue, this.inputFormat);\n }\n\n /**\n * Set type to date\n */\n get type(): string {\n return this.getContribution(\"type\", \"date\");\n }\n\n /**\n * Returns the value as entered by the user. This can differ from the internal iso value that is stored\n */\n getInputValue(): string {\n return this._inputvalue ? this._inputvalue.toString() : \"\";\n }\n\n /**\n * Get input value\n */\n get inputvalue(): string {\n return this.getInputValue();\n }\n\n /**\n * Sets the input value to the value entered by the user\n */\n set inputvalue(value: string) {\n this.validate(value);\n\n this._inputvalue = value;\n\n this.value =\n value !== null && value !== \"\"\n ? this.formatUtil.toISO(value, this.inputFormat)\n : null;\n }\n\n /**\n * Get date format\n */\n get format(): string {\n const format = this.getContribution(\"format\", \"\");\n return this.formatUtil.convertFormat(format);\n }\n\n /**\n */\n get hasDate(): boolean {\n return (\n this.type === \"date\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get hasTime(): boolean {\n return (\n this.type === \"time\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get formatLabel(): string {\n switch (this.type) {\n case \"date\":\n return this.dateInputFormat.toLowerCase();\n case \"time\":\n return this.timeInputFormat.toLowerCase();\n default:\n return this.format.toLowerCase();\n }\n }\n\n /**\n */\n get inputFormatWithoutOffset(): string {\n if (this.hasDate && this.hasTime) {\n return `${this.dateInputFormat} ${this.timeInputFormat}`.trim();\n }\n\n if (this.hasDate) {\n return this.dateInputFormat;\n }\n\n if (this.hasTime) {\n return this.timeInputFormat;\n }\n\n return \"\";\n }\n\n /**\n */\n get inputFormat(): string {\n if (\n isIncludeTimeOffsetInDateTimes() &&\n this.dateInputFormat !== \"\" &&\n this.timeInputFormat !== \"\"\n ) {\n return `${this.inputFormatWithoutOffset} ${DATETIME_OFFSET_FORMAT}`;\n }\n return this.inputFormatWithoutOffset;\n }\n\n /**\n */\n extractDateInputFormat(): string {\n const dateEraChars = new Set(\"yMLdQDEewGu\");\n const timeOffsetChars = new Set(\"HhaKmsSZzXxO\");\n\n const format = this.format;\n let inputFormat = \"\";\n\n let isInQuotes = false;\n let keep = false;\n\n for (let i = 0; i < format.length; i++) {\n const prevChar = i > 0 ? format[i - 1] : \"\";\n const nextChar = i < format.length ? format[i + 1] : \"\";\n const char = format[i];\n\n if (char === \"'\") {\n isInQuotes = prevChar === \"'\" || nextChar === \"'\" || !isInQuotes;\n } else if (!isInQuotes && dateEraChars.has(char)) {\n keep = true;\n } else if (!isInQuotes && timeOffsetChars.has(char)) {\n keep = false;\n }\n\n if (keep) {\n inputFormat += char;\n }\n }\n\n return inputFormat.trim();\n }\n\n /**\n */\n get dateInputFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n if (!this._dateInputFormat) {\n this._dateInputFormat = this.extractDateInputFormat();\n }\n\n return this._dateInputFormat;\n }\n\n /**\n */\n get dateReadonlyFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n return this.hasTime\n ? this.format.replace(this.timeInputFormat, \"\").trim()\n : this.format;\n }\n\n /**\n * return attribute placeholder or return formatlabel without time input format from contributions\n */\n get placeholder(): string {\n if (this._placeholder !== \"\") {\n return this._placeholder;\n }\n\n const formatLabel = this.getContribution(\"formatlabel\", \"\");\n\n if (this.hasDate && this.hasTime && formatLabel.includes(\" \")) {\n // return first part of formatlabel to keep placeholder matching date input\n return formatLabel.split(\" \")[0];\n }\n\n return formatLabel;\n }\n\n /**\n * Set placeholder text\n */\n set placeholder(placeholder: string) {\n this._placeholder = placeholder;\n }\n\n /**\n */\n get timeInputFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n if (this._timeInputFormat) {\n return this._timeInputFormat;\n }\n\n const format = this.format;\n\n let timeFormatParts = [];\n if (format.includes(\"H\")) {\n timeFormatParts.push(\"HH\");\n } else if (format.includes(\"h\")) {\n timeFormatParts.push(\"hh\");\n }\n if (format.includes(\"m\")) {\n timeFormatParts.push(\"mm\");\n }\n if (format.includes(\"s\")) {\n timeFormatParts.push(\"ss\");\n }\n\n let timeFormat = timeFormatParts.join(\":\");\n if (format.includes(\"S\")) {\n timeFormat = `${timeFormat}.SSS`;\n }\n if (format.includes(\"a\")) {\n timeFormat = `${timeFormat} a`;\n }\n\n this._timeInputFormat = timeFormat;\n return this._timeInputFormat;\n }\n\n /**\n */\n get timeReadonlyFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n return this.timeInputFormat;\n }\n\n /**\n */\n get dateInputValue(): string {\n return typeof this.value === \"string\" && this.dateInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.dateInputFormat)\n : \"\";\n }\n\n /**\n */\n get timeInputValue(): string {\n return typeof this.value === \"string\" && this.timeInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.timeInputFormat)\n : \"\";\n }\n\n /**\n * format value in readonly rendering\n */\n formatValue(value: ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n // when the value is exactly an iso date, render as date\n if (\n (this.type === \"datetime\" || this.type === \"timestamp\") &&\n DateUtil.hasFormat(value, ISO_DATE_FORMAT)\n ) {\n return DateUtil.toFormat(value, this.dateReadonlyFormat);\n }\n\n return this.formatUtil.toFormat(value, this.format);\n }\n\n /**\n * Retrieve readonly value, the date in the configurated format\n */\n get readonlyvalue(): string {\n if (typeof this.value === \"string\") {\n return this.formatValue(this.value.toString());\n }\n\n return \"\";\n }\n\n /**\n */\n get isAmbiguous(): boolean {\n if (typeof this.value === \"string\") {\n return this.formatUtil.isAmbiguous(this.value);\n }\n return false;\n }\n\n /**\n */\n get offset(): OffsetInfo | null {\n if (typeof this.value === \"string\") {\n return this.formatUtil.getOffset(this.value);\n }\n return null;\n }\n\n /**\n * Get minimum date\n */\n get mindate(): string | null {\n return this.getContribution(\"mindate\");\n }\n\n /**\n * Get maximum date\n */\n get maxdate(): string | null {\n return this.getContribution(\"maxdate\");\n }\n\n /**\n * Registers an error that was received from a server response\n */\n addServerError(error: FormErrorAnchor) {\n const { id, message, properties, layouthint } = error;\n if (properties && has(properties, \"format\") && this.formatLabel) {\n properties.format = this.formatLabel;\n }\n\n this._errorCollection.addServerError(id, message, properties, layouthint);\n }\n\n /**\n */\n getFormatConstraint(): IConstraintModel {\n switch (this.type) {\n case \"date\":\n return new DateTimeDateFormatConstraint(\n this.dateInputFormat,\n this.formatLabel,\n );\n case \"time\":\n return new DateTimeTimeFormatConstraint(\n this.timeInputFormat,\n this.formatLabel,\n );\n default:\n return new DatetimeFormatConstraint(\n this.type,\n this.inputFormat,\n this.formatLabel,\n );\n }\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this.getFormatConstraint());\n\n if (this.mindate || this.maxdate) {\n constraints.add(\n new DateBoundaryConstraint(\n this.type,\n this.mindate,\n this.maxdate,\n this.inputFormat,\n ),\n );\n }\n\n return constraints;\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"date\" || this.type === \"time\") {\n return ATTRIBUTE_WIDTH.SMALL;\n }\n\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n this.reset();\n if (otherAttribute instanceof DatetimeAttributeModel) {\n const otherValue = otherAttribute.value;\n if (otherValue != null) {\n const inputValue = this.formatUtil.toFormat(\n otherValue,\n this.inputFormat,\n );\n this.update(inputValue);\n }\n } else {\n console.error(\n `update of datetime attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n}\n\nexport default DatetimeAttributeModel;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -116,14 +116,7 @@ export const loadModel = (key, href, options) => ({
|
|
|
116
116
|
|
|
117
117
|
/**
|
|
118
118
|
*/
|
|
119
|
-
export const loadModularUI = (key, href, options) =>
|
|
120
|
-
const modularuiStore = getState()?.modularui;
|
|
121
|
-
if (modularuiStore && modularuiStore[key]?.status === MODULARUI_STATUS.LOADING) {
|
|
122
|
-
// don't create duplicate requests during loading
|
|
123
|
-
return dispatch({
|
|
124
|
-
type: "NO_ACTION"
|
|
125
|
-
});
|
|
126
|
-
}
|
|
119
|
+
export const loadModularUI = (key, href, options) => dispatch => {
|
|
127
120
|
dispatch(startProgress());
|
|
128
121
|
const loadModelPromise = dispatch(loadModel(key, href, options));
|
|
129
122
|
return _Promise.resolve(loadModelPromise).then(() => dispatch(finishProgress())).catch(error => dispatch(handleError(error)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModularUIActions.js","names":["HTTP_METHODS","MODULARUI_STATUS","Href","ErrorResponse","finishProgress","startProgress","handleError","setModel","key","model","connectKey","type","payload","initModels","models","updateModel","updateForm","removeModelByKey","resetModularUI","updateStatus","status","loadModelSuccessAction","updateHandler","loadModel","href","options","origin","contextPath","method","GET","data","locale","childmodels","targetModel","forceTargetModel","cache","successAction","errorAction","error","errorResponse","isChangePassword","isResourceNotFoundAfterReload","ERROR","loadModularUI","dispatch","
|
|
1
|
+
{"version":3,"file":"ModularUIActions.js","names":["HTTP_METHODS","MODULARUI_STATUS","Href","ErrorResponse","finishProgress","startProgress","handleError","setModel","key","model","connectKey","type","payload","initModels","models","updateModel","updateForm","removeModelByKey","resetModularUI","updateStatus","status","loadModelSuccessAction","updateHandler","loadModel","href","options","origin","contextPath","method","GET","data","locale","childmodels","targetModel","forceTargetModel","cache","successAction","errorAction","error","errorResponse","isChangePassword","isResourceNotFoundAfterReload","ERROR","loadModularUI","dispatch","loadModelPromise","_Promise","resolve","then","catch","reloadModel","selfhref","isReload"],"sources":["../../../src/redux/_modularui/ModularUIActions.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\nimport { finishProgress, startProgress } from \"../actions/ProgressIndicator\";\nimport { handleError } from \"../actions/Error\";\n\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { Dispatch, ThunkAction } from \"../types\";\nimport type {\n ModularUIAction,\n SetModelAction,\n InitModelAction,\n UpdateModelAction,\n UpdateFormAction,\n RemoveModelByKeyAction,\n ResetModularUIAction,\n UpdateStatusAction,\n} from \"./types\";\nimport type {\n RequestModularUIOptions,\n UpdateHandler,\n} from \"../../utils/fetch/types\";\n\n/**\n */\nexport const setModel = (\n key: string,\n model: ModularUIModel,\n): SetModelAction => {\n // set key on model for later reference\n model.connectKey = key;\n return {\n type: \"MODULARUI/SET\",\n payload: {\n key,\n model,\n },\n };\n};\n\n/**\n */\nexport const initModels = (\n models: Array<{ key: string, model: ModularUIModel }>,\n): InitModelAction => ({\n type: \"MODULARUI/INIT\",\n payload: models,\n});\n\n/**\n */\nexport const updateModel = (model: ModularUIModel): UpdateModelAction => ({\n type: \"MODULARUI/UPDATE\",\n payload: model,\n});\n\n/**\n */\nexport const updateForm = (model: ModularUIModel): UpdateFormAction => ({\n type: \"MODULARUI/UPDATE_FORM\",\n payload: model,\n});\n\n/**\n */\nexport const removeModelByKey = (key: string): RemoveModelByKeyAction => ({\n type: \"MODULARUI/REMOVE_KEY\",\n payload: key,\n});\n\n/**\n * Removes all models except the application model from the modular ui reducer\n */\nexport const resetModularUI = (): ResetModularUIAction => ({\n type: \"MODULARUI/RESET\",\n});\n\n/**\n */\nexport const updateStatus = (\n key: string,\n status: $Keys<typeof MODULARUI_STATUS>,\n): UpdateStatusAction => ({\n type: \"MODULARUI/STATUS\",\n payload: { key, status },\n});\n\n/**\n */\nconst loadModelSuccessAction = (\n key: string,\n model: ModularUIModel,\n updateHandler: UpdateHandler | void,\n): UpdateModelAction | SetModelAction => {\n if (updateHandler) {\n return updateModel(updateHandler(model));\n }\n return setModel(key, model);\n};\n\n/**\n * This action is handled by the modularui middleware\n */\nexport const loadModel = (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n): ModularUIAction => ({\n type: \"MODULARUI/FETCH\",\n payload: {\n key,\n origin: options?.origin,\n contextPath: options?.contextPath,\n href:\n href instanceof Href\n ? href\n : new Href(href, \"\", {\n origin: options?.origin,\n contextPath: options?.contextPath,\n }),\n method: options?.method ?? HTTP_METHODS.GET,\n data: options?.data,\n locale: options?.locale ?? \"en\",\n childmodels: options?.childmodels,\n targetModel: options?.targetModel,\n forceTargetModel: options?.forceTargetModel,\n cache: options?.cache,\n /**\n */\n successAction: (model) =>\n loadModelSuccessAction(key, model, options?.updateHandler),\n /**\n */\n errorAction: (error) => {\n const errorResponse = new ErrorResponse(error, key, {\n origin: options?.origin,\n contextPath: options?.contextPath,\n });\n if (errorResponse.isChangePassword) {\n return {\n type: \"NO_ACTION\",\n };\n } else if (errorResponse.isResourceNotFoundAfterReload) {\n return removeModelByKey(key);\n }\n\n return updateStatus(key, MODULARUI_STATUS.ERROR);\n },\n },\n});\n\n/**\n */\nexport const loadModularUI =\n (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(startProgress());\n\n const loadModelPromise = dispatch(loadModel(key, href, options));\n\n return Promise.resolve(loadModelPromise)\n .then(() => dispatch(finishProgress()))\n .catch((error) => dispatch(handleError(error)));\n };\n\n/**\n */\nexport const reloadModel = (\n model: ModularUIModel,\n options?: RequestModularUIOptions,\n): ThunkAction =>\n loadModularUI(model.connectKey, model.selfhref, {\n ...options,\n isReload: true,\n });\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
9
9
|
var _trim = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/trim"));
|
|
10
|
+
var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
|
|
10
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
11
12
|
var _objects = require("../../utils/helpers/objects");
|
|
12
13
|
var _DateTimeUtil = require("../../utils/datetime/DateTimeUtil");
|
|
@@ -215,28 +216,40 @@ class DatetimeAttributeModel extends _StringAttributeModel.default {
|
|
|
215
216
|
|
|
216
217
|
/**
|
|
217
218
|
*/
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
if (this._dateInputFormat) {
|
|
223
|
-
return this._dateInputFormat;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
// remove time and offset tokens
|
|
227
|
-
const charsToRemove = "HhaKmsSzXxO:";
|
|
219
|
+
extractDateInputFormat() {
|
|
220
|
+
const dateEraChars = new _set.default("yMLdQDEewGu");
|
|
221
|
+
const timeOffsetChars = new _set.default("HhaKmsSZzXxO");
|
|
222
|
+
const format = this.format;
|
|
228
223
|
let inputFormat = "";
|
|
229
224
|
let isInQuotes = false;
|
|
230
|
-
|
|
231
|
-
|
|
225
|
+
let keep = false;
|
|
226
|
+
for (let i = 0; i < format.length; i++) {
|
|
227
|
+
const prevChar = i > 0 ? format[i - 1] : "";
|
|
228
|
+
const nextChar = i < format.length ? format[i + 1] : "";
|
|
229
|
+
const char = format[i];
|
|
232
230
|
if (char === "'") {
|
|
233
|
-
isInQuotes = !isInQuotes;
|
|
231
|
+
isInQuotes = prevChar === "'" || nextChar === "'" || !isInQuotes;
|
|
232
|
+
} else if (!isInQuotes && dateEraChars.has(char)) {
|
|
233
|
+
keep = true;
|
|
234
|
+
} else if (!isInQuotes && timeOffsetChars.has(char)) {
|
|
235
|
+
keep = false;
|
|
234
236
|
}
|
|
235
|
-
if (
|
|
237
|
+
if (keep) {
|
|
236
238
|
inputFormat += char;
|
|
237
239
|
}
|
|
238
240
|
}
|
|
239
|
-
|
|
241
|
+
return (0, _trim.default)(inputFormat).call(inputFormat);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
*/
|
|
246
|
+
get dateInputFormat() {
|
|
247
|
+
if (!this.hasDate) {
|
|
248
|
+
return "";
|
|
249
|
+
}
|
|
250
|
+
if (!this._dateInputFormat) {
|
|
251
|
+
this._dateInputFormat = this.extractDateInputFormat();
|
|
252
|
+
}
|
|
240
253
|
return this._dateInputFormat;
|
|
241
254
|
}
|
|
242
255
|
|
|
@@ -267,31 +267,48 @@ class DatetimeAttributeModel extends StringAttributeModel {
|
|
|
267
267
|
|
|
268
268
|
/**
|
|
269
269
|
*/
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
if (this._dateInputFormat) {
|
|
276
|
-
return this._dateInputFormat;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
// remove time and offset tokens
|
|
280
|
-
const charsToRemove = "HhaKmsSzXxO:";
|
|
270
|
+
extractDateInputFormat(): string {
|
|
271
|
+
const dateEraChars = new Set("yMLdQDEewGu");
|
|
272
|
+
const timeOffsetChars = new Set("HhaKmsSZzXxO");
|
|
281
273
|
|
|
274
|
+
const format = this.format;
|
|
282
275
|
let inputFormat = "";
|
|
276
|
+
|
|
283
277
|
let isInQuotes = false;
|
|
284
|
-
|
|
285
|
-
|
|
278
|
+
let keep = false;
|
|
279
|
+
|
|
280
|
+
for (let i = 0; i < format.length; i++) {
|
|
281
|
+
const prevChar = i > 0 ? format[i - 1] : "";
|
|
282
|
+
const nextChar = i < format.length ? format[i + 1] : "";
|
|
283
|
+
const char = format[i];
|
|
284
|
+
|
|
286
285
|
if (char === "'") {
|
|
287
|
-
isInQuotes = !isInQuotes;
|
|
286
|
+
isInQuotes = prevChar === "'" || nextChar === "'" || !isInQuotes;
|
|
287
|
+
} else if (!isInQuotes && dateEraChars.has(char)) {
|
|
288
|
+
keep = true;
|
|
289
|
+
} else if (!isInQuotes && timeOffsetChars.has(char)) {
|
|
290
|
+
keep = false;
|
|
288
291
|
}
|
|
289
|
-
|
|
292
|
+
|
|
293
|
+
if (keep) {
|
|
290
294
|
inputFormat += char;
|
|
291
295
|
}
|
|
292
296
|
}
|
|
293
297
|
|
|
294
|
-
|
|
298
|
+
return inputFormat.trim();
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
*/
|
|
303
|
+
get dateInputFormat(): string {
|
|
304
|
+
if (!this.hasDate) {
|
|
305
|
+
return "";
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
if (!this._dateInputFormat) {
|
|
309
|
+
this._dateInputFormat = this.extractDateInputFormat();
|
|
310
|
+
}
|
|
311
|
+
|
|
295
312
|
return this._dateInputFormat;
|
|
296
313
|
}
|
|
297
314
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatetimeAttributeModel.js","names":["_objects","require","_DateTimeUtil","_StringAttributeModel","_interopRequireDefault","_ConstraintCollection","_DateTimeDateFormatConstraint","_DateTimeTimeFormatConstraint","_DatetimeFormatConstraint","_DateBoundaryConstraint","_constants","DatetimeAttributeModel","StringAttributeModel","constructor","attribute","attributeContributions","modelOptions","_defineProperty2","default","updateInitValue","isApplicableModel","contributions","_context","_includes","call","type","formatUtil","TimeUtil","TimestampUtil","DateTimeUtil","DateUtil","getInitValue","value","data","length","toFormat","getIsoFormat","toISO","hasTime","getTimeValue","_context2","_context3","_context4","_context5","timeValue","timeInputFormat","toLowerCase","setHour","setMinute","setSecond","setMilliseconds","isIncludeTimeOffsetInDateTimes","oldOffset","DATETIME_OFFSET_FORMAT","newOffset","replace","_initvalue","_inputvalue","getInitialInputValue","_value","initValue","inputFormat","getContribution","getInputValue","toString","inputvalue","validate","format","convertFormat","hasDate","formatLabel","dateInputFormat","inputFormatWithoutOffset","_context6","_trim","_dateInputFormat","charsToRemove","isInQuotes","i","char","dateReadonlyFormat","_context7","placeholder","_placeholder","split","_timeInputFormat","timeFormatParts","push","timeFormat","join","timeReadonlyFormat","dateInputValue","timeInputValue","formatValue","hasFormat","ISO_DATE_FORMAT","readonlyvalue","isAmbiguous","offset","getOffset","mindate","maxdate","addServerError","error","id","message","properties","layouthint","has","_errorCollection","getFormatConstraint","DateTimeDateFormatConstraint","DateTimeTimeFormatConstraint","DatetimeFormatConstraint","addConstraints","constraints","ConstraintCollection","add","DateBoundaryConstraint","readonlyWidth","ATTRIBUTE_WIDTH","SMALL","MEDIUM","updateByAttribute","otherAttribute","reset","otherValue","inputValue","update","console","_default","exports"],"sources":["../../../src/models/attributes/DatetimeAttributeModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport {\n DateUtil,\n DateTimeUtil,\n TimeUtil,\n TimestampUtil,\n} from \"../../utils/datetime/DateTimeUtil\";\n\nimport StringAttributeModel from \"./StringAttributeModel\";\n\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport DateTimeDateFormatConstraint from \"./input-constraints/DateTimeDateFormatConstraint\";\nimport DateTimeTimeFormatConstraint from \"./input-constraints/DateTimeTimeFormatConstraint\";\nimport DatetimeFormatConstraint from \"./input-constraints/DatetimeFormatConstraint\";\nimport DateBoundaryConstraint from \"./input-constraints/DateBoundaryConstraint\";\n\nimport {\n isIncludeTimeOffsetInDateTimes,\n ATTRIBUTE_WIDTH,\n DATETIME_OFFSET_FORMAT,\n ISO_DATE_FORMAT,\n} from \"../../constants\";\n\nimport type {\n FormErrorAnchor,\n IConstraintModel,\n AttributeType,\n ModelOptions,\n} from \"../types\";\nimport type { OffsetInfo } from \"../../utils/datetime/DateTimeUtil\";\n\n/**\n */\nclass DatetimeAttributeModel extends StringAttributeModel {\n _dateInputFormat: ?string;\n _timeInputFormat: ?string;\n\n /**\n */\n constructor(\n attribute: Object,\n attributeContributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(attribute, attributeContributions, modelOptions);\n\n this.updateInitValue();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return [\"date\", \"time\", \"datetime\", \"timestamp\"].includes(\n contributions.type,\n );\n }\n\n /**\n */\n get formatUtil():\n | typeof TimeUtil\n | typeof TimestampUtil\n | typeof DateTimeUtil\n | typeof DateUtil {\n switch (this.type) {\n case \"time\":\n return TimeUtil;\n case \"timestamp\":\n return TimestampUtil;\n case \"datetime\":\n return DateTimeUtil;\n default:\n return DateUtil;\n }\n }\n\n /**\n */\n getInitValue(): string | null {\n let value = this.data.value;\n if (value != null) {\n if (this.type === \"time\" && value.length === 5) {\n value = `${value}:00`;\n }\n\n // handle old datetime values, which contained ms\n if (this.type === \"datetime\" && value.includes(\".\")) {\n value = TimestampUtil.toFormat(value, DateTimeUtil.getIsoFormat());\n } else {\n value = this.formatUtil.toISO(value);\n }\n\n if (this.hasTime) {\n value = this.getTimeValue(value);\n }\n }\n\n return value;\n }\n\n /**\n */\n getTimeValue(value: string): string {\n let timeValue = value;\n if (!this.timeInputFormat.toLowerCase().includes(\"h\")) {\n timeValue = this.formatUtil.setHour(value, 0);\n }\n if (!this.timeInputFormat.includes(\"m\")) {\n timeValue = this.formatUtil.setMinute(value, 0);\n }\n if (!this.timeInputFormat.includes(\"s\")) {\n timeValue = this.formatUtil.setSecond(value, 0);\n }\n if (this.type === \"timestamp\" && !this.timeInputFormat.includes(\"S\")) {\n timeValue = this.formatUtil.setMilliseconds(value, 0);\n }\n\n if (isIncludeTimeOffsetInDateTimes()) {\n // https://github.com/date-fns/date-fns/issues/3579\n const oldOffset = this.formatUtil.toFormat(value, DATETIME_OFFSET_FORMAT);\n const newOffset = this.formatUtil.toFormat(\n timeValue,\n DATETIME_OFFSET_FORMAT,\n );\n timeValue = timeValue.replace(newOffset, oldOffset);\n }\n\n return timeValue;\n }\n\n /**\n * Set time in the correct value based on available elements in the time format\n */\n updateInitValue() {\n const value = this.getInitValue();\n if (value != null) {\n this._initvalue = value;\n this._inputvalue = this.getInitialInputValue(value);\n this._value = value;\n }\n }\n\n /**\n * Get initial user input value\n */\n getInitialInputValue(value?: string): string {\n if (!value) {\n return \"\";\n }\n\n let initValue = value;\n if (this.type === \"time\" && value.length === 5) {\n initValue = `${value}:00`;\n }\n\n return this.formatUtil.toFormat(initValue, this.inputFormat);\n }\n\n /**\n * Set type to date\n */\n get type(): string {\n return this.getContribution(\"type\", \"date\");\n }\n\n /**\n * Returns the value as entered by the user. This can differ from the internal iso value that is stored\n */\n getInputValue(): string {\n return this._inputvalue ? this._inputvalue.toString() : \"\";\n }\n\n /**\n * Get input value\n */\n get inputvalue(): string {\n return this.getInputValue();\n }\n\n /**\n * Sets the input value to the value entered by the user\n */\n set inputvalue(value: string) {\n this.validate(value);\n\n this._inputvalue = value;\n\n this.value =\n value !== null && value !== \"\"\n ? this.formatUtil.toISO(value, this.inputFormat)\n : null;\n }\n\n /**\n * Get date format\n */\n get format(): string {\n const format = this.getContribution(\"format\", \"\");\n return this.formatUtil.convertFormat(format);\n }\n\n /**\n */\n get hasDate(): boolean {\n return (\n this.type === \"date\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get hasTime(): boolean {\n return (\n this.type === \"time\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get formatLabel(): string {\n switch (this.type) {\n case \"date\":\n return this.dateInputFormat.toLowerCase();\n case \"time\":\n return this.timeInputFormat.toLowerCase();\n default:\n return this.format.toLowerCase();\n }\n }\n\n /**\n */\n get inputFormatWithoutOffset(): string {\n if (this.hasDate && this.hasTime) {\n return `${this.dateInputFormat} ${this.timeInputFormat}`.trim();\n }\n\n if (this.hasDate) {\n return this.dateInputFormat;\n }\n\n if (this.hasTime) {\n return this.timeInputFormat;\n }\n\n return \"\";\n }\n\n /**\n */\n get inputFormat(): string {\n if (\n isIncludeTimeOffsetInDateTimes() &&\n this.dateInputFormat !== \"\" &&\n this.timeInputFormat !== \"\"\n ) {\n return `${this.inputFormatWithoutOffset} ${DATETIME_OFFSET_FORMAT}`;\n }\n return this.inputFormatWithoutOffset;\n }\n\n /**\n */\n get dateInputFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n if (this._dateInputFormat) {\n return this._dateInputFormat;\n }\n\n // remove time and offset tokens\n const charsToRemove = \"HhaKmsSzXxO:\";\n\n let inputFormat = \"\";\n let isInQuotes = false;\n for (let i = 0; i < this.format.length; i++) {\n const char = this.format[i];\n if (char === \"'\") {\n isInQuotes = !isInQuotes;\n }\n if (isInQuotes || !charsToRemove.includes(char)) {\n inputFormat += char;\n }\n }\n\n this._dateInputFormat = inputFormat.trim();\n return this._dateInputFormat;\n }\n\n /**\n */\n get dateReadonlyFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n return this.hasTime\n ? this.format.replace(this.timeInputFormat, \"\").trim()\n : this.format;\n }\n\n /**\n * return attribute placeholder or return formatlabel without time input format from contributions\n */\n get placeholder(): string {\n if (this._placeholder !== \"\") {\n return this._placeholder;\n }\n\n const formatLabel = this.getContribution(\"formatlabel\", \"\");\n\n if (this.hasDate && this.hasTime && formatLabel.includes(\" \")) {\n // return first part of formatlabel to keep placeholder matching date input\n return formatLabel.split(\" \")[0];\n }\n\n return formatLabel;\n }\n\n /**\n * Set placeholder text\n */\n set placeholder(placeholder: string) {\n this._placeholder = placeholder;\n }\n\n /**\n */\n get timeInputFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n if (this._timeInputFormat) {\n return this._timeInputFormat;\n }\n\n const format = this.format;\n\n let timeFormatParts = [];\n if (format.includes(\"H\")) {\n timeFormatParts.push(\"HH\");\n } else if (format.includes(\"h\")) {\n timeFormatParts.push(\"hh\");\n }\n if (format.includes(\"m\")) {\n timeFormatParts.push(\"mm\");\n }\n if (format.includes(\"s\")) {\n timeFormatParts.push(\"ss\");\n }\n\n let timeFormat = timeFormatParts.join(\":\");\n if (format.includes(\"S\")) {\n timeFormat = `${timeFormat}.SSS`;\n }\n if (format.includes(\"a\")) {\n timeFormat = `${timeFormat} a`;\n }\n\n this._timeInputFormat = timeFormat;\n return this._timeInputFormat;\n }\n\n /**\n */\n get timeReadonlyFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n return this.timeInputFormat;\n }\n\n /**\n */\n get dateInputValue(): string {\n return typeof this.value === \"string\" && this.dateInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.dateInputFormat)\n : \"\";\n }\n\n /**\n */\n get timeInputValue(): string {\n return typeof this.value === \"string\" && this.timeInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.timeInputFormat)\n : \"\";\n }\n\n /**\n * format value in readonly rendering\n */\n formatValue(value: ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n // when the value is exactly an iso date, render as date\n if (\n (this.type === \"datetime\" || this.type === \"timestamp\") &&\n DateUtil.hasFormat(value, ISO_DATE_FORMAT)\n ) {\n return DateUtil.toFormat(value, this.dateReadonlyFormat);\n }\n\n return this.formatUtil.toFormat(value, this.format);\n }\n\n /**\n * Retrieve readonly value, the date in the configurated format\n */\n get readonlyvalue(): string {\n if (typeof this.value === \"string\") {\n return this.formatValue(this.value.toString());\n }\n\n return \"\";\n }\n\n /**\n */\n get isAmbiguous(): boolean {\n if (typeof this.value === \"string\") {\n return this.formatUtil.isAmbiguous(this.value);\n }\n return false;\n }\n\n /**\n */\n get offset(): OffsetInfo | null {\n if (typeof this.value === \"string\") {\n return this.formatUtil.getOffset(this.value);\n }\n return null;\n }\n\n /**\n * Get minimum date\n */\n get mindate(): string | null {\n return this.getContribution(\"mindate\");\n }\n\n /**\n * Get maximum date\n */\n get maxdate(): string | null {\n return this.getContribution(\"maxdate\");\n }\n\n /**\n * Registers an error that was received from a server response\n */\n addServerError(error: FormErrorAnchor) {\n const { id, message, properties, layouthint } = error;\n if (properties && has(properties, \"format\") && this.formatLabel) {\n properties.format = this.formatLabel;\n }\n\n this._errorCollection.addServerError(id, message, properties, layouthint);\n }\n\n /**\n */\n getFormatConstraint(): IConstraintModel {\n switch (this.type) {\n case \"date\":\n return new DateTimeDateFormatConstraint(\n this.dateInputFormat,\n this.formatLabel,\n );\n case \"time\":\n return new DateTimeTimeFormatConstraint(\n this.timeInputFormat,\n this.formatLabel,\n );\n default:\n return new DatetimeFormatConstraint(\n this.type,\n this.inputFormat,\n this.formatLabel,\n );\n }\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this.getFormatConstraint());\n\n if (this.mindate || this.maxdate) {\n constraints.add(\n new DateBoundaryConstraint(\n this.type,\n this.mindate,\n this.maxdate,\n this.inputFormat,\n ),\n );\n }\n\n return constraints;\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"date\" || this.type === \"time\") {\n return ATTRIBUTE_WIDTH.SMALL;\n }\n\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n this.reset();\n if (otherAttribute instanceof DatetimeAttributeModel) {\n const otherValue = otherAttribute.value;\n if (otherValue != null) {\n const inputValue = this.formatUtil.toFormat(\n otherValue,\n this.inputFormat,\n );\n this.update(inputValue);\n }\n } else {\n console.error(\n `update of datetime attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n}\n\nexport default DatetimeAttributeModel;\n"],"mappings":";;;;;;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAD,OAAA;AAOA,IAAAE,qBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,qBAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,6BAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,6BAAA,GAAAH,sBAAA,CAAAH,OAAA;AACA,IAAAO,yBAAA,GAAAJ,sBAAA,CAAAH,OAAA;AACA,IAAAQ,uBAAA,GAAAL,sBAAA,CAAAH,OAAA;AAEA,IAAAS,UAAA,GAAAT,OAAA;AAeA;AACA;AACA,MAAMU,sBAAsB,SAASC,6BAAoB,CAAC;EAIxD;AACF;EACEC,WAAWA,CACTC,SAAiB,EACjBC,sBAA8B,EAC9BC,YAA2B,EAC3B;IACA,KAAK,CAACF,SAAS,EAAEC,sBAAsB,EAAEC,YAAY,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAEvD,IAAI,CAACC,eAAe,CAAC,CAAC;EACxB;;EAEA;AACF;EACE,OAAOC,iBAAiBA,CAACC,aAAqB,EAAW;IAAA,IAAAC,QAAA;IACvD,OAAO,IAAAC,SAAA,CAAAL,OAAA,EAAAI,QAAA,IAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAAE,IAAA,CAAAF,QAAA,EAC9CD,aAAa,CAACI,IAChB,CAAC;EACH;;EAEA;AACF;EACE,IAAIC,UAAUA,CAAA,EAIM;IAClB,QAAQ,IAAI,CAACD,IAAI;MACf,KAAK,MAAM;QACT,OAAOE,sBAAQ;MACjB,KAAK,WAAW;QACd,OAAOC,2BAAa;MACtB,KAAK,UAAU;QACb,OAAOC,0BAAY;MACrB;QACE,OAAOC,sBAAQ;IACnB;EACF;;EAEA;AACF;EACEC,YAAYA,CAAA,EAAkB;IAC5B,IAAIC,KAAK,GAAG,IAAI,CAACC,IAAI,CAACD,KAAK;IAC3B,IAAIA,KAAK,IAAI,IAAI,EAAE;MACjB,IAAI,IAAI,CAACP,IAAI,KAAK,MAAM,IAAIO,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;QAC9CF,KAAK,GAAG,GAAGA,KAAK,KAAK;MACvB;;MAEA;MACA,IAAI,IAAI,CAACP,IAAI,KAAK,UAAU,IAAI,IAAAF,SAAA,CAAAL,OAAA,EAAAc,KAAK,EAAAR,IAAA,CAALQ,KAAK,EAAU,GAAG,CAAC,EAAE;QACnDA,KAAK,GAAGJ,2BAAa,CAACO,QAAQ,CAACH,KAAK,EAAEH,0BAAY,CAACO,YAAY,CAAC,CAAC,CAAC;MACpE,CAAC,MAAM;QACLJ,KAAK,GAAG,IAAI,CAACN,UAAU,CAACW,KAAK,CAACL,KAAK,CAAC;MACtC;MAEA,IAAI,IAAI,CAACM,OAAO,EAAE;QAChBN,KAAK,GAAG,IAAI,CAACO,YAAY,CAACP,KAAK,CAAC;MAClC;IACF;IAEA,OAAOA,KAAK;EACd;;EAEA;AACF;EACEO,YAAYA,CAACP,KAAa,EAAU;IAAA,IAAAQ,SAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,SAAA;IAClC,IAAIC,SAAS,GAAGZ,KAAK;IACrB,IAAI,CAAC,IAAAT,SAAA,CAAAL,OAAA,EAAAsB,SAAA,OAAI,CAACK,eAAe,CAACC,WAAW,CAAC,CAAC,EAAAtB,IAAA,CAAAgB,SAAA,EAAU,GAAG,CAAC,EAAE;MACrDI,SAAS,GAAG,IAAI,CAAClB,UAAU,CAACqB,OAAO,CAACf,KAAK,EAAE,CAAC,CAAC;IAC/C;IACA,IAAI,CAAC,IAAAT,SAAA,CAAAL,OAAA,EAAAuB,SAAA,OAAI,CAACI,eAAe,EAAArB,IAAA,CAAAiB,SAAA,EAAU,GAAG,CAAC,EAAE;MACvCG,SAAS,GAAG,IAAI,CAAClB,UAAU,CAACsB,SAAS,CAAChB,KAAK,EAAE,CAAC,CAAC;IACjD;IACA,IAAI,CAAC,IAAAT,SAAA,CAAAL,OAAA,EAAAwB,SAAA,OAAI,CAACG,eAAe,EAAArB,IAAA,CAAAkB,SAAA,EAAU,GAAG,CAAC,EAAE;MACvCE,SAAS,GAAG,IAAI,CAAClB,UAAU,CAACuB,SAAS,CAACjB,KAAK,EAAE,CAAC,CAAC;IACjD;IACA,IAAI,IAAI,CAACP,IAAI,KAAK,WAAW,IAAI,CAAC,IAAAF,SAAA,CAAAL,OAAA,EAAAyB,SAAA,OAAI,CAACE,eAAe,EAAArB,IAAA,CAAAmB,SAAA,EAAU,GAAG,CAAC,EAAE;MACpEC,SAAS,GAAG,IAAI,CAAClB,UAAU,CAACwB,eAAe,CAAClB,KAAK,EAAE,CAAC,CAAC;IACvD;IAEA,IAAI,IAAAmB,yCAA8B,EAAC,CAAC,EAAE;MACpC;MACA,MAAMC,SAAS,GAAG,IAAI,CAAC1B,UAAU,CAACS,QAAQ,CAACH,KAAK,EAAEqB,iCAAsB,CAAC;MACzE,MAAMC,SAAS,GAAG,IAAI,CAAC5B,UAAU,CAACS,QAAQ,CACxCS,SAAS,EACTS,iCACF,CAAC;MACDT,SAAS,GAAGA,SAAS,CAACW,OAAO,CAACD,SAAS,EAAEF,SAAS,CAAC;IACrD;IAEA,OAAOR,SAAS;EAClB;;EAEA;AACF;AACA;EACEzB,eAAeA,CAAA,EAAG;IAChB,MAAMa,KAAK,GAAG,IAAI,CAACD,YAAY,CAAC,CAAC;IACjC,IAAIC,KAAK,IAAI,IAAI,EAAE;MACjB,IAAI,CAACwB,UAAU,GAAGxB,KAAK;MACvB,IAAI,CAACyB,WAAW,GAAG,IAAI,CAACC,oBAAoB,CAAC1B,KAAK,CAAC;MACnD,IAAI,CAAC2B,MAAM,GAAG3B,KAAK;IACrB;EACF;;EAEA;AACF;AACA;EACE0B,oBAAoBA,CAAC1B,KAAc,EAAU;IAC3C,IAAI,CAACA,KAAK,EAAE;MACV,OAAO,EAAE;IACX;IAEA,IAAI4B,SAAS,GAAG5B,KAAK;IACrB,IAAI,IAAI,CAACP,IAAI,KAAK,MAAM,IAAIO,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;MAC9C0B,SAAS,GAAG,GAAG5B,KAAK,KAAK;IAC3B;IAEA,OAAO,IAAI,CAACN,UAAU,CAACS,QAAQ,CAACyB,SAAS,EAAE,IAAI,CAACC,WAAW,CAAC;EAC9D;;EAEA;AACF;AACA;EACE,IAAIpC,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACqC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;EAC7C;;EAEA;AACF;AACA;EACEC,aAAaA,CAAA,EAAW;IACtB,OAAO,IAAI,CAACN,WAAW,GAAG,IAAI,CAACA,WAAW,CAACO,QAAQ,CAAC,CAAC,GAAG,EAAE;EAC5D;;EAEA;AACF;AACA;EACE,IAAIC,UAAUA,CAAA,EAAW;IACvB,OAAO,IAAI,CAACF,aAAa,CAAC,CAAC;EAC7B;;EAEA;AACF;AACA;EACE,IAAIE,UAAUA,CAACjC,KAAa,EAAE;IAC5B,IAAI,CAACkC,QAAQ,CAAClC,KAAK,CAAC;IAEpB,IAAI,CAACyB,WAAW,GAAGzB,KAAK;IAExB,IAAI,CAACA,KAAK,GACRA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK,EAAE,GAC1B,IAAI,CAACN,UAAU,CAACW,KAAK,CAACL,KAAK,EAAE,IAAI,CAAC6B,WAAW,CAAC,GAC9C,IAAI;EACZ;;EAEA;AACF;AACA;EACE,IAAIM,MAAMA,CAAA,EAAW;IACnB,MAAMA,MAAM,GAAG,IAAI,CAACL,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC;IACjD,OAAO,IAAI,CAACpC,UAAU,CAAC0C,aAAa,CAACD,MAAM,CAAC;EAC9C;;EAEA;AACF;EACE,IAAIE,OAAOA,CAAA,EAAY;IACrB,OACE,IAAI,CAAC5C,IAAI,KAAK,MAAM,IACpB,IAAI,CAACA,IAAI,KAAK,UAAU,IACxB,IAAI,CAACA,IAAI,KAAK,WAAW;EAE7B;;EAEA;AACF;EACE,IAAIa,OAAOA,CAAA,EAAY;IACrB,OACE,IAAI,CAACb,IAAI,KAAK,MAAM,IACpB,IAAI,CAACA,IAAI,KAAK,UAAU,IACxB,IAAI,CAACA,IAAI,KAAK,WAAW;EAE7B;;EAEA;AACF;EACE,IAAI6C,WAAWA,CAAA,EAAW;IACxB,QAAQ,IAAI,CAAC7C,IAAI;MACf,KAAK,MAAM;QACT,OAAO,IAAI,CAAC8C,eAAe,CAACzB,WAAW,CAAC,CAAC;MAC3C,KAAK,MAAM;QACT,OAAO,IAAI,CAACD,eAAe,CAACC,WAAW,CAAC,CAAC;MAC3C;QACE,OAAO,IAAI,CAACqB,MAAM,CAACrB,WAAW,CAAC,CAAC;IACpC;EACF;;EAEA;AACF;EACE,IAAI0B,wBAAwBA,CAAA,EAAW;IACrC,IAAI,IAAI,CAACH,OAAO,IAAI,IAAI,CAAC/B,OAAO,EAAE;MAAA,IAAAmC,SAAA;MAChC,OAAO,IAAAC,KAAA,CAAAxD,OAAA,EAAAuD,SAAA,MAAG,IAAI,CAACF,eAAe,IAAI,IAAI,CAAC1B,eAAe,EAAE,EAAArB,IAAA,CAAAiD,SAAM,CAAC;IACjE;IAEA,IAAI,IAAI,CAACJ,OAAO,EAAE;MAChB,OAAO,IAAI,CAACE,eAAe;IAC7B;IAEA,IAAI,IAAI,CAACjC,OAAO,EAAE;MAChB,OAAO,IAAI,CAACO,eAAe;IAC7B;IAEA,OAAO,EAAE;EACX;;EAEA;AACF;EACE,IAAIgB,WAAWA,CAAA,EAAW;IACxB,IACE,IAAAV,yCAA8B,EAAC,CAAC,IAChC,IAAI,CAACoB,eAAe,KAAK,EAAE,IAC3B,IAAI,CAAC1B,eAAe,KAAK,EAAE,EAC3B;MACA,OAAO,GAAG,IAAI,CAAC2B,wBAAwB,IAAInB,iCAAsB,EAAE;IACrE;IACA,OAAO,IAAI,CAACmB,wBAAwB;EACtC;;EAEA;AACF;EACE,IAAID,eAAeA,CAAA,EAAW;IAC5B,IAAI,CAAC,IAAI,CAACF,OAAO,EAAE;MACjB,OAAO,EAAE;IACX;IAEA,IAAI,IAAI,CAACM,gBAAgB,EAAE;MACzB,OAAO,IAAI,CAACA,gBAAgB;IAC9B;;IAEA;IACA,MAAMC,aAAa,GAAG,cAAc;IAEpC,IAAIf,WAAW,GAAG,EAAE;IACpB,IAAIgB,UAAU,GAAG,KAAK;IACtB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACX,MAAM,CAACjC,MAAM,EAAE4C,CAAC,EAAE,EAAE;MAC3C,MAAMC,IAAI,GAAG,IAAI,CAACZ,MAAM,CAACW,CAAC,CAAC;MAC3B,IAAIC,IAAI,KAAK,GAAG,EAAE;QAChBF,UAAU,GAAG,CAACA,UAAU;MAC1B;MACA,IAAIA,UAAU,IAAI,CAAC,IAAAtD,SAAA,CAAAL,OAAA,EAAA0D,aAAa,EAAApD,IAAA,CAAboD,aAAa,EAAUG,IAAI,CAAC,EAAE;QAC/ClB,WAAW,IAAIkB,IAAI;MACrB;IACF;IAEA,IAAI,CAACJ,gBAAgB,GAAG,IAAAD,KAAA,CAAAxD,OAAA,EAAA2C,WAAW,EAAArC,IAAA,CAAXqC,WAAiB,CAAC;IAC1C,OAAO,IAAI,CAACc,gBAAgB;EAC9B;;EAEA;AACF;EACE,IAAIK,kBAAkBA,CAAA,EAAW;IAAA,IAAAC,SAAA;IAC/B,IAAI,CAAC,IAAI,CAACZ,OAAO,EAAE;MACjB,OAAO,EAAE;IACX;IAEA,OAAO,IAAI,CAAC/B,OAAO,GACf,IAAAoC,KAAA,CAAAxD,OAAA,EAAA+D,SAAA,OAAI,CAACd,MAAM,CAACZ,OAAO,CAAC,IAAI,CAACV,eAAe,EAAE,EAAE,CAAC,EAAArB,IAAA,CAAAyD,SAAM,CAAC,GACpD,IAAI,CAACd,MAAM;EACjB;;EAEA;AACF;AACA;EACE,IAAIe,WAAWA,CAAA,EAAW;IACxB,IAAI,IAAI,CAACC,YAAY,KAAK,EAAE,EAAE;MAC5B,OAAO,IAAI,CAACA,YAAY;IAC1B;IAEA,MAAMb,WAAW,GAAG,IAAI,CAACR,eAAe,CAAC,aAAa,EAAE,EAAE,CAAC;IAE3D,IAAI,IAAI,CAACO,OAAO,IAAI,IAAI,CAAC/B,OAAO,IAAI,IAAAf,SAAA,CAAAL,OAAA,EAAAoD,WAAW,EAAA9C,IAAA,CAAX8C,WAAW,EAAU,GAAG,CAAC,EAAE;MAC7D;MACA,OAAOA,WAAW,CAACc,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClC;IAEA,OAAOd,WAAW;EACpB;;EAEA;AACF;AACA;EACE,IAAIY,WAAWA,CAACA,WAAmB,EAAE;IACnC,IAAI,CAACC,YAAY,GAAGD,WAAW;EACjC;;EAEA;AACF;EACE,IAAIrC,eAAeA,CAAA,EAAW;IAC5B,IAAI,CAAC,IAAI,CAACP,OAAO,EAAE;MACjB,OAAO,EAAE;IACX;IAEA,IAAI,IAAI,CAAC+C,gBAAgB,EAAE;MACzB,OAAO,IAAI,CAACA,gBAAgB;IAC9B;IAEA,MAAMlB,MAAM,GAAG,IAAI,CAACA,MAAM;IAE1B,IAAImB,eAAe,GAAG,EAAE;IACxB,IAAI,IAAA/D,SAAA,CAAAL,OAAA,EAAAiD,MAAM,EAAA3C,IAAA,CAAN2C,MAAM,EAAU,GAAG,CAAC,EAAE;MACxBmB,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC,MAAM,IAAI,IAAAhE,SAAA,CAAAL,OAAA,EAAAiD,MAAM,EAAA3C,IAAA,CAAN2C,MAAM,EAAU,GAAG,CAAC,EAAE;MAC/BmB,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5B;IACA,IAAI,IAAAhE,SAAA,CAAAL,OAAA,EAAAiD,MAAM,EAAA3C,IAAA,CAAN2C,MAAM,EAAU,GAAG,CAAC,EAAE;MACxBmB,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5B;IACA,IAAI,IAAAhE,SAAA,CAAAL,OAAA,EAAAiD,MAAM,EAAA3C,IAAA,CAAN2C,MAAM,EAAU,GAAG,CAAC,EAAE;MACxBmB,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5B;IAEA,IAAIC,UAAU,GAAGF,eAAe,CAACG,IAAI,CAAC,GAAG,CAAC;IAC1C,IAAI,IAAAlE,SAAA,CAAAL,OAAA,EAAAiD,MAAM,EAAA3C,IAAA,CAAN2C,MAAM,EAAU,GAAG,CAAC,EAAE;MACxBqB,UAAU,GAAG,GAAGA,UAAU,MAAM;IAClC;IACA,IAAI,IAAAjE,SAAA,CAAAL,OAAA,EAAAiD,MAAM,EAAA3C,IAAA,CAAN2C,MAAM,EAAU,GAAG,CAAC,EAAE;MACxBqB,UAAU,GAAG,GAAGA,UAAU,IAAI;IAChC;IAEA,IAAI,CAACH,gBAAgB,GAAGG,UAAU;IAClC,OAAO,IAAI,CAACH,gBAAgB;EAC9B;;EAEA;AACF;EACE,IAAIK,kBAAkBA,CAAA,EAAW;IAC/B,IAAI,CAAC,IAAI,CAACpD,OAAO,EAAE;MACjB,OAAO,EAAE;IACX;IAEA,OAAO,IAAI,CAACO,eAAe;EAC7B;;EAEA;AACF;EACE,IAAI8C,cAAcA,CAAA,EAAW;IAC3B,OAAO,OAAO,IAAI,CAAC3D,KAAK,KAAK,QAAQ,IAAI,IAAI,CAACuC,eAAe,KAAK,EAAE,GAChE,IAAI,CAAC7C,UAAU,CAACS,QAAQ,CAAC,IAAI,CAACH,KAAK,EAAE,IAAI,CAACuC,eAAe,CAAC,GAC1D,EAAE;EACR;;EAEA;AACF;EACE,IAAIqB,cAAcA,CAAA,EAAW;IAC3B,OAAO,OAAO,IAAI,CAAC5D,KAAK,KAAK,QAAQ,IAAI,IAAI,CAACa,eAAe,KAAK,EAAE,GAChE,IAAI,CAACnB,UAAU,CAACS,QAAQ,CAAC,IAAI,CAACH,KAAK,EAAE,IAAI,CAACa,eAAe,CAAC,GAC1D,EAAE;EACR;;EAEA;AACF;AACA;EACEgD,WAAWA,CAAC7D,KAAc,EAAU;IAClC,IAAIA,KAAK,IAAI,IAAI,IAAIA,KAAK,CAACgC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;MAC5C,OAAO,EAAE;IACX;;IAEA;IACA,IACE,CAAC,IAAI,CAACvC,IAAI,KAAK,UAAU,IAAI,IAAI,CAACA,IAAI,KAAK,WAAW,KACtDK,sBAAQ,CAACgE,SAAS,CAAC9D,KAAK,EAAE+D,0BAAe,CAAC,EAC1C;MACA,OAAOjE,sBAAQ,CAACK,QAAQ,CAACH,KAAK,EAAE,IAAI,CAACgD,kBAAkB,CAAC;IAC1D;IAEA,OAAO,IAAI,CAACtD,UAAU,CAACS,QAAQ,CAACH,KAAK,EAAE,IAAI,CAACmC,MAAM,CAAC;EACrD;;EAEA;AACF;AACA;EACE,IAAI6B,aAAaA,CAAA,EAAW;IAC1B,IAAI,OAAO,IAAI,CAAChE,KAAK,KAAK,QAAQ,EAAE;MAClC,OAAO,IAAI,CAAC6D,WAAW,CAAC,IAAI,CAAC7D,KAAK,CAACgC,QAAQ,CAAC,CAAC,CAAC;IAChD;IAEA,OAAO,EAAE;EACX;;EAEA;AACF;EACE,IAAIiC,WAAWA,CAAA,EAAY;IACzB,IAAI,OAAO,IAAI,CAACjE,KAAK,KAAK,QAAQ,EAAE;MAClC,OAAO,IAAI,CAACN,UAAU,CAACuE,WAAW,CAAC,IAAI,CAACjE,KAAK,CAAC;IAChD;IACA,OAAO,KAAK;EACd;;EAEA;AACF;EACE,IAAIkE,MAAMA,CAAA,EAAsB;IAC9B,IAAI,OAAO,IAAI,CAAClE,KAAK,KAAK,QAAQ,EAAE;MAClC,OAAO,IAAI,CAACN,UAAU,CAACyE,SAAS,CAAC,IAAI,CAACnE,KAAK,CAAC;IAC9C;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACE,IAAIoE,OAAOA,CAAA,EAAkB;IAC3B,OAAO,IAAI,CAACtC,eAAe,CAAC,SAAS,CAAC;EACxC;;EAEA;AACF;AACA;EACE,IAAIuC,OAAOA,CAAA,EAAkB;IAC3B,OAAO,IAAI,CAACvC,eAAe,CAAC,SAAS,CAAC;EACxC;;EAEA;AACF;AACA;EACEwC,cAAcA,CAACC,KAAsB,EAAE;IACrC,MAAM;MAAEC,EAAE;MAAEC,OAAO;MAAEC,UAAU;MAAEC;IAAW,CAAC,GAAGJ,KAAK;IACrD,IAAIG,UAAU,IAAI,IAAAE,YAAG,EAACF,UAAU,EAAE,QAAQ,CAAC,IAAI,IAAI,CAACpC,WAAW,EAAE;MAC/DoC,UAAU,CAACvC,MAAM,GAAG,IAAI,CAACG,WAAW;IACtC;IAEA,IAAI,CAACuC,gBAAgB,CAACP,cAAc,CAACE,EAAE,EAAEC,OAAO,EAAEC,UAAU,EAAEC,UAAU,CAAC;EAC3E;;EAEA;AACF;EACEG,mBAAmBA,CAAA,EAAqB;IACtC,QAAQ,IAAI,CAACrF,IAAI;MACf,KAAK,MAAM;QACT,OAAO,IAAIsF,qCAA4B,CACrC,IAAI,CAACxC,eAAe,EACpB,IAAI,CAACD,WACP,CAAC;MACH,KAAK,MAAM;QACT,OAAO,IAAI0C,qCAA4B,CACrC,IAAI,CAACnE,eAAe,EACpB,IAAI,CAACyB,WACP,CAAC;MACH;QACE,OAAO,IAAI2C,iCAAwB,CACjC,IAAI,CAACxF,IAAI,EACT,IAAI,CAACoC,WAAW,EAChB,IAAI,CAACS,WACP,CAAC;IACL;EACF;;EAEA;AACF;AACA;EACE4C,cAAcA,CAAA,EAAyB;IACrC,MAAMC,WAAW,GAAG,IAAIC,6BAAoB,CAAC,CAAC;IAE9CD,WAAW,CAACE,GAAG,CAAC,IAAI,CAACP,mBAAmB,CAAC,CAAC,CAAC;IAE3C,IAAI,IAAI,CAACV,OAAO,IAAI,IAAI,CAACC,OAAO,EAAE;MAChCc,WAAW,CAACE,GAAG,CACb,IAAIC,+BAAsB,CACxB,IAAI,CAAC7F,IAAI,EACT,IAAI,CAAC2E,OAAO,EACZ,IAAI,CAACC,OAAO,EACZ,IAAI,CAACxC,WACP,CACF,CAAC;IACH;IAEA,OAAOsD,WAAW;EACpB;;EAEA;AACF;EACE,IAAII,aAAaA,CAAA,EAAkC;IACjD,IAAI,IAAI,CAAC9F,IAAI,KAAK,MAAM,IAAI,IAAI,CAACA,IAAI,KAAK,MAAM,EAAE;MAChD,OAAO+F,0BAAe,CAACC,KAAK;IAC9B;IAEA,OAAOD,0BAAe,CAACE,MAAM;EAC/B;;EAEA;AACF;EACEC,iBAAiBA,CAACC,cAA6B,EAAQ;IACrD,IAAI,CAACC,KAAK,CAAC,CAAC;IACZ,IAAID,cAAc,YAAYjH,sBAAsB,EAAE;MACpD,MAAMmH,UAAU,GAAGF,cAAc,CAAC5F,KAAK;MACvC,IAAI8F,UAAU,IAAI,IAAI,EAAE;QACtB,MAAMC,UAAU,GAAG,IAAI,CAACrG,UAAU,CAACS,QAAQ,CACzC2F,UAAU,EACV,IAAI,CAACjE,WACP,CAAC;QACD,IAAI,CAACmE,MAAM,CAACD,UAAU,CAAC;MACzB;IACF,CAAC,MAAM;MACLE,OAAO,CAAC1B,KAAK,CACX,qCAAqCqB,cAAc,CAACnG,IAAI,gBAC1D,CAAC;IACH;EACF;AACF;AAAC,IAAAyG,QAAA,GAAAC,OAAA,CAAAjH,OAAA,GAEcP,sBAAsB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DatetimeAttributeModel.js","names":["_objects","require","_DateTimeUtil","_StringAttributeModel","_interopRequireDefault","_ConstraintCollection","_DateTimeDateFormatConstraint","_DateTimeTimeFormatConstraint","_DatetimeFormatConstraint","_DateBoundaryConstraint","_constants","DatetimeAttributeModel","StringAttributeModel","constructor","attribute","attributeContributions","modelOptions","_defineProperty2","default","updateInitValue","isApplicableModel","contributions","_context","_includes","call","type","formatUtil","TimeUtil","TimestampUtil","DateTimeUtil","DateUtil","getInitValue","value","data","length","toFormat","getIsoFormat","toISO","hasTime","getTimeValue","_context2","_context3","_context4","_context5","timeValue","timeInputFormat","toLowerCase","setHour","setMinute","setSecond","setMilliseconds","isIncludeTimeOffsetInDateTimes","oldOffset","DATETIME_OFFSET_FORMAT","newOffset","replace","_initvalue","_inputvalue","getInitialInputValue","_value","initValue","inputFormat","getContribution","getInputValue","toString","inputvalue","validate","format","convertFormat","hasDate","formatLabel","dateInputFormat","inputFormatWithoutOffset","_context6","_trim","extractDateInputFormat","dateEraChars","_set","timeOffsetChars","isInQuotes","keep","i","prevChar","nextChar","char","has","_dateInputFormat","dateReadonlyFormat","_context7","placeholder","_placeholder","split","_timeInputFormat","timeFormatParts","push","timeFormat","join","timeReadonlyFormat","dateInputValue","timeInputValue","formatValue","hasFormat","ISO_DATE_FORMAT","readonlyvalue","isAmbiguous","offset","getOffset","mindate","maxdate","addServerError","error","id","message","properties","layouthint","_errorCollection","getFormatConstraint","DateTimeDateFormatConstraint","DateTimeTimeFormatConstraint","DatetimeFormatConstraint","addConstraints","constraints","ConstraintCollection","add","DateBoundaryConstraint","readonlyWidth","ATTRIBUTE_WIDTH","SMALL","MEDIUM","updateByAttribute","otherAttribute","reset","otherValue","inputValue","update","console","_default","exports"],"sources":["../../../src/models/attributes/DatetimeAttributeModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport {\n DateUtil,\n DateTimeUtil,\n TimeUtil,\n TimestampUtil,\n} from \"../../utils/datetime/DateTimeUtil\";\n\nimport StringAttributeModel from \"./StringAttributeModel\";\n\nimport ConstraintCollection from \"./input-constraints/ConstraintCollection\";\nimport DateTimeDateFormatConstraint from \"./input-constraints/DateTimeDateFormatConstraint\";\nimport DateTimeTimeFormatConstraint from \"./input-constraints/DateTimeTimeFormatConstraint\";\nimport DatetimeFormatConstraint from \"./input-constraints/DatetimeFormatConstraint\";\nimport DateBoundaryConstraint from \"./input-constraints/DateBoundaryConstraint\";\n\nimport {\n isIncludeTimeOffsetInDateTimes,\n ATTRIBUTE_WIDTH,\n DATETIME_OFFSET_FORMAT,\n ISO_DATE_FORMAT,\n} from \"../../constants\";\n\nimport type {\n FormErrorAnchor,\n IConstraintModel,\n AttributeType,\n ModelOptions,\n} from \"../types\";\nimport type { OffsetInfo } from \"../../utils/datetime/DateTimeUtil\";\n\n/**\n */\nclass DatetimeAttributeModel extends StringAttributeModel {\n _dateInputFormat: ?string;\n _timeInputFormat: ?string;\n\n /**\n */\n constructor(\n attribute: Object,\n attributeContributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(attribute, attributeContributions, modelOptions);\n\n this.updateInitValue();\n }\n\n /**\n */\n static isApplicableModel(contributions: Object): boolean {\n return [\"date\", \"time\", \"datetime\", \"timestamp\"].includes(\n contributions.type,\n );\n }\n\n /**\n */\n get formatUtil():\n | typeof TimeUtil\n | typeof TimestampUtil\n | typeof DateTimeUtil\n | typeof DateUtil {\n switch (this.type) {\n case \"time\":\n return TimeUtil;\n case \"timestamp\":\n return TimestampUtil;\n case \"datetime\":\n return DateTimeUtil;\n default:\n return DateUtil;\n }\n }\n\n /**\n */\n getInitValue(): string | null {\n let value = this.data.value;\n if (value != null) {\n if (this.type === \"time\" && value.length === 5) {\n value = `${value}:00`;\n }\n\n // handle old datetime values, which contained ms\n if (this.type === \"datetime\" && value.includes(\".\")) {\n value = TimestampUtil.toFormat(value, DateTimeUtil.getIsoFormat());\n } else {\n value = this.formatUtil.toISO(value);\n }\n\n if (this.hasTime) {\n value = this.getTimeValue(value);\n }\n }\n\n return value;\n }\n\n /**\n */\n getTimeValue(value: string): string {\n let timeValue = value;\n if (!this.timeInputFormat.toLowerCase().includes(\"h\")) {\n timeValue = this.formatUtil.setHour(value, 0);\n }\n if (!this.timeInputFormat.includes(\"m\")) {\n timeValue = this.formatUtil.setMinute(value, 0);\n }\n if (!this.timeInputFormat.includes(\"s\")) {\n timeValue = this.formatUtil.setSecond(value, 0);\n }\n if (this.type === \"timestamp\" && !this.timeInputFormat.includes(\"S\")) {\n timeValue = this.formatUtil.setMilliseconds(value, 0);\n }\n\n if (isIncludeTimeOffsetInDateTimes()) {\n // https://github.com/date-fns/date-fns/issues/3579\n const oldOffset = this.formatUtil.toFormat(value, DATETIME_OFFSET_FORMAT);\n const newOffset = this.formatUtil.toFormat(\n timeValue,\n DATETIME_OFFSET_FORMAT,\n );\n timeValue = timeValue.replace(newOffset, oldOffset);\n }\n\n return timeValue;\n }\n\n /**\n * Set time in the correct value based on available elements in the time format\n */\n updateInitValue() {\n const value = this.getInitValue();\n if (value != null) {\n this._initvalue = value;\n this._inputvalue = this.getInitialInputValue(value);\n this._value = value;\n }\n }\n\n /**\n * Get initial user input value\n */\n getInitialInputValue(value?: string): string {\n if (!value) {\n return \"\";\n }\n\n let initValue = value;\n if (this.type === \"time\" && value.length === 5) {\n initValue = `${value}:00`;\n }\n\n return this.formatUtil.toFormat(initValue, this.inputFormat);\n }\n\n /**\n * Set type to date\n */\n get type(): string {\n return this.getContribution(\"type\", \"date\");\n }\n\n /**\n * Returns the value as entered by the user. This can differ from the internal iso value that is stored\n */\n getInputValue(): string {\n return this._inputvalue ? this._inputvalue.toString() : \"\";\n }\n\n /**\n * Get input value\n */\n get inputvalue(): string {\n return this.getInputValue();\n }\n\n /**\n * Sets the input value to the value entered by the user\n */\n set inputvalue(value: string) {\n this.validate(value);\n\n this._inputvalue = value;\n\n this.value =\n value !== null && value !== \"\"\n ? this.formatUtil.toISO(value, this.inputFormat)\n : null;\n }\n\n /**\n * Get date format\n */\n get format(): string {\n const format = this.getContribution(\"format\", \"\");\n return this.formatUtil.convertFormat(format);\n }\n\n /**\n */\n get hasDate(): boolean {\n return (\n this.type === \"date\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get hasTime(): boolean {\n return (\n this.type === \"time\" ||\n this.type === \"datetime\" ||\n this.type === \"timestamp\"\n );\n }\n\n /**\n */\n get formatLabel(): string {\n switch (this.type) {\n case \"date\":\n return this.dateInputFormat.toLowerCase();\n case \"time\":\n return this.timeInputFormat.toLowerCase();\n default:\n return this.format.toLowerCase();\n }\n }\n\n /**\n */\n get inputFormatWithoutOffset(): string {\n if (this.hasDate && this.hasTime) {\n return `${this.dateInputFormat} ${this.timeInputFormat}`.trim();\n }\n\n if (this.hasDate) {\n return this.dateInputFormat;\n }\n\n if (this.hasTime) {\n return this.timeInputFormat;\n }\n\n return \"\";\n }\n\n /**\n */\n get inputFormat(): string {\n if (\n isIncludeTimeOffsetInDateTimes() &&\n this.dateInputFormat !== \"\" &&\n this.timeInputFormat !== \"\"\n ) {\n return `${this.inputFormatWithoutOffset} ${DATETIME_OFFSET_FORMAT}`;\n }\n return this.inputFormatWithoutOffset;\n }\n\n /**\n */\n extractDateInputFormat(): string {\n const dateEraChars = new Set(\"yMLdQDEewGu\");\n const timeOffsetChars = new Set(\"HhaKmsSZzXxO\");\n\n const format = this.format;\n let inputFormat = \"\";\n\n let isInQuotes = false;\n let keep = false;\n\n for (let i = 0; i < format.length; i++) {\n const prevChar = i > 0 ? format[i - 1] : \"\";\n const nextChar = i < format.length ? format[i + 1] : \"\";\n const char = format[i];\n\n if (char === \"'\") {\n isInQuotes = prevChar === \"'\" || nextChar === \"'\" || !isInQuotes;\n } else if (!isInQuotes && dateEraChars.has(char)) {\n keep = true;\n } else if (!isInQuotes && timeOffsetChars.has(char)) {\n keep = false;\n }\n\n if (keep) {\n inputFormat += char;\n }\n }\n\n return inputFormat.trim();\n }\n\n /**\n */\n get dateInputFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n if (!this._dateInputFormat) {\n this._dateInputFormat = this.extractDateInputFormat();\n }\n\n return this._dateInputFormat;\n }\n\n /**\n */\n get dateReadonlyFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n return this.hasTime\n ? this.format.replace(this.timeInputFormat, \"\").trim()\n : this.format;\n }\n\n /**\n * return attribute placeholder or return formatlabel without time input format from contributions\n */\n get placeholder(): string {\n if (this._placeholder !== \"\") {\n return this._placeholder;\n }\n\n const formatLabel = this.getContribution(\"formatlabel\", \"\");\n\n if (this.hasDate && this.hasTime && formatLabel.includes(\" \")) {\n // return first part of formatlabel to keep placeholder matching date input\n return formatLabel.split(\" \")[0];\n }\n\n return formatLabel;\n }\n\n /**\n * Set placeholder text\n */\n set placeholder(placeholder: string) {\n this._placeholder = placeholder;\n }\n\n /**\n */\n get timeInputFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n if (this._timeInputFormat) {\n return this._timeInputFormat;\n }\n\n const format = this.format;\n\n let timeFormatParts = [];\n if (format.includes(\"H\")) {\n timeFormatParts.push(\"HH\");\n } else if (format.includes(\"h\")) {\n timeFormatParts.push(\"hh\");\n }\n if (format.includes(\"m\")) {\n timeFormatParts.push(\"mm\");\n }\n if (format.includes(\"s\")) {\n timeFormatParts.push(\"ss\");\n }\n\n let timeFormat = timeFormatParts.join(\":\");\n if (format.includes(\"S\")) {\n timeFormat = `${timeFormat}.SSS`;\n }\n if (format.includes(\"a\")) {\n timeFormat = `${timeFormat} a`;\n }\n\n this._timeInputFormat = timeFormat;\n return this._timeInputFormat;\n }\n\n /**\n */\n get timeReadonlyFormat(): string {\n if (!this.hasTime) {\n return \"\";\n }\n\n return this.timeInputFormat;\n }\n\n /**\n */\n get dateInputValue(): string {\n return typeof this.value === \"string\" && this.dateInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.dateInputFormat)\n : \"\";\n }\n\n /**\n */\n get timeInputValue(): string {\n return typeof this.value === \"string\" && this.timeInputFormat !== \"\"\n ? this.formatUtil.toFormat(this.value, this.timeInputFormat)\n : \"\";\n }\n\n /**\n * format value in readonly rendering\n */\n formatValue(value: ?string): string {\n if (value == null || value.toString() === \"\") {\n return \"\";\n }\n\n // when the value is exactly an iso date, render as date\n if (\n (this.type === \"datetime\" || this.type === \"timestamp\") &&\n DateUtil.hasFormat(value, ISO_DATE_FORMAT)\n ) {\n return DateUtil.toFormat(value, this.dateReadonlyFormat);\n }\n\n return this.formatUtil.toFormat(value, this.format);\n }\n\n /**\n * Retrieve readonly value, the date in the configurated format\n */\n get readonlyvalue(): string {\n if (typeof this.value === \"string\") {\n return this.formatValue(this.value.toString());\n }\n\n return \"\";\n }\n\n /**\n */\n get isAmbiguous(): boolean {\n if (typeof this.value === \"string\") {\n return this.formatUtil.isAmbiguous(this.value);\n }\n return false;\n }\n\n /**\n */\n get offset(): OffsetInfo | null {\n if (typeof this.value === \"string\") {\n return this.formatUtil.getOffset(this.value);\n }\n return null;\n }\n\n /**\n * Get minimum date\n */\n get mindate(): string | null {\n return this.getContribution(\"mindate\");\n }\n\n /**\n * Get maximum date\n */\n get maxdate(): string | null {\n return this.getContribution(\"maxdate\");\n }\n\n /**\n * Registers an error that was received from a server response\n */\n addServerError(error: FormErrorAnchor) {\n const { id, message, properties, layouthint } = error;\n if (properties && has(properties, \"format\") && this.formatLabel) {\n properties.format = this.formatLabel;\n }\n\n this._errorCollection.addServerError(id, message, properties, layouthint);\n }\n\n /**\n */\n getFormatConstraint(): IConstraintModel {\n switch (this.type) {\n case \"date\":\n return new DateTimeDateFormatConstraint(\n this.dateInputFormat,\n this.formatLabel,\n );\n case \"time\":\n return new DateTimeTimeFormatConstraint(\n this.timeInputFormat,\n this.formatLabel,\n );\n default:\n return new DatetimeFormatConstraint(\n this.type,\n this.inputFormat,\n this.formatLabel,\n );\n }\n }\n\n /**\n * Add Date constraints for attribute\n */\n addConstraints(): ConstraintCollection {\n const constraints = new ConstraintCollection();\n\n constraints.add(this.getFormatConstraint());\n\n if (this.mindate || this.maxdate) {\n constraints.add(\n new DateBoundaryConstraint(\n this.type,\n this.mindate,\n this.maxdate,\n this.inputFormat,\n ),\n );\n }\n\n return constraints;\n }\n\n /**\n */\n get readonlyWidth(): $Keys<typeof ATTRIBUTE_WIDTH> {\n if (this.type === \"date\" || this.type === \"time\") {\n return ATTRIBUTE_WIDTH.SMALL;\n }\n\n return ATTRIBUTE_WIDTH.MEDIUM;\n }\n\n /**\n */\n updateByAttribute(otherAttribute: AttributeType): void {\n this.reset();\n if (otherAttribute instanceof DatetimeAttributeModel) {\n const otherValue = otherAttribute.value;\n if (otherValue != null) {\n const inputValue = this.formatUtil.toFormat(\n otherValue,\n this.inputFormat,\n );\n this.update(inputValue);\n }\n } else {\n console.error(\n `update of datetime attribute with ${otherAttribute.type} not supported`,\n );\n }\n }\n}\n\nexport default DatetimeAttributeModel;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -304,20 +304,42 @@ describe("datetimeAttributeModel with offset on", () => {
|
|
|
304
304
|
});
|
|
305
305
|
});
|
|
306
306
|
|
|
307
|
-
it("Date
|
|
308
|
-
const
|
|
307
|
+
it("Date formats", () => {
|
|
308
|
+
const datetime = new DatetimeAttributeModel(
|
|
309
309
|
{ key: "datetime", value: "1969-09-23T12:34:00+00:00" },
|
|
310
310
|
{
|
|
311
311
|
type: "datetime",
|
|
312
|
-
label: "Start date and time at company",
|
|
313
|
-
mandatory: false,
|
|
314
|
-
formatlabel: "dd-mm-yyyy hh:mm",
|
|
315
|
-
assistant: "The date and time of the first working day",
|
|
316
312
|
format: "dd-MM-yyyy HH:mm X",
|
|
317
313
|
},
|
|
318
314
|
);
|
|
319
315
|
|
|
320
|
-
expect(
|
|
321
|
-
expect(
|
|
316
|
+
expect(datetime.format).toBe("dd-MM-yyyy HH:mm X");
|
|
317
|
+
expect(datetime.dateInputFormat).toBe("dd-MM-yyyy");
|
|
318
|
+
expect(datetime.timeInputFormat).toBe("HH:mm");
|
|
319
|
+
expect(datetime.errorCollection.isEmpty).toBe(true);
|
|
320
|
+
|
|
321
|
+
const timestamp = new DatetimeAttributeModel(
|
|
322
|
+
{ key: "timestamp", value: "1969-09-23T12:34:00.010+00:00" },
|
|
323
|
+
{
|
|
324
|
+
type: "timestamp",
|
|
325
|
+
format: "dd-MM-yyyy HH:mm:ss.SSS X",
|
|
326
|
+
},
|
|
327
|
+
);
|
|
328
|
+
|
|
329
|
+
expect(timestamp.format).toBe("dd-MM-yyyy HH:mm:ss.SSS X");
|
|
330
|
+
expect(timestamp.dateInputFormat).toBe("dd-MM-yyyy");
|
|
331
|
+
expect(timestamp.timeInputFormat).toBe("HH:mm:ss.SSS");
|
|
332
|
+
|
|
333
|
+
const special = new DatetimeAttributeModel(
|
|
334
|
+
{ key: "timestamp", value: "1969-09-23T12:34:00.010+00:00" },
|
|
335
|
+
{
|
|
336
|
+
type: "timestamp",
|
|
337
|
+
format: "'special' do 'de' MMMM yyyy h 'o''clock'",
|
|
338
|
+
},
|
|
339
|
+
);
|
|
340
|
+
|
|
341
|
+
expect(special.format).toBe("'special' do 'de' MMMM yyyy h 'o''clock'");
|
|
342
|
+
expect(special.dateInputFormat).toBe("do 'de' MMMM yyyy");
|
|
343
|
+
// expect(special.timeInputFormat).toBe("HH:mm:ss.SSS");
|
|
322
344
|
});
|
|
323
345
|
});
|
|
@@ -131,14 +131,7 @@ const loadModel = (key, href, options) => ({
|
|
|
131
131
|
/**
|
|
132
132
|
*/
|
|
133
133
|
exports.loadModel = loadModel;
|
|
134
|
-
const loadModularUI = (key, href, options) =>
|
|
135
|
-
const modularuiStore = getState()?.modularui;
|
|
136
|
-
if (modularuiStore && modularuiStore[key]?.status === _Constants.MODULARUI_STATUS.LOADING) {
|
|
137
|
-
// don't create duplicate requests during loading
|
|
138
|
-
return dispatch({
|
|
139
|
-
type: "NO_ACTION"
|
|
140
|
-
});
|
|
141
|
-
}
|
|
134
|
+
const loadModularUI = (key, href, options) => dispatch => {
|
|
142
135
|
dispatch((0, _ProgressIndicator.startProgress)());
|
|
143
136
|
const loadModelPromise = dispatch(loadModel(key, href, options));
|
|
144
137
|
return _promise.default.resolve(loadModelPromise).then(() => dispatch((0, _ProgressIndicator.finishProgress)())).catch(error => dispatch((0, _Error.handleError)(error)));
|
|
@@ -158,18 +158,7 @@ export const loadModularUI =
|
|
|
158
158
|
href: Href | string,
|
|
159
159
|
options?: RequestModularUIOptions,
|
|
160
160
|
): ThunkAction =>
|
|
161
|
-
(dispatch: Dispatch
|
|
162
|
-
const modularuiStore = getState()?.modularui;
|
|
163
|
-
if (
|
|
164
|
-
modularuiStore &&
|
|
165
|
-
modularuiStore[key]?.status === MODULARUI_STATUS.LOADING
|
|
166
|
-
) {
|
|
167
|
-
// don't create duplicate requests during loading
|
|
168
|
-
return dispatch({
|
|
169
|
-
type: "NO_ACTION",
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
|
|
161
|
+
(dispatch: Dispatch) => {
|
|
173
162
|
dispatch(startProgress());
|
|
174
163
|
|
|
175
164
|
const loadModelPromise = dispatch(loadModel(key, href, options));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModularUIActions.js","names":["_Constants","require","_Href","_interopRequireDefault","_ErrorResponse","_ProgressIndicator","_Error","setModel","key","model","connectKey","type","payload","exports","initModels","models","updateModel","updateForm","removeModelByKey","resetModularUI","updateStatus","status","loadModelSuccessAction","updateHandler","loadModel","href","options","origin","contextPath","Href","method","HTTP_METHODS","GET","data","locale","childmodels","targetModel","forceTargetModel","cache","successAction","errorAction","error","errorResponse","ErrorResponse","isChangePassword","isResourceNotFoundAfterReload","MODULARUI_STATUS","ERROR","loadModularUI","dispatch","
|
|
1
|
+
{"version":3,"file":"ModularUIActions.js","names":["_Constants","require","_Href","_interopRequireDefault","_ErrorResponse","_ProgressIndicator","_Error","setModel","key","model","connectKey","type","payload","exports","initModels","models","updateModel","updateForm","removeModelByKey","resetModularUI","updateStatus","status","loadModelSuccessAction","updateHandler","loadModel","href","options","origin","contextPath","Href","method","HTTP_METHODS","GET","data","locale","childmodels","targetModel","forceTargetModel","cache","successAction","errorAction","error","errorResponse","ErrorResponse","isChangePassword","isResourceNotFoundAfterReload","MODULARUI_STATUS","ERROR","loadModularUI","dispatch","startProgress","loadModelPromise","_promise","default","resolve","then","finishProgress","catch","handleError","reloadModel","selfhref","isReload"],"sources":["../../../src/redux/_modularui/ModularUIActions.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\nimport { finishProgress, startProgress } from \"../actions/ProgressIndicator\";\nimport { handleError } from \"../actions/Error\";\n\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { Dispatch, ThunkAction } from \"../types\";\nimport type {\n ModularUIAction,\n SetModelAction,\n InitModelAction,\n UpdateModelAction,\n UpdateFormAction,\n RemoveModelByKeyAction,\n ResetModularUIAction,\n UpdateStatusAction,\n} from \"./types\";\nimport type {\n RequestModularUIOptions,\n UpdateHandler,\n} from \"../../utils/fetch/types\";\n\n/**\n */\nexport const setModel = (\n key: string,\n model: ModularUIModel,\n): SetModelAction => {\n // set key on model for later reference\n model.connectKey = key;\n return {\n type: \"MODULARUI/SET\",\n payload: {\n key,\n model,\n },\n };\n};\n\n/**\n */\nexport const initModels = (\n models: Array<{ key: string, model: ModularUIModel }>,\n): InitModelAction => ({\n type: \"MODULARUI/INIT\",\n payload: models,\n});\n\n/**\n */\nexport const updateModel = (model: ModularUIModel): UpdateModelAction => ({\n type: \"MODULARUI/UPDATE\",\n payload: model,\n});\n\n/**\n */\nexport const updateForm = (model: ModularUIModel): UpdateFormAction => ({\n type: \"MODULARUI/UPDATE_FORM\",\n payload: model,\n});\n\n/**\n */\nexport const removeModelByKey = (key: string): RemoveModelByKeyAction => ({\n type: \"MODULARUI/REMOVE_KEY\",\n payload: key,\n});\n\n/**\n * Removes all models except the application model from the modular ui reducer\n */\nexport const resetModularUI = (): ResetModularUIAction => ({\n type: \"MODULARUI/RESET\",\n});\n\n/**\n */\nexport const updateStatus = (\n key: string,\n status: $Keys<typeof MODULARUI_STATUS>,\n): UpdateStatusAction => ({\n type: \"MODULARUI/STATUS\",\n payload: { key, status },\n});\n\n/**\n */\nconst loadModelSuccessAction = (\n key: string,\n model: ModularUIModel,\n updateHandler: UpdateHandler | void,\n): UpdateModelAction | SetModelAction => {\n if (updateHandler) {\n return updateModel(updateHandler(model));\n }\n return setModel(key, model);\n};\n\n/**\n * This action is handled by the modularui middleware\n */\nexport const loadModel = (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n): ModularUIAction => ({\n type: \"MODULARUI/FETCH\",\n payload: {\n key,\n origin: options?.origin,\n contextPath: options?.contextPath,\n href:\n href instanceof Href\n ? href\n : new Href(href, \"\", {\n origin: options?.origin,\n contextPath: options?.contextPath,\n }),\n method: options?.method ?? HTTP_METHODS.GET,\n data: options?.data,\n locale: options?.locale ?? \"en\",\n childmodels: options?.childmodels,\n targetModel: options?.targetModel,\n forceTargetModel: options?.forceTargetModel,\n cache: options?.cache,\n /**\n */\n successAction: (model) =>\n loadModelSuccessAction(key, model, options?.updateHandler),\n /**\n */\n errorAction: (error) => {\n const errorResponse = new ErrorResponse(error, key, {\n origin: options?.origin,\n contextPath: options?.contextPath,\n });\n if (errorResponse.isChangePassword) {\n return {\n type: \"NO_ACTION\",\n };\n } else if (errorResponse.isResourceNotFoundAfterReload) {\n return removeModelByKey(key);\n }\n\n return updateStatus(key, MODULARUI_STATUS.ERROR);\n },\n },\n});\n\n/**\n */\nexport const loadModularUI =\n (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions,\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(startProgress());\n\n const loadModelPromise = dispatch(loadModel(key, href, options));\n\n return Promise.resolve(loadModelPromise)\n .then(() => dispatch(finishProgress()))\n .catch((error) => dispatch(handleError(error)));\n };\n\n/**\n */\nexport const reloadModel = (\n model: ModularUIModel,\n options?: RequestModularUIOptions,\n): ThunkAction =>\n loadModularUI(model.connectKey, model.selfhref, {\n ...options,\n isReload: true,\n });\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -267,31 +267,48 @@ class DatetimeAttributeModel extends StringAttributeModel {
|
|
|
267
267
|
|
|
268
268
|
/**
|
|
269
269
|
*/
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
if (this._dateInputFormat) {
|
|
276
|
-
return this._dateInputFormat;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
// remove time and offset tokens
|
|
280
|
-
const charsToRemove = "HhaKmsSzXxO:";
|
|
270
|
+
extractDateInputFormat(): string {
|
|
271
|
+
const dateEraChars = new Set("yMLdQDEewGu");
|
|
272
|
+
const timeOffsetChars = new Set("HhaKmsSZzXxO");
|
|
281
273
|
|
|
274
|
+
const format = this.format;
|
|
282
275
|
let inputFormat = "";
|
|
276
|
+
|
|
283
277
|
let isInQuotes = false;
|
|
284
|
-
|
|
285
|
-
|
|
278
|
+
let keep = false;
|
|
279
|
+
|
|
280
|
+
for (let i = 0; i < format.length; i++) {
|
|
281
|
+
const prevChar = i > 0 ? format[i - 1] : "";
|
|
282
|
+
const nextChar = i < format.length ? format[i + 1] : "";
|
|
283
|
+
const char = format[i];
|
|
284
|
+
|
|
286
285
|
if (char === "'") {
|
|
287
|
-
isInQuotes = !isInQuotes;
|
|
286
|
+
isInQuotes = prevChar === "'" || nextChar === "'" || !isInQuotes;
|
|
287
|
+
} else if (!isInQuotes && dateEraChars.has(char)) {
|
|
288
|
+
keep = true;
|
|
289
|
+
} else if (!isInQuotes && timeOffsetChars.has(char)) {
|
|
290
|
+
keep = false;
|
|
288
291
|
}
|
|
289
|
-
|
|
292
|
+
|
|
293
|
+
if (keep) {
|
|
290
294
|
inputFormat += char;
|
|
291
295
|
}
|
|
292
296
|
}
|
|
293
297
|
|
|
294
|
-
|
|
298
|
+
return inputFormat.trim();
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
*/
|
|
303
|
+
get dateInputFormat(): string {
|
|
304
|
+
if (!this.hasDate) {
|
|
305
|
+
return "";
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
if (!this._dateInputFormat) {
|
|
309
|
+
this._dateInputFormat = this.extractDateInputFormat();
|
|
310
|
+
}
|
|
311
|
+
|
|
295
312
|
return this._dateInputFormat;
|
|
296
313
|
}
|
|
297
314
|
|
|
@@ -304,20 +304,42 @@ describe("datetimeAttributeModel with offset on", () => {
|
|
|
304
304
|
});
|
|
305
305
|
});
|
|
306
306
|
|
|
307
|
-
it("Date
|
|
308
|
-
const
|
|
307
|
+
it("Date formats", () => {
|
|
308
|
+
const datetime = new DatetimeAttributeModel(
|
|
309
309
|
{ key: "datetime", value: "1969-09-23T12:34:00+00:00" },
|
|
310
310
|
{
|
|
311
311
|
type: "datetime",
|
|
312
|
-
label: "Start date and time at company",
|
|
313
|
-
mandatory: false,
|
|
314
|
-
formatlabel: "dd-mm-yyyy hh:mm",
|
|
315
|
-
assistant: "The date and time of the first working day",
|
|
316
312
|
format: "dd-MM-yyyy HH:mm X",
|
|
317
313
|
},
|
|
318
314
|
);
|
|
319
315
|
|
|
320
|
-
expect(
|
|
321
|
-
expect(
|
|
316
|
+
expect(datetime.format).toBe("dd-MM-yyyy HH:mm X");
|
|
317
|
+
expect(datetime.dateInputFormat).toBe("dd-MM-yyyy");
|
|
318
|
+
expect(datetime.timeInputFormat).toBe("HH:mm");
|
|
319
|
+
expect(datetime.errorCollection.isEmpty).toBe(true);
|
|
320
|
+
|
|
321
|
+
const timestamp = new DatetimeAttributeModel(
|
|
322
|
+
{ key: "timestamp", value: "1969-09-23T12:34:00.010+00:00" },
|
|
323
|
+
{
|
|
324
|
+
type: "timestamp",
|
|
325
|
+
format: "dd-MM-yyyy HH:mm:ss.SSS X",
|
|
326
|
+
},
|
|
327
|
+
);
|
|
328
|
+
|
|
329
|
+
expect(timestamp.format).toBe("dd-MM-yyyy HH:mm:ss.SSS X");
|
|
330
|
+
expect(timestamp.dateInputFormat).toBe("dd-MM-yyyy");
|
|
331
|
+
expect(timestamp.timeInputFormat).toBe("HH:mm:ss.SSS");
|
|
332
|
+
|
|
333
|
+
const special = new DatetimeAttributeModel(
|
|
334
|
+
{ key: "timestamp", value: "1969-09-23T12:34:00.010+00:00" },
|
|
335
|
+
{
|
|
336
|
+
type: "timestamp",
|
|
337
|
+
format: "'special' do 'de' MMMM yyyy h 'o''clock'",
|
|
338
|
+
},
|
|
339
|
+
);
|
|
340
|
+
|
|
341
|
+
expect(special.format).toBe("'special' do 'de' MMMM yyyy h 'o''clock'");
|
|
342
|
+
expect(special.dateInputFormat).toBe("do 'de' MMMM yyyy");
|
|
343
|
+
// expect(special.timeInputFormat).toBe("HH:mm:ss.SSS");
|
|
322
344
|
});
|
|
323
345
|
});
|
|
@@ -158,18 +158,7 @@ export const loadModularUI =
|
|
|
158
158
|
href: Href | string,
|
|
159
159
|
options?: RequestModularUIOptions,
|
|
160
160
|
): ThunkAction =>
|
|
161
|
-
(dispatch: Dispatch
|
|
162
|
-
const modularuiStore = getState()?.modularui;
|
|
163
|
-
if (
|
|
164
|
-
modularuiStore &&
|
|
165
|
-
modularuiStore[key]?.status === MODULARUI_STATUS.LOADING
|
|
166
|
-
) {
|
|
167
|
-
// don't create duplicate requests during loading
|
|
168
|
-
return dispatch({
|
|
169
|
-
type: "NO_ACTION",
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
|
|
161
|
+
(dispatch: Dispatch) => {
|
|
173
162
|
dispatch(startProgress());
|
|
174
163
|
|
|
175
164
|
const loadModelPromise = dispatch(loadModel(key, href, options));
|