@beinformed/ui 1.13.0 → 1.13.4

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.
Files changed (123) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/esm/builder/mergeLayoutHintConfigurations.js +3 -3
  3. package/esm/builder/mergeLayoutHintConfigurations.js.map +1 -1
  4. package/esm/constants/LayoutHintConfig.js +9 -0
  5. package/esm/constants/LayoutHintConfig.js.map +1 -1
  6. package/esm/constants/LayoutHints.js +5 -0
  7. package/esm/constants/LayoutHints.js.map +1 -1
  8. package/esm/constants/Settings.js +2 -1
  9. package/esm/constants/Settings.js.map +1 -1
  10. package/esm/hooks/useContent.js +2 -2
  11. package/esm/hooks/useContent.js.map +1 -1
  12. package/esm/hooks/useDeepCompareEffect.js +2 -1
  13. package/esm/hooks/useDeepCompareEffect.js.map +1 -1
  14. package/esm/hooks/useForm.js.map +1 -1
  15. package/esm/hooks/useModal.js +2 -2
  16. package/esm/hooks/useModal.js.map +1 -1
  17. package/esm/hooks/useModularUI.js +0 -1
  18. package/esm/hooks/useModularUI.js.map +1 -1
  19. package/esm/models/attributes/DatetimeAttributeModel.js +8 -3
  20. package/esm/models/attributes/DatetimeAttributeModel.js.map +1 -1
  21. package/esm/models/caseview/CaseViewModel.js +2 -1
  22. package/esm/models/caseview/CaseViewModel.js.map +1 -1
  23. package/esm/models/list/ListItemCollection.js +38 -0
  24. package/esm/models/list/ListItemCollection.js.map +1 -1
  25. package/esm/models/list/ListItemModel.js +14 -2
  26. package/esm/models/list/ListItemModel.js.map +1 -1
  27. package/esm/models/list/ListModel.js +16 -69
  28. package/esm/models/list/ListModel.js.map +1 -1
  29. package/esm/modularui/ModularUIRequest.js +69 -47
  30. package/esm/modularui/ModularUIRequest.js.map +1 -1
  31. package/esm/utils/browser/Cookies.js +18 -32
  32. package/esm/utils/browser/Cookies.js.map +1 -1
  33. package/esm/utils/fetch/xhr.js +4 -2
  34. package/esm/utils/fetch/xhr.js.map +1 -1
  35. package/lib/builder/mergeLayoutHintConfigurations.js +3 -3
  36. package/lib/builder/mergeLayoutHintConfigurations.js.flow +3 -3
  37. package/lib/builder/mergeLayoutHintConfigurations.js.map +1 -1
  38. package/lib/constants/LayoutHintConfig.js +9 -0
  39. package/lib/constants/LayoutHintConfig.js.flow +9 -0
  40. package/lib/constants/LayoutHintConfig.js.map +1 -1
  41. package/lib/constants/LayoutHints.js +8 -2
  42. package/lib/constants/LayoutHints.js.flow +4 -0
  43. package/lib/constants/LayoutHints.js.map +1 -1
  44. package/lib/constants/Settings.js +2 -1
  45. package/lib/constants/Settings.js.flow +2 -0
  46. package/lib/constants/Settings.js.map +1 -1
  47. package/lib/hooks/useContent.js +2 -2
  48. package/lib/hooks/useContent.js.flow +2 -2
  49. package/lib/hooks/useContent.js.map +1 -1
  50. package/lib/hooks/useDeepCompareEffect.js +2 -1
  51. package/lib/hooks/useDeepCompareEffect.js.flow +1 -1
  52. package/lib/hooks/useDeepCompareEffect.js.map +1 -1
  53. package/lib/hooks/useForm.js.flow +1 -2
  54. package/lib/hooks/useForm.js.map +1 -1
  55. package/lib/hooks/useModal.js +2 -2
  56. package/lib/hooks/useModal.js.flow +1 -1
  57. package/lib/hooks/useModal.js.map +1 -1
  58. package/lib/hooks/useModularUI.js +0 -1
  59. package/lib/hooks/useModularUI.js.flow +0 -2
  60. package/lib/hooks/useModularUI.js.map +1 -1
  61. package/lib/models/attributes/DatetimeAttributeModel.js +9 -3
  62. package/lib/models/attributes/DatetimeAttributeModel.js.flow +7 -4
  63. package/lib/models/attributes/DatetimeAttributeModel.js.map +1 -1
  64. package/lib/models/attributes/__tests__/StringAttributeModel.spec.js.flow +1 -1
  65. package/lib/models/base/__tests__/BaseModel.spec.js.flow +5 -5
  66. package/lib/models/caseview/CaseViewModel.js +3 -1
  67. package/lib/models/caseview/CaseViewModel.js.flow +3 -1
  68. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  69. package/lib/models/caseview/__tests__/CaseViewModel.spec.js.flow +38 -1
  70. package/lib/models/list/ListItemCollection.js +40 -0
  71. package/lib/models/list/ListItemCollection.js.flow +38 -1
  72. package/lib/models/list/ListItemCollection.js.map +1 -1
  73. package/lib/models/list/ListItemModel.js +14 -2
  74. package/lib/models/list/ListItemModel.js.flow +15 -0
  75. package/lib/models/list/ListItemModel.js.map +1 -1
  76. package/lib/models/list/ListModel.js +15 -70
  77. package/lib/models/list/ListModel.js.flow +1 -45
  78. package/lib/models/list/ListModel.js.map +1 -1
  79. package/lib/models/list/__tests__/ListItemCollection.spec.js.flow +22 -0
  80. package/lib/models/list/__tests__/ListModel.spec.js.flow +0 -2
  81. package/lib/models/panels/__tests__/GroupingPanelModel.spec.js.flow +38 -21
  82. package/lib/models/process/__tests__/ProcessStatusSettingsModel.spec.js.flow +11 -0
  83. package/lib/modularui/ModularUIRequest.js +67 -47
  84. package/lib/modularui/ModularUIRequest.js.flow +38 -22
  85. package/lib/modularui/ModularUIRequest.js.map +1 -1
  86. package/lib/utils/browser/Cookies.js +18 -31
  87. package/lib/utils/browser/Cookies.js.flow +22 -28
  88. package/lib/utils/browser/Cookies.js.map +1 -1
  89. package/lib/utils/browser/__tests__/Cookies.spec.js.flow +51 -0
  90. package/lib/utils/fetch/xhr.js +5 -2
  91. package/lib/utils/fetch/xhr.js.flow +6 -2
  92. package/lib/utils/fetch/xhr.js.map +1 -1
  93. package/package.json +30 -28
  94. package/src/builder/mergeLayoutHintConfigurations.js +3 -3
  95. package/src/constants/LayoutHintConfig.js +9 -0
  96. package/src/constants/LayoutHints.js +4 -0
  97. package/src/constants/Settings.js +2 -0
  98. package/src/hooks/useContent.js +2 -2
  99. package/src/hooks/useDeepCompareEffect.js +1 -1
  100. package/src/hooks/useForm.js +1 -2
  101. package/src/hooks/useModal.js +1 -1
  102. package/src/hooks/useModularUI.js +0 -2
  103. package/src/models/attributes/DatetimeAttributeModel.js +7 -4
  104. package/src/models/attributes/__tests__/StringAttributeModel.spec.js +1 -1
  105. package/src/models/base/__tests__/BaseModel.spec.js +5 -5
  106. package/src/models/caseview/CaseViewModel.js +3 -1
  107. package/src/models/caseview/__tests__/CaseViewModel.spec.js +38 -1
  108. package/src/models/caseview/__tests__/caseview.json +14 -3
  109. package/src/models/caseview/__tests__/caseviewContributions.json +48 -77
  110. package/src/models/caseview/__tests__/caseview_local_taskgroup.json +57 -0
  111. package/src/models/list/ListItemCollection.js +38 -1
  112. package/src/models/list/ListItemModel.js +15 -0
  113. package/src/models/list/ListModel.js +1 -45
  114. package/src/models/list/__tests__/ListItemCollection.spec.js +22 -0
  115. package/src/models/list/__tests__/ListModel.spec.js +0 -2
  116. package/src/models/panels/__tests__/GroupingPanelModel.spec.js +38 -21
  117. package/src/models/panels/__tests__/groupingPanel.json +20 -1
  118. package/src/models/panels/__tests__/groupingPanelContributions.json +14 -1
  119. package/src/models/process/__tests__/ProcessStatusSettingsModel.spec.js +11 -0
  120. package/src/modularui/ModularUIRequest.js +38 -22
  121. package/src/utils/browser/Cookies.js +22 -28
  122. package/src/utils/browser/__tests__/Cookies.spec.js +51 -0
  123. package/src/utils/fetch/xhr.js +6 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/attributes/DatetimeAttributeModel.js"],"names":["PRODUCT_DEFAULT_DATE_FORMAT","DatetimeAttributeModel","attribute","attributeContributions","updateInitValue","type","TimeUtil","TimestampUtil","DateTimeUtil","DateUtil","value","data","length","split","hasTime","getTimeValue","timeValue","timeInputFormat","toLowerCase","formatUtil","setHour","setMinute","setSecond","setMilliseconds","getInitValue","_initvalue","_inputvalue","getInitialInputValue","_value","initValue","toFormat","inputFormat","getContribution","toString","getInputValue","validate","toISO","format","convertFormat","dateInputFormat","hasDate","dateInputFormatSetting","dateFormat","replace","readonlyFormatSetting","_placeholder","formatLabel","placeholder","timeFormatParts","push","timeFormat","join","hasFormat","ISO_DATE_FORMAT","dateReadonlyFormat","dateTimeReadonlyFormat","timeReadonlyFormat","formatValue","error","id","message","properties","_errorCollection","addServerError","DateTimeDateFormatConstraint","DateTimeTimeFormatConstraint","DatetimeFormatConstraint","constraints","ConstraintCollection","add","getFormatConstraint","mindate","maxdate","DateBoundaryConstraint","ATTRIBUTE_WIDTH","SMALL","MEDIUM","contributions","StringAttributeModel"],"mappings":"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","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 { ATTRIBUTE_WIDTH, ISO_DATE_FORMAT } from \"../../constants\";\nimport { getSetting } from \"../../constants/Settings\";\n\nimport type { FormErrorAnchor, IConstraintModel } from \"../types\";\n\n// date format of default\nconst PRODUCT_DEFAULT_DATE_FORMAT = \"dd-MM-yyyy\";\n\n/**\n */\nclass DatetimeAttributeModel extends StringAttributeModel {\n /**\n */\n constructor(attribute: Object, attributeContributions: Object) {\n super(attribute, attributeContributions);\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 = value.split(\".\")[0];\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 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 operator(): string {\n return this.getContribution(\"operator\", \"\");\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 inputFormat(): 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 dateInputFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n // setting for date input\n const dateInputFormatSetting = getSetting(\"DATE_INPUT_FORMAT\", \"\");\n\n if (dateInputFormatSetting) {\n return dateInputFormatSetting;\n }\n\n let format = this.format;\n\n let dateFormat = this.hasTime\n ? format.replace(this.timeInputFormat, \"\").trim()\n : format;\n\n return dateFormat;\n }\n\n /**\n */\n get dateReadonlyFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n let format = this.format;\n\n let dateFormat = this.hasTime\n ? format.replace(this.timeInputFormat, \"\").trim()\n : format;\n\n const readonlyFormatSetting = getSetting(\"DATE_READONLY_FORMAT\", \"\");\n\n if (dateFormat === PRODUCT_DEFAULT_DATE_FORMAT && readonlyFormatSetting) {\n dateFormat = readonlyFormatSetting;\n }\n\n return dateFormat;\n }\n\n /**\n * return attribute placeholder or, if DATE_INPUT_FORMAT setting is used, lowercased setting, otherwise 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 dateInputFormatSetting = getSetting(\"DATE_INPUT_FORMAT\", \"\");\n\n if (dateInputFormatSetting) {\n return dateInputFormatSetting.toLowerCase();\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 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 return `${timeFormat} a`;\n }\n return timeFormat;\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 // format value in readonly rendering\n /**\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 if (this.hasDate && this.hasTime) {\n const dateTimeReadonlyFormat = `${this.dateReadonlyFormat} ${this.timeReadonlyFormat}`;\n return this.formatUtil.toFormat(value, dateTimeReadonlyFormat);\n }\n\n if (this.type === \"date\") {\n return this.formatUtil.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 * 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 } = error;\n if (properties && has(properties, \"format\") && this.formatLabel) {\n properties.format = this.formatLabel;\n }\n\n this._errorCollection.addServerError(id, message, properties);\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\nexport default DatetimeAttributeModel;\n"],"file":"DatetimeAttributeModel.js"}
1
+ {"version":3,"sources":["../../../src/models/attributes/DatetimeAttributeModel.js"],"names":["PRODUCT_DEFAULT_DATE_FORMAT","DatetimeAttributeModel","attribute","attributeContributions","updateInitValue","type","TimeUtil","TimestampUtil","DateTimeUtil","DateUtil","value","data","length","split","hasTime","getTimeValue","timeValue","timeInputFormat","toLowerCase","formatUtil","setHour","setMinute","setSecond","setMilliseconds","getInitValue","_initvalue","_inputvalue","getInitialInputValue","_value","initValue","toFormat","inputFormat","getContribution","toString","getInputValue","validate","toISO","format","convertFormat","dateInputFormat","hasDate","ignoreFormatSetting","layouthint","has","IGNORE_FORMAT_SETTING","dateInputFormatSetting","dateFormat","replace","readonlyFormatSetting","_placeholder","formatLabel","placeholder","timeFormatParts","push","timeFormat","join","hasFormat","ISO_DATE_FORMAT","dateReadonlyFormat","dateTimeReadonlyFormat","timeReadonlyFormat","formatValue","error","id","message","properties","_errorCollection","addServerError","DateTimeDateFormatConstraint","DateTimeTimeFormatConstraint","DatetimeFormatConstraint","constraints","ConstraintCollection","add","getFormatConstraint","mindate","maxdate","DateBoundaryConstraint","ATTRIBUTE_WIDTH","SMALL","MEDIUM","contributions","StringAttributeModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AAOA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;AAIA;AACA,IAAMA,2BAA2B,GAAG,YAApC;AAEA;AACA;;IACMC,sB;;;;;AACJ;AACF;AACE,kCAAYC,SAAZ,EAA+BC,sBAA/B,EAA+D;AAAA;;AAAA;AAC7D,8BAAMD,SAAN,EAAiBC,sBAAjB;;AAEA,UAAKC,eAAL;;AAH6D;AAI9D;AAED;AACF;;;;;;AAOE;AACF;AACE,mBAIoB;AAClB,cAAQ,KAAKC,IAAb;AACE,aAAK,MAAL;AACE,iBAAOC,sBAAP;;AACF,aAAK,WAAL;AACE,iBAAOC,2BAAP;;AACF,aAAK,UAAL;AACE,iBAAOC,0BAAP;;AACF;AACE,iBAAOC,sBAAP;AARJ;AAUD;AAED;AACF;;;;WACE,wBAA8B;AAC5B,UAAIC,KAAK,GAAG,KAAKC,IAAL,CAAUD,KAAtB;;AACA,UAAIA,KAAK,IAAI,IAAb,EAAmB;AACjB,YAAI,KAAKL,IAAL,KAAc,MAAd,IAAwBK,KAAK,CAACE,MAAN,KAAiB,CAA7C,EAAgD;AAC9CF,UAAAA,KAAK,aAAMA,KAAN,QAAL;AACD,SAHgB,CAKjB;;;AACA,YAAI,KAAKL,IAAL,KAAc,UAAd,IAA4B,uBAAAK,KAAK,MAAL,CAAAA,KAAK,EAAU,GAAV,CAArC,EAAqD;AACnDA,UAAAA,KAAK,GAAGA,KAAK,CAACG,KAAN,CAAY,GAAZ,EAAiB,CAAjB,CAAR;AACD;;AAED,YAAI,KAAKC,OAAT,EAAkB;AAChBJ,UAAAA,KAAK,GAAG,KAAKK,YAAL,CAAkBL,KAAlB,CAAR;AACD;AACF;;AAED,aAAOA,KAAP;AACD;AAED;AACF;;;;WACE,sBAAaA,KAAb,EAAoC;AAAA;;AAClC,UAAIM,SAAS,GAAGN,KAAhB;;AACA,UAAI,CAAC,uCAAKO,eAAL,CAAqBC,WAArB,mBAA4C,GAA5C,CAAL,EAAuD;AACrDF,QAAAA,SAAS,GAAG,KAAKG,UAAL,CAAgBC,OAAhB,CAAwBV,KAAxB,EAA+B,CAA/B,CAAZ;AACD;;AACD,UAAI,CAAC,wCAAKO,eAAL,kBAA8B,GAA9B,CAAL,EAAyC;AACvCD,QAAAA,SAAS,GAAG,KAAKG,UAAL,CAAgBE,SAAhB,CAA0BX,KAA1B,EAAiC,CAAjC,CAAZ;AACD;;AACD,UAAI,CAAC,wCAAKO,eAAL,kBAA8B,GAA9B,CAAL,EAAyC;AACvCD,QAAAA,SAAS,GAAG,KAAKG,UAAL,CAAgBG,SAAhB,CAA0BZ,KAA1B,EAAiC,CAAjC,CAAZ;AACD;;AACD,UAAI,KAAKL,IAAL,KAAc,WAAd,IAA6B,CAAC,wCAAKY,eAAL,kBAA8B,GAA9B,CAAlC,EAAsE;AACpED,QAAAA,SAAS,GAAG,KAAKG,UAAL,CAAgBI,eAAhB,CAAgCb,KAAhC,EAAuC,CAAvC,CAAZ;AACD;;AACD,aAAOM,SAAP;AACD;AAED;AACF;AACA;;;;WACE,2BAAkB;AAChB,UAAMN,KAAK,GAAG,KAAKc,YAAL,EAAd;;AACA,UAAId,KAAK,IAAI,IAAb,EAAmB;AACjB,aAAKe,UAAL,GAAkBf,KAAlB;AACA,aAAKgB,WAAL,GAAmB,KAAKC,oBAAL,CAA0BjB,KAA1B,CAAnB;AACA,aAAKkB,MAAL,GAAclB,KAAd;AACD;AACF;AAED;AACF;AACA;;;;WACE,8BAAqBA,KAArB,EAA6C;AAC3C,UAAI,CAACA,KAAL,EAAY;AACV,eAAO,EAAP;AACD;;AAED,UAAImB,SAAS,GAAGnB,KAAhB;;AACA,UAAI,KAAKL,IAAL,KAAc,MAAd,IAAwBK,KAAK,CAACE,MAAN,KAAiB,CAA7C,EAAgD;AAC9CiB,QAAAA,SAAS,aAAMnB,KAAN,QAAT;AACD;;AAED,aAAO,KAAKS,UAAL,CAAgBW,QAAhB,CAAyBD,SAAzB,EAAoC,KAAKE,WAAzC,CAAP;AACD;AAED;AACF;AACA;;;;SACE,eAAmB;AACjB,aAAO,KAAKC,eAAL,CAAqB,MAArB,EAA6B,MAA7B,CAAP;AACD;AAED;AACF;AACA;;;;WACE,yBAAwB;AACtB,aAAO,KAAKN,WAAL,GAAmB,KAAKA,WAAL,CAAiBO,QAAjB,EAAnB,GAAiD,EAAxD;AACD;AAED;AACF;AACA;;;;SACE,eAAyB;AACvB,aAAO,KAAKC,aAAL,EAAP;AACD;AAED;AACF;AACA;;SACE,aAAexB,KAAf,EAA8B;AAC5B,WAAKyB,QAAL,CAAczB,KAAd;AAEA,WAAKgB,WAAL,GAAmBhB,KAAnB;AAEA,WAAKA,KAAL,GACEA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,EAA5B,GACI,KAAKS,UAAL,CAAgBiB,KAAhB,CAAsB1B,KAAtB,EAA6B,KAAKqB,WAAlC,CADJ,GAEI,IAHN;AAID;AAED;AACF;AACA;;;;SACE,eAAqB;AACnB,UAAMM,MAAM,GAAG,KAAKL,eAAL,CAAqB,QAArB,EAA+B,EAA/B,CAAf;AACA,aAAO,KAAKb,UAAL,CAAgBmB,aAAhB,CAA8BD,MAA9B,CAAP;AACD;AAED;AACF;;;;SACE,eAAuB;AACrB,aAAO,KAAKL,eAAL,CAAqB,UAArB,EAAiC,EAAjC,CAAP;AACD;AAED;AACF;;;;SACE,eAAuB;AACrB,aACE,KAAK3B,IAAL,KAAc,MAAd,IACA,KAAKA,IAAL,KAAc,UADd,IAEA,KAAKA,IAAL,KAAc,WAHhB;AAKD;AAED;AACF;;;;SACE,eAAuB;AACrB,aACE,KAAKA,IAAL,KAAc,MAAd,IACA,KAAKA,IAAL,KAAc,UADd,IAEA,KAAKA,IAAL,KAAc,WAHhB;AAKD;AAED;AACF;;;;SACE,eAA0B;AACxB,cAAQ,KAAKA,IAAb;AACE,aAAK,MAAL;AACE,iBAAO,KAAKkC,eAAL,CAAqBrB,WAArB,EAAP;;AACF,aAAK,MAAL;AACE,iBAAO,KAAKD,eAAL,CAAqBC,WAArB,EAAP;;AACF;AACE,iBAAO,KAAKmB,MAAL,CAAYnB,WAAZ,EAAP;AANJ;AAQD;AAED;AACF;;;;SACE,eAA0B;AACxB,UAAI,KAAKsB,OAAL,IAAgB,KAAK1B,OAAzB,EAAkC;AAAA;;AAChC,eAAO,0EAAG,KAAKyB,eAAR,wBAA2B,KAAKtB,eAAhC,kBAAP;AACD;;AAED,UAAI,KAAKuB,OAAT,EAAkB;AAChB,eAAO,KAAKD,eAAZ;AACD;;AAED,UAAI,KAAKzB,OAAT,EAAkB;AAChB,eAAO,KAAKG,eAAZ;AACD;;AAED,aAAO,EAAP;AACD;AAED;AACF;;;;SACE,eAA8B;AAAA;;AAC5B,UAAI,CAAC,KAAKuB,OAAV,EAAmB;AACjB,eAAO,EAAP;AACD,OAH2B,CAK5B;;;AACA,UAAMC,mBAAmB,GAAG,KAAKC,UAAL,CAAgBC,GAAhB,CAAoBC,kCAApB,CAA5B;;AACA,UAAI,CAACH,mBAAL,EAA0B;AACxB,YAAMI,sBAAsB,GAAG,0BAAW,mBAAX,EAAgC,EAAhC,CAA/B;;AACA,YAAIA,sBAAJ,EAA4B;AAC1B,iBAAOA,sBAAP;AACD;AACF;;AAED,UAAIR,MAAM,GAAG,KAAKA,MAAlB;AAEA,UAAIS,UAAU,GAAG,KAAKhC,OAAL,GACb,+BAAAuB,MAAM,CAACU,OAAP,CAAe,KAAK9B,eAApB,EAAqC,EAArC,kBADa,GAEboB,MAFJ;AAIA,aAAOS,UAAP;AACD;AAED;AACF;;;;SACE,eAAiC;AAAA;;AAC/B,UAAI,CAAC,KAAKN,OAAV,EAAmB;AACjB,eAAO,EAAP;AACD;;AAED,UAAIH,MAAM,GAAG,KAAKA,MAAlB;AAEA,UAAIS,UAAU,GAAG,KAAKhC,OAAL,GACb,+BAAAuB,MAAM,CAACU,OAAP,CAAe,KAAK9B,eAApB,EAAqC,EAArC,kBADa,GAEboB,MAFJ;AAIA,UAAMW,qBAAqB,GAAG,0BAAW,sBAAX,EAAmC,EAAnC,CAA9B;;AAEA,UAAIF,UAAU,KAAK9C,2BAAf,IAA8CgD,qBAAlD,EAAyE;AACvEF,QAAAA,UAAU,GAAGE,qBAAb;AACD;;AAED,aAAOF,UAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA0B;AACxB,UAAI,KAAKG,YAAL,KAAsB,EAA1B,EAA8B;AAC5B,eAAO,KAAKA,YAAZ;AACD;;AAED,UAAMJ,sBAAsB,GAAG,0BAAW,mBAAX,EAAgC,EAAhC,CAA/B;;AAEA,UAAIA,sBAAJ,EAA4B;AAC1B,eAAOA,sBAAsB,CAAC3B,WAAvB,EAAP;AACD;;AAED,UAAMgC,WAAW,GAAG,KAAKlB,eAAL,CAAqB,aAArB,EAAoC,EAApC,CAApB;;AAEA,UAAI,KAAKQ,OAAL,IAAgB,KAAK1B,OAArB,IAAgC,uBAAAoC,WAAW,MAAX,CAAAA,WAAW,EAAU,GAAV,CAA/C,EAA+D;AAC7D;AACA,eAAOA,WAAW,CAACrC,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,CAAP;AACD;;AAED,aAAOqC,WAAP;AACD;AAED;AACF;AACA;;SACE,aAAgBC,WAAhB,EAAqC;AACnC,WAAKF,YAAL,GAAoBE,WAApB;AACD;AAED;AACF;;;;SACE,eAA8B;AAC5B,UAAI,CAAC,KAAKrC,OAAV,EAAmB;AACjB,eAAO,EAAP;AACD;;AAED,UAAMuB,MAAM,GAAG,KAAKA,MAApB;AAEA,UAAIe,eAAe,GAAG,EAAtB;;AACA,UAAI,uBAAAf,MAAM,MAAN,CAAAA,MAAM,EAAU,GAAV,CAAV,EAA0B;AACxBe,QAAAA,eAAe,CAACC,IAAhB,CAAqB,IAArB;AACD,OAFD,MAEO,IAAI,uBAAAhB,MAAM,MAAN,CAAAA,MAAM,EAAU,GAAV,CAAV,EAA0B;AAC/Be,QAAAA,eAAe,CAACC,IAAhB,CAAqB,IAArB;AACD;;AACD,UAAI,uBAAAhB,MAAM,MAAN,CAAAA,MAAM,EAAU,GAAV,CAAV,EAA0B;AACxBe,QAAAA,eAAe,CAACC,IAAhB,CAAqB,IAArB;AACD;;AACD,UAAI,uBAAAhB,MAAM,MAAN,CAAAA,MAAM,EAAU,GAAV,CAAV,EAA0B;AACxBe,QAAAA,eAAe,CAACC,IAAhB,CAAqB,IAArB;AACD;;AAED,UAAIC,UAAU,GAAGF,eAAe,CAACG,IAAhB,CAAqB,GAArB,CAAjB;;AACA,UAAI,uBAAAlB,MAAM,MAAN,CAAAA,MAAM,EAAU,GAAV,CAAV,EAA0B;AACxBiB,QAAAA,UAAU,aAAMA,UAAN,SAAV;AACD;;AACD,UAAI,uBAAAjB,MAAM,MAAN,CAAAA,MAAM,EAAU,GAAV,CAAV,EAA0B;AACxB,yBAAUiB,UAAV;AACD;;AACD,aAAOA,UAAP;AACD;AAED;AACF;;;;SACE,eAAiC;AAC/B,UAAI,CAAC,KAAKxC,OAAV,EAAmB;AACjB,eAAO,EAAP;AACD;;AAED,aAAO,KAAKG,eAAZ;AACD;AAED;AACF;;;;SACE,eAA6B;AAC3B,aAAO,OAAO,KAAKP,KAAZ,KAAsB,QAAtB,IAAkC,KAAK6B,eAAL,KAAyB,EAA3D,GACH,KAAKpB,UAAL,CAAgBW,QAAhB,CAAyB,KAAKpB,KAA9B,EAAqC,KAAK6B,eAA1C,CADG,GAEH,EAFJ;AAGD;AAED;AACF;;;;SACE,eAA6B;AAC3B,aAAO,OAAO,KAAK7B,KAAZ,KAAsB,QAAtB,IAAkC,KAAKO,eAAL,KAAyB,EAA3D,GACH,KAAKE,UAAL,CAAgBW,QAAhB,CAAyB,KAAKpB,KAA9B,EAAqC,KAAKO,eAA1C,CADG,GAEH,EAFJ;AAGD,K,CAED;;AACA;AACF;;;;WACE,qBAAYP,KAAZ,EAAoC;AAClC,UAAIA,KAAK,IAAI,IAAT,IAAiBA,KAAK,CAACuB,QAAN,OAAqB,EAA1C,EAA8C;AAC5C,eAAO,EAAP;AACD,OAHiC,CAKlC;;;AACA,UACE,CAAC,KAAK5B,IAAL,KAAc,UAAd,IAA4B,KAAKA,IAAL,KAAc,WAA3C,KACAI,uBAAS+C,SAAT,CAAmB9C,KAAnB,EAA0B+C,0BAA1B,CAFF,EAGE;AACA,eAAOhD,uBAASqB,QAAT,CAAkBpB,KAAlB,EAAyB,KAAKgD,kBAA9B,CAAP;AACD;;AAED,UAAI,KAAKlB,OAAL,IAAgB,KAAK1B,OAAzB,EAAkC;AAAA;;AAChC,YAAM6C,sBAAsB,8CAAM,KAAKD,kBAAX,wBAAiC,KAAKE,kBAAtC,CAA5B;AACA,eAAO,KAAKzC,UAAL,CAAgBW,QAAhB,CAAyBpB,KAAzB,EAAgCiD,sBAAhC,CAAP;AACD;;AAED,UAAI,KAAKtD,IAAL,KAAc,MAAlB,EAA0B;AACxB,eAAO,KAAKc,UAAL,CAAgBW,QAAhB,CAAyBpB,KAAzB,EAAgC,KAAKgD,kBAArC,CAAP;AACD;;AAED,aAAO,KAAKvC,UAAL,CAAgBW,QAAhB,CAAyBpB,KAAzB,EAAgC,KAAK2B,MAArC,CAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA4B;AAC1B,UAAI,OAAO,KAAK3B,KAAZ,KAAsB,QAA1B,EAAoC;AAClC,eAAO,KAAKmD,WAAL,CAAiB,KAAKnD,KAAL,CAAWuB,QAAX,EAAjB,CAAP;AACD;;AAED,aAAO,EAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA6B;AAC3B,aAAO,KAAKD,eAAL,CAAqB,SAArB,CAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA6B;AAC3B,aAAO,KAAKA,eAAL,CAAqB,SAArB,CAAP;AACD;AAED;AACF;AACA;;;;WACE,wBAAe8B,KAAf,EAAuC;AACrC,UAAQC,EAAR,GAAoCD,KAApC,CAAQC,EAAR;AAAA,UAAYC,OAAZ,GAAoCF,KAApC,CAAYE,OAAZ;AAAA,UAAqBC,UAArB,GAAoCH,KAApC,CAAqBG,UAArB;;AACA,UAAIA,UAAU,IAAI,kBAAIA,UAAJ,EAAgB,QAAhB,CAAd,IAA2C,KAAKf,WAApD,EAAiE;AAC/De,QAAAA,UAAU,CAAC5B,MAAX,GAAoB,KAAKa,WAAzB;AACD;;AAED,WAAKgB,gBAAL,CAAsBC,cAAtB,CAAqCJ,EAArC,EAAyCC,OAAzC,EAAkDC,UAAlD;AACD;AAED;AACF;;;;WACE,+BAAwC;AACtC,cAAQ,KAAK5D,IAAb;AACE,aAAK,MAAL;AACE,iBAAO,IAAI+D,qCAAJ,CACL,KAAK7B,eADA,EAEL,KAAKW,WAFA,CAAP;;AAIF,aAAK,MAAL;AACE,iBAAO,IAAImB,qCAAJ,CACL,KAAKpD,eADA,EAEL,KAAKiC,WAFA,CAAP;;AAIF;AACE,iBAAO,IAAIoB,iCAAJ,CACL,KAAKjE,IADA,EAEL,KAAK0B,WAFA,EAGL,KAAKmB,WAHA,CAAP;AAZJ;AAkBD;AAED;AACF;AACA;;;;WACE,0BAAuC;AACrC,UAAMqB,WAAW,GAAG,IAAIC,6BAAJ,EAApB;AAEAD,MAAAA,WAAW,CAACE,GAAZ,CAAgB,KAAKC,mBAAL,EAAhB;;AAEA,UAAI,KAAKC,OAAL,IAAgB,KAAKC,OAAzB,EAAkC;AAChCL,QAAAA,WAAW,CAACE,GAAZ,CACE,IAAII,+BAAJ,CACE,KAAKxE,IADP,EAEE,KAAKsE,OAFP,EAGE,KAAKC,OAHP,EAIE,KAAK7C,WAJP,CADF;AAQD;;AAED,aAAOwC,WAAP;AACD;AAED;AACF;;;;SACE,eAAmD;AACjD,UAAI,KAAKlE,IAAL,KAAc,MAAd,IAAwB,KAAKA,IAAL,KAAc,MAA1C,EAAkD;AAChD,eAAOyE,2BAAgBC,KAAvB;AACD;;AAED,aAAOD,2BAAgBE,MAAvB;AACD;;;WAhcD,2BAAyBC,aAAzB,EAAyD;AAAA;;AACvD,aAAO,qCAAC,MAAD,EAAS,MAAT,EAAiB,UAAjB,EAA6B,WAA7B,oBACLA,aAAa,CAAC5E,IADT,CAAP;AAGD;;;EAfkC6E,8B;;eA8ctBjF,sB","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 { ATTRIBUTE_WIDTH, ISO_DATE_FORMAT } from \"../../constants\";\nimport { getSetting } from \"../../constants/Settings\";\nimport { IGNORE_FORMAT_SETTING } from \"../../constants/LayoutHints\";\n\nimport type { FormErrorAnchor, IConstraintModel } from \"../types\";\n\n// date format of default\nconst PRODUCT_DEFAULT_DATE_FORMAT = \"dd-MM-yyyy\";\n\n/**\n */\nclass DatetimeAttributeModel extends StringAttributeModel {\n /**\n */\n constructor(attribute: Object, attributeContributions: Object) {\n super(attribute, attributeContributions);\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 = value.split(\".\")[0];\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 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 operator(): string {\n return this.getContribution(\"operator\", \"\");\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 inputFormat(): 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 dateInputFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n // setting for date input\n const ignoreFormatSetting = this.layouthint.has(IGNORE_FORMAT_SETTING);\n if (!ignoreFormatSetting) {\n const dateInputFormatSetting = getSetting(\"DATE_INPUT_FORMAT\", \"\");\n if (dateInputFormatSetting) {\n return dateInputFormatSetting;\n }\n }\n\n let format = this.format;\n\n let dateFormat = this.hasTime\n ? format.replace(this.timeInputFormat, \"\").trim()\n : format;\n\n return dateFormat;\n }\n\n /**\n */\n get dateReadonlyFormat(): string {\n if (!this.hasDate) {\n return \"\";\n }\n\n let format = this.format;\n\n let dateFormat = this.hasTime\n ? format.replace(this.timeInputFormat, \"\").trim()\n : format;\n\n const readonlyFormatSetting = getSetting(\"DATE_READONLY_FORMAT\", \"\");\n\n if (dateFormat === PRODUCT_DEFAULT_DATE_FORMAT && readonlyFormatSetting) {\n dateFormat = readonlyFormatSetting;\n }\n\n return dateFormat;\n }\n\n /**\n * return attribute placeholder or, if DATE_INPUT_FORMAT setting is used, lowercased setting, otherwise 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 dateInputFormatSetting = getSetting(\"DATE_INPUT_FORMAT\", \"\");\n\n if (dateInputFormatSetting) {\n return dateInputFormatSetting.toLowerCase();\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 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 return `${timeFormat} a`;\n }\n return timeFormat;\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 // format value in readonly rendering\n /**\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 if (this.hasDate && this.hasTime) {\n const dateTimeReadonlyFormat = `${this.dateReadonlyFormat} ${this.timeReadonlyFormat}`;\n return this.formatUtil.toFormat(value, dateTimeReadonlyFormat);\n }\n\n if (this.type === \"date\") {\n return this.formatUtil.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 * 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 } = error;\n if (properties && has(properties, \"format\") && this.formatLabel) {\n properties.format = this.formatLabel;\n }\n\n this._errorCollection.addServerError(id, message, properties);\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\nexport default DatetimeAttributeModel;\n"],"file":"DatetimeAttributeModel.js"}
@@ -110,6 +110,6 @@ describe("stringAttributeModel", () => {
110
110
 
111
111
  const clonedAttribute = attribute.clone();
112
112
 
113
- expect(attribute === clonedAttribute).toBe(false);
113
+ expect(attribute).not.toBe(clonedAttribute);
114
114
  });
115
115
  });
@@ -73,13 +73,13 @@ describe("baseModel", () => {
73
73
  });
74
74
 
75
75
  const shallowClone = model.clone();
76
- expect(model === shallowClone).toBe(false);
77
- expect(model.data.prop === shallowClone.data.prop).toBe(true);
78
- expect(model.data.prop.child === shallowClone.data.prop.child).toBe(true);
76
+ expect(model).not.toBe(shallowClone);
77
+ expect(model.data.prop).toBe(shallowClone.data.prop);
78
+ expect(model.data.prop.child).toBe(shallowClone.data.prop.child);
79
79
 
80
80
  const deepClone = model.clone(true);
81
- expect(model === deepClone).toBe(false);
81
+ expect(model).not.toBe(deepClone);
82
82
  expect(model.data.prop === deepClone.data.prop).toBeFalsy();
83
- expect(model.data.prop.child === deepClone.data.prop.child).toBe(true);
83
+ expect(model.data.prop.child).toBe(deepClone.data.prop.child);
84
84
  });
85
85
  });
@@ -41,6 +41,8 @@ var _TaskGroupModel = _interopRequireDefault(require("../taskgroup/TaskGroupMode
41
41
 
42
42
  var _LayoutHints = require("../../constants/LayoutHints");
43
43
 
44
+ var _IllegalStateException = _interopRequireDefault(require("../../exceptions/IllegalStateException"));
45
+
44
46
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
45
47
 
46
48
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -181,7 +183,7 @@ var CaseViewModel = /*#__PURE__*/function (_DetailModel) {
181
183
  var selfLink = this.links.getLinkByKey("self");
182
184
 
183
185
  if (selfLink === null) {
184
- throw new Error("No self href available");
186
+ throw new _IllegalStateException.default("No self href available");
185
187
  }
186
188
 
187
189
  return new _Href.default(selfLink.href);
@@ -6,6 +6,8 @@ import TaskGroupModel from "../taskgroup/TaskGroupModel";
6
6
 
7
7
  import { TITLE } from "../../constants/LayoutHints";
8
8
 
9
+ import IllegalStateException from "../../exceptions/IllegalStateException";
10
+
9
11
  import type { ModularUIModel, AttributeType } from "../types";
10
12
  import type { ModularUIResponse } from "../../modularui";
11
13
  import type LinkCollection from "../links/LinkCollection";
@@ -122,7 +124,7 @@ export default class CaseViewModel extends DetailModel {
122
124
  const selfLink = this.links.getLinkByKey("self");
123
125
 
124
126
  if (selfLink === null) {
125
- throw new Error("No self href available");
127
+ throw new IllegalStateException("No self href available");
126
128
  }
127
129
 
128
130
  return new Href(selfLink.href);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/caseview/CaseViewModel.js"],"names":["CaseViewModel","caseviewData","createTaskGroupCollection","links","getLinksByGroup","all","models","taskGroupModels","i","length","TaskGroupModel","push","taskGroupCollection","add","attributeCollection","getAttributeByLayoutHint","TITLE","casename","value","getContribution","introtext","data","_content","text","message","contributions","Array","isArray","texts","selfLink","getLinkByKey","Error","Href","href","allTaskgroupData","getData","allTaskgroupContributions","taskgroup","some","taskgroupContribution","name","taskgroupContributions","create","_taskGroupCollection","taskgroups","TaskGroupCollection","hasItems","resourcetype","DetailModel"],"mappings":"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","sourcesContent":["// @flow\nimport DetailModel from \"../detail/DetailModel\";\nimport Href from \"../href/Href\";\nimport TaskGroupCollection from \"../taskgroup/TaskGroupCollection\";\nimport TaskGroupModel from \"../taskgroup/TaskGroupModel\";\n\nimport { TITLE } from \"../../constants/LayoutHints\";\n\nimport type { ModularUIModel, AttributeType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type LinkModel from \"../links/LinkModel\";\n\n/**\n * Model containing the details of one case.\n */\nexport default class CaseViewModel extends DetailModel {\n _taskGroupCollection: TaskGroupCollection;\n\n /**\n */\n constructor(caseviewData: ModularUIResponse) {\n super(caseviewData);\n\n this.createTaskGroupCollection();\n }\n\n /**\n */\n get type(): string {\n return \"CaseView\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"CaseView\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.links.getLinksByGroup(\"taskgroup\").all;\n }\n\n /**\n * Getting panel links\n */\n get panelLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"panel\");\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n super.setChildModels(models);\n\n const taskGroupModels = [];\n for (let i = 0; i < models.length; i++) {\n if (models[i] instanceof TaskGroupModel) {\n taskGroupModels.push(models[i]);\n }\n }\n\n this.taskGroupCollection.add(taskGroupModels);\n }\n\n /**\n * Getting the case name\n */\n get casename(): ?AttributeType {\n return this.attributeCollection.getAttributeByLayoutHint(TITLE);\n }\n\n /**\n * Retrieve the case label, this can be configured with a case property with the layout hint 'title'\n */\n get label(): string {\n return this.casename ? this.casename.value : \"\";\n }\n\n /**\n * Retrieve the label that was configured on the caseview\n */\n get viewLabel(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Check if an introtext exists for this caseview\n */\n hasIntroText(): boolean {\n return this.introtext !== \"\";\n }\n\n /**\n * Getting the introduction text configured on the case view\n */\n get introtext(): string {\n if (this.data._content) {\n return this.data._content.text.message;\n }\n\n if (this.contributions.text) {\n return this.contributions.text.message ?? this.contributions.text;\n }\n\n if (Array.isArray(this.contributions.texts)) {\n return this.contributions.texts[0].text;\n }\n\n return \"\";\n }\n\n /**\n * Getting the self href\n */\n get selfhref(): Href {\n const selfLink = this.links.getLinkByKey(\"self\");\n\n if (selfLink === null) {\n throw new Error(\"No self href available\");\n }\n\n return new Href(selfLink.href);\n }\n\n /**\n */\n createTaskGroupCollection() {\n const allTaskgroupData = this.getData(\"taskgroups\", []);\n const allTaskgroupContributions = this.getContribution(\"taskgroups\", []);\n\n this.taskGroupCollection = allTaskgroupData\n .filter((taskgroup) =>\n allTaskgroupContributions.some(\n (taskgroupContribution) =>\n taskgroupContribution.name === taskgroup.name\n )\n )\n .map((taskgroup) => {\n const taskgroupContributions = allTaskgroupContributions.find(\n (taskgroupContribution) =>\n taskgroupContribution.name === taskgroup.name\n );\n\n return TaskGroupModel.create(\n taskgroup.name,\n taskgroup,\n taskgroupContributions\n );\n });\n }\n\n /**\n * Setting the taskgroup panel collection\n */\n set taskGroupCollection(taskgroups: Array<TaskGroupModel>) {\n this._taskGroupCollection = new TaskGroupCollection(taskgroups);\n }\n\n /**\n * Getting the taskgrouppanels on the tab\n */\n get taskGroupCollection(): TaskGroupCollection {\n return this._taskGroupCollection;\n }\n\n /**\n * Has taskgroups\n */\n hasTaskGroups(): boolean {\n return this.taskGroupCollection && this.taskGroupCollection.hasItems;\n }\n}\n"],"file":"CaseViewModel.js"}
1
+ {"version":3,"sources":["../../../src/models/caseview/CaseViewModel.js"],"names":["CaseViewModel","caseviewData","createTaskGroupCollection","links","getLinksByGroup","all","models","taskGroupModels","i","length","TaskGroupModel","push","taskGroupCollection","add","attributeCollection","getAttributeByLayoutHint","TITLE","casename","value","getContribution","introtext","data","_content","text","message","contributions","Array","isArray","texts","selfLink","getLinkByKey","IllegalStateException","Href","href","allTaskgroupData","getData","allTaskgroupContributions","taskgroup","some","taskgroupContribution","name","taskgroupContributions","create","_taskGroupCollection","taskgroups","TaskGroupCollection","hasItems","resourcetype","DetailModel"],"mappings":"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","sourcesContent":["// @flow\nimport DetailModel from \"../detail/DetailModel\";\nimport Href from \"../href/Href\";\nimport TaskGroupCollection from \"../taskgroup/TaskGroupCollection\";\nimport TaskGroupModel from \"../taskgroup/TaskGroupModel\";\n\nimport { TITLE } from \"../../constants/LayoutHints\";\n\nimport IllegalStateException from \"../../exceptions/IllegalStateException\";\n\nimport type { ModularUIModel, AttributeType } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type LinkModel from \"../links/LinkModel\";\n\n/**\n * Model containing the details of one case.\n */\nexport default class CaseViewModel extends DetailModel {\n _taskGroupCollection: TaskGroupCollection;\n\n /**\n */\n constructor(caseviewData: ModularUIResponse) {\n super(caseviewData);\n\n this.createTaskGroupCollection();\n }\n\n /**\n */\n get type(): string {\n return \"CaseView\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"CaseView\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.links.getLinksByGroup(\"taskgroup\").all;\n }\n\n /**\n * Getting panel links\n */\n get panelLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"panel\");\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n super.setChildModels(models);\n\n const taskGroupModels = [];\n for (let i = 0; i < models.length; i++) {\n if (models[i] instanceof TaskGroupModel) {\n taskGroupModels.push(models[i]);\n }\n }\n\n this.taskGroupCollection.add(taskGroupModels);\n }\n\n /**\n * Getting the case name\n */\n get casename(): ?AttributeType {\n return this.attributeCollection.getAttributeByLayoutHint(TITLE);\n }\n\n /**\n * Retrieve the case label, this can be configured with a case property with the layout hint 'title'\n */\n get label(): string {\n return this.casename ? this.casename.value : \"\";\n }\n\n /**\n * Retrieve the label that was configured on the caseview\n */\n get viewLabel(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n * Check if an introtext exists for this caseview\n */\n hasIntroText(): boolean {\n return this.introtext !== \"\";\n }\n\n /**\n * Getting the introduction text configured on the case view\n */\n get introtext(): string {\n if (this.data._content) {\n return this.data._content.text.message;\n }\n\n if (this.contributions.text) {\n return this.contributions.text.message ?? this.contributions.text;\n }\n\n if (Array.isArray(this.contributions.texts)) {\n return this.contributions.texts[0].text;\n }\n\n return \"\";\n }\n\n /**\n * Getting the self href\n */\n get selfhref(): Href {\n const selfLink = this.links.getLinkByKey(\"self\");\n\n if (selfLink === null) {\n throw new IllegalStateException(\"No self href available\");\n }\n\n return new Href(selfLink.href);\n }\n\n /**\n */\n createTaskGroupCollection() {\n const allTaskgroupData = this.getData(\"taskgroups\", []);\n const allTaskgroupContributions = this.getContribution(\"taskgroups\", []);\n\n this.taskGroupCollection = allTaskgroupData\n .filter((taskgroup) =>\n allTaskgroupContributions.some(\n (taskgroupContribution) =>\n taskgroupContribution.name === taskgroup.name\n )\n )\n .map((taskgroup) => {\n const taskgroupContributions = allTaskgroupContributions.find(\n (taskgroupContribution) =>\n taskgroupContribution.name === taskgroup.name\n );\n\n return TaskGroupModel.create(\n taskgroup.name,\n taskgroup,\n taskgroupContributions\n );\n });\n }\n\n /**\n * Setting the taskgroup panel collection\n */\n set taskGroupCollection(taskgroups: Array<TaskGroupModel>) {\n this._taskGroupCollection = new TaskGroupCollection(taskgroups);\n }\n\n /**\n * Getting the taskgrouppanels on the tab\n */\n get taskGroupCollection(): TaskGroupCollection {\n return this._taskGroupCollection;\n }\n\n /**\n * Has taskgroups\n */\n hasTaskGroups(): boolean {\n return this.taskGroupCollection && this.taskGroupCollection.hasItems;\n }\n}\n"],"file":"CaseViewModel.js"}
@@ -2,13 +2,26 @@ import CaseViewModel from "../CaseViewModel";
2
2
  import DetailModel from "../../detail/DetailModel";
3
3
 
4
4
  import caseviewJson from "./caseview.json";
5
+ import caseviewLocalTaskgroupJson from "./caseview_local_taskgroup.json";
5
6
  import caseviewContributionsJson from "./caseviewContributions.json";
6
7
 
8
+ import IllegalStateException from "../../../exceptions/IllegalStateException";
9
+
7
10
  describe("caseViewModel", () => {
8
11
  it("should be able to create an empty casedetail", () => {
9
12
  const caseview = new CaseViewModel({});
10
13
 
11
14
  expect(caseview).toBeInstanceOf(CaseViewModel);
15
+ expect(caseview.getInitialChildModelLinks()).toHaveLength(0);
16
+ expect(caseview.panelLinks).toHaveLength(0);
17
+ expect(caseview.introtext).toBe("");
18
+ });
19
+
20
+ it("throws when no self link is available", () => {
21
+ const caseview = new CaseViewModel({});
22
+ expect(() => {
23
+ caseview.selfhref;
24
+ }).toThrow(IllegalStateException);
12
25
  });
13
26
 
14
27
  it("should be able to create a casedetail from a typical modular UI json structure", () => {
@@ -18,6 +31,8 @@ describe("caseViewModel", () => {
18
31
  contributions: caseviewContributionsJson,
19
32
  });
20
33
 
34
+ expect(caseDetail.viewLabel).toBe("Book");
35
+ expect(caseDetail.hasIntroText()).toBe(true);
21
36
  expect(caseDetail).toBeInstanceOf(CaseViewModel);
22
37
  expect(caseDetail).toBeInstanceOf(DetailModel);
23
38
 
@@ -25,13 +40,35 @@ describe("caseViewModel", () => {
25
40
  expect(caseDetail.id).toBe(24);
26
41
 
27
42
  expect(caseDetail.casename.value).toBe("The safety of objects");
43
+
44
+ expect(caseDetail.hasTaskGroups()).toBe(false);
45
+ });
46
+
47
+ it("should be able to handle local taskgroup", () => {
48
+ const caseDetail = new CaseViewModel({
49
+ key: "Book",
50
+ data: caseviewLocalTaskgroupJson,
51
+ contributions: caseviewContributionsJson,
52
+ });
53
+
54
+ expect(caseDetail.hasTaskGroups()).toBe(true);
55
+ expect(caseDetail.taskGroupCollection).toHaveLength(1);
28
56
  });
29
57
 
30
58
  it("should be able to handle different kind of introtext", () => {
31
59
  const caseviewOldStructure = new CaseViewModel({
32
60
  key: "Book",
33
61
  data: caseviewJson,
34
- contributions: caseviewContributionsJson,
62
+ contributions: {
63
+ ...caseviewContributionsJson,
64
+ text: undefined,
65
+ texts: [
66
+ {
67
+ type: "master",
68
+ text: "<p>This is introtext</p>",
69
+ },
70
+ ],
71
+ },
35
72
  });
36
73
 
37
74
  expect(caseviewOldStructure.introtext).toBe("<p>This is introtext</p>");
@@ -13,6 +13,10 @@ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable
13
13
 
14
14
  var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
15
15
 
16
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
17
+
18
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
19
+
16
20
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
17
21
 
18
22
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
@@ -29,6 +33,10 @@ var _BaseCollection2 = _interopRequireDefault(require("../base/BaseCollection"))
29
33
 
30
34
  var _ActionCollection = _interopRequireDefault(require("../actions/ActionCollection"));
31
35
 
36
+ var _ListItemModel = _interopRequireDefault(require("../list/ListItemModel"));
37
+
38
+ var _ConfigurationException = _interopRequireDefault(require("../../exceptions/ConfigurationException"));
39
+
32
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
33
41
 
34
42
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -82,6 +90,38 @@ var ListItemCollection = /*#__PURE__*/function (_BaseCollection) {
82
90
  });
83
91
  return actions;
84
92
  }
93
+ }], [{
94
+ key: "createFromList",
95
+ value:
96
+ /**
97
+ * Create a list item collection from the given list
98
+ */
99
+ function createFromList(list) {
100
+ var _embedded = list.getData("_embedded");
101
+
102
+ if (_embedded != null) {
103
+ var _context2;
104
+
105
+ if (Array.isArray(_embedded)) {
106
+ throw new _ConfigurationException.default("One record panel with multiple tables is not supported, place all types in one panel for the panel with key ".concat(list.key));
107
+ }
108
+
109
+ var dynamicschema = list.getData("dynamicschema");
110
+ var collection = (0, _map.default)(_context2 = _embedded.results).call(_context2, function (resultItem) {
111
+ var _Object$keys = (0, _keys.default)(resultItem),
112
+ _Object$keys2 = (0, _slicedToArray2.default)(_Object$keys, 1),
113
+ key = _Object$keys2[0];
114
+
115
+ var listitemData = resultItem[key];
116
+ listitemData.dynamicschema = dynamicschema;
117
+ var listitemContributions = list.contributions.results[key];
118
+ return _ListItemModel.default.createFromListResult(key, listitemData, listitemContributions);
119
+ });
120
+ return new ListItemCollection(collection);
121
+ }
122
+
123
+ return new ListItemCollection();
124
+ }
85
125
  }]);
86
126
  return ListItemCollection;
87
127
  }(_BaseCollection2.default);
@@ -1,13 +1,50 @@
1
1
  // @flow
2
2
  import BaseCollection from "../base/BaseCollection";
3
3
  import ActionCollection from "../actions/ActionCollection";
4
+ import ListItemModel from "../list/ListItemModel";
4
5
 
5
- import type ListItemModel from "../list/ListItemModel";
6
+ import ConfigurationException from "../../exceptions/ConfigurationException";
7
+
8
+ import type ListModel from "../list/ListModel";
6
9
 
7
10
  /**
8
11
  * Collection of list items
9
12
  */
10
13
  class ListItemCollection extends BaseCollection<ListItemModel> {
14
+ /**
15
+ * Create a list item collection from the given list
16
+ */
17
+ static createFromList(list: ListModel): ListItemCollection {
18
+ const _embedded = list.getData("_embedded");
19
+ if (_embedded != null) {
20
+ if (Array.isArray(_embedded)) {
21
+ throw new ConfigurationException(
22
+ `One record panel with multiple tables is not supported, place all types in one panel for the panel with key ${list.key}`
23
+ );
24
+ }
25
+
26
+ const dynamicschema = list.getData("dynamicschema");
27
+
28
+ const collection = _embedded.results.map((resultItem) => {
29
+ const [key] = Object.keys(resultItem);
30
+ const listitemData = resultItem[key];
31
+ listitemData.dynamicschema = dynamicschema;
32
+
33
+ const listitemContributions = list.contributions.results[key];
34
+
35
+ return ListItemModel.createFromListResult(
36
+ key,
37
+ listitemData,
38
+ listitemContributions
39
+ );
40
+ });
41
+
42
+ return new ListItemCollection(collection);
43
+ }
44
+
45
+ return new ListItemCollection();
46
+ }
47
+
11
48
  /**
12
49
  */
13
50
  get additionalDetailRoutePath(): string {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/list/ListItemCollection.js"],"names":["ListItemCollection","isEmpty","allRoutes","all","listItem","additionalDetailRoutePath","join","actions","ActionCollection","forEach","collection","push","actionCollection","BaseCollection"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;AAIA;AACA;AACA;IACMA,kB;;;;;;;;;;;;;AACJ;AACF;AACE,mBAAwC;AAAA;;AACtC,UAAI,KAAKC,OAAT,EAAkB;AAChB,eAAO,wBAAP;AACD;;AAED,UAAMC,SAAS,GAAG,kCAAKC,GAAL,iBACX,UAACC,QAAD;AAAA,eAAcA,QAAQ,CAACC,yBAAvB;AAAA,OADW,EAEfC,IAFe,CAEV,GAFU,CAAlB;;AAIA,UAAI,uBAAAJ,SAAS,MAAT,CAAAA,SAAS,EAAU,GAAV,CAAb,EAA6B;AAC3B,0BAAWA,SAAX;AACD;;AAED,aAAOA,SAAP;AACD;AAED;AACF;;;;SACE,eAAyC;AACvC,UAAMK,OAAO,GAAG,IAAIC,yBAAJ,EAAhB;AAEA,WAAKL,GAAL,CAASM,OAAT,CAAiB,UAACL,QAAD,EAAc;AAAA;;AAC7B,+BAAAG,OAAO,CAACG,UAAR,EAAmBC,IAAnB,6DAA2BP,QAAQ,CAACQ,gBAAT,CAA0BT,GAArD;AACD,OAFD;AAIA,aAAOI,OAAP;AACD;;;EA7B8BM,wB;;eAgClBb,kB","sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport ActionCollection from \"../actions/ActionCollection\";\n\nimport type ListItemModel from \"../list/ListItemModel\";\n\n/**\n * Collection of list items\n */\nclass ListItemCollection extends BaseCollection<ListItemModel> {\n /**\n */\n get additionalDetailRoutePath(): string {\n if (this.isEmpty) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const allRoutes = this.all\n .map((listItem) => listItem.additionalDetailRoutePath)\n .join(\"|\");\n\n if (allRoutes.includes(\"|\")) {\n return `(${allRoutes})`;\n }\n\n return allRoutes;\n }\n\n /**\n */\n get actionCollection(): ActionCollection {\n const actions = new ActionCollection();\n\n this.all.forEach((listItem) => {\n actions.collection.push(...listItem.actionCollection.all);\n });\n\n return actions;\n }\n}\n\nexport default ListItemCollection;\n"],"file":"ListItemCollection.js"}
1
+ {"version":3,"sources":["../../../src/models/list/ListItemCollection.js"],"names":["ListItemCollection","isEmpty","allRoutes","all","listItem","additionalDetailRoutePath","join","actions","ActionCollection","forEach","collection","push","actionCollection","list","_embedded","getData","Array","isArray","ConfigurationException","key","dynamicschema","results","resultItem","listitemData","listitemContributions","contributions","ListItemModel","createFromListResult","BaseCollection"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAEA;;;;;;AAIA;AACA;AACA;IACMA,kB;;;;;;;;;;;;;AAmCJ;AACF;AACE,mBAAwC;AAAA;;AACtC,UAAI,KAAKC,OAAT,EAAkB;AAChB,eAAO,wBAAP;AACD;;AAED,UAAMC,SAAS,GAAG,kCAAKC,GAAL,iBACX,UAACC,QAAD;AAAA,eAAcA,QAAQ,CAACC,yBAAvB;AAAA,OADW,EAEfC,IAFe,CAEV,GAFU,CAAlB;;AAIA,UAAI,uBAAAJ,SAAS,MAAT,CAAAA,SAAS,EAAU,GAAV,CAAb,EAA6B;AAC3B,0BAAWA,SAAX;AACD;;AAED,aAAOA,SAAP;AACD;AAED;AACF;;;;SACE,eAAyC;AACvC,UAAMK,OAAO,GAAG,IAAIC,yBAAJ,EAAhB;AAEA,WAAKL,GAAL,CAASM,OAAT,CAAiB,UAACL,QAAD,EAAc;AAAA;;AAC7B,+BAAAG,OAAO,CAACG,UAAR,EAAmBC,IAAnB,6DAA2BP,QAAQ,CAACQ,gBAAT,CAA0BT,GAArD;AACD,OAFD;AAIA,aAAOI,OAAP;AACD;;;;AA9DD;AACF;AACA;AACE,4BAAsBM,IAAtB,EAA2D;AACzD,UAAMC,SAAS,GAAGD,IAAI,CAACE,OAAL,CAAa,WAAb,CAAlB;;AACA,UAAID,SAAS,IAAI,IAAjB,EAAuB;AAAA;;AACrB,YAAIE,KAAK,CAACC,OAAN,CAAcH,SAAd,CAAJ,EAA8B;AAC5B,gBAAM,IAAII,+BAAJ,uHAC2GL,IAAI,CAACM,GADhH,EAAN;AAGD;;AAED,YAAMC,aAAa,GAAGP,IAAI,CAACE,OAAL,CAAa,eAAb,CAAtB;AAEA,YAAML,UAAU,GAAG,8BAAAI,SAAS,CAACO,OAAV,kBAAsB,UAACC,UAAD,EAAgB;AACvD,6BAAc,mBAAYA,UAAZ,CAAd;AAAA;AAAA,cAAOH,GAAP;;AACA,cAAMI,YAAY,GAAGD,UAAU,CAACH,GAAD,CAA/B;AACAI,UAAAA,YAAY,CAACH,aAAb,GAA6BA,aAA7B;AAEA,cAAMI,qBAAqB,GAAGX,IAAI,CAACY,aAAL,CAAmBJ,OAAnB,CAA2BF,GAA3B,CAA9B;AAEA,iBAAOO,uBAAcC,oBAAd,CACLR,GADK,EAELI,YAFK,EAGLC,qBAHK,CAAP;AAKD,SAZkB,CAAnB;AAcA,eAAO,IAAIxB,kBAAJ,CAAuBU,UAAvB,CAAP;AACD;;AAED,aAAO,IAAIV,kBAAJ,EAAP;AACD;;;EAjC8B4B,wB;;eAkElB5B,kB","sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport ActionCollection from \"../actions/ActionCollection\";\nimport ListItemModel from \"../list/ListItemModel\";\n\nimport ConfigurationException from \"../../exceptions/ConfigurationException\";\n\nimport type ListModel from \"../list/ListModel\";\n\n/**\n * Collection of list items\n */\nclass ListItemCollection extends BaseCollection<ListItemModel> {\n /**\n * Create a list item collection from the given list\n */\n static createFromList(list: ListModel): ListItemCollection {\n const _embedded = list.getData(\"_embedded\");\n if (_embedded != null) {\n if (Array.isArray(_embedded)) {\n throw new ConfigurationException(\n `One record panel with multiple tables is not supported, place all types in one panel for the panel with key ${list.key}`\n );\n }\n\n const dynamicschema = list.getData(\"dynamicschema\");\n\n const collection = _embedded.results.map((resultItem) => {\n const [key] = Object.keys(resultItem);\n const listitemData = resultItem[key];\n listitemData.dynamicschema = dynamicschema;\n\n const listitemContributions = list.contributions.results[key];\n\n return ListItemModel.createFromListResult(\n key,\n listitemData,\n listitemContributions\n );\n });\n\n return new ListItemCollection(collection);\n }\n\n return new ListItemCollection();\n }\n\n /**\n */\n get additionalDetailRoutePath(): string {\n if (this.isEmpty) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const allRoutes = this.all\n .map((listItem) => listItem.additionalDetailRoutePath)\n .join(\"|\");\n\n if (allRoutes.includes(\"|\")) {\n return `(${allRoutes})`;\n }\n\n return allRoutes;\n }\n\n /**\n */\n get actionCollection(): ActionCollection {\n const actions = new ActionCollection();\n\n this.all.forEach((listItem) => {\n actions.collection.push(...listItem.actionCollection.all);\n });\n\n return actions;\n }\n}\n\nexport default ListItemCollection;\n"],"file":"ListItemCollection.js"}
@@ -123,11 +123,23 @@ var ListItemModel = /*#__PURE__*/function (_DetailModel) {
123
123
  }).join("|");
124
124
  }
125
125
  }], [{
126
- key: "createFromChoiceAttributeOption",
126
+ key: "createFromListResult",
127
127
  value:
128
128
  /**
129
129
  */
130
- function createFromChoiceAttributeOption(option) {
130
+ function createFromListResult(key, data, contributions) {
131
+ var listitemInput = new _ModularUIResponse.default();
132
+ listitemInput.key = key;
133
+ listitemInput.data = data;
134
+ listitemInput.contributions = contributions;
135
+ return new ListItemModel(listitemInput);
136
+ }
137
+ /**
138
+ */
139
+
140
+ }, {
141
+ key: "createFromChoiceAttributeOption",
142
+ value: function createFromChoiceAttributeOption(option) {
131
143
  var listitemInput = new _ModularUIResponse.default();
132
144
  listitemInput.key = option.code;
133
145
  var item = new ListItemModel(listitemInput);
@@ -14,6 +14,21 @@ import type LinkCollection from "../links/LinkCollection";
14
14
  * List Item
15
15
  */
16
16
  export default class ListItemModel extends DetailModel {
17
+ /**
18
+ */
19
+ static createFromListResult(
20
+ key: string,
21
+ data: Object,
22
+ contributions: Object
23
+ ): ListItemModel {
24
+ const listitemInput = new ModularUIResponse();
25
+ listitemInput.key = key;
26
+ listitemInput.data = data;
27
+ listitemInput.contributions = contributions;
28
+
29
+ return new ListItemModel(listitemInput);
30
+ }
31
+
17
32
  /**
18
33
  */
19
34
  static createFromChoiceAttributeOption(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/list/ListItemModel.js"],"names":["ListItemModel","selflink","links","getLinkByKey","Href","href","caseviewLinkAttribute","attributeCollection","getAttributeByLayoutHint","CASEVIEW_LINK","caseviewLinkKey","name","caseviewLink","selfhref","getLinksByGroup","panelLinks","length","actionType","actionCollection","getActionsByType","additionalDetailLinks","link","path","join","option","listitemInput","ModularUIResponse","key","code","item","DetailModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAEA;;AAEA;;;;;;AAMA;AACA;AACA;IACqBA,a;;;;;;;;;;;;;AAenB;AACF;AACE,mBAAqB;AACnB,UAAMC,QAAQ,GAAG,KAAKC,KAAL,CAAWC,YAAX,CAAwB,MAAxB,CAAjB;;AAEA,UAAIF,QAAQ,KAAK,IAAjB,EAAuB;AACrB,eAAO,IAAIG,aAAJ,CAAS,GAAT,CAAP;AACD;;AAED,aAAOH,QAAQ,CAACI,IAAhB;AACD;AAED;AACF;;;;SACE,eAAyB;AACvB,UAAMC,qBAAqB,GACzB,KAAKC,mBAAL,CAAyBC,wBAAzB,CAAkDC,0BAAlD,CADF;;AAEA,UAAIH,qBAAJ,EAA2B;AACzB,YAAMI,eAAe,GAAGJ,qBAAqB,CAACK,IAA9C;AACA,YAAMC,YAAY,GAAG,KAAKV,KAAL,CAAWC,YAAX,CAAwBO,eAAxB,CAArB;;AAEA,YAAIE,YAAJ,EAAkB;AAChB,iBAAOA,YAAY,CAACP,IAApB;AACD;AACF;;AAED,aAAO,KAAKQ,QAAZ;AACD;AAED;AACF;AACA;;;;SACE,eAAiC;AAC/B,aAAO,KAAKX,KAAL,CAAWY,eAAX,CAA2B,OAA3B,CAAP;AACD;AAED;AACF;AACA;;;;WACE,yBAAyB;AACvB,aAAO,KAAKC,UAAL,CAAgBC,MAAhB,GAAyB,CAAC,CAAjC;AACD;AAED;AACF;AACA;;;;WACE,0BAAiBC,UAAjB,EAAuD;AACrD,aAAO,KAAKC,gBAAL,CAAsBC,gBAAtB,CAAuCF,UAAvC,CAAP;AACD;AAED;AACF;;;;SACE,eAAwC;AACtC,UAAMG,qBAAqB,GAAG,KAAKL,UAAnC;;AAEA,UAAIK,qBAAqB,CAACJ,MAAtB,KAAiC,CAArC,EAAwC;AACtC,eAAO,wBAAP;AACD;;AAED,aAAO,kBAAAI,qBAAqB,MAArB,CAAAA,qBAAqB,EAAK,UAACC,IAAD;AAAA,eAAUA,IAAI,CAAChB,IAAL,CAAUiB,IAApB;AAAA,OAAL,CAArB,CAAoDC,IAApD,CAAyD,GAAzD,CAAP;AACD;;;;AA1ED;AACF;AACE,6CACEC,MADF,EAEiB;AACf,UAAMC,aAAa,GAAG,IAAIC,0BAAJ,EAAtB;AACAD,MAAAA,aAAa,CAACE,GAAd,GAAoBH,MAAM,CAACI,IAA3B;AAEA,UAAMC,IAAI,GAAG,IAAI7B,aAAJ,CAAkByB,aAAlB,CAAb;AACAI,MAAAA,IAAI,CAACtB,mBAAL,GAA2BiB,MAAM,CAACjB,mBAAlC;AAEA,aAAOsB,IAAP;AACD;;;EAbwCC,qB","sourcesContent":["// @flow\nimport DetailModel from \"../detail/DetailModel\";\nimport Href from \"../href/Href\";\n\nimport ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\nimport { CASEVIEW_LINK } from \"../../constants/LayoutHints\";\n\nimport type ChoiceAttributeOptionModel from \"../attributes/ChoiceAttributeOptionModel\";\nimport type ActionCollection from \"../actions/ActionCollection\";\nimport type LinkCollection from \"../links/LinkCollection\";\n\n/**\n * List Item\n */\nexport default class ListItemModel extends DetailModel {\n /**\n */\n static createFromChoiceAttributeOption(\n option: ChoiceAttributeOptionModel\n ): ListItemModel {\n const listitemInput = new ModularUIResponse();\n listitemInput.key = option.code;\n\n const item = new ListItemModel(listitemInput);\n item.attributeCollection = option.attributeCollection;\n\n return item;\n }\n\n /**\n */\n get selfhref(): Href {\n const selflink = this.links.getLinkByKey(\"self\");\n\n if (selflink === null) {\n return new Href(\"#\");\n }\n\n return selflink.href;\n }\n\n /**\n */\n get caseviewHref(): Href {\n const caseviewLinkAttribute =\n this.attributeCollection.getAttributeByLayoutHint(CASEVIEW_LINK);\n if (caseviewLinkAttribute) {\n const caseviewLinkKey = caseviewLinkAttribute.name;\n const caseviewLink = this.links.getLinkByKey(caseviewLinkKey);\n\n if (caseviewLink) {\n return caseviewLink.href;\n }\n }\n\n return this.selfhref;\n }\n\n /**\n * Getting panel links\n */\n get panelLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"panel\");\n }\n\n /**\n * Check if list item has panel links\n */\n hasPanelLinks(): boolean {\n return this.panelLinks.length > -1;\n }\n\n /**\n * Retrieve all actions by type\n */\n getActionsByType(actionType: string): ActionCollection {\n return this.actionCollection.getActionsByType(actionType);\n }\n\n /**\n */\n get additionalDetailRoutePath(): string {\n const additionalDetailLinks = this.panelLinks;\n\n if (additionalDetailLinks.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n return additionalDetailLinks.map((link) => link.href.path).join(\"|\");\n }\n}\n"],"file":"ListItemModel.js"}
1
+ {"version":3,"sources":["../../../src/models/list/ListItemModel.js"],"names":["ListItemModel","selflink","links","getLinkByKey","Href","href","caseviewLinkAttribute","attributeCollection","getAttributeByLayoutHint","CASEVIEW_LINK","caseviewLinkKey","name","caseviewLink","selfhref","getLinksByGroup","panelLinks","length","actionType","actionCollection","getActionsByType","additionalDetailLinks","link","path","join","key","data","contributions","listitemInput","ModularUIResponse","option","code","item","DetailModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAEA;;AAEA;;;;;;AAMA;AACA;AACA;IACqBA,a;;;;;;;;;;;;;AA8BnB;AACF;AACE,mBAAqB;AACnB,UAAMC,QAAQ,GAAG,KAAKC,KAAL,CAAWC,YAAX,CAAwB,MAAxB,CAAjB;;AAEA,UAAIF,QAAQ,KAAK,IAAjB,EAAuB;AACrB,eAAO,IAAIG,aAAJ,CAAS,GAAT,CAAP;AACD;;AAED,aAAOH,QAAQ,CAACI,IAAhB;AACD;AAED;AACF;;;;SACE,eAAyB;AACvB,UAAMC,qBAAqB,GACzB,KAAKC,mBAAL,CAAyBC,wBAAzB,CAAkDC,0BAAlD,CADF;;AAEA,UAAIH,qBAAJ,EAA2B;AACzB,YAAMI,eAAe,GAAGJ,qBAAqB,CAACK,IAA9C;AACA,YAAMC,YAAY,GAAG,KAAKV,KAAL,CAAWC,YAAX,CAAwBO,eAAxB,CAArB;;AAEA,YAAIE,YAAJ,EAAkB;AAChB,iBAAOA,YAAY,CAACP,IAApB;AACD;AACF;;AAED,aAAO,KAAKQ,QAAZ;AACD;AAED;AACF;AACA;;;;SACE,eAAiC;AAC/B,aAAO,KAAKX,KAAL,CAAWY,eAAX,CAA2B,OAA3B,CAAP;AACD;AAED;AACF;AACA;;;;WACE,yBAAyB;AACvB,aAAO,KAAKC,UAAL,CAAgBC,MAAhB,GAAyB,CAAC,CAAjC;AACD;AAED;AACF;AACA;;;;WACE,0BAAiBC,UAAjB,EAAuD;AACrD,aAAO,KAAKC,gBAAL,CAAsBC,gBAAtB,CAAuCF,UAAvC,CAAP;AACD;AAED;AACF;;;;SACE,eAAwC;AACtC,UAAMG,qBAAqB,GAAG,KAAKL,UAAnC;;AAEA,UAAIK,qBAAqB,CAACJ,MAAtB,KAAiC,CAArC,EAAwC;AACtC,eAAO,wBAAP;AACD;;AAED,aAAO,kBAAAI,qBAAqB,MAArB,CAAAA,qBAAqB,EAAK,UAACC,IAAD;AAAA,eAAUA,IAAI,CAAChB,IAAL,CAAUiB,IAApB;AAAA,OAAL,CAArB,CAAoDC,IAApD,CAAyD,GAAzD,CAAP;AACD;;;;AAzFD;AACF;AACE,kCACEC,GADF,EAEEC,IAFF,EAGEC,aAHF,EAIiB;AACf,UAAMC,aAAa,GAAG,IAAIC,0BAAJ,EAAtB;AACAD,MAAAA,aAAa,CAACH,GAAd,GAAoBA,GAApB;AACAG,MAAAA,aAAa,CAACF,IAAd,GAAqBA,IAArB;AACAE,MAAAA,aAAa,CAACD,aAAd,GAA8BA,aAA9B;AAEA,aAAO,IAAI1B,aAAJ,CAAkB2B,aAAlB,CAAP;AACD;AAED;AACF;;;;WACE,yCACEE,MADF,EAEiB;AACf,UAAMF,aAAa,GAAG,IAAIC,0BAAJ,EAAtB;AACAD,MAAAA,aAAa,CAACH,GAAd,GAAoBK,MAAM,CAACC,IAA3B;AAEA,UAAMC,IAAI,GAAG,IAAI/B,aAAJ,CAAkB2B,aAAlB,CAAb;AACAI,MAAAA,IAAI,CAACxB,mBAAL,GAA2BsB,MAAM,CAACtB,mBAAlC;AAEA,aAAOwB,IAAP;AACD;;;EA5BwCC,qB","sourcesContent":["// @flow\nimport DetailModel from \"../detail/DetailModel\";\nimport Href from \"../href/Href\";\n\nimport ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\nimport { CASEVIEW_LINK } from \"../../constants/LayoutHints\";\n\nimport type ChoiceAttributeOptionModel from \"../attributes/ChoiceAttributeOptionModel\";\nimport type ActionCollection from \"../actions/ActionCollection\";\nimport type LinkCollection from \"../links/LinkCollection\";\n\n/**\n * List Item\n */\nexport default class ListItemModel extends DetailModel {\n /**\n */\n static createFromListResult(\n key: string,\n data: Object,\n contributions: Object\n ): ListItemModel {\n const listitemInput = new ModularUIResponse();\n listitemInput.key = key;\n listitemInput.data = data;\n listitemInput.contributions = contributions;\n\n return new ListItemModel(listitemInput);\n }\n\n /**\n */\n static createFromChoiceAttributeOption(\n option: ChoiceAttributeOptionModel\n ): ListItemModel {\n const listitemInput = new ModularUIResponse();\n listitemInput.key = option.code;\n\n const item = new ListItemModel(listitemInput);\n item.attributeCollection = option.attributeCollection;\n\n return item;\n }\n\n /**\n */\n get selfhref(): Href {\n const selflink = this.links.getLinkByKey(\"self\");\n\n if (selflink === null) {\n return new Href(\"#\");\n }\n\n return selflink.href;\n }\n\n /**\n */\n get caseviewHref(): Href {\n const caseviewLinkAttribute =\n this.attributeCollection.getAttributeByLayoutHint(CASEVIEW_LINK);\n if (caseviewLinkAttribute) {\n const caseviewLinkKey = caseviewLinkAttribute.name;\n const caseviewLink = this.links.getLinkByKey(caseviewLinkKey);\n\n if (caseviewLink) {\n return caseviewLink.href;\n }\n }\n\n return this.selfhref;\n }\n\n /**\n * Getting panel links\n */\n get panelLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"panel\");\n }\n\n /**\n * Check if list item has panel links\n */\n hasPanelLinks(): boolean {\n return this.panelLinks.length > -1;\n }\n\n /**\n * Retrieve all actions by type\n */\n getActionsByType(actionType: string): ActionCollection {\n return this.actionCollection.getActionsByType(actionType);\n }\n\n /**\n */\n get additionalDetailRoutePath(): string {\n const additionalDetailLinks = this.panelLinks;\n\n if (additionalDetailLinks.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n return additionalDetailLinks.map((link) => link.href.path).join(\"|\");\n }\n}\n"],"file":"ListItemModel.js"}