@openui5/sap.ui.mdc 1.103.0 → 1.105.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 (320) hide show
  1. package/.reuse/dep5 +18 -1
  2. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +5 -0
  3. package/THIRDPARTY.txt +36 -3
  4. package/package.json +4 -4
  5. package/src/sap/ui/mdc/.library +1 -1
  6. package/src/sap/ui/mdc/ActionToolbar.js +3 -3
  7. package/src/sap/ui/mdc/AggregationBaseDelegate.js +1 -1
  8. package/src/sap/ui/mdc/Chart.js +49 -35
  9. package/src/sap/ui/mdc/ChartDelegate.js +2 -2
  10. package/src/sap/ui/mdc/ChartRenderer.js +1 -1
  11. package/src/sap/ui/mdc/Control.js +1 -1
  12. package/src/sap/ui/mdc/Delegate.js +2 -2
  13. package/src/sap/ui/mdc/Element.js +1 -1
  14. package/src/sap/ui/mdc/Field.js +2 -2
  15. package/src/sap/ui/mdc/FilterBar.js +3 -3
  16. package/src/sap/ui/mdc/FilterBarDelegate.js +2 -2
  17. package/src/sap/ui/mdc/FilterField.js +2 -2
  18. package/src/sap/ui/mdc/Link.js +76 -15
  19. package/src/sap/ui/mdc/LinkDelegate.js +83 -78
  20. package/src/sap/ui/mdc/MultiValueField.js +1 -1
  21. package/src/sap/ui/mdc/Table.js +18 -6
  22. package/src/sap/ui/mdc/TableDelegate.js +27 -11
  23. package/src/sap/ui/mdc/ValueHelp.js +7 -7
  24. package/src/sap/ui/mdc/ValueHelpDelegate.js +2 -2
  25. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +3 -3
  26. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarActionRenderer.js +1 -2
  27. package/src/sap/ui/mdc/chart/ChartImplementationContainer.js +70 -0
  28. package/src/sap/ui/mdc/chart/ChartImplementationContainerRenderer.js +49 -0
  29. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -1
  30. package/src/sap/ui/mdc/chart/ChartSettings.js +2 -2
  31. package/src/sap/ui/mdc/chart/ChartToolbar.js +24 -10
  32. package/src/sap/ui/mdc/chart/ChartTypeButton.js +2 -2
  33. package/src/sap/ui/mdc/chart/PropertyHelper.js +3 -3
  34. package/src/sap/ui/mdc/condition/Condition.js +1 -1
  35. package/src/sap/ui/mdc/condition/ConditionConverter.js +1 -1
  36. package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
  37. package/src/sap/ui/mdc/condition/FilterConverter.js +1 -1
  38. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +1 -1
  39. package/src/sap/ui/mdc/condition/Operator.js +1 -1
  40. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +1 -1
  41. package/src/sap/ui/mdc/condition/RangeOperator.js +1 -1
  42. package/src/sap/ui/mdc/designtime/Util.js +2 -2
  43. package/src/sap/ui/mdc/designtime/actiontoolbar/ActionToolbar.designtime.js +15 -4
  44. package/src/sap/ui/mdc/designtime/actiontoolbar/ActionToolbarAction.designtime.js +2 -2
  45. package/src/sap/ui/mdc/designtime/chart/Chart.designtime.js +5 -2
  46. package/src/sap/ui/mdc/designtime/field/Field.designtime.js +2 -2
  47. package/src/sap/ui/mdc/designtime/field/FieldBase.designtime.js +2 -2
  48. package/src/sap/ui/mdc/designtime/field/FilterField.designtime.js +2 -2
  49. package/src/sap/ui/mdc/designtime/field/MultiValueField.designtime.js +2 -2
  50. package/src/sap/ui/mdc/designtime/filterbar/FilterBar.designtime.js +4 -3
  51. package/src/sap/ui/mdc/designtime/filterbar/FilterBarBase.designtime.js +2 -2
  52. package/src/sap/ui/mdc/designtime/link/Panel.designtime.js +2 -2
  53. package/src/sap/ui/mdc/designtime/link/PanelItem.designtime.js +2 -2
  54. package/src/sap/ui/mdc/designtime/p13n/PersistenceProvider.designtime.js +2 -2
  55. package/src/sap/ui/mdc/designtime/table/Table.designtime.js +10 -8
  56. package/src/sap/ui/mdc/enum/PropagationReason.js +2 -2
  57. package/src/sap/ui/mdc/enum/SelectType.js +2 -2
  58. package/src/sap/ui/mdc/field/BoolFieldHelp.js +3 -3
  59. package/src/sap/ui/mdc/field/ConditionFieldHelp.js +3 -3
  60. package/src/sap/ui/mdc/field/ConditionType.js +1 -1
  61. package/src/sap/ui/mdc/field/ConditionsType.js +1 -1
  62. package/src/sap/ui/mdc/field/CustomFieldHelp.js +3 -3
  63. package/src/sap/ui/mdc/field/CustomFieldInfo.js +3 -3
  64. package/src/sap/ui/mdc/field/DefineConditionPanel.js +1 -1
  65. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +1 -1
  66. package/src/sap/ui/mdc/field/FieldBase.js +4 -5
  67. package/src/sap/ui/mdc/field/FieldBaseDelegate.js +2 -2
  68. package/src/sap/ui/mdc/field/FieldHelpBase.js +3 -3
  69. package/src/sap/ui/mdc/field/FieldHelpBaseDelegate.js +2 -2
  70. package/src/sap/ui/mdc/field/FieldInfoBase.js +30 -29
  71. package/src/sap/ui/mdc/field/FieldInput.js +3 -3
  72. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  73. package/src/sap/ui/mdc/field/FieldMultiInput.js +3 -3
  74. package/src/sap/ui/mdc/field/FieldValueHelp.js +3 -3
  75. package/src/sap/ui/mdc/field/FieldValueHelpContentWrapperBase.js +3 -3
  76. package/src/sap/ui/mdc/field/FieldValueHelpDelegate.js +2 -2
  77. package/src/sap/ui/mdc/field/FieldValueHelpMTableWrapper.js +3 -3
  78. package/src/sap/ui/mdc/field/FieldValueHelpMdcTableWrapper.js +3 -3
  79. package/src/sap/ui/mdc/field/FieldValueHelpTableWrapperBase.js +3 -3
  80. package/src/sap/ui/mdc/field/FieldValueHelpUITableWrapper.js +3 -3
  81. package/src/sap/ui/mdc/field/InParameter.js +3 -3
  82. package/src/sap/ui/mdc/field/ListFieldHelp.js +3 -3
  83. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  84. package/src/sap/ui/mdc/field/MultiValueFieldDelegate.js +2 -2
  85. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +3 -3
  86. package/src/sap/ui/mdc/field/OutParameter.js +3 -3
  87. package/src/sap/ui/mdc/field/TokenDisplay.js +3 -3
  88. package/src/sap/ui/mdc/field/TokenizerDisplay.js +3 -3
  89. package/src/sap/ui/mdc/field/ValueHelpPanel.js +1 -1
  90. package/src/sap/ui/mdc/field/content/BooleanContent.js +2 -2
  91. package/src/sap/ui/mdc/field/content/ContentFactory.js +8 -0
  92. package/src/sap/ui/mdc/field/content/DateContent.js +10 -2
  93. package/src/sap/ui/mdc/field/content/DateTimeContent.js +2 -2
  94. package/src/sap/ui/mdc/field/content/DefaultContent.js +2 -2
  95. package/src/sap/ui/mdc/field/content/LinkContent.js +2 -2
  96. package/src/sap/ui/mdc/field/content/SearchContent.js +2 -2
  97. package/src/sap/ui/mdc/field/content/TimeContent.js +2 -2
  98. package/src/sap/ui/mdc/field/content/UnitContent.js +2 -2
  99. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +17 -4
  100. package/src/sap/ui/mdc/filterbar/IFilterContainer.js +2 -2
  101. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +4 -4
  102. package/src/sap/ui/mdc/filterbar/aligned/FilterContainer.js +2 -2
  103. package/src/sap/ui/mdc/filterbar/aligned/FilterItemLayout.js +2 -2
  104. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +5 -5
  105. package/src/sap/ui/mdc/filterbar/p13n/FilterColumnLayout.js +2 -2
  106. package/src/sap/ui/mdc/filterbar/p13n/FilterGroupLayout.js +2 -2
  107. package/src/sap/ui/mdc/filterbar/p13n/GroupContainer.js +2 -2
  108. package/src/sap/ui/mdc/filterbar/p13n/TableContainer.js +2 -2
  109. package/src/sap/ui/mdc/filterbar/vh/CollectiveSearchSelect.js +2 -2
  110. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +3 -3
  111. package/src/sap/ui/mdc/filterbar/vh/FilterContainer.js +2 -2
  112. package/src/sap/ui/mdc/flexibility/ActionToolbar.flexibility.js +2 -2
  113. package/src/sap/ui/mdc/flexibility/ActionToolbarAction.flexibility.js +2 -2
  114. package/src/sap/ui/mdc/flexibility/AggregateFlex.js +2 -2
  115. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +3 -3
  116. package/src/sap/ui/mdc/flexibility/ChartItemFlex.js +2 -2
  117. package/src/sap/ui/mdc/flexibility/ChartTypeFlex.js +2 -2
  118. package/src/sap/ui/mdc/flexibility/ColumnFlex.js +2 -2
  119. package/src/sap/ui/mdc/flexibility/ConditionFlex.js +104 -131
  120. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +3 -3
  121. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +3 -3
  122. package/src/sap/ui/mdc/flexibility/GroupFlex.js +2 -2
  123. package/src/sap/ui/mdc/flexibility/ItemBaseFlex.js +24 -20
  124. package/src/sap/ui/mdc/flexibility/Panel.flexibility.js +4 -5
  125. package/src/sap/ui/mdc/flexibility/PanelItem.flexibility.js +2 -2
  126. package/src/sap/ui/mdc/flexibility/PropertyInfoFlex.js +2 -2
  127. package/src/sap/ui/mdc/flexibility/SortFlex.js +2 -2
  128. package/src/sap/ui/mdc/flexibility/Table.flexibility.js +2 -2
  129. package/src/sap/ui/mdc/flexibility/Util.js +3 -3
  130. package/src/sap/ui/mdc/flexibility/xConfigFlex.js +2 -2
  131. package/src/sap/ui/mdc/flp/FlpLinkDelegate.js +2 -2
  132. package/src/sap/ui/mdc/library.js +7 -2
  133. package/src/sap/ui/mdc/link/ContactDetails.js +3 -3
  134. package/src/sap/ui/mdc/link/ContactDetailsAddressItem.js +3 -3
  135. package/src/sap/ui/mdc/link/ContactDetailsEmailItem.js +3 -3
  136. package/src/sap/ui/mdc/link/ContactDetailsItem.js +3 -3
  137. package/src/sap/ui/mdc/link/ContactDetailsPhoneItem.js +3 -3
  138. package/src/sap/ui/mdc/link/ContactDetailsRenderer.js +2 -2
  139. package/src/sap/ui/mdc/link/Factory.js +3 -3
  140. package/src/sap/ui/mdc/link/FakeFlpConnector.js +1 -1
  141. package/src/sap/ui/mdc/link/LinkItem.js +3 -3
  142. package/src/sap/ui/mdc/link/Log.js +2 -2
  143. package/src/sap/ui/mdc/link/Panel.js +5 -4
  144. package/src/sap/ui/mdc/link/PanelItem.js +3 -3
  145. package/src/sap/ui/mdc/link/PanelRenderer.js +2 -2
  146. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +3 -3
  147. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +3 -3
  148. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +3 -3
  149. package/src/sap/ui/mdc/messagebundle.properties +9 -3
  150. package/src/sap/ui/mdc/messagebundle_ar.properties +5 -2
  151. package/src/sap/ui/mdc/messagebundle_bg.properties +5 -2
  152. package/src/sap/ui/mdc/messagebundle_ca.properties +5 -2
  153. package/src/sap/ui/mdc/messagebundle_cs.properties +8 -5
  154. package/src/sap/ui/mdc/messagebundle_cy.properties +5 -2
  155. package/src/sap/ui/mdc/messagebundle_da.properties +5 -2
  156. package/src/sap/ui/mdc/messagebundle_de.properties +5 -2
  157. package/src/sap/ui/mdc/messagebundle_el.properties +6 -3
  158. package/src/sap/ui/mdc/messagebundle_en.properties +5 -2
  159. package/src/sap/ui/mdc/messagebundle_en_GB.properties +5 -2
  160. package/src/sap/ui/mdc/messagebundle_en_US_sappsd.properties +5 -2
  161. package/src/sap/ui/mdc/messagebundle_en_US_saprigi.properties +5 -2
  162. package/src/sap/ui/mdc/messagebundle_en_US_saptrc.properties +5 -2
  163. package/src/sap/ui/mdc/messagebundle_es.properties +5 -2
  164. package/src/sap/ui/mdc/messagebundle_es_MX.properties +5 -2
  165. package/src/sap/ui/mdc/messagebundle_et.properties +5 -2
  166. package/src/sap/ui/mdc/messagebundle_fi.properties +5 -2
  167. package/src/sap/ui/mdc/messagebundle_fr.properties +9 -6
  168. package/src/sap/ui/mdc/messagebundle_fr_CA.properties +5 -2
  169. package/src/sap/ui/mdc/messagebundle_hi.properties +5 -2
  170. package/src/sap/ui/mdc/messagebundle_hr.properties +8 -5
  171. package/src/sap/ui/mdc/messagebundle_hu.properties +6 -3
  172. package/src/sap/ui/mdc/messagebundle_id.properties +5 -2
  173. package/src/sap/ui/mdc/messagebundle_it.properties +49 -46
  174. package/src/sap/ui/mdc/messagebundle_iw.properties +6 -3
  175. package/src/sap/ui/mdc/messagebundle_ja.properties +5 -2
  176. package/src/sap/ui/mdc/messagebundle_kk.properties +5 -2
  177. package/src/sap/ui/mdc/messagebundle_ko.properties +8 -5
  178. package/src/sap/ui/mdc/messagebundle_lt.properties +5 -2
  179. package/src/sap/ui/mdc/messagebundle_lv.properties +5 -2
  180. package/src/sap/ui/mdc/messagebundle_ms.properties +5 -2
  181. package/src/sap/ui/mdc/messagebundle_nl.properties +5 -2
  182. package/src/sap/ui/mdc/messagebundle_no.properties +6 -3
  183. package/src/sap/ui/mdc/messagebundle_pl.properties +5 -2
  184. package/src/sap/ui/mdc/messagebundle_pt.properties +6 -3
  185. package/src/sap/ui/mdc/messagebundle_pt_PT.properties +5 -2
  186. package/src/sap/ui/mdc/messagebundle_ro.properties +5 -2
  187. package/src/sap/ui/mdc/messagebundle_ru.properties +5 -2
  188. package/src/sap/ui/mdc/messagebundle_sh.properties +5 -2
  189. package/src/sap/ui/mdc/messagebundle_sk.properties +5 -2
  190. package/src/sap/ui/mdc/messagebundle_sl.properties +5 -2
  191. package/src/sap/ui/mdc/messagebundle_sv.properties +5 -2
  192. package/src/sap/ui/mdc/messagebundle_th.properties +14 -11
  193. package/src/sap/ui/mdc/messagebundle_tr.properties +5 -2
  194. package/src/sap/ui/mdc/messagebundle_uk.properties +6 -3
  195. package/src/sap/ui/mdc/messagebundle_vi.properties +5 -2
  196. package/src/sap/ui/mdc/messagebundle_zh_CN.properties +6 -3
  197. package/src/sap/ui/mdc/messagebundle_zh_TW.properties +5 -2
  198. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
  199. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
  200. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -1
  201. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  202. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +1 -1
  203. package/src/sap/ui/mdc/odata/v4/ChartDelegate.js +2 -2
  204. package/src/sap/ui/mdc/odata/v4/ChartPropertyHelper.js +3 -3
  205. package/src/sap/ui/mdc/odata/v4/FieldBaseDelegate.js +2 -2
  206. package/src/sap/ui/mdc/odata/v4/FieldValueHelpDelegate.js +2 -2
  207. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +63 -39
  208. package/src/sap/ui/mdc/odata/v4/ValueHelpDelegate.js +2 -2
  209. package/src/sap/ui/mdc/odata/v4/util/DelegateUtil.js +2 -2
  210. package/src/sap/ui/mdc/odata/v4/vizChart/ChartDelegate.js +61 -229
  211. package/src/sap/ui/mdc/p13n/AdaptationProvider.js +3 -3
  212. package/src/sap/ui/mdc/p13n/Engine.js +3 -3
  213. package/src/sap/ui/mdc/p13n/FlexUtil.js +4 -4
  214. package/src/sap/ui/mdc/p13n/P13nBuilder.js +81 -6
  215. package/src/sap/ui/mdc/p13n/PersistenceProvider.js +26 -4
  216. package/src/sap/ui/mdc/p13n/PropertyHelper.js +3 -3
  217. package/src/sap/ui/mdc/p13n/StateUtil.js +4 -4
  218. package/src/sap/ui/mdc/p13n/UIManager.js +3 -3
  219. package/src/sap/ui/mdc/p13n/modification/FlexModificationHandler.js +3 -3
  220. package/src/sap/ui/mdc/p13n/modification/ModificationHandler.js +3 -3
  221. package/src/sap/ui/mdc/p13n/modules/DefaultProviderRegistry.js +31 -11
  222. package/src/sap/ui/mdc/p13n/modules/StateHandlerRegistry.js +2 -2
  223. package/src/sap/ui/mdc/p13n/panels/ActionToolbarPanel.js +2 -2
  224. package/src/sap/ui/mdc/p13n/panels/AdaptFiltersPanel.js +3 -9
  225. package/src/sap/ui/mdc/p13n/panels/ChartItemPanel.js +39 -12
  226. package/src/sap/ui/mdc/p13n/panels/FilterPanel.js +2 -2
  227. package/src/sap/ui/mdc/p13n/panels/GroupView.js +2 -2
  228. package/src/sap/ui/mdc/p13n/panels/LinkSelectionPanel.js +2 -2
  229. package/src/sap/ui/mdc/p13n/subcontroller/ActionToolbarController.js +2 -2
  230. package/src/sap/ui/mdc/p13n/subcontroller/AdaptFiltersController.js +2 -2
  231. package/src/sap/ui/mdc/p13n/subcontroller/AggregateController.js +2 -2
  232. package/src/sap/ui/mdc/p13n/subcontroller/BaseController.js +3 -3
  233. package/src/sap/ui/mdc/p13n/subcontroller/ChartItemController.js +2 -2
  234. package/src/sap/ui/mdc/p13n/subcontroller/ChartTypeController.js +2 -2
  235. package/src/sap/ui/mdc/p13n/subcontroller/ColumnController.js +2 -2
  236. package/src/sap/ui/mdc/p13n/subcontroller/ColumnWidthController.js +2 -2
  237. package/src/sap/ui/mdc/p13n/subcontroller/FilterController.js +4 -5
  238. package/src/sap/ui/mdc/p13n/subcontroller/GroupController.js +2 -2
  239. package/src/sap/ui/mdc/p13n/subcontroller/LinkPanelController.js +4 -3
  240. package/src/sap/ui/mdc/p13n/subcontroller/SortController.js +2 -2
  241. package/src/sap/ui/mdc/table/Column.js +29 -3
  242. package/src/sap/ui/mdc/table/CreationRow.js +3 -3
  243. package/src/sap/ui/mdc/table/GridTableType.js +7 -2
  244. package/src/sap/ui/mdc/table/PropertyHelper.js +29 -34
  245. package/src/sap/ui/mdc/table/ResponsiveTableType.js +4 -3
  246. package/src/sap/ui/mdc/table/RowActionItem.js +1 -1
  247. package/src/sap/ui/mdc/table/RowSettings.js +1 -1
  248. package/src/sap/ui/mdc/table/TableSettings.js +2 -2
  249. package/src/sap/ui/mdc/table/TableTypeBase.js +5 -2
  250. package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +4 -9
  251. package/src/sap/ui/mdc/table/menu/Item.js +3 -3
  252. package/src/sap/ui/mdc/table/menu/QuickActionContainer.js +34 -0
  253. package/src/sap/ui/mdc/themes/base/Chart.less +28 -0
  254. package/src/sap/ui/mdc/themes/base/InfoPanel.less +0 -1
  255. package/src/sap/ui/mdc/util/Common.js +2 -2
  256. package/src/sap/ui/mdc/util/FilterUtil.js +2 -2
  257. package/src/sap/ui/mdc/util/FormatUtil.js +2 -2
  258. package/src/sap/ui/mdc/util/IdentifierUtil.js +2 -2
  259. package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
  260. package/src/sap/ui/mdc/util/PropertyHelper.js +59 -55
  261. package/src/sap/ui/mdc/valuehelp/Dialog.js +5 -3
  262. package/src/sap/ui/mdc/valuehelp/Popover.js +36 -8
  263. package/src/sap/ui/mdc/valuehelp/base/Container.js +7 -7
  264. package/src/sap/ui/mdc/valuehelp/base/Content.js +7 -7
  265. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +3 -3
  266. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +3 -3
  267. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +3 -3
  268. package/src/sap/ui/mdc/valuehelp/content/Bool.js +3 -3
  269. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +3 -3
  270. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +3 -3
  271. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +27 -5
  272. package/src/sap/ui/mdc/valuehelp/content/MTable.js +4 -4
  273. package/test/sap/ui/mdc/testutils/opa/JSDocGeneration.md +18 -0
  274. package/test/sap/ui/mdc/testutils/opa/TestLibrary.js +3 -1
  275. package/test/sap/ui/mdc/testutils/opa/Util.js +42 -0
  276. package/test/sap/ui/mdc/testutils/opa/Utils.js +22 -0
  277. package/test/sap/ui/mdc/testutils/opa/chart/ActionsBase.js +1 -1
  278. package/test/sap/ui/mdc/testutils/opa/chart/JSDoc.md +482 -0
  279. package/test/sap/ui/mdc/testutils/opa/chart/TestObjects.js +379 -267
  280. package/test/sap/ui/mdc/testutils/opa/field/Actions.js +50 -0
  281. package/test/sap/ui/mdc/testutils/opa/field/Assertions.js +41 -0
  282. package/test/sap/ui/mdc/testutils/opa/field/JSDoc.md +37 -0
  283. package/test/sap/ui/mdc/testutils/opa/field/TestObjects.js +52 -0
  284. package/test/sap/ui/mdc/testutils/opa/field/waitForField.js +36 -0
  285. package/test/sap/ui/mdc/testutils/opa/field/waitForFieldValueHelpButton.js +42 -0
  286. package/test/sap/ui/mdc/testutils/opa/filterbar/Actions.js +31 -7
  287. package/test/sap/ui/mdc/testutils/opa/filterbar/Assertions.js +53 -7
  288. package/test/sap/ui/mdc/testutils/opa/filterbar/JSDoc.md +188 -0
  289. package/test/sap/ui/mdc/testutils/opa/filterbar/TestObjects.js +100 -34
  290. package/test/sap/ui/mdc/testutils/opa/filterbar/Util.js +3 -3
  291. package/test/sap/ui/mdc/testutils/opa/filterbar/waitForAdaptFiltersButton.js +47 -0
  292. package/test/sap/ui/mdc/testutils/opa/filterbar/waitForFilterBar.js +28 -0
  293. package/test/sap/ui/mdc/testutils/opa/filterfield/Actions.js +70 -0
  294. package/test/sap/ui/mdc/testutils/opa/filterfield/Assertions.js +87 -0
  295. package/test/sap/ui/mdc/testutils/opa/filterfield/JSDoc.md +63 -0
  296. package/test/sap/ui/mdc/testutils/opa/filterfield/TestObjects.js +71 -0
  297. package/test/sap/ui/mdc/testutils/opa/filterfield/waitForFilterField.js +36 -0
  298. package/test/sap/ui/mdc/testutils/opa/filterfield/waitForFilterFieldValueHelpButton.js +42 -0
  299. package/test/sap/ui/mdc/testutils/opa/link/JSDoc.md +136 -0
  300. package/test/sap/ui/mdc/testutils/opa/link/TestObjects.js +108 -91
  301. package/test/sap/ui/mdc/testutils/opa/p13n/Actions.js +26 -16
  302. package/test/sap/ui/mdc/testutils/opa/p13n/Assertions.js +293 -2
  303. package/test/sap/ui/mdc/testutils/opa/p13n/Util.js +4 -3
  304. package/test/sap/ui/mdc/testutils/opa/table/Actions.js +190 -6
  305. package/test/sap/ui/mdc/testutils/opa/table/Assertions.js +210 -0
  306. package/test/sap/ui/mdc/testutils/opa/table/JSDoc.md +256 -0
  307. package/test/sap/ui/mdc/testutils/opa/table/TestObjects.js +179 -12
  308. package/test/sap/ui/mdc/testutils/opa/table/Util.js +20 -0
  309. package/test/sap/ui/mdc/testutils/opa/table/waitForColumnHeader.js +44 -0
  310. package/test/sap/ui/mdc/testutils/opa/table/waitForListItemInDialogWithLabel.js +55 -0
  311. package/test/sap/ui/mdc/testutils/opa/table/waitForP13nButtonWithParentAndIcon.js +42 -0
  312. package/test/sap/ui/mdc/testutils/opa/table/waitForTable.js +26 -0
  313. package/test/sap/ui/mdc/testutils/opa/valueHelp/JSDoc.md +35 -0
  314. package/test/sap/ui/mdc/testutils/opa/valueHelp/TestObjects.js +7 -0
  315. package/test/sap/ui/mdc/testutils/opa/valueHelp/Util.js +3 -3
  316. package/ui5.yaml +4 -1
  317. package/src/sap/ui/mdc/odata/json/FilterBarDelegate.js +0 -155
  318. package/src/sap/ui/mdc/odata/v4/FilterBarDelegate.js +0 -750
  319. package/test/sap/ui/mdc/testutils/opa/chart/ChartNew.js +0 -24
  320. package/test/sap/ui/mdc/testutils/opa/chartNew/TestObjects.js +0 -288
@@ -1,750 +0,0 @@
1
- /*
2
- * ! OpenUI5
3
- * (c) Copyright 2009-2022 SAP SE or an SAP affiliate company.
4
- * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
- */
6
-
7
- // ---------------------------------------------------------------------------------------
8
- // Helper class used to help create content in the filterbar and fill relevant metadata
9
- // ---------------------------------------------------------------------------------------
10
- // ---------------------------------------------------------------------------------------
11
- sap.ui.define([
12
- './ODataMetaModelUtil', 'sap/ui/mdc/enum/FieldDisplay', "sap/ui/fl/Utils", "sap/ui/mdc/FilterBarDelegate", 'sap/base/util/ObjectPath', 'sap/base/util/merge', 'sap/ui/mdc/odata/v4/TypeUtil', 'sap/ui/mdc/condition/FilterOperatorUtil', "sap/ui/model/FilterOperator", "sap/ui/model/Filter", 'sap/ui/mdc/util/IdentifierUtil', 'sap/ui/core/util/reflection/JsControlTreeModifier', 'sap/base/Log'
13
- ], function (ODataMetaModelUtil, FieldDisplay, FlUtils, FilterBarDelegate, ObjectPath, merge, TypeUtil, FilterOperatorUtil, ModelOperator, Filter, IdentifierUtil, JsControlTreeModifier, Log) {
14
- "use strict";
15
-
16
- /**
17
- * Helper class for sap.ui.mdc.FilterBar.
18
- * <h3><b>Note:</b></h3>
19
- * The class is experimental and the API/behaviour is not finalized and hence this should not be used for productive usage.
20
- * @author SAP SE
21
- * @private
22
- * @experimental
23
- * @since 1.60
24
- * @alias sap.ui.mdc.odata.v4.FilterBarDelegate
25
- */
26
- var ODataFilterBarDelegate = Object.assign({}, FilterBarDelegate);
27
-
28
- // TO DO
29
- var mDefaultTypeForEdmType = {
30
- "Edm.Boolean": "Bool",
31
- "Edm.Byte": "Int",
32
- "Edm.DateTime": "Date",
33
- "Edm.DateTimeOffset": "DateTimeOffset",
34
- "Edm.Decimal": "Decimal",
35
- "Edm.Double": "Float",
36
- "Edm.Float": "Float",
37
- "Edm.Guid": "Guid",
38
- "Edm.Int16": "Int",
39
- "Edm.Int32": "Int",
40
- "Edm.Int64": "Int",
41
- "Edm.SByte": "Int",
42
- "Edm.Single": "Float",
43
- "Edm.String": "String",
44
- "Edm.Time": "TimeOfDay"
45
- };
46
-
47
- var InstanceCache = new Map();
48
-
49
- ODataFilterBarDelegate._fetchPropertiesByMetadata = function(oControl, mPropertyBag) {
50
-
51
- var oDelegate, sModelName, sCollectionName, oModel, sFilterBarId;
52
-
53
- return Promise.resolve()
54
- .then(function() {
55
- if (mPropertyBag) {
56
- var oModifier = mPropertyBag.modifier;
57
-
58
- return Promise.resolve()
59
- .then(oModifier.getProperty.bind(oModifier, oControl, "delegate"))
60
- .then(function(oDelegate) {
61
- sModelName = oDelegate.payload.modelName === null ? undefined : oDelegate.payload.modelName;
62
- sCollectionName = oDelegate.payload.collectionName;
63
- oModel = mPropertyBag.appComponent.getModel(sModelName);
64
- });
65
- }
66
- oDelegate = oControl.getProperty("delegate");
67
- sModelName = oDelegate.payload.modelName === null ? undefined : oDelegate.payload.modelName;
68
- sCollectionName = oDelegate.payload.collectionName;
69
- oModel = oControl.getModel(sModelName);
70
- })
71
- .then(function() {
72
- sFilterBarId = oControl.getId ? oControl.getId() : oControl.id;
73
-
74
- var oObj = {
75
- getDelegate: function() {
76
- return {
77
- payload : {
78
- modelName : sModelName,
79
- collectionName: sCollectionName
80
- }
81
- };
82
- },
83
-
84
- getModel : function (s) {
85
- return oModel;
86
- },
87
-
88
- getId : function() {
89
- return sFilterBarId;
90
- }
91
- };
92
-
93
- return mPropertyBag ? this.fetchProperties(oObj) : Promise.resolve(oControl.getPropertyHelper().getProperties());
94
- }.bind(this));
95
- };
96
-
97
- ODataFilterBarDelegate._ensureSingleRangeEQOperators = function() {
98
- var oOperator;
99
- if (!FilterOperatorUtil.getOperator("SINGLE_RANGE_EQ")) {
100
- oOperator = merge({}, FilterOperatorUtil.getOperator("EQ"));
101
- oOperator.name = "SINGLE_RANGE_EQ";
102
- oOperator.getModelFilter = function(oCondition, sFieldPath) {
103
- return new Filter({ filters: [new Filter(sFieldPath, ModelOperator.GE, oCondition.values[0]),
104
- new Filter(sFieldPath, ModelOperator.LE, oCondition.values[0])],
105
- and: true});
106
- };
107
-
108
- FilterOperatorUtil.addOperator(oOperator);
109
- }
110
-
111
- if (!FilterOperatorUtil.getOperator("SINGLE_RANGE_EQ")) {
112
- oOperator = merge({}, FilterOperatorUtil.getOperator("EQ"));
113
- oOperator.name = "SINGLE_RANGE_EQ";
114
- oOperator.getModelFilter = function(oCondition, sFieldPath) {
115
- return new Filter({ filters: [new Filter(sFieldPath, ModelOperator.GE, oCondition.values[0]),
116
- new Filter(sFieldPath, ModelOperator.LE, oCondition.values[0])],
117
- and: true});
118
- };
119
-
120
- FilterOperatorUtil.addOperator(oOperator);
121
- }
122
- };
123
-
124
- ODataFilterBarDelegate._ensureMultiRangeBTEXOperator = function() {
125
- if (!FilterOperatorUtil.getOperator("MULTI_RANGE_BTEX")) {
126
- var oOperator = merge({}, FilterOperatorUtil.getOperator("BT"));
127
- oOperator.name = "MULTI_RANGE_BTEX";
128
- oOperator.getModelFilter = function(oCondition, sFieldPath) {
129
- return new Filter({ filters:[new Filter(sFieldPath, ModelOperator.GT, oCondition.values[0]),
130
- new Filter(sFieldPath, ModelOperator.LT, oCondition.values[1])],
131
- and: true});
132
- };
133
-
134
- FilterOperatorUtil.addOperator(oOperator);
135
- }
136
- };
137
-
138
- ODataFilterBarDelegate._getFilterOperators = function(sFilterExpression) {
139
- var sOperators = null, aOperators = null;
140
-
141
- switch (sFilterExpression) {
142
- case "SingleValue":
143
- case "MultiValue": sOperators = "EQ"; break;
144
-
145
- case "SingleRange": sOperators = "SINGLE_RANGE_EQ,SINGLE_RANGE_EQ,LE,GE"; this._ensureSingleRangeEQOperators(); break;
146
- case "MultiRange": sOperators = "EQ,LE,LT,GE,GT,BT,MULTI_RANGE_BTEX"; this._ensureMultiRangeBTEXOperator(); break;
147
-
148
- case "SearchExpression": sOperators = "StartsWith,EndsWith,Contains"; break;
149
- case "MultiRangeOrSearchExpression": sOperators = "StartsWith,EndsWith,Contains,EQ,LE,LT,GE,GT,BT,MULTI_RANGE_BTEX"; this._ensureMultiRangeBTEXOperator(); break;
150
- default: break;
151
- }
152
-
153
- if (sOperators) {
154
- aOperators = sOperators.split(',');
155
- }
156
-
157
- return aOperators;
158
- };
159
-
160
- ODataFilterBarDelegate._createFilterField = function(oProperty, oFilterBar, mPropertyBag) {
161
- var oModifier = mPropertyBag ? mPropertyBag.modifier : JsControlTreeModifier;
162
- var oAppComponent = mPropertyBag ? mPropertyBag.appComponent : FlUtils.getAppComponentForControl(oFilterBar);
163
- var oView = (mPropertyBag && mPropertyBag.view ) ? mPropertyBag.view : FlUtils.getViewForControl(oFilterBar);
164
- var sViewId = mPropertyBag ? mPropertyBag.viewId : null;
165
- var sName = oProperty.path || oProperty.name;
166
- var oSelector = {};
167
-
168
- if (oFilterBar.getId) {
169
- oSelector.id = oFilterBar.getId();
170
- } else {
171
- oSelector.id = oFilterBar.id;
172
- }
173
-
174
- var sSelectorId = oModifier.getControlIdBySelector(oSelector, oAppComponent);
175
-
176
- var sId = sSelectorId + "--filter--" + IdentifierUtil.replace(sName);
177
-
178
- var oExistingFilterField = sap.ui.getCore().byId(sId);
179
-
180
- if (oExistingFilterField) {
181
- return Promise.resolve(oExistingFilterField);
182
- }
183
-
184
- return Promise.resolve()
185
- .then(oModifier.createControl.bind(oModifier, "sap.ui.mdc.FilterField", oAppComponent, oView, sId, {
186
- dataType: oProperty.typeConfig.className,
187
- conditions: "{$filters>/conditions/" + sName + '}',
188
- required: oProperty.required,
189
- label: oProperty.label || oProperty.name,
190
- maxConditions: oProperty.maxConditions,
191
- delegate: {name: "sap/ui/mdc/odata/v4/FieldBaseDelegate", payload: {}}
192
- })).then(function(oFilterField) {
193
- if (oProperty.fieldHelp) {
194
-
195
- var sFieldHelp = oProperty.fieldHelp;
196
- if (!sViewId) { // viewId is only set during xmlTree processing
197
- sFieldHelp = oView.createId(oProperty.fieldHelp);
198
- } else {
199
- sFieldHelp = sViewId + "--" + oProperty.fieldHelp;
200
- }
201
- oModifier.setAssociation(oFilterField, "fieldHelp", sFieldHelp);
202
- }
203
-
204
- if (oProperty.filterOperators) {
205
- if (oFilterBar.getId) {
206
- oModifier.setProperty(oFilterField, "operators", oProperty.filterOperators);
207
- } else {
208
- oModifier.setProperty(oFilterField, "operators", oProperty.filterOperators.join(','));
209
- }
210
- }
211
-
212
- if (oProperty.tooltip) {
213
- oModifier.setProperty(oFilterField, "tooltip", oProperty.tooltip);
214
- }
215
-
216
- if (oProperty.constraints) {
217
- oModifier.setProperty(oFilterField, "dataTypeConstraints", oProperty.constraints);
218
- }
219
-
220
- if (oProperty.formatOptions) {
221
- oModifier.setProperty(oFilterField, "dataTypeFormatOptions", oProperty.formatOptions);
222
- }
223
-
224
- if (oProperty.display) {
225
- oModifier.setProperty(oFilterField, "display", oProperty.display);
226
- }
227
- return oFilterField;
228
- });
229
- };
230
-
231
- ODataFilterBarDelegate._createFilter = function(sPropertyName, oFilterBar, mPropertyBag) {
232
- return this._fetchPropertiesByMetadata(oFilterBar, mPropertyBag).then(function(aProperties) {
233
- var oPropertyInfo = aProperties.find(function(oProperty) {
234
- return (IdentifierUtil.getPropertyKey(oProperty) === sPropertyName);
235
- });
236
- if (!oPropertyInfo) {
237
- return null;
238
- }
239
- return Promise.resolve(this._createFilterField(oPropertyInfo, oFilterBar, mPropertyBag));
240
- }.bind(this));
241
- };
242
-
243
- ODataFilterBarDelegate.addItem = function(sPropertyName, oFilterBar, mPropertyBag) {
244
- return Promise.resolve(this._createFilter(sPropertyName, oFilterBar, mPropertyBag));
245
- };
246
-
247
-
248
- ODataFilterBarDelegate._getInstanceCacheEntry = function(oControl, sKey) {
249
- var sId = oControl.getId && oControl.getId() || oControl.id;
250
- var oCacheEntry = InstanceCache.get(sId);
251
- return oCacheEntry && oCacheEntry[sKey];
252
- };
253
- ODataFilterBarDelegate._setInstanceCacheEntry = function(oControl, sKey, oValue) {
254
- var sId = oControl.getId && oControl.getId() || oControl.id;
255
- var oCacheEntry = InstanceCache.get(sId) || {};
256
- oCacheEntry[sKey] = oValue;
257
- InstanceCache.set(sId, oCacheEntry);
258
- };
259
-
260
- ODataFilterBarDelegate._addPropertyInfoEntry = function(oControl, sPropertyName, aPropertyInfo, aFetchedProperties, oModifier) {
261
-
262
- if (aFetchedProperties) {
263
- var nIdx = aFetchedProperties.findIndex(function(oEntry) {
264
- return oEntry.name === sPropertyName;
265
- });
266
-
267
- if (nIdx >= 0) {
268
- aPropertyInfo.push({
269
- name: sPropertyName,
270
- dataType: aFetchedProperties[nIdx].typeConfig.className,
271
- maxConditions: aFetchedProperties[nIdx].maxConditions,
272
- constraints: aFetchedProperties[nIdx].constraints,
273
- formatOption: aFetchedProperties[nIdx].formatOptions,
274
- required: aFetchedProperties[nIdx].required,
275
- caseSensitive: aFetchedProperties[nIdx].caseSensitive,
276
- display: aFetchedProperties[nIdx].display,
277
- label: aFetchedProperties[nIdx].label,
278
- hiddenFilter: aFetchedProperties[nIdx].hiddenFilter
279
- });
280
- oModifier.setProperty(oControl, "propertyInfo", aPropertyInfo);
281
- } else {
282
- Log.error("ConditionFlex-ChangeHandler: no type info for property '" + sPropertyName + "'");
283
- }
284
- }
285
- };
286
-
287
-
288
- ODataFilterBarDelegate._updatePropertyInfo = function(sPropertyName, oFilterBar, mPropertyBag) {
289
-
290
- if (oFilterBar.isA && oFilterBar.isA("sap.ui.mdc.FilterBar")) {
291
- return Promise.resolve();
292
- }
293
-
294
- var oModifier = mPropertyBag.modifier;
295
-
296
- return oModifier.getProperty(oFilterBar, "propertyInfo")
297
- .then(function(aPropertyInfo) {
298
- if (!aPropertyInfo) {
299
- return Promise.resolve();
300
- }
301
- var nIdx = aPropertyInfo.findIndex(function(oEntry) {
302
- return oEntry.name === sPropertyName;
303
- });
304
-
305
- if (nIdx < 0) {
306
-
307
- var aFetchedProperties = ODataFilterBarDelegate._getInstanceCacheEntry(oFilterBar, "fetchedProperties");
308
- if (aFetchedProperties) {
309
- ODataFilterBarDelegate._addPropertyInfoEntry(oFilterBar, sPropertyName, aPropertyInfo, aFetchedProperties, oModifier);
310
- } else {
311
- //fetch
312
- return ODataFilterBarDelegate.fetchProperties(oFilterBar, mPropertyBag)
313
- .then(function(aProperties) {
314
- ODataFilterBarDelegate._setInstanceCacheEntry(oFilterBar, "fetchedProperties", aProperties);
315
- ODataFilterBarDelegate._addPropertyInfoEntry(oFilterBar, sPropertyName, aPropertyInfo, aProperties, oModifier);
316
- });
317
- }
318
- }
319
- });
320
- };
321
-
322
-
323
- /**
324
- * This methods is called during the appliance of the add condition change.
325
- * This intention is to update the propertyInfo property.
326
- *
327
- * @param {string} sPropertyName The name of a property.
328
- * @param {sap.ui.mdc.FilterBar} oFilterBar - the instance of filter bar
329
- * @param {Object} mPropertyBag Instance of property bag from Flex change API
330
- * @returns {Promise} Promise that resolves once the properyInfo property was updated
331
- */
332
- ODataFilterBarDelegate.addCondition = function(sPropertyName, oFilterBar, mPropertyBag) {
333
- return ODataFilterBarDelegate._updatePropertyInfo(sPropertyName, oFilterBar, mPropertyBag);
334
- };
335
-
336
- /**
337
- * This methods is called during the appliance of the remove condition change.
338
- * This intention is to update the propertyInfo property.
339
- *
340
- * @param {string} sPropertyName The name of a property.
341
- * @param {sap.ui.mdc.FilterBar} oFilterBar - the instance of filter bar
342
- * @param {Object} mPropertyBag Instance of property bag from Flex change API
343
- * @returns {Promise} Promise that resolves once the properyInfo property was updated
344
- */
345
- ODataFilterBarDelegate.removeCondition = function(sPropertyName, oFilterBar, mPropertyBag) {
346
- return ODataFilterBarDelegate._updatePropertyInfo(sPropertyName, oFilterBar, mPropertyBag);
347
- };
348
-
349
-
350
- /**
351
- * Can be used to trigger any necessary follow-up steps on removal of filter items. The returned boolean value inside the Promise can be used to
352
- * prevent default follow-up behaviour of Flex.
353
- *
354
- * @param {sap.ui.mdc.FilterField} oFilterField The mdc.FilterField that was removed
355
- * @param {sap.ui.mdc.FilterBar} oFilterBar - the instance of filter bar
356
- * @param {Object} mPropertyBag Instance of property bag from Flex change API
357
- * @returns {Promise} Promise that resolves with true/false to allow/prevent default behavour of the change
358
- */
359
- ODataFilterBarDelegate.removeItem = function(oFilterField, oFilterBar, mPropertyBag) {
360
- // return true within the Promise for default behaviour
361
- return Promise.resolve(true);
362
- };
363
-
364
- ODataFilterBarDelegate._getFieldGroupsByFilterFacetsAnnotation = function (oMetaModel, sEntitySet) {
365
-
366
- };
367
-
368
- ODataFilterBarDelegate._getNavigationPropertyForParameter = function(oEntityType) {
369
- var oObj;
370
- for (var sKey in oEntityType) {
371
- oObj = oEntityType[sKey];
372
- if (oObj) {
373
- if (oObj.$kind === "NavigationProperty") {
374
- return sKey;
375
- }
376
- }
377
- }
378
-
379
- return null;
380
- };
381
-
382
- ODataFilterBarDelegate._fetchPropertyInfo = function (oMetaModel, sEntitySetPath, sNavigationPropertyName, oObj, sKey) {
383
- var oEntitySetTextArrangementAnnotation = oMetaModel.getObject(sEntitySetPath + "/" + "@com.sap.vocabularies.UI.v1.TextArrangement");
384
-
385
- var bHiddenFilter = false;
386
- if (oMetaModel.getObject(sEntitySetPath + "/" + sKey + "@com.sap.vocabularies.UI.v1.HiddenFilter")) {
387
- bHiddenFilter = true;
388
- }
389
-
390
- var bIsDigitalSequence = false;
391
- if (oMetaModel.getObject(sEntitySetPath + "/" + sKey + "@com.sap.vocabularies.Common.v1.IsDigitSequence")) {
392
- bIsDigitalSequence = true;
393
- }
394
-
395
- var oFilterDefaultValue = null;
396
- var oFilterDefaultValueAnnotation = oMetaModel.getObject(sEntitySetPath + "/" + sKey + "@com.sap.vocabularies.Common.v1.FilterDefaultValue");
397
- if (oFilterDefaultValueAnnotation) {
398
- var sValue = oFilterDefaultValueAnnotation["$" + mDefaultTypeForEdmType[oObj.$Type]];
399
- switch (oObj.$Type) {
400
- case "Edm.DateTimeOffset": oFilterDefaultValue = sValue; break;
401
- default: oFilterDefaultValue = sValue;
402
- }
403
- }
404
-
405
- var bIsUpperCase = false;
406
- if (oMetaModel.getObject(sEntitySetPath + "/" + sKey + "@com.sap.vocabularies.Common.v1.IsUpperCase")) {
407
- bIsUpperCase = true;
408
- }
409
-
410
- var sLabel = oMetaModel.getObject(sEntitySetPath + "/" + sKey + "@com.sap.vocabularies.Common.v1.Label") || sKey;
411
- var sTooltip = oMetaModel.getObject(sEntitySetPath + "/" + sKey + "@com.sap.vocabularies.Common.v1.QuickInfo") || null;
412
-
413
- var oConstraints = {};
414
- if (oObj.$MaxLength || oObj.$Precision || oObj.$Scale || bIsDigitalSequence) {
415
- if (oObj.$MaxLength) {
416
- oConstraints.maxLength = oObj.$MaxLength;
417
- }
418
- if (oObj.$Precision) {
419
- oConstraints.precision = oObj.$Precision;
420
- }
421
- if (oObj.$Scale) {
422
- oConstraints.scale = oObj.$Scale;
423
- }
424
- if (bIsDigitalSequence) {
425
- oConstraints.isDigitSequence = bIsDigitalSequence;
426
- }
427
- } else {
428
- oConstraints = null;
429
- }
430
-
431
- var sDisplay, oTextAnnotation = oMetaModel.getObject(sEntitySetPath + "/" + sKey + "@com.sap.vocabularies.Common.v1.Text");
432
- if (oTextAnnotation) {
433
- var oTextArrangementAnnotation = oMetaModel.getObject(sEntitySetPath + "/" + sKey + "@com.sap.vocabularies.Common.v1.Text@com.sap.vocabularies.UI.v1.TextArrangement") || oEntitySetTextArrangementAnnotation;
434
- if (oTextArrangementAnnotation) {
435
- if (oTextArrangementAnnotation.$EnumMember === "com.sap.vocabularies.UI.v1.TextArrangementType/TextOnly") {
436
- sDisplay = FieldDisplay.Description;
437
- } else if (oTextArrangementAnnotation.$EnumMember === "com.sap.vocabularies.UI.v1.TextArrangementType/TextLast") {
438
- sDisplay = FieldDisplay.ValueDescription;
439
- } else {
440
- sDisplay = FieldDisplay.DescriptionValue;
441
- }
442
- } else {
443
- sDisplay = FieldDisplay.DescriptionValue;
444
- }
445
- }
446
-
447
- var oProperty = {
448
- name: sKey,
449
- label: sLabel,
450
- tooltip: sTooltip,
451
- hiddenFilter: bHiddenFilter,
452
- caseSensitive: !bIsUpperCase
453
- };
454
-
455
- if (sDisplay) {
456
- oProperty.display = sDisplay;
457
- }
458
-
459
- // if (oObj.$Type === "Edm.DateTimeOffset") {
460
- // if (!oConstraints) {
461
- // oConstraints = {};
462
- // }
463
-
464
- // oConstraints.V4 = true;
465
- // }
466
-
467
- if (oConstraints) {
468
- oProperty.constraints = oConstraints;
469
- }
470
-
471
- if (oFilterDefaultValue) {
472
- oProperty.defaultFilterConditions = [{ fieldPath: sKey, operator: "EQ", values: [oFilterDefaultValue] }];
473
- }
474
-
475
- //Currently the FilterBar will use 'name' as key for the identification between existing
476
- //FilterFields - currently there is no connection such as 'dataProperties' between existing Fields
477
- //and PropertyInfo, the usage of a complex 'name' (e.g. containing '/') might be reconsidered.
478
- oProperty.name = sNavigationPropertyName ? sNavigationPropertyName + "/" + sKey : sKey;
479
-
480
- oProperty.typeConfig = TypeUtil.getTypeConfig(oObj.$Type, oProperty.formatOptions, oProperty.constraints);
481
-
482
- return oProperty;
483
- };
484
-
485
- ODataFilterBarDelegate._fetchEntitySet = function (oMetaModel, sEntitySetPath, aVisitedEntityTypes, sNavigationPropertyName, oParameterInfo) {
486
- return Promise.all([oMetaModel.requestObject(sEntitySetPath + "/"), oMetaModel.requestObject(sEntitySetPath + "@")]).then(function(aResults) {
487
- var oEntityType = aResults[0];
488
- var mEntitySetAnnotations = aResults[1] || {};
489
-
490
- if (!oEntityType) {
491
- return Promise.resolve([]);
492
- }
493
-
494
- var oObj,
495
- oPropertyInfo,
496
- aFetchedProperties = [],
497
- aPropertyListPromises = [],
498
- aNonFilterableProps = [],
499
- aRequiredProps = [],
500
- aSelectionFields = [],
501
- mAllowedExpressions = {},
502
- mNavigationProperties = {},
503
- bIsParameterType = false;
504
-
505
- var oEntitySet = oMetaModel.getObject(sEntitySetPath);
506
- if (oEntitySet && oEntitySet.$NavigationPropertyBinding) {
507
- mNavigationProperties = oEntitySet.$NavigationPropertyBinding;
508
- }
509
-
510
- // find filter restrictions
511
- var oAnnotation = mEntitySetAnnotations["@Org.OData.Capabilities.V1.FilterRestrictions"];
512
- if (oAnnotation) {
513
- if (oAnnotation.NonFilterableProperties) {
514
- aNonFilterableProps = oAnnotation.NonFilterableProperties.map(function(oProperty) {
515
- return oProperty.$PropertyPath;
516
- });
517
- }
518
-
519
- if (oAnnotation.RequiredProperties) {
520
- aRequiredProps = oAnnotation.RequiredProperties.map(function(oProperty) {
521
- return oProperty.$PropertyPath;
522
- });
523
- }
524
-
525
- if (oAnnotation.FilterExpressionRestrictions) {
526
- oAnnotation.FilterExpressionRestrictions.forEach(function(oProperty) {
527
- //SingleValue | MultiValue | SingleRange | MultiRange | SearchExpression | MultiRangeOrSearchExpression
528
- mAllowedExpressions[oProperty.Property.$PropertyPath] = oProperty.AllowedExpressions;
529
- });
530
- }
531
- }
532
-
533
- // find selection fields
534
- oAnnotation = oMetaModel.getObject(sEntitySetPath + "/" + "@com.sap.vocabularies.UI.v1.SelectionFields");
535
- if (oAnnotation) {
536
- aSelectionFields = oAnnotation.map(function(oProperty) {
537
- return oProperty.$PropertyPath;
538
- });
539
- }
540
-
541
- var sEntityName = oMetaModel.getObject(sEntitySetPath + "/@sapui.name");
542
- var sGroup = sEntityName;
543
- var sGroupLabel = oMetaModel.getObject(sEntitySetPath + "@com.sap.vocabularies.Common.v1.Label");
544
- if (!sGroupLabel ) {
545
- sGroupLabel = sGroup.split(".")[1];
546
- }
547
-
548
- aVisitedEntityTypes.push(sEntityName);
549
-
550
- oAnnotation = oMetaModel.getObject(sEntitySetPath + "/" + "@com.sap.vocabularies.Common.v1.ResultContext");
551
- if (oAnnotation) {
552
- bIsParameterType = true;
553
- oParameterInfo.parameterNavigationName = ODataFilterBarDelegate._getNavigationPropertyForParameter(oEntityType);
554
- }
555
-
556
- if (!sNavigationPropertyName) {
557
- var aSplitEntityType = sEntityName.split('.');
558
- oParameterInfo.parameterEntityType = aSplitEntityType[aSplitEntityType.length - 1];
559
- }
560
-
561
- for (var sKey in oEntityType) {
562
- oObj = oEntityType[sKey];
563
- if (oObj) {
564
- if (bIsParameterType && (sKey === "$Key")) {
565
- oParameterInfo.parameters = merge([], oObj);
566
- } else if (oObj.$kind === "Property") {
567
-
568
- // skip non-filterable property
569
- if (aNonFilterableProps.indexOf(sKey) >= 0) {
570
- continue;
571
- }
572
- if (oMetaModel.getObject(sEntitySetPath + "/" + sKey + "@com.sap.vocabularies.UI.v1.Hidden")) {
573
- continue;
574
- }
575
-
576
- // ignore (as for now) all complex properties
577
- // not clear if they might be nesting (complex in complex)
578
- // not clear how they are represented in non-filterable annotation
579
- // etc.
580
- if (oObj.$isCollection) {
581
- Log.warning("Complex property with type " + oObj.$Type + " has been ignored");
582
- continue;
583
- }
584
-
585
- oPropertyInfo = ODataFilterBarDelegate._fetchPropertyInfo(oMetaModel, sEntitySetPath, sNavigationPropertyName, oObj, sKey, oParameterInfo);
586
- if (oPropertyInfo) {
587
- oPropertyInfo.group = sGroup;
588
- oPropertyInfo.groupLabel = sGroupLabel;
589
-
590
- oPropertyInfo.required = aRequiredProps.indexOf(sKey) >= 0;
591
- oPropertyInfo.visible = aSelectionFields.indexOf(sKey) >= 0;
592
- if (mAllowedExpressions[sKey]) {
593
- var aOperators = ODataFilterBarDelegate._getFilterOperators(mAllowedExpressions[sKey]);
594
- if (aOperators) {
595
- oPropertyInfo.filterOperators = aOperators;
596
- }
597
- }
598
- oPropertyInfo.maxConditions = ODataMetaModelUtil.isMultiValueFilterExpression(mAllowedExpressions[sKey]) ? -1 : 1;
599
-
600
- if (bIsParameterType && oParameterInfo && (oParameterInfo.parameters.indexOf(sKey) > -1)) {
601
- oPropertyInfo.path = null;
602
- oPropertyInfo.name = sKey;
603
- oPropertyInfo.required = true;
604
- oParameterInfo.parameterTypes[sKey] = oObj.$Type;
605
- aFetchedProperties.push(oPropertyInfo);
606
- } else if (!bIsParameterType) {
607
- aFetchedProperties.push(oPropertyInfo);
608
- }
609
- }
610
-
611
- } else if (!bIsParameterType && (oObj.$kind === "NavigationProperty") && (!oObj.$isCollection)) {
612
- var sNavigationPropertySet = mNavigationProperties[sKey];
613
- if (sNavigationPropertySet && (aVisitedEntityTypes.indexOf(oObj.$Type) === -1)) {
614
- aPropertyListPromises.push(ODataFilterBarDelegate._fetchEntitySet(oMetaModel, '/' + sNavigationPropertySet, aVisitedEntityTypes, sKey, oParameterInfo));
615
- }
616
- }
617
- }
618
- }
619
- return Promise.all(aPropertyListPromises).then(function(aAProperties) {
620
- aAProperties.forEach(function(aProperties) {
621
- aFetchedProperties = aFetchedProperties.concat(aProperties);
622
- });
623
- return aFetchedProperties;
624
- });
625
- });
626
- };
627
-
628
-
629
- ODataFilterBarDelegate._waitForMetaModel = function (oFilterBar, sPassedModelName) {
630
-
631
- return new Promise(function(resolve, reject) {
632
-
633
- var resolveMetaModel = function () {
634
- var sModelName = sPassedModelName === null ? undefined : sPassedModelName;
635
- var oModel = oFilterBar.getModel(sModelName);
636
- if (oModel) {
637
- resolve(oModel);
638
- }
639
- return oModel;
640
- };
641
-
642
- var handleContextChange = function () {
643
- if (resolveMetaModel()) {
644
- oFilterBar.detachModelContextChange(handleContextChange);
645
- }
646
- };
647
-
648
- if (!resolveMetaModel()) {
649
- if (!oFilterBar.attachModelContextChange) {
650
- reject();
651
- return;
652
- }
653
- oFilterBar.attachModelContextChange(handleContextChange);
654
- }
655
- });
656
- };
657
-
658
-
659
- /**
660
- * Fetches the relevant metadata for a given payload and returns property info array.
661
- * @param {object} oFilterBar - the instance of filter bar
662
- * @returns {Promise} once resolved an array of property info is returned
663
- */
664
- ODataFilterBarDelegate.fetchProperties = function (oFilterBar, mPropertyBag) {
665
-
666
- if (!(oFilterBar.isA && oFilterBar.isA("sap.ui.mdc.FilterBar")) && mPropertyBag) {
667
- return ODataFilterBarDelegate._fetchPropertiesByMetadata(oFilterBar, mPropertyBag);
668
- }
669
-
670
- var sModelName = oFilterBar.getDelegate().payload.modelName;
671
- var sEntitySet = oFilterBar.getDelegate().payload.collectionName;
672
-
673
- return new Promise(function (resolve, reject) {
674
-
675
- var oMetaModel;
676
-
677
- var oCachedEntitySet = ODataFilterBarDelegate._getInstanceCacheEntry(oFilterBar, "fetchedProperties");
678
- if (oCachedEntitySet) {
679
- resolve(oCachedEntitySet);
680
- return;
681
- }
682
-
683
- this._waitForMetaModel(oFilterBar, sModelName).then(function(oModel) {
684
- if (!oModel || !sEntitySet) {
685
- reject("model or entity set name not available");
686
- return;
687
- }
688
-
689
- oMetaModel = oModel.getMetaModel();
690
- if (!oMetaModel) {
691
- reject("metadata model not available");
692
- } else {
693
- var aVisitedEntityTypes = [];
694
- var oParamInfo = {
695
- parameterNavigationName: null,
696
- parameters: [],
697
- parameterTypes: {}
698
- };
699
- ODataFilterBarDelegate._fetchEntitySet(oMetaModel, '/' + sEntitySet, aVisitedEntityTypes, null, oParamInfo).then(function(aProperties) {
700
-
701
- if (oParamInfo.parameterNavigationName && (oParamInfo.parameters.length > 0)) {
702
- ODataFilterBarDelegate._setInstanceCacheEntry(oFilterBar, sEntitySet + "-Parameters", oParamInfo);
703
-
704
- //parameters are initially at the top of the result
705
- aProperties.sort(function(p1, p2) {
706
- var p1Key = p1.path || p1.name;
707
- var p2Key = p2.path || p2.name;
708
- if ((!(oParamInfo.parameters.indexOf(p1Key) > -1) && !(oParamInfo.parameters.indexOf(p2Key) > -1)) ||
709
- ( (oParamInfo.parameters.indexOf(p1Key) > -1) && (oParamInfo.parameters.indexOf(p2Key) > -1)) ) {
710
- return 0;
711
- }
712
- if ((oParamInfo.parameters.indexOf(p1Key) > -1) && !(oParamInfo.parameters.indexOf(p2Key) > -1)) {
713
- return -1;
714
- }
715
- if (!(oParamInfo.parameters.indexOf(p1Key) > -1) && (oParamInfo.parameters.indexOf(p2Key) > -1)) {
716
- return 1;
717
- }
718
- });
719
- }
720
-
721
- var mProperties = aProperties.reduce(function(mMap, oProp){
722
- mMap[oProp.name] = oProp;
723
- return mMap;
724
- }, {});
725
-
726
- aProperties = Object.keys(mProperties).map(function(sName) {
727
- return mProperties[sName];
728
- });
729
-
730
- ODataFilterBarDelegate._setInstanceCacheEntry(oFilterBar, "fetchedProperties", aProperties);
731
- resolve(aProperties);
732
- });
733
- }
734
- }, function() {
735
- reject("model not obtained");
736
- });
737
-
738
- }.bind(this));
739
- };
740
-
741
- ODataFilterBarDelegate.cleanup = function (oFilterBar) {
742
- InstanceCache.delete(oFilterBar.getId());
743
- };
744
-
745
- ODataFilterBarDelegate.getTypeUtil = function (oPayload) {
746
- return TypeUtil;
747
- };
748
-
749
- return ODataFilterBarDelegate;
750
- });