@sapui5/sap.fe.core 1.99.0 → 1.100.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 (246) hide show
  1. package/package.json +4 -2
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +1 -69
  4. package/src/sap/fe/core/AnnotationHelper.ts +0 -70
  5. package/src/sap/fe/core/AppComponent.js +388 -399
  6. package/src/sap/fe/core/AppComponent.ts +403 -0
  7. package/src/sap/fe/core/AppStateHandler.js +127 -158
  8. package/src/sap/fe/core/BaseController.js +82 -58
  9. package/src/sap/fe/core/BaseController.ts +68 -0
  10. package/src/sap/fe/core/CommonUtils.js +111 -20
  11. package/src/sap/fe/core/CommonUtils.ts +131 -32
  12. package/src/sap/fe/core/ExtensionAPI.js +278 -274
  13. package/src/sap/fe/core/ExtensionAPI.ts +250 -0
  14. package/src/sap/fe/core/PageController.js +157 -29
  15. package/src/sap/fe/core/PageController.ts +60 -32
  16. package/src/sap/fe/core/RouterProxy.js +694 -756
  17. package/src/sap/fe/core/RouterProxy.ts +11 -9
  18. package/src/sap/fe/core/Synchronization.js +21 -31
  19. package/src/sap/fe/core/TemplateComponent.js +1 -1
  20. package/src/sap/fe/core/TemplateComponent.ts +10 -3
  21. package/src/sap/fe/core/TemplateModel.js +20 -38
  22. package/src/sap/fe/core/TemplateModel.ts +1 -1
  23. package/src/sap/fe/core/TransactionHelper.js +1354 -1370
  24. package/src/sap/fe/core/TransactionHelper.ts +33 -22
  25. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +392 -0
  26. package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  27. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +136 -0
  28. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  29. package/src/sap/fe/core/actions/collaboration/Manage.js +262 -0
  30. package/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  31. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  32. package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  33. package/src/sap/fe/core/actions/draft.js +30 -68
  34. package/src/sap/fe/core/actions/draft.ts +44 -71
  35. package/src/sap/fe/core/actions/messageHandling.js +55 -36
  36. package/src/sap/fe/core/actions/messageHandling.ts +66 -46
  37. package/src/sap/fe/core/actions/operations.js +34 -15
  38. package/src/sap/fe/core/actions/operations.ts +48 -18
  39. package/src/sap/fe/core/actions/sticky.js +17 -4
  40. package/src/sap/fe/core/actions/sticky.ts +21 -4
  41. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +69 -66
  42. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  43. package/src/sap/fe/core/controllerextensions/EditFlow.js +1593 -1669
  44. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  45. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +79 -54
  46. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  47. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +718 -779
  48. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  49. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +796 -816
  50. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  51. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1004 -1005
  52. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  53. package/src/sap/fe/core/controllerextensions/KPIManagement.js +487 -521
  54. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
  55. package/src/sap/fe/core/controllerextensions/MassEdit.js +141 -169
  56. package/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  57. package/src/sap/fe/core/controllerextensions/MessageHandler.js +233 -244
  58. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  59. package/src/sap/fe/core/controllerextensions/PageReady.js +301 -336
  60. package/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
  61. package/src/sap/fe/core/controllerextensions/Paginator.js +188 -175
  62. package/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  63. package/src/sap/fe/core/controllerextensions/Placeholder.js +157 -149
  64. package/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  65. package/src/sap/fe/core/controllerextensions/Routing.js +144 -125
  66. package/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  67. package/src/sap/fe/core/controllerextensions/RoutingListener.js +7 -6
  68. package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  69. package/src/sap/fe/core/controllerextensions/Share.js +230 -268
  70. package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  71. package/src/sap/fe/core/controllerextensions/SideEffects.js +592 -633
  72. package/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
  73. package/src/sap/fe/core/controllerextensions/ViewState.js +788 -806
  74. package/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  75. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
  76. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  77. package/src/sap/fe/core/controls/CommandExecution.js +67 -66
  78. package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  79. package/src/sap/fe/core/controls/ConditionalWrapper.js +90 -75
  80. package/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  81. package/src/sap/fe/core/controls/CustomQuickViewPage.js +130 -125
  82. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  83. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +103 -112
  84. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  85. package/src/sap/fe/core/controls/FieldWrapper.js +122 -135
  86. package/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  87. package/src/sap/fe/core/controls/FilterBar.js +162 -159
  88. package/src/sap/fe/core/controls/FilterBar.ts +143 -0
  89. package/src/sap/fe/core/controls/FormElementWrapper.js +45 -39
  90. package/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  91. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +37 -42
  92. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  93. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +126 -116
  94. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  95. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +241 -255
  96. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  97. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +150 -141
  98. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  99. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +335 -322
  100. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  101. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +74 -74
  102. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  103. package/src/sap/fe/core/converters/ConverterContext.js +348 -379
  104. package/src/sap/fe/core/converters/ConverterContext.ts +19 -16
  105. package/src/sap/fe/core/converters/ManifestSettings.js +12 -1
  106. package/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
  107. package/src/sap/fe/core/converters/ManifestWrapper.js +354 -378
  108. package/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
  109. package/src/sap/fe/core/converters/MetaModelConverter.js +6 -4
  110. package/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
  111. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  112. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  113. package/src/sap/fe/core/converters/annotations/DataField.js +26 -12
  114. package/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
  115. package/src/sap/fe/core/converters/controls/Common/Form.js +2 -2
  116. package/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
  117. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  118. package/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
  119. package/src/sap/fe/core/converters/controls/Common/Table.js +130 -23
  120. package/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
  121. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +118 -53
  122. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
  123. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +161 -207
  124. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
  125. package/src/sap/fe/core/converters/helpers/Aggregation.js +115 -133
  126. package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
  127. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  128. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
  129. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  130. package/src/sap/fe/core/converters/helpers/Key.js +42 -57
  131. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  132. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +25 -4
  133. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
  134. package/src/sap/fe/core/converters/templates/ListReportConverter.js +10 -4
  135. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
  136. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +7 -5
  137. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  138. package/src/sap/fe/core/designtime/AppComponent.designtime.js +92 -98
  139. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  140. package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
  141. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  142. package/src/sap/fe/core/formatters/TableFormatter.js +53 -2
  143. package/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
  144. package/src/sap/fe/core/fpm/Component.js +50 -54
  145. package/src/sap/fe/core/fpm/Component.ts +48 -0
  146. package/src/sap/fe/core/helpers/AppStartupHelper.js +323 -309
  147. package/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
  148. package/src/sap/fe/core/helpers/BindingExpression.js +7 -7
  149. package/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
  150. package/src/sap/fe/core/helpers/ClassSupport.js +186 -62
  151. package/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
  152. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +5 -4
  153. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
  154. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  155. package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
  156. package/src/sap/fe/core/helpers/MassEditHelper.js +601 -684
  157. package/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  158. package/src/sap/fe/core/helpers/ModelHelper.js +25 -1
  159. package/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
  160. package/src/sap/fe/core/helpers/SemanticDateOperators.js +5 -1
  161. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
  162. package/src/sap/fe/core/library.js +426 -451
  163. package/src/sap/fe/core/library.support.js +22 -33
  164. package/src/sap/fe/core/library.support.ts +23 -0
  165. package/src/sap/fe/core/library.ts +420 -0
  166. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -3
  167. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
  168. package/src/sap/fe/core/messagebundle.properties +22 -5
  169. package/src/sap/fe/core/messagebundle_ar.properties +27 -7
  170. package/src/sap/fe/core/messagebundle_bg.properties +27 -7
  171. package/src/sap/fe/core/messagebundle_ca.properties +27 -7
  172. package/src/sap/fe/core/messagebundle_cs.properties +27 -7
  173. package/src/sap/fe/core/messagebundle_cy.properties +27 -7
  174. package/src/sap/fe/core/messagebundle_da.properties +27 -7
  175. package/src/sap/fe/core/messagebundle_de.properties +27 -7
  176. package/src/sap/fe/core/messagebundle_el.properties +27 -7
  177. package/src/sap/fe/core/messagebundle_en.properties +27 -7
  178. package/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
  179. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
  180. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
  181. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
  182. package/src/sap/fe/core/messagebundle_es.properties +27 -7
  183. package/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
  184. package/src/sap/fe/core/messagebundle_et.properties +27 -7
  185. package/src/sap/fe/core/messagebundle_fi.properties +28 -8
  186. package/src/sap/fe/core/messagebundle_fr.properties +28 -8
  187. package/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
  188. package/src/sap/fe/core/messagebundle_hi.properties +27 -7
  189. package/src/sap/fe/core/messagebundle_hr.properties +27 -7
  190. package/src/sap/fe/core/messagebundle_hu.properties +27 -7
  191. package/src/sap/fe/core/messagebundle_id.properties +27 -7
  192. package/src/sap/fe/core/messagebundle_it.properties +27 -7
  193. package/src/sap/fe/core/messagebundle_iw.properties +27 -7
  194. package/src/sap/fe/core/messagebundle_ja.properties +26 -6
  195. package/src/sap/fe/core/messagebundle_kk.properties +27 -7
  196. package/src/sap/fe/core/messagebundle_ko.properties +27 -7
  197. package/src/sap/fe/core/messagebundle_lt.properties +27 -7
  198. package/src/sap/fe/core/messagebundle_lv.properties +28 -8
  199. package/src/sap/fe/core/messagebundle_ms.properties +27 -7
  200. package/src/sap/fe/core/messagebundle_nl.properties +27 -7
  201. package/src/sap/fe/core/messagebundle_no.properties +27 -7
  202. package/src/sap/fe/core/messagebundle_pl.properties +27 -7
  203. package/src/sap/fe/core/messagebundle_pt.properties +28 -8
  204. package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
  205. package/src/sap/fe/core/messagebundle_ro.properties +27 -7
  206. package/src/sap/fe/core/messagebundle_ru.properties +27 -7
  207. package/src/sap/fe/core/messagebundle_sh.properties +27 -7
  208. package/src/sap/fe/core/messagebundle_sk.properties +27 -7
  209. package/src/sap/fe/core/messagebundle_sl.properties +27 -7
  210. package/src/sap/fe/core/messagebundle_sv.properties +27 -7
  211. package/src/sap/fe/core/messagebundle_th.properties +26 -6
  212. package/src/sap/fe/core/messagebundle_tr.properties +30 -10
  213. package/src/sap/fe/core/messagebundle_uk.properties +27 -7
  214. package/src/sap/fe/core/messagebundle_vi.properties +27 -7
  215. package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
  216. package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
  217. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +45 -71
  218. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +154 -192
  219. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
  220. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +66 -92
  221. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
  222. package/src/sap/fe/core/services/NavigationServiceFactory.js +284 -339
  223. package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
  224. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +67 -102
  225. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
  226. package/src/sap/fe/core/services/RoutingServiceFactory.js +754 -814
  227. package/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
  228. package/src/sap/fe/core/services/ShellServicesFactory.js +649 -736
  229. package/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
  230. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +567 -592
  231. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
  232. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +354 -386
  233. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
  234. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
  235. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  236. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  237. package/src/sap/fe/core/support/CommonHelper.ts +1 -1
  238. package/src/sap/fe/core/support/Diagnostics.js +36 -48
  239. package/src/sap/fe/core/templating/DataModelPathHelper.js +93 -85
  240. package/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
  241. package/src/sap/fe/core/templating/FilterHelper.js +25 -32
  242. package/src/sap/fe/core/templating/FilterHelper.ts +36 -35
  243. package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
  244. package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  245. package/src/sap/fe/core/templating/UIFormatters.js +32 -26
  246. package/src/sap/fe/core/templating/UIFormatters.ts +37 -24
@@ -0,0 +1,225 @@
1
+ import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
2
+ import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
3
+ import messageHandling from "sap/fe/core/actions/messageHandling";
4
+ import CommonUtils from "sap/fe/core/CommonUtils";
5
+ import ControllerExtensionMetadata from "sap/fe/core/controllerextensions/ControllerExtensionMetadata";
6
+ import { Extensible, Final, Private, Public, UI5Class } from "sap/fe/core/helpers/ClassSupport";
7
+ import ResourceBundle from "sap/base/i18n/ResourceBundle";
8
+ import PageController from "sap/fe/core/PageController";
9
+ import { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
10
+
11
+ /**
12
+ * A controller extension offering message handling.
13
+ *
14
+ * @hideconstructor
15
+ * @public
16
+ * @experimental As of version 1.90.0
17
+ * @since 1.90.0
18
+ */
19
+ @UI5Class("sap.fe.core.controllerextensions.MessageHandler", ControllerExtensionMetadata)
20
+ class MessageHandler extends ControllerExtension {
21
+ /**
22
+ * @private
23
+ * @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
24
+ * @function
25
+ */
26
+ /**
27
+ * @private
28
+ * @name sap.fe.core.controllerextensions.MessageHandler.extend
29
+ * @function
30
+ */
31
+ private base!: PageController;
32
+ /**
33
+ * Determines whether or not bound messages are shown in the message dialog.
34
+ *
35
+ * This function is meant to be individually overridden by consuming controllers, but not to be called directly.
36
+ * The override execution is: {@link sap.ui.core.mvc.OverrideExecution.Instead}.
37
+ *
38
+ * If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
39
+ * this method has to be overridden.
40
+ *
41
+ * @returns {boolean} Determines whether or not bound messages are shown in the message dialog.
42
+ * @private
43
+ */
44
+ @Private
45
+ @Extensible(OverrideExecution.Instead)
46
+ getShowBoundMessagesInMessageDialog() {
47
+ return true;
48
+ }
49
+
50
+ /**
51
+ * Shows a message dialog with transition messages if there are any.
52
+ * The message dialog is shown as a modal dialog. Once the user confirms the dialog, all transition messages
53
+ * are removed from the message model. If there is more than one message, a list of messages is shown. The user
54
+ * can filter on message types and can display details as well as the long text. If there is one message,
55
+ * the dialog immediately shows the details of the message. If there is just one success message, a message
56
+ * toast is shown instead.
57
+ *
58
+ * @param mParameters PRIVATE
59
+ * @returns {Promise} A promise that is resolved once the user closes the dialog. If there are no messages
60
+ * to be shown, the promise is resolved immediately
61
+ * @alias sap.fe.core.controllerextensions.MessageHandler#showMessageDialog
62
+ * @public
63
+ * @experimental As of version 1.90.0
64
+ * @since 1.90.0
65
+ */
66
+ @Public
67
+ @Final
68
+ showMessageDialog(mParameters?: any): Promise<void> {
69
+ const customMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : undefined,
70
+ oOPInternalBindingContext = this.base.getView().getBindingContext("internal") as InternalModelContext;
71
+ // set isActionParameterDialog open so that it can be used in the controller extension to decide whether message dialog should open or not
72
+ if (mParameters && mParameters.isActionParameterDialogOpen && oOPInternalBindingContext) {
73
+ oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", true);
74
+ }
75
+ const bShowBoundMessages = this.getShowBoundMessagesInMessageDialog();
76
+ const oBindingContext = mParameters && mParameters.context ? mParameters.context : this.getView().getBindingContext();
77
+ const bEtagMessage = mParameters && mParameters.bHasEtagMessage;
78
+ // reset isActionParameterDialogOpen
79
+ // cannot do this operations.js since it is not aware of the view
80
+ if (oOPInternalBindingContext) {
81
+ oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", false);
82
+ }
83
+ return new Promise(function(resolve: (value: any) => void, reject: (reason?: any) => void) {
84
+ // we have to set a timeout to be able to access the most recent messages
85
+ setTimeout(function() {
86
+ // TODO: great API - will be changed later
87
+ messageHandling
88
+ .showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages)
89
+ .then(resolve)
90
+ .catch(reject);
91
+ }, 0);
92
+ });
93
+ }
94
+
95
+ /**
96
+ * You can remove the existing transition message from the message model with this method.
97
+ * With every user interaction that causes server communication (like clicking on an action, changing data),
98
+ * this method removes the existing transition messages from the message model.
99
+ * @param {boolean} [keepBoundMessage] Checks if the bound transition messages are not to be removed
100
+ *
101
+ * @alias sap.fe.core.controllerextensions.MessageHandler#removesTransitionMessages
102
+ * @private
103
+ */
104
+ @Public
105
+ removeTransitionMessages(keepBoundMessage?: boolean) {
106
+ if (!keepBoundMessage) {
107
+ messageHandling.removeBoundTransitionMessages();
108
+ }
109
+ messageHandling.removeUnboundTransitionMessages();
110
+ }
111
+
112
+ _checkNavigationToMessagePage(mParameters: any) {
113
+ const aUnboundMessages = messageHandling.getMessages();
114
+ const bShowBoundTransitionMessages = this.getShowBoundMessagesInMessageDialog();
115
+ const aBoundTransitionMessages = bShowBoundTransitionMessages ? messageHandling.getMessages(true, true) : [];
116
+ const aCustomMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : [];
117
+ const bIsStickyEditMode = CommonUtils.isStickyEditMode(this.base.getView());
118
+ let mMessagePageParameters;
119
+
120
+ // TODO: Stick mode check is okay as long as the controller extension is used with sap.fe.core and sap.fe.core.AppComponent.
121
+ // It might be better to provide an extension to the consumer of the controller extension to provide this value.
122
+
123
+ // The message page can only show 1 message today, so we navigate to it when :
124
+ // 1. There are no bound transition messages to show,
125
+ // 2. There are no custom messages to show, &
126
+ // 3. There is exactly 1 unbound message in the message model with statusCode=503 and retry-After available
127
+ // 4. retryAfter is greater than 120 seconds
128
+ //
129
+ // In Addition, navigating away from a sticky session will destroy the session so we do not navigate to message page for now.
130
+ // TODO: check if navigation should be done in sticky edit mode.
131
+ if (mParameters && mParameters.isDataReceivedError) {
132
+ mMessagePageParameters = {
133
+ title: mParameters.title,
134
+ description: mParameters.description,
135
+ navigateBackToOrigin: true
136
+ };
137
+ } else if (
138
+ !bIsStickyEditMode &&
139
+ !aBoundTransitionMessages.length &&
140
+ !aCustomMessages.length &&
141
+ (aUnboundMessages.length === 1 || (mParameters && mParameters.isInitialLoad503Error))
142
+ ) {
143
+ const oMessage = aUnboundMessages[0],
144
+ oTechnicalDetails = oMessage.getTechnicalDetails();
145
+ let sRetryAfterMessage;
146
+ if (oTechnicalDetails && oTechnicalDetails.httpStatus === 503) {
147
+ if (oTechnicalDetails.retryAfter) {
148
+ const iSecondsBeforeRetry = this._getSecondsBeforeRetryAfter(oTechnicalDetails.retryAfter);
149
+ if (iSecondsBeforeRetry > 120) {
150
+ // TODO: For now let's keep getRetryAfterMessage in messageHandling because it is needed also by the dialog.
151
+ // We can plan to move this and the dialog logic both to messageHandler controller extension if required.
152
+ sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
153
+ mMessagePageParameters = {
154
+ description: sRetryAfterMessage ? sRetryAfterMessage + " " + oMessage.getMessage() : oMessage.getMessage(),
155
+ navigateBackToOrigin: true
156
+ };
157
+ }
158
+ } else {
159
+ sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
160
+ mMessagePageParameters = {
161
+ description: sRetryAfterMessage ? sRetryAfterMessage + " " + oMessage.getMessage() : oMessage.getMessage(),
162
+ navigateBackToOrigin: true
163
+ };
164
+ }
165
+ }
166
+ }
167
+ return mMessagePageParameters;
168
+ }
169
+
170
+ _getSecondsBeforeRetryAfter(dRetryAfter: any) {
171
+ const dCurrentDateTime = new Date(),
172
+ iCurrentDateTimeInMilliSeconds = dCurrentDateTime.getTime(),
173
+ iRetryAfterDateTimeInMilliSeconds = dRetryAfter.getTime(),
174
+ iSecondsBeforeRetry = (iRetryAfterDateTimeInMilliSeconds - iCurrentDateTimeInMilliSeconds) / 1000;
175
+ return iSecondsBeforeRetry;
176
+ }
177
+ /**
178
+ * Shows a message page or a message dialog based on the messages in the message dialog.
179
+ * @param [mParameters]
180
+ * @returns {Promise} A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
181
+ * to be shown, the promise is resolved immediately
182
+ * @private
183
+ */
184
+ @Public
185
+ @Final
186
+ showMessages(mParameters?: any) {
187
+ const oAppComponent = CommonUtils.getAppComponent(this.getView());
188
+ let mMessagePageParameters: any;
189
+ if (!oAppComponent._isFclEnabled()) {
190
+ mMessagePageParameters = this._checkNavigationToMessagePage(mParameters);
191
+ }
192
+ if (mMessagePageParameters) {
193
+ // navigate to message page.
194
+ // handler before page navigation is triggered, for example to close the action parameter dialog
195
+ mParameters && mParameters.messagePageNavigationCallback && mParameters.messagePageNavigationCallback();
196
+
197
+ mMessagePageParameters.handleShellBack = !(mParameters && mParameters.shellBack);
198
+ // TODO: Use Illustrated message instead of normal message page
199
+ // TODO: Return value needs to provided but since this function is private for now hence we can skip this.
200
+ this.removeTransitionMessages();
201
+ const oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
202
+ if (this.base._routing) {
203
+ return new Promise((resolve: any, reject: any) => {
204
+ // we have to set a timeout to be able to access the most recent messages
205
+ setTimeout(() => {
206
+ // TODO: great API - will be changed later
207
+ this.base._routing
208
+ .navigateToMessagePage(
209
+ mParameters && mParameters.isDataReceivedError
210
+ ? oResourceBundle.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR")
211
+ : oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_TITLE"),
212
+ mMessagePageParameters
213
+ )
214
+ .then(resolve)
215
+ .catch(reject);
216
+ }, 0);
217
+ });
218
+ }
219
+ } else {
220
+ // navigate to message dialog
221
+ return this.showMessageDialog(mParameters);
222
+ }
223
+ }
224
+ }
225
+ export default MessageHandler;