@sapui5/sap.fe.core 1.97.0 → 1.99.1

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 (249) hide show
  1. package/package.json +5 -4
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +377 -405
  4. package/src/sap/fe/core/AnnotationHelper.ts +385 -0
  5. package/src/sap/fe/core/AppComponent.js +6 -3
  6. package/src/sap/fe/core/AppStateHandler.js +229 -181
  7. package/src/sap/fe/core/AppStateHandler.ts +171 -0
  8. package/src/sap/fe/core/BaseController.js +3 -2
  9. package/src/sap/fe/core/BusyLocker.js +105 -121
  10. package/src/sap/fe/core/BusyLocker.ts +98 -0
  11. package/src/sap/fe/core/CommonUtils.js +2073 -2379
  12. package/src/sap/fe/core/CommonUtils.ts +2078 -0
  13. package/src/sap/fe/core/ExtensionAPI.js +16 -7
  14. package/src/sap/fe/core/PageController.js +84 -119
  15. package/src/sap/fe/core/PageController.ts +101 -0
  16. package/src/sap/fe/core/RouterProxy.js +986 -807
  17. package/src/sap/fe/core/RouterProxy.ts +838 -0
  18. package/src/sap/fe/core/Synchronization.js +51 -35
  19. package/src/sap/fe/core/Synchronization.ts +29 -0
  20. package/src/sap/fe/core/TemplateComponent.js +173 -155
  21. package/src/sap/fe/core/TemplateComponent.ts +166 -0
  22. package/src/sap/fe/core/TemplateModel.js +97 -54
  23. package/src/sap/fe/core/TemplateModel.ts +64 -0
  24. package/src/sap/fe/core/TransactionHelper.js +1576 -1579
  25. package/src/sap/fe/core/TransactionHelper.ts +1706 -0
  26. package/src/sap/fe/core/actions/draft.js +560 -581
  27. package/src/sap/fe/core/actions/draft.ts +594 -0
  28. package/src/sap/fe/core/actions/messageHandling.js +545 -511
  29. package/src/sap/fe/core/actions/messageHandling.ts +532 -0
  30. package/src/sap/fe/core/actions/nonDraft.js +17 -19
  31. package/src/sap/fe/core/actions/nonDraft.ts +12 -0
  32. package/src/sap/fe/core/actions/operations.js +1074 -1211
  33. package/src/sap/fe/core/actions/operations.ts +1162 -0
  34. package/src/sap/fe/core/actions/sticky.js +102 -105
  35. package/src/sap/fe/core/actions/sticky.ts +102 -0
  36. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +3 -2
  37. package/src/sap/fe/core/controllerextensions/EditFlow.js +229 -260
  38. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +3 -2
  39. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +288 -13
  40. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +27 -23
  41. package/src/sap/fe/core/controllerextensions/InternalRouting.js +82 -46
  42. package/src/sap/fe/core/controllerextensions/KPIManagement.js +113 -25
  43. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +135 -44
  44. package/src/sap/fe/core/controllerextensions/MassEdit.js +172 -0
  45. package/src/sap/fe/core/controllerextensions/MessageHandler.js +22 -9
  46. package/src/sap/fe/core/controllerextensions/PageReady.js +3 -3
  47. package/src/sap/fe/core/controllerextensions/PageReady.ts +12 -8
  48. package/src/sap/fe/core/controllerextensions/Paginator.js +37 -9
  49. package/src/sap/fe/core/controllerextensions/Placeholder.js +8 -4
  50. package/src/sap/fe/core/controllerextensions/Routing.js +25 -5
  51. package/src/sap/fe/core/controllerextensions/RoutingListener.js +3 -2
  52. package/src/sap/fe/core/controllerextensions/Share.js +22 -8
  53. package/src/sap/fe/core/controllerextensions/SideEffects.js +9 -9
  54. package/src/sap/fe/core/controllerextensions/SideEffects.ts +22 -21
  55. package/src/sap/fe/core/controllerextensions/ViewState.js +3 -2
  56. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -1
  57. package/src/sap/fe/core/controls/CommandExecution.js +3 -2
  58. package/src/sap/fe/core/controls/ConditionalWrapper.js +3 -2
  59. package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -2
  60. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +9 -5
  61. package/src/sap/fe/core/controls/FieldWrapper.js +18 -23
  62. package/src/sap/fe/core/controls/FilterBar.js +3 -2
  63. package/src/sap/fe/core/controls/FormElementWrapper.js +3 -7
  64. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +3 -2
  65. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +2 -1
  66. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +3 -2
  67. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +5 -4
  68. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -2
  69. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -2
  70. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
  71. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +79 -0
  72. package/src/sap/fe/core/converters/ConverterContext.js +14 -2
  73. package/src/sap/fe/core/converters/ConverterContext.ts +14 -3
  74. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  75. package/src/sap/fe/core/converters/ManifestSettings.ts +4 -0
  76. package/src/sap/fe/core/converters/ManifestWrapper.js +56 -32
  77. package/src/sap/fe/core/converters/ManifestWrapper.ts +24 -6
  78. package/src/sap/fe/core/converters/MetaModelConverter.js +67 -6
  79. package/src/sap/fe/core/converters/MetaModelConverter.ts +70 -14
  80. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  81. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -2
  82. package/src/sap/fe/core/converters/annotations/DataField.js +3 -3
  83. package/src/sap/fe/core/converters/annotations/DataField.ts +1 -1
  84. package/src/sap/fe/core/converters/common/AnnotationConverter.js +33 -21
  85. package/src/sap/fe/core/converters/controls/Common/Action.js +11 -2
  86. package/src/sap/fe/core/converters/controls/Common/Action.ts +8 -2
  87. package/src/sap/fe/core/converters/controls/Common/Chart.js +5 -3
  88. package/src/sap/fe/core/converters/controls/Common/Chart.ts +11 -3
  89. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -3
  90. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
  91. package/src/sap/fe/core/converters/controls/Common/Form.js +20 -10
  92. package/src/sap/fe/core/converters/controls/Common/Form.ts +24 -4
  93. package/src/sap/fe/core/converters/controls/Common/KPI.js +69 -4
  94. package/src/sap/fe/core/converters/controls/Common/KPI.ts +72 -0
  95. package/src/sap/fe/core/converters/controls/Common/Table.js +390 -398
  96. package/src/sap/fe/core/converters/controls/Common/Table.ts +497 -484
  97. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +527 -0
  98. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +655 -0
  99. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +489 -37
  100. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +506 -58
  101. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
  102. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
  103. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -9
  104. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +24 -9
  105. package/src/sap/fe/core/converters/helpers/Aggregation.js +18 -3
  106. package/src/sap/fe/core/converters/helpers/Aggregation.ts +28 -5
  107. package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -1
  108. package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -0
  109. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +4 -4
  110. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +3 -3
  111. package/src/sap/fe/core/converters/templates/ListReportConverter.js +13 -6
  112. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +26 -15
  113. package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -2
  114. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  115. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
  116. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  117. package/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
  118. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  119. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -1
  120. package/src/sap/fe/core/formatters/TableFormatter.js +39 -28
  121. package/src/sap/fe/core/formatters/TableFormatter.ts +43 -28
  122. package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
  123. package/src/sap/fe/core/formatters/ValueFormatter.ts +30 -7
  124. package/src/sap/fe/core/fpm/Component.js +3 -2
  125. package/src/sap/fe/core/helpers/AppStartupHelper.js +359 -0
  126. package/src/sap/fe/core/helpers/AppStartupHelper.ts +391 -0
  127. package/src/sap/fe/core/helpers/BindingExpression.js +484 -437
  128. package/src/sap/fe/core/helpers/BindingExpression.ts +480 -463
  129. package/src/sap/fe/core/helpers/ClassSupport.js +27 -15
  130. package/src/sap/fe/core/helpers/ClassSupport.ts +31 -20
  131. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +63 -59
  132. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +56 -0
  133. package/src/sap/fe/core/helpers/EditState.js +81 -84
  134. package/src/sap/fe/core/helpers/EditState.ts +81 -0
  135. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +62 -48
  136. package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
  137. package/src/sap/fe/core/helpers/FPMHelper.js +52 -56
  138. package/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
  139. package/src/sap/fe/core/helpers/KeepAliveHelper.js +4 -5
  140. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +10 -10
  141. package/src/sap/fe/core/helpers/MassEditHelper.js +687 -0
  142. package/src/sap/fe/core/helpers/ModelHelper.js +229 -225
  143. package/src/sap/fe/core/helpers/ModelHelper.ts +227 -0
  144. package/src/sap/fe/core/helpers/PasteHelper.js +210 -132
  145. package/src/sap/fe/core/helpers/PasteHelper.ts +196 -0
  146. package/src/sap/fe/core/helpers/SemanticDateOperators.js +332 -313
  147. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +330 -0
  148. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +66 -67
  149. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
  150. package/src/sap/fe/core/helpers/StableIdHelper.js +4 -7
  151. package/src/sap/fe/core/helpers/StableIdHelper.ts +2 -6
  152. package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
  153. package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -1
  154. package/src/sap/fe/core/library.js +30 -3
  155. package/src/sap/fe/core/library.support.js +12 -5
  156. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +62 -0
  157. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -0
  158. package/src/sap/fe/core/messagebundle.properties +61 -13
  159. package/src/sap/fe/core/messagebundle_ar.properties +33 -2
  160. package/src/sap/fe/core/messagebundle_bg.properties +33 -2
  161. package/src/sap/fe/core/messagebundle_ca.properties +33 -2
  162. package/src/sap/fe/core/messagebundle_cs.properties +34 -3
  163. package/src/sap/fe/core/messagebundle_cy.properties +33 -2
  164. package/src/sap/fe/core/messagebundle_da.properties +33 -2
  165. package/src/sap/fe/core/messagebundle_de.properties +33 -2
  166. package/src/sap/fe/core/messagebundle_el.properties +33 -2
  167. package/src/sap/fe/core/messagebundle_en.properties +32 -1
  168. package/src/sap/fe/core/messagebundle_en_GB.properties +32 -1
  169. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +36 -1
  170. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +33 -2
  171. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +33 -2
  172. package/src/sap/fe/core/messagebundle_es.properties +33 -2
  173. package/src/sap/fe/core/messagebundle_es_MX.properties +33 -2
  174. package/src/sap/fe/core/messagebundle_et.properties +33 -2
  175. package/src/sap/fe/core/messagebundle_fi.properties +34 -3
  176. package/src/sap/fe/core/messagebundle_fr.properties +38 -7
  177. package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -2
  178. package/src/sap/fe/core/messagebundle_hi.properties +33 -2
  179. package/src/sap/fe/core/messagebundle_hr.properties +33 -2
  180. package/src/sap/fe/core/messagebundle_hu.properties +34 -3
  181. package/src/sap/fe/core/messagebundle_id.properties +36 -5
  182. package/src/sap/fe/core/messagebundle_it.properties +33 -2
  183. package/src/sap/fe/core/messagebundle_iw.properties +33 -2
  184. package/src/sap/fe/core/messagebundle_ja.properties +33 -2
  185. package/src/sap/fe/core/messagebundle_kk.properties +33 -2
  186. package/src/sap/fe/core/messagebundle_ko.properties +33 -2
  187. package/src/sap/fe/core/messagebundle_lt.properties +33 -2
  188. package/src/sap/fe/core/messagebundle_lv.properties +33 -2
  189. package/src/sap/fe/core/messagebundle_ms.properties +33 -2
  190. package/src/sap/fe/core/messagebundle_nl.properties +33 -2
  191. package/src/sap/fe/core/messagebundle_no.properties +33 -2
  192. package/src/sap/fe/core/messagebundle_pl.properties +33 -2
  193. package/src/sap/fe/core/messagebundle_pt.properties +34 -3
  194. package/src/sap/fe/core/messagebundle_pt_PT.properties +33 -2
  195. package/src/sap/fe/core/messagebundle_ro.properties +33 -2
  196. package/src/sap/fe/core/messagebundle_ru.properties +33 -2
  197. package/src/sap/fe/core/messagebundle_sh.properties +33 -2
  198. package/src/sap/fe/core/messagebundle_sk.properties +33 -2
  199. package/src/sap/fe/core/messagebundle_sl.properties +33 -2
  200. package/src/sap/fe/core/messagebundle_sv.properties +34 -3
  201. package/src/sap/fe/core/messagebundle_th.properties +33 -2
  202. package/src/sap/fe/core/messagebundle_tr.properties +33 -2
  203. package/src/sap/fe/core/messagebundle_uk.properties +33 -2
  204. package/src/sap/fe/core/messagebundle_vi.properties +33 -2
  205. package/src/sap/fe/core/messagebundle_zh_CN.properties +33 -2
  206. package/src/sap/fe/core/messagebundle_zh_TW.properties +33 -2
  207. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
  208. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
  209. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +269 -202
  210. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +212 -0
  211. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +4 -3
  212. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +9 -5
  213. package/src/sap/fe/core/services/NavigationServiceFactory.js +406 -300
  214. package/src/sap/fe/core/services/NavigationServiceFactory.ts +316 -0
  215. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +149 -81
  216. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +80 -0
  217. package/src/sap/fe/core/services/RoutingServiceFactory.js +987 -1152
  218. package/src/sap/fe/core/services/RoutingServiceFactory.ts +898 -0
  219. package/src/sap/fe/core/services/ShellServicesFactory.js +31 -2
  220. package/src/sap/fe/core/services/ShellServicesFactory.ts +45 -11
  221. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +42 -85
  222. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +57 -100
  223. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +461 -478
  224. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +453 -0
  225. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +10 -8
  226. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +8 -0
  227. package/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
  228. package/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
  229. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
  230. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
  231. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
  232. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
  233. package/src/sap/fe/core/templating/DataModelPathHelper.js +10 -48
  234. package/src/sap/fe/core/templating/DataModelPathHelper.ts +14 -46
  235. package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
  236. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
  237. package/src/sap/fe/core/templating/FieldControlHelper.js +8 -8
  238. package/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
  239. package/src/sap/fe/core/templating/FilterHelper.js +139 -70
  240. package/src/sap/fe/core/templating/FilterHelper.ts +140 -70
  241. package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
  242. package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  243. package/src/sap/fe/core/templating/UIFormatters.js +45 -110
  244. package/src/sap/fe/core/templating/UIFormatters.ts +39 -75
  245. package/src/sap/fe/core/type/Email.js +1 -1
  246. package/src/sap/fe/core/type/Email.ts +4 -6
  247. package/ui5.yaml +0 -3
  248. package/src/sap/fe/core/controls/filterbar.d.js +0 -8
  249. package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
@@ -1,18 +1,23 @@
1
- import { ControllerExtension } from "sap/ui/core/mvc";
1
+ import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
2
2
  import { ControllerExtensionMetadata } from "sap/fe/core/controllerextensions";
3
3
  import { UI5Class, Override, Public } from "../helpers/ClassSupport";
4
- import { JSONModel } from "sap/ui/model/json";
5
- import { ODataModel, Context } from "sap/ui/model/odata/v4";
6
- import { Log } from "sap/base";
7
- import { KPIChartDefinition, KPIDefinition } from "sap/fe/core/converters/controls/Common/KPI";
4
+ import JSONModel from "sap/ui/model/json/JSONModel";
5
+ import ODataModel from "sap/ui/model/odata/v4/ODataModel";
6
+ import Context from "sap/ui/model/odata/v4/Context";
7
+ import Log from "sap/base/Log";
8
+ import { KPIChartDefinition, KPIDefinition, NavigationInfo } from "sap/fe/core/converters/controls/Common/KPI";
8
9
  import { BaseController } from "sap/fe/core";
9
10
  import { MessageType } from "sap/fe/core/formatters/TableFormatterTypes";
10
11
  import { FilterDefinition, RangeDefinition } from "sap/fe/core/converters/helpers/SelectionVariantHelper";
11
- import { NumberFormat, DateFormat } from "sap/ui/core/format";
12
- import { Locale } from "sap/ui/core";
13
- import { Filter, FilterOperator, Sorter } from "sap/ui/model";
14
- import { GenericTag, Popover } from "sap/m";
15
- import { Card } from "sap/ui/integration/widgets";
12
+ import NumberFormat from "sap/ui/core/format/NumberFormat";
13
+ import DateFormat from "sap/ui/core/format/DateFormat";
14
+ import Locale from "sap/ui/core/Locale";
15
+ import Filter from "sap/ui/model/Filter";
16
+ import FilterOperator from "sap/ui/model/FilterOperator";
17
+ import Sorter from "sap/ui/model/Sorter";
18
+ import GenericTag from "sap/m/GenericTag";
19
+ import Popover from "sap/m/Popover";
20
+ import ResourceBundle from "sap/base/i18n/ResourceBundle";
16
21
 
17
22
  const MessageTypeFromCriticality: Record<string, MessageType> = {
18
23
  "1": MessageType.Error,
@@ -212,7 +217,7 @@ function getFilterStringFromDefinition(filterDefinition: FilterDefinition): stri
212
217
  .getConfiguration()
213
218
  .getLanguage()
214
219
  );
215
- const resBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
220
+ const resBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
216
221
  const dateFormat = DateFormat.getDateInstance({ style: "medium" }, currentLocale);
217
222
 
218
223
  function formatRange(range: RangeDefinition): string {
@@ -264,7 +269,7 @@ function getFilterStringFromDefinition(filterDefinition: FilterDefinition): stri
264
269
  }
265
270
 
266
271
  function formatChartTitle(kpiDef: KPIDefinition): string {
267
- const resBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
272
+ const resBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
268
273
 
269
274
  function formatList(items: { name: string; label: string }[]) {
270
275
  if (items.length === 0) {
@@ -523,6 +528,37 @@ function getChartFeeds(chartDefinition: KPIChartDefinition): { uid: string; type
523
528
  return res;
524
529
  }
525
530
 
531
+ function getNavigationParameters(
532
+ navInfo: NavigationInfo,
533
+ oShellService: any
534
+ ): Promise<{ semanticObject?: string; action?: string; outbound?: string } | undefined> {
535
+ if (navInfo.semanticObject) {
536
+ if (navInfo.action) {
537
+ // Action is already specified: check if it's available in the shell
538
+ return oShellService.getLinks({ semanticObject: navInfo.semanticObject, action: navInfo.action }).then((aLinks: any[]) => {
539
+ return aLinks.length ? { semanticObject: navInfo.semanticObject, action: navInfo.action } : undefined;
540
+ });
541
+ } else {
542
+ // We get the primary intent from the shell
543
+ return oShellService.getPrimaryIntent(navInfo.semanticObject).then((oLink: any) => {
544
+ if (!oLink) {
545
+ // No primary intent...
546
+ return undefined;
547
+ }
548
+
549
+ // Check that the primary intent is not part of the unavailable actions
550
+ const oInfo = oShellService.parseShellHash(oLink.intent);
551
+ return navInfo.unavailableActions && navInfo.unavailableActions.indexOf(oInfo.action) >= 0
552
+ ? undefined
553
+ : { semanticObject: oInfo.semanticObject, action: oInfo.action };
554
+ });
555
+ }
556
+ } else {
557
+ // Outbound navigation specified in the manifest
558
+ return navInfo.outboundNavigation ? Promise.resolve({ outbound: navInfo.outboundNavigation }) : Promise.resolve(undefined);
559
+ }
560
+ }
561
+
526
562
  /**
527
563
  * @class A controller extension for managing the KPIs in an analytical list page
528
564
  *
@@ -535,7 +571,7 @@ function getChartFeeds(chartDefinition: KPIChartDefinition): { uid: string; type
535
571
  @UI5Class("sap.fe.core.controllerextensions.KPIManagement", ControllerExtensionMetadata)
536
572
  class KPIManagementControllerExtension extends ControllerExtension {
537
573
  protected aKPIDefinitions?: KPIDefinition[];
538
- protected oCard!: Card;
574
+ protected oCard: any;
539
575
  protected oPopover!: Popover;
540
576
 
541
577
  /**
@@ -544,7 +580,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
544
580
  * @param kpiDefinition The KPI definition
545
581
  * @param oKPIModel The JSON model in which the manifest will be stored
546
582
  */
547
- protected initCardManifest(kpiDefinition: KPIDefinition, oKPIModel: JSONModel<any>): void {
583
+ protected initCardManifest(kpiDefinition: KPIDefinition, oKPIModel: JSONModel): void {
548
584
  const oCardManifest: any = {
549
585
  "sap.app": {
550
586
  id: "sap.fe",
@@ -588,7 +624,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
588
624
 
589
625
  // Add side indicators in the card header if a target is defined for the KPI
590
626
  if (kpiDefinition.datapoint.targetPath || kpiDefinition.datapoint.targetValue !== undefined) {
591
- const resBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
627
+ const resBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as ResourceBundle;
592
628
  oCardManifest["sap.card"].header.sideIndicators = [
593
629
  {
594
630
  title: resBundle.getText("C_KPICARD_INDICATOR_TARGET"),
@@ -635,6 +671,24 @@ class KPIManagementControllerExtension extends ControllerExtension {
635
671
  });
636
672
  }
637
673
 
674
+ protected initNavigationInfo(kpiDefinition: KPIDefinition, oKPIModel: JSONModel, oShellService: any): Promise<void> {
675
+ // Add navigation
676
+ if (kpiDefinition.navigation) {
677
+ return getNavigationParameters(kpiDefinition.navigation, oShellService).then(oNavInfo => {
678
+ if (oNavInfo) {
679
+ oKPIModel.setProperty("/" + kpiDefinition.id + "/manifest/sap.card/header/actions", [
680
+ {
681
+ type: "Navigation",
682
+ parameters: oNavInfo
683
+ }
684
+ ]);
685
+ }
686
+ });
687
+ } else {
688
+ return Promise.resolve();
689
+ }
690
+ }
691
+
638
692
  @Override()
639
693
  public onInit(): void {
640
694
  this.aKPIDefinitions = this.getKPIData();
@@ -651,6 +705,11 @@ class KPIManagementControllerExtension extends ControllerExtension {
651
705
  // Create the manifest for the KPI card and store it in the KPI model
652
706
  this.initCardManifest(kpiDefinition, oKPIModel);
653
707
 
708
+ // Set the navigation information in the manifest
709
+ this.initNavigationInfo(kpiDefinition, oKPIModel, oAppComponent.getShellServices()).catch(function(err: any) {
710
+ Log.error(err);
711
+ });
712
+
654
713
  // Load tag data for the KPI
655
714
  this.loadKPITagData(kpiDefinition, oAppComponent.getModel() as ODataModel, oKPIModel).catch(function(err: any) {
656
715
  Log.error(err);
@@ -661,7 +720,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
661
720
 
662
721
  @Override()
663
722
  public onExit(): void {
664
- const oKPIModel = this.getView().getModel("kpiModel") as JSONModel<any>;
723
+ const oKPIModel = this.getView().getModel("kpiModel") as JSONModel;
665
724
 
666
725
  if (oKPIModel) {
667
726
  oKPIModel.destroy();
@@ -684,7 +743,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
684
743
  }
685
744
  }
686
745
 
687
- private updateDatapointValueAndCurrency(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel<any>) {
746
+ private updateDatapointValueAndCurrency(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel) {
688
747
  const currentLocale = new Locale(
689
748
  sap.ui
690
749
  .getCore()
@@ -761,7 +820,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
761
820
  }
762
821
  }
763
822
 
764
- private updateDatapointCriticality(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel<any>) {
823
+ private updateDatapointCriticality(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel) {
765
824
  const rawValue = Number.parseFloat(kpiContext.getProperty(kpiDefinition.datapoint.propertyPath));
766
825
 
767
826
  let criticalityValue = MessageType.None;
@@ -803,7 +862,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
803
862
  );
804
863
  }
805
864
 
806
- private updateDatapointTrend(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel<any>) {
865
+ private updateDatapointTrend(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel) {
807
866
  const rawValue = Number.parseFloat(kpiContext.getProperty(kpiDefinition.datapoint.propertyPath));
808
867
 
809
868
  let trendValue = "None";
@@ -838,7 +897,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
838
897
  oKPIModel.setProperty("/" + kpiDefinition.id + "/manifest/sap.card/data/json/trend", trendValue);
839
898
  }
840
899
 
841
- private updateTargetValue(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel<any>) {
900
+ private updateTargetValue(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel) {
842
901
  if (kpiDefinition.datapoint.targetValue === undefined && kpiDefinition.datapoint.targetPath === undefined) {
843
902
  return; // No target set for the KPI
844
903
  }
@@ -905,7 +964,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
905
964
  * @param loadFull If not true, loads only data for the KPI tag
906
965
  * @returns {Promise} Returns the promise that is resolved when data is loaded.
907
966
  */
908
- protected loadKPITagData(kpiDefinition: KPIDefinition, oMainModel: ODataModel, oKPIModel: JSONModel<any>, loadFull?: boolean): any {
967
+ protected loadKPITagData(kpiDefinition: KPIDefinition, oMainModel: ODataModel, oKPIModel: JSONModel, loadFull?: boolean): any {
909
968
  // If loadFull=false, then we're just loading data for the tag and we use the "$auto.LongRunners" groupID
910
969
  // If loadFull=true, we're loading data for the whole KPI (tag + card) and we use the default ("$auto") groupID
911
970
  const oListBinding = loadFull
@@ -988,7 +1047,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
988
1047
  * @param {JSONModel} oKPIModel The JSON model where the data will be stored
989
1048
  * @returns {Promise} Returns the promise that is resolved when data is loaded.
990
1049
  */
991
- protected loadKPICardData(kpiDefinition: KPIDefinition, oMainModel: ODataModel, oKPIModel: JSONModel<any>): any {
1050
+ protected loadKPICardData(kpiDefinition: KPIDefinition, oMainModel: ODataModel, oKPIModel: JSONModel): any {
992
1051
  const oListBinding = oMainModel.bindList("/" + kpiDefinition.entitySet);
993
1052
  const oGroup: Record<string, Object> = {};
994
1053
  const oAggregate: Record<string, Object> = {};
@@ -1041,34 +1100,64 @@ class KPIManagementControllerExtension extends ControllerExtension {
1041
1100
  /**
1042
1101
  * Gets the popover to display the KPI card
1043
1102
  * The popover and the contained card for the KPIs are created if necessary.
1044
- * The popover is shared between all KPIs, so we create it only once.
1103
+ * The popover is shared between all KPIs, so it's created only once.
1045
1104
  *
1046
- * @param oKPITag The Tag that triggered the popover opening.
1047
- * @returns The shared popover.
1105
+ * @param oKPITag The tag that triggered the popover opening.
1106
+ * @returns The shared popover as a promise.
1048
1107
  */
1049
- protected getPopover(oKPITag: GenericTag): Popover {
1108
+ protected getPopover(oKPITag: GenericTag): Promise<Popover> {
1050
1109
  if (!this.oPopover) {
1051
- this.oCard = new Card({
1052
- width: "25rem",
1053
- height: "auto"
1054
- });
1055
-
1056
- this.oPopover = new Popover({
1057
- id: "kpi-Popover",
1058
- showHeader: false,
1059
- placement: "Auto",
1060
- content: [this.oCard]
1110
+ return new Promise((resolve, reject) => {
1111
+ (sap.ui.getCore().loadLibrary("sap/ui/integration", { async: true }) as Promise<object>)
1112
+ .then(() => {
1113
+ sap.ui.require(["sap/ui/integration/widgets/Card", "sap/ui/integration/Host"], (Card: any, Host: any) => {
1114
+ const oHost = new Host();
1115
+
1116
+ oHost.attachAction((oEvent: any) => {
1117
+ const sType = oEvent.getParameter("type");
1118
+ const oParams = oEvent.getParameter("parameters");
1119
+
1120
+ if (sType === "Navigation") {
1121
+ if (oParams.semanticObject) {
1122
+ (this.getView().getController() as any)._intentBasedNavigation.navigate(
1123
+ oParams.semanticObject,
1124
+ oParams.action
1125
+ );
1126
+ } else {
1127
+ (this.getView().getController() as any)._intentBasedNavigation.navigateOutbound(oParams.outbound);
1128
+ }
1129
+ }
1130
+ });
1131
+
1132
+ this.oCard = new Card({
1133
+ width: "25rem",
1134
+ height: "auto"
1135
+ });
1136
+ this.oCard.setHost(oHost as any);
1137
+
1138
+ this.oPopover = new Popover("kpi-Popover", {
1139
+ showHeader: false,
1140
+ placement: "Auto",
1141
+ content: [this.oCard]
1142
+ });
1143
+
1144
+ oKPITag.addDependent(this.oPopover); // The first clicked tag gets the popover as dependent
1145
+
1146
+ resolve(this.oPopover);
1147
+ });
1148
+ })
1149
+ .catch(function() {
1150
+ reject();
1151
+ });
1061
1152
  });
1062
-
1063
- oKPITag.addDependent(this.oPopover); // The first clicked tag gets the popover as dependent
1153
+ } else {
1154
+ return Promise.resolve(this.oPopover);
1064
1155
  }
1065
-
1066
- return this.oPopover;
1067
1156
  }
1068
1157
 
1069
1158
  @Public
1070
1159
  public onKPIPressed(oKPITag: any, kpiID: string): void {
1071
- const oKPIModel = oKPITag.getModel("kpiModel") as JSONModel<any>;
1160
+ const oKPIModel = oKPITag.getModel("kpiModel") as JSONModel;
1072
1161
 
1073
1162
  if (this.aKPIDefinitions && this.aKPIDefinitions.length) {
1074
1163
  const kpiDefinition = this.aKPIDefinitions.find(function(oDef) {
@@ -1079,14 +1168,16 @@ class KPIManagementControllerExtension extends ControllerExtension {
1079
1168
  const oModel = oKPITag.getModel();
1080
1169
  const aPromises = [
1081
1170
  this.loadKPITagData(kpiDefinition, oModel, oKPIModel, true),
1082
- this.loadKPICardData(kpiDefinition, oModel, oKPIModel)
1171
+ this.loadKPICardData(kpiDefinition, oModel, oKPIModel),
1172
+ this.getPopover(oKPITag)
1083
1173
  ];
1084
- const oPopover = this.getPopover(oKPITag);
1085
1174
 
1086
1175
  Promise.all(aPromises)
1087
- .then(() => {
1176
+ .then(aResults => {
1088
1177
  this.oCard.setManifest(oKPIModel.getProperty("/" + kpiID + "/manifest"));
1089
1178
  this.oCard.refresh();
1179
+
1180
+ const oPopover = aResults[2];
1090
1181
  oPopover.openBy(oKPITag, false);
1091
1182
  })
1092
1183
  .catch(err => {
@@ -0,0 +1,172 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+
5
+ */
6
+ sap.ui.define(
7
+ [
8
+ "sap/ui/core/mvc/ControllerExtension",
9
+ "sap/ui/core/mvc/OverrideExecution",
10
+ "sap/fe/core/helpers/MassEditHelper",
11
+ "sap/fe/core/helpers/ModelHelper",
12
+ "sap/base/Log",
13
+ "sap/m/MessageBox"
14
+ ],
15
+ function(ControllerExtension, OverrideExecution, MassEditHelper, ModelHelper, Log, MessageBox) {
16
+ "use strict";
17
+ /**
18
+ * @class Controller extension providing hooks for the mass edit in a table
19
+ *
20
+ * @name sap.fe.core.controllerextensions.MassEdit
21
+ * @hideconstructor
22
+ * @private
23
+ */
24
+ return ControllerExtension.extend("sap.fe.core.controllerextensions.MassEdit", {
25
+ metadata: {
26
+ methods: {
27
+ openMassEditDialog: {
28
+ "final": true,
29
+ "public": true
30
+ },
31
+ fetchContextsForEdit: {
32
+ "final": false,
33
+ "public": false,
34
+ overrideExecution: OverrideExecution.After
35
+ }
36
+ }
37
+ },
38
+
39
+ _getMessageDetailForNonEditable: function(oResourceBundle) {
40
+ var sHeader = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_HEADER"),
41
+ sReasonGroup = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON"),
42
+ sReasonDraft = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_DRAFT"),
43
+ sReasonNonEditable = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_NON_EDITABLE");
44
+
45
+ return (
46
+ "<p><strong>" +
47
+ sHeader +
48
+ "</strong></p>\n" +
49
+ "<p>" +
50
+ sReasonGroup +
51
+ "</p>\n" +
52
+ "<ul>" +
53
+ "<li>" +
54
+ sReasonDraft +
55
+ "</li>" +
56
+ "<li>" +
57
+ sReasonNonEditable +
58
+ "</li>" +
59
+ "</ul>"
60
+ );
61
+ },
62
+
63
+ _openConfirmDialog: function(oTable, aContexts, iSelectedContexts) {
64
+ var that = this,
65
+ iUpdatableContexts = (aContexts || []).length;
66
+
67
+ return new Promise(function(resolve, reject) {
68
+ that.getView()
69
+ .getModel("sap.fe.i18n")
70
+ .getResourceBundle()
71
+ .then(function(oResourceBundle) {
72
+ var sEditButton = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_BUTTON_TEXT"),
73
+ sCancelButton = oResourceBundle.getText("C_MASS_EDIT_CANCEL_BUTTON_TEXT"),
74
+ iNonEditable = iSelectedContexts - iUpdatableContexts,
75
+ sMessage = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE", [
76
+ iNonEditable,
77
+ iSelectedContexts,
78
+ iUpdatableContexts
79
+ ]),
80
+ sPath = oTable.data("targetCollectionPath"),
81
+ oMetaModel = oTable.getModel().getMetaModel(),
82
+ bIsDraft = ModelHelper.isDraftSupported(oMetaModel, sPath),
83
+ bDisplayMode = oTable.data("displayModePropertyBinding") === "true",
84
+ sMessageDetail = bIsDraft && bDisplayMode && that._getMessageDetailForNonEditable(oResourceBundle);
85
+
86
+ MessageBox.warning(sMessage, {
87
+ details: sMessageDetail,
88
+ actions: [sEditButton, sCancelButton],
89
+ emphasizedAction: sEditButton,
90
+ contentWidth: "100px",
91
+ onClose: function(sSelection) {
92
+ var aContextsForEdit = [];
93
+ if (sSelection === sEditButton) {
94
+ Log.info("Mass Edit: Confirmed to edit ", iUpdatableContexts, " selections.");
95
+ aContextsForEdit = aContexts;
96
+ } else if (sSelection === sCancelButton) {
97
+ Log.info("Mass Edit: Cancelled.");
98
+ }
99
+ resolve(aContextsForEdit);
100
+ }
101
+ });
102
+ })
103
+ .catch(function(error) {
104
+ Log.error(error);
105
+ });
106
+ });
107
+ },
108
+
109
+ _confirmContexts: function(oTable, aContexts) {
110
+ var that = this,
111
+ oInternalModelContext = oTable.getBindingContext("internal"),
112
+ iSelectedContexts = +oInternalModelContext.getProperty("numberOfSelectedContexts") || 0;
113
+
114
+ aContexts = aContexts || [];
115
+
116
+ if (aContexts.length && aContexts.length !== iSelectedContexts) {
117
+ return that._openConfirmDialog(oTable, aContexts, iSelectedContexts);
118
+ }
119
+ return Promise.resolve(aContexts);
120
+ },
121
+
122
+ /**
123
+ * The following operations are performed by method openMassEditDialog:
124
+ * => Opens the mass edit dialog.
125
+ * => Implements the save and cancel functionality.
126
+ * => Sets the runtime model to the dialog.
127
+ * => Sets the static model's context to the dialog.
128
+ *
129
+ * @param {object} oTable Instance of the table
130
+ * @returns {Promise} A promise that resolves on open of the mass edit dialog.
131
+ * @private
132
+ */
133
+ openMassEditDialog: function(oTable) {
134
+ var that = this,
135
+ oController = that.getView().getController(),
136
+ pContextsForEdit = that.fetchContextsForEdit(oTable);
137
+
138
+ return pContextsForEdit
139
+ .then(that._confirmContexts.bind(that, oTable))
140
+ .then(function(aContexts) {
141
+ return aContexts && aContexts.length > 0
142
+ ? MassEditHelper.createDialog(oTable, aContexts, oController)
143
+ : Promise.resolve();
144
+ })
145
+ .then(function(oDialog) {
146
+ if (oDialog) {
147
+ oDialog.open();
148
+ }
149
+ })
150
+ .catch(function(oError) {
151
+ Log.error("Mass Edit: Something went wrong in mass edit dialog creation.", oError);
152
+ });
153
+ },
154
+
155
+ /**
156
+ * Returns a promise that resolves to the contexts for mass edit.
157
+ * @function
158
+ * @param {string} oTable Table for mass edit.
159
+ * @alias sap.fe.core.contrllerextensions.MassEdit#fetchContextsForEdit
160
+ * @returns {Promise} A promise to be resolved with an array of context(s) which should be considered for mass edit.
161
+ * @private
162
+ **/
163
+ fetchContextsForEdit: function(oTable) {
164
+ //To be overridden by the application
165
+ var oInternalModelContext = oTable.getBindingContext("internal"),
166
+ aSelectedContexts = oInternalModelContext.getProperty("updatableContexts") || [];
167
+
168
+ return Promise.resolve(aSelectedContexts);
169
+ }
170
+ });
171
+ }
172
+ );
@@ -1,6 +1,7 @@
1
1
  /*!
2
- * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+
4
5
  */
5
6
 
6
7
  sap.ui.define(
@@ -140,11 +141,17 @@ sap.ui.define(
140
141
  //
141
142
  // In Addition, navigating away from a sticky session will destroy the session so we do not navigate to message page for now.
142
143
  // TODO: check if navigation should be done in sticky edit mode.
143
- if (
144
+ if (mParameters && mParameters.isDataReceivedError) {
145
+ mMessagePageParameters = {
146
+ title: mParameters.title,
147
+ description: mParameters.description,
148
+ navigateBackToOrigin: true
149
+ };
150
+ } else if (
144
151
  !bIsStickyEditMode &&
145
152
  !aBoundTransitionMessages.length &&
146
153
  !aCustomMessages.length &&
147
- aUnboundMessages.length === 1
154
+ (aUnboundMessages.length === 1 || (mParameters && mParameters.isInitialLoad503Error))
148
155
  ) {
149
156
  var oMessage = aUnboundMessages[0],
150
157
  oTechnicalDetails = oMessage.getTechnicalDetails();
@@ -152,7 +159,7 @@ sap.ui.define(
152
159
  if (oTechnicalDetails && oTechnicalDetails.httpStatus === 503) {
153
160
  if (oTechnicalDetails.retryAfter) {
154
161
  var iSecondsBeforeRetry = this._getSecondsBeforeRetryAfter(oTechnicalDetails.retryAfter);
155
- if (iSecondsBeforeRetry > 120) {
162
+ if (iSecondsBeforeRetry > 120 || (mParameters && mParameters.isInitialLoad503Error)) {
156
163
  // TODO: For now let's keep getRetryAfterMessage in messageHandling because it is needed also by the dialog.
157
164
  // We can plan to move this and the dialog logic both to messageHandler controller extension if required.
158
165
  sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
@@ -192,13 +199,17 @@ sap.ui.define(
192
199
  * @private
193
200
  */
194
201
  showMessages: function(mParameters) {
195
- var mMessagePageParameters = this._checkNavigationToMessagePage(mParameters);
202
+ var oAppComponent = CommonUtils.getAppComponent(this.getView());
203
+ var mMessagePageParameters;
204
+ if (!oAppComponent._isFclEnabled()) {
205
+ mMessagePageParameters = this._checkNavigationToMessagePage(mParameters);
206
+ }
196
207
  if (mMessagePageParameters) {
197
208
  // navigate to message page.
198
209
  // handler before page navigation is triggered, for example to close the action parameter dialog
199
210
  mParameters && mParameters.messagePageNavigationCallback && mParameters.messagePageNavigationCallback();
200
211
 
201
- mMessagePageParameters.handleShellBack = true;
212
+ mMessagePageParameters.handleShellBack = !(mParameters && mParameters.shellBack);
202
213
  // TODO: Use Illustrated message instead of normal message page
203
214
  // TODO: Return value needs to provided but since this function is private for now hence we can skip this.
204
215
  this.removeTransitionMessages();
@@ -209,10 +220,12 @@ sap.ui.define(
209
220
  // we have to set a timeout to be able to access the most recent messages
210
221
  setTimeout(
211
222
  function() {
212
- // TODO: great API - will be changed later
223
+ // TODO: great API m- will be changed later
213
224
  this.base._routing
214
225
  .navigateToMessagePage(
215
- oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_TITLE"),
226
+ mParameters && mParameters.isDataReceivedError
227
+ ? oResourceBundle.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR")
228
+ : oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_TITLE"),
216
229
  mMessagePageParameters
217
230
  )
218
231
  .then(resolve)