@openui5/sap.ui.mdc 1.94.0 → 1.97.0

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 (243) hide show
  1. package/.reuse/dep5 +12 -12
  2. package/THIRDPARTY.txt +21 -17
  3. package/package.json +4 -4
  4. package/src/sap/ui/mdc/.library +1 -1
  5. package/src/sap/ui/mdc/ActionToolbar.js +231 -334
  6. package/src/sap/ui/mdc/Chart.js +148 -21
  7. package/src/sap/ui/mdc/ChartDelegateNew.js +15 -0
  8. package/src/sap/ui/mdc/ChartNew.js +83 -56
  9. package/src/sap/ui/mdc/ChartNewRenderer.js +2 -2
  10. package/src/sap/ui/mdc/Control.js +4 -3
  11. package/src/sap/ui/mdc/Element.js +5 -4
  12. package/src/sap/ui/mdc/Field.js +3 -2
  13. package/src/sap/ui/mdc/FilterBar.js +1 -10
  14. package/src/sap/ui/mdc/FilterField.js +42 -4
  15. package/src/sap/ui/mdc/Link.js +2 -2
  16. package/src/sap/ui/mdc/MultiValueField.js +2 -1
  17. package/src/sap/ui/mdc/Table.js +285 -186
  18. package/src/sap/ui/mdc/TableDelegate.js +13 -11
  19. package/src/sap/ui/mdc/ValueHelp.js +1500 -0
  20. package/src/sap/ui/mdc/ValueHelpDelegate.js +167 -0
  21. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +49 -104
  22. package/src/sap/ui/mdc/chart/DimensionItem.js +3 -3
  23. package/src/sap/ui/mdc/chart/Item.js +2 -3
  24. package/src/sap/ui/mdc/chart/MeasureItem.js +2 -2
  25. package/src/sap/ui/mdc/chart/SelectionDetailsActions.js +21 -2
  26. package/src/sap/ui/mdc/chart/ToolbarHandler.js +237 -226
  27. package/src/sap/ui/mdc/chartNew/ChartSelectionDetailsNew.js +1 -1
  28. package/src/sap/ui/mdc/chartNew/ChartToolbarNew.js +14 -10
  29. package/src/sap/ui/mdc/chartNew/ChartTypeButtonNew.js +1 -1
  30. package/src/sap/ui/mdc/chartNew/DrillStackHandlerNew.js +11 -9
  31. package/src/sap/ui/mdc/chartNew/ItemNew.js +0 -1
  32. package/src/sap/ui/mdc/chartNew/PropertyHelperNew.js +1 -1
  33. package/src/sap/ui/mdc/condition/Condition.js +2 -2
  34. package/src/sap/ui/mdc/condition/ConditionConverter.js +1 -1
  35. package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
  36. package/src/sap/ui/mdc/condition/FilterConverter.js +1 -1
  37. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +6 -2
  38. package/src/sap/ui/mdc/condition/Operator.js +9 -9
  39. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +437 -0
  40. package/src/sap/ui/mdc/condition/RangeOperator.js +1 -1
  41. package/src/sap/ui/mdc/designtime/actiontoolbar/ActionToolbar.designtime.js +43 -0
  42. package/src/sap/ui/mdc/designtime/chart/ChartNew.designtime.js +91 -0
  43. package/src/sap/ui/mdc/designtime/field/Field.designtime.js +21 -0
  44. package/src/sap/ui/mdc/designtime/field/FieldBase.designtime.js +104 -0
  45. package/src/sap/ui/mdc/designtime/field/FilterField.designtime.js +22 -0
  46. package/src/sap/ui/mdc/designtime/field/MultiValueField.designtime.js +23 -0
  47. package/src/sap/ui/mdc/designtime/filterbar/FilterBar.designtime.js +19 -0
  48. package/src/sap/ui/mdc/designtime/filterbar/FilterBarBase.designtime.js +31 -0
  49. package/src/sap/ui/mdc/designtime/table/Table.designtime.js +5 -0
  50. package/src/sap/ui/mdc/enum/ContentMode.js +25 -4
  51. package/src/sap/ui/mdc/enum/SelectType.js +43 -0
  52. package/src/sap/ui/mdc/field/BoolFieldHelp.js +1 -1
  53. package/src/sap/ui/mdc/field/ConditionFieldHelp.js +1 -1
  54. package/src/sap/ui/mdc/field/ConditionType.js +67 -35
  55. package/src/sap/ui/mdc/field/ConditionsType.js +12 -10
  56. package/src/sap/ui/mdc/field/CustomFieldHelp.js +1 -1
  57. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  58. package/src/sap/ui/mdc/field/DefineConditionPanel.js +13 -2
  59. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +311 -0
  60. package/src/sap/ui/mdc/field/FieldBase.js +143 -83
  61. package/src/sap/ui/mdc/field/FieldBaseDelegate.js +9 -2
  62. package/src/sap/ui/mdc/field/FieldHelpBase.js +64 -4
  63. package/src/sap/ui/mdc/field/FieldInfoBase.js +9 -1
  64. package/src/sap/ui/mdc/field/FieldInput.js +1 -1
  65. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  66. package/src/sap/ui/mdc/field/FieldMultiInput.js +1 -1
  67. package/src/sap/ui/mdc/field/FieldValueHelp.js +12 -6
  68. package/src/sap/ui/mdc/field/FieldValueHelpContentWrapperBase.js +1 -1
  69. package/src/sap/ui/mdc/field/FieldValueHelpDelegate.js +20 -0
  70. package/src/sap/ui/mdc/field/FieldValueHelpMTableWrapper.js +1 -1
  71. package/src/sap/ui/mdc/field/FieldValueHelpMdcTableWrapper.js +1 -1
  72. package/src/sap/ui/mdc/field/FieldValueHelpTableWrapperBase.js +2 -1
  73. package/src/sap/ui/mdc/field/FieldValueHelpUITableWrapper.js +1 -1
  74. package/src/sap/ui/mdc/field/InParameter.js +1 -1
  75. package/src/sap/ui/mdc/field/ListFieldHelp.js +1 -1
  76. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  77. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  78. package/src/sap/ui/mdc/field/OutParameter.js +1 -1
  79. package/src/sap/ui/mdc/field/ValueHelpPanel.js +2 -1
  80. package/src/sap/ui/mdc/field/content/BooleanContent.js +16 -4
  81. package/src/sap/ui/mdc/field/content/ContentFactory.js +34 -24
  82. package/src/sap/ui/mdc/field/content/DateContent.js +128 -2
  83. package/src/sap/ui/mdc/field/content/DateTimeContent.js +9 -1
  84. package/src/sap/ui/mdc/field/content/DefaultContent.js +65 -24
  85. package/src/sap/ui/mdc/field/content/LinkContent.js +6 -0
  86. package/src/sap/ui/mdc/field/content/SearchContent.js +21 -3
  87. package/src/sap/ui/mdc/field/content/TimeContent.js +8 -1
  88. package/src/sap/ui/mdc/field/content/UnitContent.js +25 -6
  89. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +43 -24
  90. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +1 -1
  91. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +1 -1
  92. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +1 -1
  93. package/src/sap/ui/mdc/flexibility/ActionToolbar.flexibility.js +22 -0
  94. package/src/sap/ui/mdc/flexibility/ActionToolbarAction.flexibility.js +19 -0
  95. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  96. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  97. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  98. package/src/sap/ui/mdc/flexibility/ItemBaseFlex.js +203 -197
  99. package/src/sap/ui/mdc/library.js +603 -5
  100. package/src/sap/ui/mdc/link/ContactDetails.js +1 -1
  101. package/src/sap/ui/mdc/link/ContactDetailsAddressItem.js +1 -1
  102. package/src/sap/ui/mdc/link/ContactDetailsEmailItem.js +1 -1
  103. package/src/sap/ui/mdc/link/ContactDetailsItem.js +1 -1
  104. package/src/sap/ui/mdc/link/ContactDetailsPhoneItem.js +1 -1
  105. package/src/sap/ui/mdc/link/Factory.js +1 -1
  106. package/src/sap/ui/mdc/link/FakeFlpConnector.js +1 -1
  107. package/src/sap/ui/mdc/link/LinkItem.js +1 -1
  108. package/src/sap/ui/mdc/link/Panel.js +1 -1
  109. package/src/sap/ui/mdc/link/PanelItem.js +1 -1
  110. package/src/sap/ui/mdc/link/PanelListItem.js +1 -1
  111. package/src/sap/ui/mdc/link/SelectionDialog.js +2 -2
  112. package/src/sap/ui/mdc/link/SelectionDialogItem.js +1 -1
  113. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  114. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  115. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  116. package/src/sap/ui/mdc/messagebundle.properties +37 -3
  117. package/src/sap/ui/mdc/messagebundle_ar.properties +24 -3
  118. package/src/sap/ui/mdc/messagebundle_bg.properties +23 -2
  119. package/src/sap/ui/mdc/messagebundle_ca.properties +23 -2
  120. package/src/sap/ui/mdc/messagebundle_cs.properties +36 -15
  121. package/src/sap/ui/mdc/messagebundle_cy.properties +23 -2
  122. package/src/sap/ui/mdc/messagebundle_da.properties +23 -2
  123. package/src/sap/ui/mdc/messagebundle_de.properties +23 -2
  124. package/src/sap/ui/mdc/messagebundle_el.properties +24 -3
  125. package/src/sap/ui/mdc/messagebundle_en.properties +23 -2
  126. package/src/sap/ui/mdc/messagebundle_en_GB.properties +23 -2
  127. package/src/sap/ui/mdc/messagebundle_en_US_sappsd.properties +23 -2
  128. package/src/sap/ui/mdc/messagebundle_en_US_saptrc.properties +23 -2
  129. package/src/sap/ui/mdc/messagebundle_es.properties +48 -27
  130. package/src/sap/ui/mdc/messagebundle_es_MX.properties +23 -2
  131. package/src/sap/ui/mdc/messagebundle_et.properties +23 -2
  132. package/src/sap/ui/mdc/messagebundle_fi.properties +24 -3
  133. package/src/sap/ui/mdc/messagebundle_fr.properties +36 -15
  134. package/src/sap/ui/mdc/messagebundle_fr_CA.properties +23 -2
  135. package/src/sap/ui/mdc/messagebundle_hi.properties +23 -2
  136. package/src/sap/ui/mdc/messagebundle_hr.properties +23 -2
  137. package/src/sap/ui/mdc/messagebundle_hu.properties +24 -3
  138. package/src/sap/ui/mdc/messagebundle_id.properties +23 -2
  139. package/src/sap/ui/mdc/messagebundle_it.properties +46 -25
  140. package/src/sap/ui/mdc/messagebundle_iw.properties +23 -2
  141. package/src/sap/ui/mdc/messagebundle_ja.properties +30 -9
  142. package/src/sap/ui/mdc/messagebundle_kk.properties +23 -2
  143. package/src/sap/ui/mdc/messagebundle_ko.properties +23 -2
  144. package/src/sap/ui/mdc/messagebundle_lt.properties +23 -2
  145. package/src/sap/ui/mdc/messagebundle_lv.properties +23 -2
  146. package/src/sap/ui/mdc/messagebundle_ms.properties +23 -2
  147. package/src/sap/ui/mdc/messagebundle_nl.properties +24 -3
  148. package/src/sap/ui/mdc/messagebundle_no.properties +30 -9
  149. package/src/sap/ui/mdc/messagebundle_pl.properties +27 -6
  150. package/src/sap/ui/mdc/messagebundle_pt.properties +24 -3
  151. package/src/sap/ui/mdc/messagebundle_pt_PT.properties +23 -2
  152. package/src/sap/ui/mdc/messagebundle_ro.properties +26 -5
  153. package/src/sap/ui/mdc/messagebundle_ru.properties +23 -2
  154. package/src/sap/ui/mdc/messagebundle_sh.properties +23 -2
  155. package/src/sap/ui/mdc/messagebundle_sk.properties +24 -3
  156. package/src/sap/ui/mdc/messagebundle_sl.properties +23 -2
  157. package/src/sap/ui/mdc/messagebundle_sv.properties +24 -3
  158. package/src/sap/ui/mdc/messagebundle_th.properties +29 -8
  159. package/src/sap/ui/mdc/messagebundle_tr.properties +23 -2
  160. package/src/sap/ui/mdc/messagebundle_uk.properties +23 -2
  161. package/src/sap/ui/mdc/messagebundle_vi.properties +23 -2
  162. package/src/sap/ui/mdc/messagebundle_zh_CN.properties +23 -2
  163. package/src/sap/ui/mdc/messagebundle_zh_TW.properties +23 -2
  164. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
  165. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
  166. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +3 -3
  167. package/src/sap/ui/mdc/mixin/PromiseMixin.js +94 -0
  168. package/src/sap/ui/mdc/odata/v4/ChartPropertyHelperNew.js +1 -1
  169. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +65 -37
  170. package/src/sap/ui/mdc/odata/v4/ValueHelpDelegate.js +94 -0
  171. package/src/sap/ui/mdc/odata/v4/vizChart/ChartDelegateNew.js +221 -32
  172. package/src/sap/ui/mdc/p13n/Engine.js +34 -10
  173. package/src/sap/ui/mdc/p13n/P13nBuilder.js +2 -2
  174. package/src/sap/ui/mdc/p13n/PersistenceProvider.js +21 -10
  175. package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
  176. package/src/sap/ui/mdc/p13n/StateUtil.js +20 -0
  177. package/src/sap/ui/mdc/p13n/UIManager.js +11 -6
  178. package/src/sap/ui/mdc/p13n/{DefaultProviderRegistry.js → modules/DefaultProviderRegistry.js} +2 -2
  179. package/src/sap/ui/mdc/p13n/modules/StateHandlerRegistry.js +86 -0
  180. package/src/sap/ui/mdc/p13n/panels/ActionToolbarPanel.js +59 -0
  181. package/src/sap/ui/mdc/p13n/panels/AdaptFiltersPanel.js +20 -5
  182. package/src/sap/ui/mdc/p13n/panels/BasePanel.js +8 -8
  183. package/src/sap/ui/mdc/p13n/panels/ChartItemPanel.js +1 -2
  184. package/src/sap/ui/mdc/p13n/panels/ChartItemPanelNew.js +1179 -0
  185. package/src/sap/ui/mdc/p13n/panels/GroupView.js +1 -2
  186. package/src/sap/ui/mdc/p13n/panels/ListView.js +6 -4
  187. package/src/sap/ui/mdc/p13n/panels/SelectionPanel.js +0 -1
  188. package/src/sap/ui/mdc/p13n/panels/SortPanel.js +0 -1
  189. package/src/sap/ui/mdc/p13n/subcontroller/ActionToolbarController.js +89 -0
  190. package/src/sap/ui/mdc/p13n/subcontroller/AggregateController.js +1 -1
  191. package/src/sap/ui/mdc/p13n/subcontroller/BaseController.js +9 -6
  192. package/src/sap/ui/mdc/p13n/subcontroller/ChartItemController.js +33 -4
  193. package/src/sap/ui/mdc/p13n/subcontroller/ColumnController.js +9 -15
  194. package/src/sap/ui/mdc/p13n/subcontroller/GroupController.js +5 -12
  195. package/src/sap/ui/mdc/p13n/subcontroller/SortController.js +19 -21
  196. package/src/sap/ui/mdc/table/Column.js +67 -17
  197. package/src/sap/ui/mdc/table/CreationRow.js +14 -13
  198. package/src/sap/ui/mdc/table/GridTableType.js +11 -11
  199. package/src/sap/ui/mdc/table/PropertyHelper.js +120 -17
  200. package/src/sap/ui/mdc/table/ResponsiveTableType.js +35 -26
  201. package/src/sap/ui/mdc/table/RowSettings.js +8 -6
  202. package/src/sap/ui/mdc/table/TableTypeBase.js +4 -5
  203. package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +15 -71
  204. package/src/sap/ui/mdc/themes/base/Chart.less +3 -0
  205. package/src/sap/ui/mdc/themes/base/ValueHelpDialog.less +51 -21
  206. package/src/sap/ui/mdc/themes/base/library.source.less +1 -0
  207. package/src/sap/ui/mdc/ui/Container.js +2 -2
  208. package/src/sap/ui/mdc/ui/ContainerItem.js +2 -2
  209. package/src/sap/ui/mdc/util/Common.js +26 -0
  210. package/src/sap/ui/mdc/util/PromiseCache.js +266 -0
  211. package/src/sap/ui/mdc/util/PropertyHelper.js +114 -304
  212. package/src/sap/ui/mdc/valuehelp/Dialog.js +499 -0
  213. package/src/sap/ui/mdc/valuehelp/Popover.js +373 -0
  214. package/src/sap/ui/mdc/valuehelp/base/Container.js +673 -0
  215. package/src/sap/ui/mdc/valuehelp/base/Content.js +658 -0
  216. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +139 -0
  217. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +584 -0
  218. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +133 -0
  219. package/src/sap/ui/mdc/valuehelp/content/Bool.js +318 -0
  220. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +270 -0
  221. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +532 -0
  222. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +643 -0
  223. package/src/sap/ui/mdc/valuehelp/content/MTable.js +928 -0
  224. package/test/sap/ui/mdc/testutils/opa/TestLibrary.js +3 -2
  225. package/test/sap/ui/mdc/testutils/opa/actions/OpenContextMenu.js +48 -0
  226. package/test/sap/ui/mdc/testutils/opa/chartNew/ActionsBase.js +310 -0
  227. package/test/sap/ui/mdc/testutils/opa/chartNew/ActionsViz.js +39 -0
  228. package/test/sap/ui/mdc/testutils/opa/chartNew/AssertionsBase.js +118 -0
  229. package/test/sap/ui/mdc/testutils/opa/chartNew/AssertionsViz.js +137 -0
  230. package/test/sap/ui/mdc/testutils/opa/chartNew/ChartNew.js +24 -0
  231. package/test/sap/ui/mdc/testutils/opa/chartNew/TestObjects.js +289 -0
  232. package/test/sap/ui/mdc/testutils/opa/filterbar/Actions.js +250 -0
  233. package/test/sap/ui/mdc/testutils/opa/filterbar/Assertions.js +91 -0
  234. package/test/sap/ui/mdc/testutils/opa/filterbar/TestObjects.js +137 -0
  235. package/test/sap/ui/mdc/testutils/opa/filterbar/Util.js +25 -0
  236. package/test/sap/ui/mdc/testutils/opa/p13n/Actions.js +407 -93
  237. package/test/sap/ui/mdc/testutils/opa/p13n/Util.js +4 -1
  238. package/test/sap/ui/mdc/testutils/opa/p13n/{waitForP13nButtonWithParentAndIcon.js → waitForP13nButtonWithMatchers.js} +5 -18
  239. package/test/sap/ui/mdc/testutils/opa/table/TestObjects.js +0 -1
  240. package/src/sap/ui/mdc/p13n/panels/GroupPanel.js +0 -111
  241. package/src/sap/ui/mdc/p13n/panels/QueryPanel.js +0 -322
  242. package/src/sap/ui/mdc/p13n/panels/SortQueryPanel.js +0 -133
  243. package/src/sap/ui/mdc/p13n/panels/Wrapper.js +0 -203
@@ -0,0 +1,311 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ // Provides the base implementation for all model implementations
8
+ sap.ui.define([
9
+ 'sap/ui/mdc/field/ConditionsType',
10
+ 'sap/ui/mdc/condition/FilterOperatorUtil',
11
+ 'sap/ui/mdc/condition/Operator',
12
+ 'sap/ui/mdc/condition/Condition',
13
+ 'sap/ui/mdc/enum/ConditionValidated',
14
+ 'sap/ui/mdc/enum/BaseType',
15
+ "sap/ui/mdc/util/DateUtil",
16
+ 'sap/ui/model/SimpleType',
17
+ 'sap/ui/model/FormatException',
18
+ 'sap/ui/model/ParseException',
19
+ 'sap/ui/model/ValidateException',
20
+ 'sap/m/DynamicDate',
21
+ 'sap/m/library'
22
+ ],
23
+ function(
24
+ ConditionsType,
25
+ FilterOperatorUtil,
26
+ Operator,
27
+ Condition,
28
+ ConditionValidated,
29
+ BaseType,
30
+ DateUtil,
31
+ SimpleType,
32
+ FormatException,
33
+ ParseException,
34
+ ValidateException,
35
+ DynamicDateType,
36
+ mLibrary
37
+ ) {
38
+ "use strict";
39
+
40
+ /**
41
+ * Constructor for a <code>ConditionsType</code> to be used in <code>DynamicDateRange</code> control.
42
+ *
43
+ * @class
44
+ * This class represents a type to map an array of conditions used in a {@link sap.ui.mdc.FilterField FilterField} control to a value of a {@link sap.m.DynamicDateRange DynamicDateRange} control.
45
+ *
46
+ * @extends sap.ui.mdc.field.ConditionsType
47
+ *
48
+ * @author SAP SE
49
+ * @version 1.97.0
50
+ *
51
+ * @since 1.96.0
52
+ * @private
53
+ * @ui5-restricted sap.ui.mdc.field.FieldBase, sap.fe
54
+ * @MDC_PUBLIC_CANDIDATE
55
+ *
56
+ * @param {object} [oFormatOptions] Formatting options
57
+ * @param {sap.ui.model.Type} [oFormatOptions.valueType] Type of the value of the condition (used for formatting and parsing)
58
+ * @param {string[]} [oFormatOptions.operators] Possible operators to be used in the condition
59
+ * @param {sap.ui.mdc.enum.FieldDisplay} [oFormatOptions.display] DisplayFormat used to visualize a value
60
+ * @param {string} [oFormatOptions.fieldHelpID] ID of the field help to determine the key and description // TODO: async request????
61
+ * @param {boolean} [oFormatOptions.hideOperator] If set, only the value of the condition is shown, but no operator //TODO
62
+ * @param {int} [oFormatOptions.maxConditions] Maximum number of allowed conditions
63
+ * @param {sap.ui.model.Context} [oFormatOptions.bindingContext] <code>BindingContext</code> of field. Used to get a key or description from the value help using in/out parameters. (In a table, the value help might be connected to a different row)
64
+ * @param {sap.ui.model.Type} [oFormatOptions.originalDateType] Type used on field, for example, for date types; a different type is used internally to have different <code>formatOptions</code>
65
+ * @param {boolean} [oFormatOptions.isUnit] If set, the type is used for the unit part of a field
66
+ * @param {function} [oFormatOptions.getConditions] Function to get the existing conditions of the field. Only used if <code>isUnit</code> is set. TODO: better solution
67
+ * @param {function} [oFormatOptions.asyncParsing] Callback function to tell the <code>Field</code> the parsing is asynchronous.
68
+ * @param {object} [oFormatOptions.navigateCondition] Condition of keyboard navigation. If this is filled, no real parsing is needed as the condition has already been determined and is just returned
69
+ * @param {object} [oFormatOptions.delegate] Field delegate to handle model-specific logic
70
+ * @param {object} [oFormatOptions.payload] Payload of the delegate
71
+ * @param {boolean} [oFormatOptions.preventGetDescription] If set, description is not read by <code>formatValue</code> as it is known that no description exists or might be set later
72
+ * @param {sap.ui.mdc.condition.ConditionModel} [oFormatOptions.conditionModel] <code>ConditionModel</code>, if bound to one
73
+ * @param {string} [oFormatOptions.conditionModelName] Name of the <code>ConditionModel</code>, if bound to one
74
+ * @param {string} [oFormatOptions.defaultOperatorName] Name of the default <code>Operator</code>
75
+ * @param {object} [oConstraints] Value constraints
76
+ * @alias sap.ui.mdc.field.DynamicDateRangeConditionsType
77
+ */
78
+ var DynamicDateRangeConditionsType = ConditionsType.extend("sap.ui.mdc.field.DynamicDateRangeConditionsType", /** @lends sap.ui.mdc.field.DynamicDateRangeConditionsType.prototype */ {
79
+
80
+ constructor : function (oFormatOptions, oConstraints) {
81
+ SimpleType.apply(this, arguments);
82
+ this.sName = "ConditionsDateRange";
83
+ this._oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.ui.mdc");
84
+ //TODO: specialConditionDataRangeType if used for tokens in MultiValue FilterField
85
+ }
86
+
87
+ });
88
+
89
+ DynamicDateRangeConditionsType.prototype.destroy = function() {
90
+
91
+ SimpleType.prototype.destroy.apply(this, arguments);
92
+
93
+ this._bDestroyed = true;
94
+
95
+ };
96
+
97
+ DynamicDateRangeConditionsType.prototype.formatValue = function(aConditions, sInternalType) {
98
+
99
+ if (aConditions == undefined || aConditions == null || this._bDestroyed) { // if destroyed do nothing
100
+ return null;
101
+ }
102
+
103
+ if (!Array.isArray(aConditions)) {
104
+ throw new FormatException("No valid conditions provided");
105
+ }
106
+
107
+ var iMaxConditions = _getMaxConditions.call(this);
108
+ var vResult;
109
+
110
+ if (iMaxConditions !== 1) {
111
+ throw new FormatException("MaxConditions must be 1");
112
+ }
113
+
114
+ if (aConditions.length === 1) {
115
+ var oCondition = aConditions[0];
116
+
117
+ var oOperator = FilterOperatorUtil.getOperator(oCondition.operator);
118
+ if (!oCondition.operator || !oOperator) {
119
+ throw new FormatException("No valid condition provided, Operator wrong.");
120
+ }
121
+
122
+ var aValues = [];
123
+ var sOption = oOperator.name;
124
+ if (mLibrary.StandardDynamicDateRangeKeys.indexOf(sOption) === -1) {
125
+ sOption = oOperator.alias || sOption;
126
+ }
127
+
128
+ for (var i = 0; i < oOperator.valueTypes.length; i++) {
129
+ if (mLibrary.StandardDynamicDateRangeKeys.indexOf(sOption) >= 0 && oOperator.valueTypes[i] === Operator.ValueType.Self) { // only for standard operators
130
+ aValues.push(_dateToTimestamp.call(this, oCondition.values[i]));
131
+ } else if (oOperator.valueTypes[i] && oOperator.valueTypes[i] !== Operator.ValueType.Static) {
132
+ aValues.push(oCondition.values[i]);
133
+ }
134
+ }
135
+
136
+ var oDynamicDateType = _getDynamicDateType.call(this, oOperator);
137
+ vResult = oDynamicDateType.formatValue({operator: sOption, values: aValues}, sInternalType);
138
+ }
139
+
140
+ return vResult;
141
+
142
+ };
143
+
144
+ function _getDynamicDateType(oOperator) {
145
+
146
+ if (!this._oDynamicDateType) {
147
+ var oDynamicDateFormatOptions = {
148
+ date: {
149
+ source: {pattern: "timestamp"}
150
+ },
151
+ "int": {}
152
+ };
153
+
154
+ this._oDynamicDateType = new DynamicDateType(oDynamicDateFormatOptions);
155
+ }
156
+
157
+ return this._oDynamicDateType;
158
+ }
159
+
160
+ function _dateToTimestamp(vValue) {
161
+
162
+ var oType = _getInternalType.call(this);
163
+ var sDate = oType.formatValue(vValue, "string");
164
+ var aDate = sDate.split("-");
165
+ var iYear = parseInt(aDate[0]);
166
+ var iMonth = parseInt(aDate[1]) - 1;
167
+ var iDate = parseInt(aDate[2]);
168
+ var iTimeStamp = new Date(iYear, iMonth, iDate).getTime();
169
+
170
+ return iTimeStamp;
171
+
172
+ }
173
+
174
+ function _timestampToDate(iTimeStamp) {
175
+
176
+ var oType = _getInternalType.call(this);
177
+ var oDate = new Date(iTimeStamp);
178
+ var iYear = oDate.getFullYear();
179
+ var iMonth = oDate.getMonth() + 1;
180
+ var iDate = oDate.getDate();
181
+ var sDate = iYear.toString() + "-" + ((iMonth < 10) ? "0" : "") + iMonth.toString() + "-" + ((iDate < 10) ? "0" : "") + iDate.toString();
182
+ var vDate = oType.parseValue(sDate, "string");
183
+
184
+ return vDate;
185
+
186
+ }
187
+
188
+ function _getInternalType() {
189
+
190
+ if (!this._oInternalType) {
191
+ var oType = _getValueType.call(this);
192
+ this._oInternalType = DateUtil.createInternalType(oType, "yyyy-MM-dd");
193
+ }
194
+
195
+ return this._oInternalType;
196
+
197
+ }
198
+
199
+ DynamicDateRangeConditionsType.prototype.parseValue = function(oValue, sInternalType) {
200
+
201
+ if (this._bDestroyed) { // if destroyed do nothing
202
+ return null;
203
+ }
204
+
205
+ if (_getMaxConditions.call(this) !== 1) {
206
+ throw new ParseException("Only one condition supported for parsing");
207
+ }
208
+
209
+ var aOperators = _getOperators.call(this);
210
+ var aConditions = [];
211
+ if (oValue && oValue.operator) {
212
+ if (oValue.operator === "PARSEERROR") {
213
+ throw new ParseException(oValue.values[0]);
214
+ }
215
+
216
+ var sOperator = oValue.operator; // sOperator is the Option name
217
+ var oOperator = FilterOperatorUtil.getOperator(sOperator); // getOperator will search via name and alias
218
+ sOperator = oOperator.name; // map it back to the real Operator name
219
+
220
+ if (oOperator) {
221
+ var oDynamicDateType = _getDynamicDateType.call(this, oOperator);
222
+ var vResult = oDynamicDateType.parseValue(oValue, sInternalType);
223
+ var aValues = [];
224
+
225
+ for (var i = 0; i < oOperator.valueTypes.length; i++) {
226
+ if (mLibrary.StandardDynamicDateRangeKeys.indexOf(oValue.operator) >= 0 && oOperator.valueTypes[i] === Operator.ValueType.Self) { // only for standard operators
227
+ aValues.push(_timestampToDate.call(this, vResult.values[i]));
228
+ } else if (oOperator.valueTypes[i] && oOperator.valueTypes[i] !== Operator.ValueType.Static) {
229
+ aValues.push(vResult.values[i]);
230
+ }
231
+ }
232
+
233
+ var oCondition = Condition.createCondition(oOperator.name, aValues, undefined, undefined, ConditionValidated.NotValidated);
234
+ FilterOperatorUtil.updateConditionValues(oCondition);
235
+ FilterOperatorUtil.checkConditionsEmpty(oCondition, aOperators);
236
+ aConditions.push(oCondition);
237
+ }
238
+ }
239
+
240
+ return aConditions;
241
+
242
+ };
243
+
244
+ DynamicDateRangeConditionsType.prototype.validateValue = function(aConditions) {
245
+
246
+ if (aConditions === undefined || aConditions === null || this._bDestroyed) { // if destroyed do nothing
247
+ return;
248
+ }
249
+
250
+ if (!Array.isArray(aConditions)) {
251
+ throw new ValidateException("No valid conditions provided");
252
+ }
253
+
254
+ var oType = _getValueType.call(this);
255
+ var aOperators = _getOperators.call(this);
256
+
257
+ for (var i = 0; i < aConditions.length; i++) {
258
+ var oCondition = aConditions[i];
259
+ if (typeof oCondition !== "object" || !oCondition.operator || !oCondition.values ||
260
+ !Array.isArray(oCondition.values)) {
261
+ throw new ValidateException(this._oResourceBundle.getText("field.VALUE_NOT_VALID"));
262
+ }
263
+
264
+ var oOperator = FilterOperatorUtil.getOperator(oCondition.operator, aOperators);
265
+
266
+ if (!oOperator) {
267
+ throw new ValidateException("No valid condition provided, Operator wrong.");
268
+ }
269
+
270
+ oOperator.validate(oCondition.values, oType);
271
+ }
272
+
273
+ };
274
+
275
+ function _getMaxConditions() {
276
+
277
+ var iMaxConditions = 1;
278
+
279
+ if (this.oFormatOptions.hasOwnProperty("maxConditions")) {
280
+ iMaxConditions = this.oFormatOptions.maxConditions;
281
+ }
282
+
283
+ return iMaxConditions;
284
+
285
+ }
286
+
287
+ function _getValueType() {
288
+
289
+ var oType = this.oFormatOptions.valueType;
290
+ if (!oType) {
291
+ throw new Error("Type missing");
292
+ }
293
+
294
+ return oType;
295
+
296
+ }
297
+
298
+ function _getOperators() {
299
+
300
+ var aOperators = this.oFormatOptions.operators;
301
+ if (!aOperators || aOperators.length === 0) {
302
+ aOperators = FilterOperatorUtil.getOperatorsForType(BaseType.Date); // TODO: check for type
303
+ }
304
+
305
+ return aOperators;
306
+
307
+ }
308
+
309
+ return DynamicDateRangeConditionsType;
310
+
311
+ });