@sapui5/sap.fe.core 1.95.0 → 1.98.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 (207) hide show
  1. package/package.json +5 -5
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +3 -3
  4. package/src/sap/fe/core/AppComponent.js +9 -44
  5. package/src/sap/fe/core/AppStateHandler.js +2 -2
  6. package/src/sap/fe/core/BaseController.js +1 -1
  7. package/src/sap/fe/core/BusyLocker.js +13 -1
  8. package/src/sap/fe/core/CommonUtils.js +129 -219
  9. package/src/sap/fe/core/ExtensionAPI.js +14 -6
  10. package/src/sap/fe/core/PageController.js +9 -35
  11. package/src/sap/fe/core/RouterProxy.js +79 -75
  12. package/src/sap/fe/core/Synchronization.js +1 -1
  13. package/src/sap/fe/core/TemplateComponent.js +16 -7
  14. package/src/sap/fe/core/TemplateModel.js +1 -1
  15. package/src/sap/fe/core/TransactionHelper.js +183 -65
  16. package/src/sap/fe/core/actions/draft.js +50 -23
  17. package/src/sap/fe/core/actions/messageHandling.js +86 -7
  18. package/src/sap/fe/core/actions/nonDraft.js +1 -1
  19. package/src/sap/fe/core/actions/operations.js +75 -33
  20. package/src/sap/fe/core/actions/sticky.js +1 -1
  21. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +1 -1
  22. package/src/sap/fe/core/controllerextensions/EditFlow.js +276 -122
  23. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
  24. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +14 -6
  25. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +90 -46
  26. package/src/sap/fe/core/controllerextensions/InternalRouting.js +234 -232
  27. package/src/sap/fe/core/controllerextensions/KPIManagement.js +539 -209
  28. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +550 -213
  29. package/src/sap/fe/core/controllerextensions/MassEdit.js +79 -0
  30. package/src/sap/fe/core/controllerextensions/MessageHandler.js +227 -103
  31. package/src/sap/fe/core/controllerextensions/PageReady.js +2 -2
  32. package/src/sap/fe/core/controllerextensions/PageReady.ts +3 -7
  33. package/src/sap/fe/core/controllerextensions/Paginator.js +38 -12
  34. package/src/sap/fe/core/controllerextensions/Placeholder.js +16 -19
  35. package/src/sap/fe/core/controllerextensions/Routing.js +17 -2
  36. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  37. package/src/sap/fe/core/controllerextensions/Share.js +20 -7
  38. package/src/sap/fe/core/controllerextensions/SideEffects.js +8 -9
  39. package/src/sap/fe/core/controllerextensions/SideEffects.ts +19 -17
  40. package/src/sap/fe/core/controllerextensions/ViewState.js +54 -9
  41. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +40 -34
  42. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
  43. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  44. package/src/sap/fe/core/controls/ConditionalWrapper.js +1 -1
  45. package/src/sap/fe/core/controls/CustomQuickViewPage.js +110 -109
  46. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +7 -4
  47. package/src/sap/fe/core/controls/FieldWrapper.js +10 -4
  48. package/src/sap/fe/core/controls/FilterBar.js +1 -1
  49. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -6
  50. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
  51. package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -1
  52. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +1 -1
  53. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
  54. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +1 -1
  55. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
  56. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +106 -0
  57. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +78 -0
  58. package/src/sap/fe/core/converters/ConverterContext.js +13 -1
  59. package/src/sap/fe/core/converters/ConverterContext.ts +10 -0
  60. package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
  61. package/src/sap/fe/core/converters/ManifestSettings.ts +7 -1
  62. package/src/sap/fe/core/converters/ManifestWrapper.js +18 -7
  63. package/src/sap/fe/core/converters/ManifestWrapper.ts +15 -6
  64. package/src/sap/fe/core/converters/MetaModelConverter.js +920 -882
  65. package/src/sap/fe/core/converters/MetaModelConverter.ts +829 -853
  66. package/src/sap/fe/core/converters/annotations/DataField.js +54 -4
  67. package/src/sap/fe/core/converters/annotations/DataField.ts +53 -3
  68. package/src/sap/fe/core/converters/common/AnnotationConverter.js +83 -48
  69. package/src/sap/fe/core/converters/controls/Common/Action.js +15 -3
  70. package/src/sap/fe/core/converters/controls/Common/Action.ts +12 -3
  71. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -3
  72. package/src/sap/fe/core/converters/controls/Common/Chart.ts +0 -2
  73. package/src/sap/fe/core/converters/controls/Common/Form.js +68 -21
  74. package/src/sap/fe/core/converters/controls/Common/Form.ts +60 -16
  75. package/src/sap/fe/core/converters/controls/Common/KPI.js +331 -248
  76. package/src/sap/fe/core/converters/controls/Common/KPI.ts +355 -287
  77. package/src/sap/fe/core/converters/controls/Common/Table.js +426 -332
  78. package/src/sap/fe/core/converters/controls/Common/Table.ts +516 -383
  79. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +468 -0
  80. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +609 -0
  81. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +30 -13
  82. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +31 -12
  83. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +2 -2
  84. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +1 -1
  85. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +15 -7
  86. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +27 -6
  87. package/src/sap/fe/core/converters/helpers/Aggregation.js +8 -1
  88. package/src/sap/fe/core/converters/helpers/Aggregation.ts +9 -1
  89. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  90. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +2 -2
  91. package/src/sap/fe/core/converters/helpers/ID.js +9 -1
  92. package/src/sap/fe/core/converters/helpers/ID.ts +6 -2
  93. package/src/sap/fe/core/converters/helpers/IssueManager.js +7 -5
  94. package/src/sap/fe/core/converters/helpers/IssueManager.ts +6 -4
  95. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +2 -2
  96. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +1 -1
  97. package/src/sap/fe/core/converters/templates/ListReportConverter.js +34 -4
  98. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +36 -7
  99. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +2 -5
  100. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +1 -2
  101. package/src/sap/fe/core/designtime/AppComponent.designtime.js +11 -2
  102. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  103. package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
  104. package/src/sap/fe/core/formatters/TableFormatter.js +27 -4
  105. package/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
  106. package/src/sap/fe/core/formatters/ValueFormatter.js +30 -5
  107. package/src/sap/fe/core/formatters/ValueFormatter.ts +25 -3
  108. package/src/sap/fe/core/fpm/Component.js +2 -2
  109. package/src/sap/fe/core/helpers/AppStartupHelper.js +359 -0
  110. package/src/sap/fe/core/helpers/AppStartupHelper.ts +388 -0
  111. package/src/sap/fe/core/helpers/BindingExpression.js +199 -111
  112. package/src/sap/fe/core/helpers/BindingExpression.ts +193 -102
  113. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
  114. package/src/sap/fe/core/helpers/EditState.js +1 -1
  115. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -3
  116. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  117. package/src/sap/fe/core/helpers/KeepAliveHelper.js +211 -0
  118. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
  119. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +32 -0
  120. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
  121. package/src/sap/fe/core/helpers/MassEditHelper.js +678 -0
  122. package/src/sap/fe/core/helpers/ModelHelper.js +64 -1
  123. package/src/sap/fe/core/helpers/PasteHelper.js +7 -1
  124. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  125. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  126. package/src/sap/fe/core/helpers/StableIdHelper.js +2 -2
  127. package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
  128. package/src/sap/fe/core/library.js +28 -2
  129. package/src/sap/fe/core/library.support.js +10 -4
  130. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +62 -0
  131. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -0
  132. package/src/sap/fe/core/messagebundle.properties +67 -3
  133. package/src/sap/fe/core/messagebundle_ar.properties +40 -3
  134. package/src/sap/fe/core/messagebundle_bg.properties +40 -3
  135. package/src/sap/fe/core/messagebundle_ca.properties +41 -4
  136. package/src/sap/fe/core/messagebundle_cs.properties +41 -4
  137. package/src/sap/fe/core/messagebundle_cy.properties +40 -3
  138. package/src/sap/fe/core/messagebundle_da.properties +40 -3
  139. package/src/sap/fe/core/messagebundle_de.properties +40 -3
  140. package/src/sap/fe/core/messagebundle_el.properties +40 -3
  141. package/src/sap/fe/core/messagebundle_en.properties +37 -0
  142. package/src/sap/fe/core/messagebundle_en_GB.properties +37 -0
  143. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +37 -0
  144. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +46 -2
  145. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +44 -0
  146. package/src/sap/fe/core/messagebundle_es.properties +40 -3
  147. package/src/sap/fe/core/messagebundle_es_MX.properties +41 -4
  148. package/src/sap/fe/core/messagebundle_et.properties +40 -3
  149. package/src/sap/fe/core/messagebundle_fi.properties +40 -3
  150. package/src/sap/fe/core/messagebundle_fr.properties +41 -4
  151. package/src/sap/fe/core/messagebundle_fr_CA.properties +40 -3
  152. package/src/sap/fe/core/messagebundle_hi.properties +40 -3
  153. package/src/sap/fe/core/messagebundle_hr.properties +40 -3
  154. package/src/sap/fe/core/messagebundle_hu.properties +41 -4
  155. package/src/sap/fe/core/messagebundle_id.properties +42 -5
  156. package/src/sap/fe/core/messagebundle_it.properties +40 -3
  157. package/src/sap/fe/core/messagebundle_iw.properties +40 -3
  158. package/src/sap/fe/core/messagebundle_ja.properties +49 -12
  159. package/src/sap/fe/core/messagebundle_kk.properties +40 -3
  160. package/src/sap/fe/core/messagebundle_ko.properties +40 -3
  161. package/src/sap/fe/core/messagebundle_lt.properties +40 -3
  162. package/src/sap/fe/core/messagebundle_lv.properties +40 -3
  163. package/src/sap/fe/core/messagebundle_ms.properties +40 -3
  164. package/src/sap/fe/core/messagebundle_nl.properties +40 -3
  165. package/src/sap/fe/core/messagebundle_no.properties +40 -3
  166. package/src/sap/fe/core/messagebundle_pl.properties +40 -3
  167. package/src/sap/fe/core/messagebundle_pt.properties +42 -5
  168. package/src/sap/fe/core/messagebundle_pt_PT.properties +40 -3
  169. package/src/sap/fe/core/messagebundle_ro.properties +40 -3
  170. package/src/sap/fe/core/messagebundle_ru.properties +40 -3
  171. package/src/sap/fe/core/messagebundle_sh.properties +40 -3
  172. package/src/sap/fe/core/messagebundle_sk.properties +40 -3
  173. package/src/sap/fe/core/messagebundle_sl.properties +40 -3
  174. package/src/sap/fe/core/messagebundle_sv.properties +41 -4
  175. package/src/sap/fe/core/messagebundle_th.properties +40 -3
  176. package/src/sap/fe/core/messagebundle_tr.properties +40 -3
  177. package/src/sap/fe/core/messagebundle_uk.properties +40 -3
  178. package/src/sap/fe/core/messagebundle_vi.properties +40 -3
  179. package/src/sap/fe/core/messagebundle_zh_CN.properties +40 -3
  180. package/src/sap/fe/core/messagebundle_zh_TW.properties +40 -3
  181. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
  182. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
  183. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +4 -3
  184. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -0
  185. package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  186. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  187. package/src/sap/fe/core/services/RoutingServiceFactory.js +98 -328
  188. package/src/sap/fe/core/services/ShellServicesFactory.js +31 -2
  189. package/src/sap/fe/core/services/ShellServicesFactory.ts +30 -1
  190. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +8 -5
  191. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +11 -6
  192. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +14 -5
  193. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
  194. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +38 -0
  195. package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +18 -0
  196. package/src/sap/fe/core/templating/DataModelPathHelper.js +8 -37
  197. package/src/sap/fe/core/templating/DataModelPathHelper.ts +13 -33
  198. package/src/sap/fe/core/templating/DisplayModeFormatter.js +114 -0
  199. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +86 -0
  200. package/src/sap/fe/core/templating/EntitySetHelper.js +86 -3
  201. package/src/sap/fe/core/templating/EntitySetHelper.ts +44 -0
  202. package/src/sap/fe/core/templating/FilterHelper.js +10 -7
  203. package/src/sap/fe/core/templating/FilterHelper.ts +8 -6
  204. package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
  205. package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  206. package/src/sap/fe/core/templating/UIFormatters.js +47 -107
  207. package/src/sap/fe/core/templating/UIFormatters.ts +76 -72
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
 
6
6
  // Static functions for Fiori Message Handling
@@ -16,9 +16,23 @@ sap.ui.define(
16
16
  "sap/ui/model/FilterOperator",
17
17
  "sap/ui/core/message/Message",
18
18
  "sap/ui/core/IconPool",
19
- "sap/ui/model/json/JSONModel"
19
+ "sap/ui/model/json/JSONModel",
20
+ "sap/ui/core/format/DateFormat"
20
21
  ],
21
- function(MessageToast, MessageItem, MessageView, Button, Dialog, CoreLib, Filter, FilterOperator, Message, IconPool, JSONModel) {
22
+ function(
23
+ MessageToast,
24
+ MessageItem,
25
+ MessageView,
26
+ Button,
27
+ Dialog,
28
+ CoreLib,
29
+ Filter,
30
+ FilterOperator,
31
+ Message,
32
+ IconPool,
33
+ JSONModel,
34
+ DateFormat
35
+ ) {
22
36
  "use strict";
23
37
  var MessageType = CoreLib.MessageType;
24
38
  var that = this;
@@ -129,12 +143,60 @@ sap.ui.define(
129
143
  });
130
144
  return bMessagesModified;
131
145
  }
146
+
132
147
  // Dialog close Handling
133
148
  function dialogCloseHandler() {
134
149
  that.oDialog.close();
135
150
  that.oBackButton.setVisible(false);
136
151
  removeUnboundTransitionMessages();
137
152
  }
153
+
154
+ function getRetryAfterMessage(oMessage, bMessageDialog) {
155
+ var dNow = new Date();
156
+ var oTechnicalDetails = oMessage.getTechnicalDetails(),
157
+ oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core"),
158
+ sRetryAfterMessage;
159
+ if (oTechnicalDetails && oTechnicalDetails.httpStatus === 503 && oTechnicalDetails.retryAfter) {
160
+ var dRetryAfter = oTechnicalDetails.retryAfter;
161
+ var sRetryAfterMessage;
162
+ var oDateFormat;
163
+ if (dNow.getFullYear() !== dRetryAfter.getFullYear()) {
164
+ //different years
165
+ oDateFormat = DateFormat.getDateTimeInstance({
166
+ pattern: "MMMM dd, yyyy 'at' hh:mm a"
167
+ });
168
+ sRetryAfterMessage = oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_ERROR", oDateFormat.format(dRetryAfter));
169
+ } else if (dNow.getFullYear() == dRetryAfter.getFullYear()) {
170
+ //same year
171
+ if (bMessageDialog) {
172
+ //less than 2 min
173
+ sRetryAfterMessage =
174
+ oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_TITLE") +
175
+ " " +
176
+ oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_DESC");
177
+ } else if (dNow.getMonth() !== dRetryAfter.getMonth() || dNow.getDate() !== dRetryAfter.getDate()) {
178
+ oDateFormat = sap.ui.core.format.DateFormat.getDateTimeInstance({
179
+ pattern: "MMMM dd 'at' hh:mm a"
180
+ }); //different months or different days of same month
181
+ sRetryAfterMessage = oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_ERROR", oDateFormat.format(dRetryAfter));
182
+ } else {
183
+ //same day
184
+ oDateFormat = sap.ui.core.format.DateFormat.getDateTimeInstance({
185
+ pattern: "hh:mm a"
186
+ });
187
+ sRetryAfterMessage = oResourceBundle.getText(
188
+ "C_MESSAGE_HANDLING_SAPFE_503_ERROR_DAY",
189
+ oDateFormat.format(dRetryAfter)
190
+ );
191
+ }
192
+ }
193
+ }
194
+
195
+ if (oTechnicalDetails && oTechnicalDetails.httpStatus === 503 && !oTechnicalDetails.retryAfter) {
196
+ sRetryAfterMessage = oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_ERROR_NO_RETRY_AFTER");
197
+ }
198
+ return sRetryAfterMessage;
199
+ }
138
200
  /**
139
201
  * Shows all unbound (including technical) messages and removes the ones which are transient.
140
202
  *
@@ -227,7 +289,12 @@ sap.ui.define(
227
289
  // So we create new json model to use for the message dialog view.
228
290
  var aMessages = [];
229
291
  aCurrentContexts.forEach(function(oContext) {
230
- aMessages.push(oContext.getObject());
292
+ var oMessage = oContext.getObject(),
293
+ sRetryAfterMessage = getRetryAfterMessage(oMessage, true);
294
+ if (sRetryAfterMessage) {
295
+ oMessage.setMessage(sRetryAfterMessage + " " + oMessage.getMessage());
296
+ }
297
+ aMessages.push(oMessage);
231
298
  });
232
299
  oMessageDialogModel.setData(aMessages);
233
300
  }
@@ -289,6 +356,8 @@ sap.ui.define(
289
356
  this.setVisible(false);
290
357
  }
291
358
  });
359
+ // Update proper ETag Mismatch error
360
+ var bHasEtagMessage = fnModifyETagMessagesOnly(oMessageManager, oResourceBundle);
292
361
  that.oMessageView.setModel(oMessageDialogModel);
293
362
  that.oDialog =
294
363
  that.oDialog ||
@@ -324,8 +393,6 @@ sap.ui.define(
324
393
  }
325
394
  });
326
395
 
327
- // Update proper ETag Mismatch error
328
- var bHasEtagMessage = fnModifyETagMessagesOnly(oMessageManager, oResourceBundle);
329
396
  if (bHasEtagMessage) {
330
397
  sap.ui.require(["sap/m/ButtonType"], function(ButtonType) {
331
398
  that.oDialog.setBeginButton(
@@ -390,6 +457,7 @@ sap.ui.define(
390
457
  var oMessageManager = sap.ui.getCore().getMessageManager(),
391
458
  oMessageModel = oMessageManager.getMessageModel(),
392
459
  aMessages = oMessageModel.getObject("/"),
460
+ oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core"),
393
461
  aTransitionMessages = [];
394
462
 
395
463
  for (var i = 0; i < aMessages.length; i++) {
@@ -403,6 +471,16 @@ sap.ui.define(
403
471
  }
404
472
  }
405
473
 
474
+ for (var i = 0; i < aTransitionMessages.length; i++) {
475
+ if (
476
+ aTransitionMessages[i].code === "503" &&
477
+ aTransitionMessages[i].message !== "" &&
478
+ aTransitionMessages[i].message.indexOf(oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_BACKEND_PREFIX")) === -1
479
+ ) {
480
+ aTransitionMessages[i].message =
481
+ "\n" + oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_BACKEND_PREFIX") + aTransitionMessages[i].message;
482
+ }
483
+ }
406
484
  return aTransitionMessages;
407
485
  }
408
486
 
@@ -431,7 +509,8 @@ sap.ui.define(
431
509
  showUnboundMessages: showUnboundMessages,
432
510
  removeUnboundTransitionMessages: removeUnboundTransitionMessages,
433
511
  removeBoundTransitionMessages: removeBoundTransitionMessages,
434
- modifyETagMessagesOnly: fnModifyETagMessagesOnly
512
+ modifyETagMessagesOnly: fnModifyETagMessagesOnly,
513
+ getRetryAfterMessage: getRetryAfterMessage
435
514
  };
436
515
  return messageHandling;
437
516
  }
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
 
6
6
  // Provides static functions for the non-draft programming model
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
 
6
6
  // Provides static functions to call OData actions (bound/import) and functions (bound/import)
@@ -35,7 +35,8 @@ sap.ui.define(
35
35
  ) {
36
36
  "use strict";
37
37
 
38
- var Constants = FELibrary.Constants;
38
+ var Constants = FELibrary.Constants,
39
+ InvocationGrouping = FELibrary.InvocationGrouping;
39
40
 
40
41
  /**
41
42
  * Calls a bound action for one or multiple contexts
@@ -44,7 +45,7 @@ sap.ui.define(
44
45
  * @name sap.fe.core.actions.operations.callBoundAction
45
46
  * @memberof sap.fe.core.actions.operations
46
47
  * @param {string} sActionName The name of the action to be called
47
- * @param {sap.ui.model.odata.v4.Context} contexts Either one context or an array with contexts for which the action shall be called
48
+ * @param {sap.ui.model.odata.v4.Context} contexts Either one context or an array with contexts for which the action is to be be called
48
49
  * @param {sap.ui.model.odata.v4.Model} oModel OData Model
49
50
  * @param {object} oAppComponent The AppComponent
50
51
  * @param {map} [mParameters] Optional, can contain the following attributes:
@@ -53,7 +54,7 @@ sap.ui.define(
53
54
  * @param {Array} [mParameters.additionalSideEffect] array of property paths to be requested in addition to actual target properties of the side effect
54
55
  * @param {boolean} [mParameters.showActionParameterDialog] [false] if set and if parameters exist the user retrieves a dialog to fill in parameters, if actionParameters are passed they are shown to the user
55
56
  * @param {string} [mParameters.label] a human-readable label for the action
56
- * @param {string} [mParameters.invocationGrouping] [Isolated] mode how actions shall be called: Changeset to put all action calls into one changeset, Isolated to put them into separate changesets
57
+ * @param {string} [mParameters.invocationGrouping] [Isolated] mode how actions are to be called: Changeset to put all action calls into one changeset, Isolated to put them into separate changesets
57
58
  * @param {Function} [mParameters.onSubmitted] Function which is called once the actions are submitted with an array of promises
58
59
  * @param {map} [mParameters.defaultParameters] can contain default parameters from FLP user defaults
59
60
  * @param {sap.ui.core.Element} [mParameters.parentControl] if specified the dialogs are added as dependent of the parent control
@@ -166,7 +167,7 @@ sap.ui.define(
166
167
  function _executeFunction(sFunctionName, oModel, oFunction, context) {
167
168
  var oFunctionPromise, sGroupId;
168
169
  if (!oFunction || !oFunction.getObject()) {
169
- return Promise.reject(new Error("Function" + sFunctionName + " not found"));
170
+ return Promise.reject(new Error("Function " + sFunctionName + " not found"));
170
171
  }
171
172
  if (context) {
172
173
  oFunction = oModel.bindContext(sFunctionName + "(...)", context);
@@ -198,7 +199,7 @@ sap.ui.define(
198
199
  sMessagesPath,
199
200
  iMessageSideEffect;
200
201
  if (!oAction || !oAction.getObject()) {
201
- return reject(new Error("Action" + sActionName + " not found"));
202
+ return reject(new Error("Action " + sActionName + " not found"));
202
203
  }
203
204
  if (bShowActionParameterDialog || aActionParameters.length > 0) {
204
205
  aActionParameters = prepareActionParameters(oAction, aActionParameters);
@@ -257,7 +258,7 @@ sap.ui.define(
257
258
  mActionExecutionParameters.aContexts = aContexts;
258
259
  mActionExecutionParameters.mBindingParameters = mParameters.mBindingParameters;
259
260
  mActionExecutionParameters.additionalSideEffect = mParameters.additionalSideEffect;
260
- mActionExecutionParameters.bGrouped = mParameters.invocationGrouping === "ChangeSet";
261
+ mActionExecutionParameters.bGrouped = mParameters.invocationGrouping === InvocationGrouping.ChangeSet;
261
262
  mActionExecutionParameters.bReturnAsArray = mParameters.bReturnAsArray;
262
263
  mActionExecutionParameters.internalModelContext = mParameters.internalModelContext;
263
264
  mActionExecutionParameters.operationAvailableMap = mParameters.operationAvailableMap;
@@ -375,7 +376,9 @@ sap.ui.define(
375
376
  return oField.getRequired() && oField.getValueState() !== "Error";
376
377
  })
377
378
  .map(function(oFormElement) {
378
- var value = oFormElement.getFields()[0].getValue();
379
+ var value = oFormElement.getFields()[0].isA("sap.ui.mdc.MultiValueField")
380
+ ? oFormElement.getFields()[0].getItems()
381
+ : oFormElement.getFields()[0].getValue();
379
382
  if (value === undefined || value === null || value === "") {
380
383
  return oFormElement.getLabel().getText();
381
384
  }
@@ -387,6 +390,40 @@ sap.ui.define(
387
390
  return aResults;
388
391
  });
389
392
  },
393
+ _validateMessages = function(aActionParameters, aFieldInvalid, bClearTarget) {
394
+ var oMessageManager = sap.ui.getCore().getMessageManager();
395
+ var aMessages = oMessageManager.getMessageModel().getData();
396
+
397
+ aFieldInvalid = [];
398
+
399
+ aActionParameters.forEach(function(oActionParameters) {
400
+ var sParameter = oActionParameters.$Name;
401
+ aMessages.forEach(function(oMessage) {
402
+ var sParam = sParameter.replace("-inner", "");
403
+ if (
404
+ oMessage.controlIds.length > 0 &&
405
+ (oMessage.getControlId().includes("APD_::" + sParameter) ||
406
+ (oMessage.getControlId().includes("APD_::" + sParameter + "inner") &&
407
+ aFieldInvalid.indexOf("APD_::" + sParam) < 0))
408
+ ) {
409
+ if (bClearTarget) {
410
+ oMessageManager.removeMessages(oMessage);
411
+ } else {
412
+ aFieldInvalid.push("APD_::" + sParam);
413
+ }
414
+ }
415
+ // Handle messages related to input with invalid token
416
+ if (oMessage.target.includes("APD_::" + sParameter)) {
417
+ aFieldInvalid.push("APD_::" + sParam);
418
+ oMessage.target = bClearTarget ? "" : oMessage.target;
419
+ if (bClearTarget) {
420
+ oMessageManager.removeMessages(oMessage);
421
+ }
422
+ }
423
+ });
424
+ });
425
+ return aFieldInvalid;
426
+ },
390
427
  oController = {
391
428
  handleChange: function(oEvent) {
392
429
  messageHandler.removeTransitionMessages();
@@ -398,6 +435,7 @@ sap.ui.define(
398
435
  return oField.getValue();
399
436
  });
400
437
  }
438
+ _validateMessages(aActionParameters, aFieldInvalid);
401
439
  }
402
440
  };
403
441
 
@@ -426,6 +464,7 @@ sap.ui.define(
426
464
  // TODO: move the dialog into the fragment and move the handlers to the oController
427
465
  return Fragment.load({ definition: oFragment, controller: oController }).then(function(oDialogContent) {
428
466
  var oOperationBinding;
467
+ var aContexts;
429
468
  var oResourceBundle = oParentControl.getController().oResourceBundle;
430
469
  var oDialog = new Dialog({
431
470
  title:
@@ -461,29 +500,11 @@ sap.ui.define(
461
500
  });
462
501
  return;
463
502
  }
464
- var aMessages = sap.ui
465
- .getCore()
466
- .getMessageManager()
467
- .getMessageModel()
468
- .getData();
469
503
 
470
- aFieldInvalid = [];
471
- aActionParameters.forEach(function(oActionParameters) {
472
- var sParameter = oActionParameters.$Name;
473
- aMessages.forEach(function(oMessage) {
474
- var sParam = sParameter.replace("-inner", "");
475
- if (
476
- oMessage.controlIds.length > 0 &&
477
- (oMessage.getControlId().includes("APD_::" + sParameter) ||
478
- (oMessage.getControlId().includes("APD_::" + sParameter + "inner") &&
479
- aFieldInvalid.indexOf("APD_::" + sParam) < 0))
480
- ) {
481
- aFieldInvalid.push("APD_::" + sParam);
482
- }
483
- });
484
- });
504
+ aFieldInvalid = _validateMessages(aActionParameters, aFieldInvalid);
505
+
485
506
  if (aFieldInvalid.length > 0) {
486
- return;
507
+ return messageHandling.showUnboundMessages();
487
508
  }
488
509
  BusyLocker.lock(oDialog);
489
510
  return Promise.all(
@@ -500,7 +521,20 @@ sap.ui.define(
500
521
  oParameterContext =
501
522
  oOperationBinding && oOperationBinding.getParameterContext();
502
523
  for (var i in aActionParameters) {
503
- vParameterValue = oParameterContext.getProperty(aActionParameters[i].$Name);
524
+ if (aActionParameters[i].$isCollection) {
525
+ var aMVFContent = oDialog
526
+ .getModel("mvfview")
527
+ .getProperty("/" + aActionParameters[i].$Name),
528
+ aKeyValues = [];
529
+ for (var j in aMVFContent) {
530
+ aKeyValues.push(aMVFContent[j].Key);
531
+ }
532
+ vParameterValue = aKeyValues;
533
+ } else {
534
+ vParameterValue = oParameterContext.getProperty(
535
+ aActionParameters[i].$Name
536
+ );
537
+ }
504
538
  aActionParameters[i].value = vParameterValue;
505
539
  vParameterValue = undefined;
506
540
  }
@@ -520,10 +554,13 @@ sap.ui.define(
520
554
  oResourceBundle
521
555
  );
522
556
 
523
- messageHandler.showMessageDialog({
557
+ messageHandler.showMessages({
524
558
  bHasEtagMessage: bHasEtagMessage,
525
559
  context: mParameters.aContexts[0],
526
- isActionParameterDialogOpen: true
560
+ isActionParameterDialogOpen: true,
561
+ messagePageNavigationCallback: function() {
562
+ oDialog.close();
563
+ }
527
564
  });
528
565
  if (oDialog && bHasEtagMessage) {
529
566
  oDialog.close(); //close the action parameter dialog after refresh of the context after etag mismatch
@@ -541,6 +578,7 @@ sap.ui.define(
541
578
  endButton: {
542
579
  text: CommonUtils.getTranslatedText("C_COMMON_ACTION_PARAMETER_DIALOG_CANCEL", oResourceBundle),
543
580
  press: function() {
581
+ _validateMessages(aActionParameters, aFieldInvalid, true);
544
582
  oDialog.close();
545
583
  messageHandler.removeTransitionMessages();
546
584
  reject(Constants.CancelActionDialog);
@@ -804,8 +842,12 @@ sap.ui.define(
804
842
  path: "/",
805
843
  model: "paramsModel"
806
844
  });
845
+ // empty model to add elements dynamically depending on number of MVF fields defined on the dialog
846
+ var oMVFModel = new JSONModel({});
847
+ oDialog.setModel(oMVFModel, "mvfview");
848
+
807
849
  var sActionPath = sActionName + "(...)";
808
- var aContexts = mParameters.aContexts || [];
850
+ aContexts = mParameters.aContexts || [];
809
851
  if (!aContexts.length) {
810
852
  sActionPath = "/" + sActionPath;
811
853
  }
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
 
6
6
  // Provides static functions for the sticky session programming model
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
 
6
6
  // Provides ControllerMetadata