@sapui5/sap.fe.core 1.94.0 → 1.96.3

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 (182) hide show
  1. package/package.json +1 -1
  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 +10 -41
  5. package/src/sap/fe/core/AppStateHandler.js +18 -4
  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 +372 -9
  9. package/src/sap/fe/core/ExtensionAPI.js +1 -1
  10. package/src/sap/fe/core/PageController.js +11 -3
  11. package/src/sap/fe/core/RouterProxy.js +59 -69
  12. package/src/sap/fe/core/Synchronization.js +1 -1
  13. package/src/sap/fe/core/TemplateComponent.js +9 -3
  14. package/src/sap/fe/core/TemplateModel.js +1 -1
  15. package/src/sap/fe/core/TransactionHelper.js +157 -111
  16. package/src/sap/fe/core/actions/draft.js +1 -1
  17. package/src/sap/fe/core/actions/messageHandling.js +1 -1
  18. package/src/sap/fe/core/actions/nonDraft.js +1 -1
  19. package/src/sap/fe/core/actions/operations.js +25 -3
  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 +89 -54
  23. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +1 -1
  24. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +14 -7
  25. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +128 -25
  26. package/src/sap/fe/core/controllerextensions/InternalRouting.js +197 -210
  27. package/src/sap/fe/core/controllerextensions/KPIManagement.js +844 -168
  28. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +903 -189
  29. package/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
  30. package/src/sap/fe/core/controllerextensions/PageReady.js +31 -17
  31. package/src/sap/fe/core/controllerextensions/PageReady.ts +50 -15
  32. package/src/sap/fe/core/controllerextensions/Paginator.js +20 -4
  33. package/src/sap/fe/core/controllerextensions/Placeholder.js +134 -271
  34. package/src/sap/fe/core/controllerextensions/Routing.js +1 -1
  35. package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
  36. package/src/sap/fe/core/controllerextensions/Share.js +20 -7
  37. package/src/sap/fe/core/controllerextensions/SideEffects.js +2 -3
  38. package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -12
  39. package/src/sap/fe/core/controllerextensions/ViewState.js +174 -7
  40. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +39 -34
  41. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
  42. package/src/sap/fe/core/controls/CommandExecution.js +1 -1
  43. package/src/sap/fe/core/controls/ConditionalWrapper.js +1 -1
  44. package/src/sap/fe/core/controls/CustomQuickViewPage.js +4 -1
  45. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
  46. package/src/sap/fe/core/controls/FieldWrapper.js +1 -1
  47. package/src/sap/fe/core/controls/FilterBar.js +1 -1
  48. package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
  49. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
  50. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +5 -8
  51. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +83 -23
  52. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -6
  53. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +25 -18
  54. package/src/sap/fe/core/converters/ConverterContext.js +18 -4
  55. package/src/sap/fe/core/converters/ConverterContext.ts +13 -3
  56. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  57. package/src/sap/fe/core/converters/ManifestSettings.ts +4 -1
  58. package/src/sap/fe/core/converters/MetaModelConverter.js +855 -868
  59. package/src/sap/fe/core/converters/MetaModelConverter.ts +763 -826
  60. package/src/sap/fe/core/converters/annotations/DataField.js +52 -2
  61. package/src/sap/fe/core/converters/annotations/DataField.ts +52 -2
  62. package/src/sap/fe/core/converters/controls/Common/Action.js +6 -1
  63. package/src/sap/fe/core/converters/controls/Common/Action.ts +3 -0
  64. package/src/sap/fe/core/converters/controls/Common/Chart.js +85 -6
  65. package/src/sap/fe/core/converters/controls/Common/Chart.ts +80 -2
  66. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -16
  67. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +16 -30
  68. package/src/sap/fe/core/converters/controls/Common/Form.js +17 -8
  69. package/src/sap/fe/core/converters/controls/Common/Form.ts +11 -3
  70. package/src/sap/fe/core/converters/controls/Common/KPI.js +287 -109
  71. package/src/sap/fe/core/converters/controls/Common/KPI.ts +314 -139
  72. package/src/sap/fe/core/converters/controls/Common/Table.js +273 -105
  73. package/src/sap/fe/core/converters/controls/Common/Table.ts +319 -111
  74. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +8 -20
  75. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +11 -15
  76. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +44 -15
  77. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +41 -19
  78. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +74 -0
  79. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +50 -0
  80. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +15 -7
  81. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +27 -6
  82. package/src/sap/fe/core/converters/helpers/Aggregation.js +18 -30
  83. package/src/sap/fe/core/converters/helpers/Aggregation.ts +17 -28
  84. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  85. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +2 -2
  86. package/src/sap/fe/core/converters/helpers/ID.js +1 -1
  87. package/src/sap/fe/core/converters/helpers/ID.ts +2 -2
  88. package/src/sap/fe/core/converters/helpers/IssueManager.js +3 -3
  89. package/src/sap/fe/core/converters/helpers/IssueManager.ts +2 -2
  90. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +11 -6
  91. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +9 -5
  92. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +15 -2
  93. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +14 -14
  94. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +2 -2
  95. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +1 -1
  96. package/src/sap/fe/core/converters/templates/ListReportConverter.js +73 -8
  97. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +70 -10
  98. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +82 -16
  99. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +100 -17
  100. package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
  101. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  102. package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
  103. package/src/sap/fe/core/fpm/Component.js +2 -2
  104. package/src/sap/fe/core/helpers/BindingExpression.js +17 -2
  105. package/src/sap/fe/core/helpers/BindingExpression.ts +14 -1
  106. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
  107. package/src/sap/fe/core/helpers/EditState.js +1 -1
  108. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -3
  109. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  110. package/src/sap/fe/core/helpers/ModelHelper.js +28 -1
  111. package/src/sap/fe/core/helpers/PasteHelper.js +7 -1
  112. package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  113. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
  114. package/src/sap/fe/core/helpers/StableIdHelper.js +2 -2
  115. package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
  116. package/src/sap/fe/core/library.js +2 -2
  117. package/src/sap/fe/core/library.support.js +1 -1
  118. package/src/sap/fe/core/messagebundle.properties +30 -1
  119. package/src/sap/fe/core/messagebundle_ar.properties +14 -0
  120. package/src/sap/fe/core/messagebundle_bg.properties +14 -0
  121. package/src/sap/fe/core/messagebundle_ca.properties +15 -1
  122. package/src/sap/fe/core/messagebundle_cs.properties +14 -0
  123. package/src/sap/fe/core/messagebundle_cy.properties +14 -0
  124. package/src/sap/fe/core/messagebundle_da.properties +14 -0
  125. package/src/sap/fe/core/messagebundle_de.properties +14 -0
  126. package/src/sap/fe/core/messagebundle_el.properties +14 -0
  127. package/src/sap/fe/core/messagebundle_en.properties +14 -0
  128. package/src/sap/fe/core/messagebundle_en_GB.properties +14 -0
  129. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +14 -0
  130. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -2
  131. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +14 -0
  132. package/src/sap/fe/core/messagebundle_es.properties +21 -7
  133. package/src/sap/fe/core/messagebundle_es_MX.properties +15 -1
  134. package/src/sap/fe/core/messagebundle_et.properties +14 -0
  135. package/src/sap/fe/core/messagebundle_fi.properties +14 -0
  136. package/src/sap/fe/core/messagebundle_fr.properties +18 -4
  137. package/src/sap/fe/core/messagebundle_fr_CA.properties +14 -0
  138. package/src/sap/fe/core/messagebundle_hi.properties +14 -0
  139. package/src/sap/fe/core/messagebundle_hr.properties +14 -0
  140. package/src/sap/fe/core/messagebundle_hu.properties +14 -0
  141. package/src/sap/fe/core/messagebundle_id.properties +14 -0
  142. package/src/sap/fe/core/messagebundle_it.properties +14 -0
  143. package/src/sap/fe/core/messagebundle_iw.properties +15 -1
  144. package/src/sap/fe/core/messagebundle_ja.properties +14 -0
  145. package/src/sap/fe/core/messagebundle_kk.properties +14 -0
  146. package/src/sap/fe/core/messagebundle_ko.properties +14 -0
  147. package/src/sap/fe/core/messagebundle_lt.properties +14 -0
  148. package/src/sap/fe/core/messagebundle_lv.properties +14 -0
  149. package/src/sap/fe/core/messagebundle_ms.properties +14 -0
  150. package/src/sap/fe/core/messagebundle_nl.properties +18 -4
  151. package/src/sap/fe/core/messagebundle_no.properties +15 -1
  152. package/src/sap/fe/core/messagebundle_pl.properties +15 -1
  153. package/src/sap/fe/core/messagebundle_pt.properties +14 -0
  154. package/src/sap/fe/core/messagebundle_pt_PT.properties +14 -0
  155. package/src/sap/fe/core/messagebundle_ro.properties +14 -0
  156. package/src/sap/fe/core/messagebundle_ru.properties +14 -0
  157. package/src/sap/fe/core/messagebundle_sh.properties +14 -0
  158. package/src/sap/fe/core/messagebundle_sk.properties +14 -0
  159. package/src/sap/fe/core/messagebundle_sl.properties +14 -0
  160. package/src/sap/fe/core/messagebundle_sv.properties +14 -0
  161. package/src/sap/fe/core/messagebundle_th.properties +14 -0
  162. package/src/sap/fe/core/messagebundle_tr.properties +14 -0
  163. package/src/sap/fe/core/messagebundle_uk.properties +14 -0
  164. package/src/sap/fe/core/messagebundle_vi.properties +14 -0
  165. package/src/sap/fe/core/messagebundle_zh_CN.properties +14 -0
  166. package/src/sap/fe/core/messagebundle_zh_TW.properties +14 -0
  167. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
  168. package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  169. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  170. package/src/sap/fe/core/services/RoutingServiceFactory.js +114 -44
  171. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +2 -2
  172. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
  173. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +12 -2
  174. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
  175. package/src/sap/fe/core/templating/DataModelPathHelper.js +3 -14
  176. package/src/sap/fe/core/templating/DataModelPathHelper.ts +3 -10
  177. package/src/sap/fe/core/templating/EntitySetHelper.js +13 -3
  178. package/src/sap/fe/core/templating/EntitySetHelper.ts +4 -0
  179. package/src/sap/fe/core/templating/FilterHelper.js +2 -2
  180. package/src/sap/fe/core/templating/FilterHelper.ts +1 -1
  181. package/src/sap/fe/core/templating/UIFormatters.js +41 -3
  182. package/src/sap/fe/core/templating/UIFormatters.ts +74 -2
@@ -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
  sap.ui.define(
6
6
  [
@@ -60,10 +60,8 @@ sap.ui.define(
60
60
  messageHandling
61
61
  ) {
62
62
  "use strict";
63
-
64
63
  var CreationMode = FELibrary.CreationMode,
65
64
  ProgrammingModel = FELibrary.ProgrammingModel;
66
-
67
65
  /* Make sure that the mParameters is not the oEvent */
68
66
  function getParameters(mParameters) {
69
67
  if (mParameters && mParameters.getMetadata && mParameters.getMetadata().getName() === "sap.ui.base.Event") {
@@ -71,13 +69,11 @@ sap.ui.define(
71
69
  }
72
70
  return mParameters || {};
73
71
  }
74
-
75
72
  return BaseObject.extend("sap.fe.core.TransactionHelper", {
76
73
  constructor: function(oAppComponent, oLockObject) {
77
74
  this._oAppComponent = oAppComponent;
78
75
  this.oLockObject = oLockObject;
79
76
  },
80
-
81
77
  getProgrammingModel: function(oContext) {
82
78
  if (!this.sProgrammingModel && oContext) {
83
79
  if (ModelHelper.isDraftSupported(oContext.getModel().getMetaModel(), oContext.getPath())) {
@@ -92,7 +88,6 @@ sap.ui.define(
92
88
  }
93
89
  return this.sProgrammingModel;
94
90
  },
95
-
96
91
  /**
97
92
  * Creates a new document.
98
93
  *
@@ -106,60 +101,64 @@ sap.ui.define(
106
101
  * @param {map} [mParameters.keepTransientContextOnFailed] If set, the context stays in the list if the POST failed and POST will be repeated with the next change
107
102
  * @param oResourceBundle
108
103
  * @param messageHandler
104
+ * @param bFromCopyPaste
109
105
  * @returns {Promise} Promise resolves with new binding context
110
106
  * @ui5-restricted
111
107
  * @final
112
108
  */
113
- createDocument: function(oMainListBinding, mParameters, oResourceBundle, messageHandler) {
109
+ createDocument: function(oMainListBinding, mParameters, oResourceBundle, messageHandler, bFromCopyPaste) {
114
110
  var oNewDocumentContext,
115
111
  that = this,
116
112
  bSkipRefresh,
117
113
  oModel = oMainListBinding.getModel(),
118
114
  oMetaModel = oModel.getMetaModel(),
119
115
  sMetaPath = oMetaModel.getMetaPath(oMainListBinding.getHeaderContext().getPath()),
120
- sNewAction =
121
- !oMainListBinding.isRelative() &&
122
- (oMetaModel.getObject(sMetaPath + "@com.sap.vocabularies.Session.v1.StickySessionSupported/NewAction") ||
123
- oMetaModel.getObject(sMetaPath + "@com.sap.vocabularies.Common.v1.DraftRoot/NewAction")),
116
+ sCreateHash = this._getAppComponent()
117
+ .getRouterProxy()
118
+ .getHash(),
119
+ oComponentData = this._getAppComponent().getComponentData(),
120
+ oStartupParameters = (oComponentData && oComponentData.startupParameters) || {},
121
+ sNewAction = !oMainListBinding.isRelative()
122
+ ? this._getNewAction(oStartupParameters, sCreateHash, oMetaModel, sMetaPath)
123
+ : undefined,
124
124
  oCreationPromise,
125
125
  mBindingParameters = { "$$patchWithoutSideEffects": true },
126
126
  sMessagesPath = oMetaModel.getObject(sMetaPath + "/@com.sap.vocabularies.Common.v1.Messages/$Path"),
127
127
  sProgrammingModel,
128
- sBusyPath = "/busy";
128
+ sBusyPath = "/busy",
129
+ sFunctionName =
130
+ oMetaModel.getObject(sMetaPath + "@com.sap.vocabularies.Common.v1.DefaultValuesFunction") ||
131
+ oMetaModel.getObject(
132
+ ModelHelper.getTargetEntitySet(oMetaModel.getContext(sMetaPath)) +
133
+ "@com.sap.vocabularies.Common.v1.DefaultValuesFunction"
134
+ );
129
135
 
130
136
  if (sMessagesPath) {
131
137
  mBindingParameters["$select"] = sMessagesPath;
132
138
  }
133
-
134
139
  mParameters = getParameters(mParameters);
135
-
136
140
  if (!oMainListBinding) {
137
141
  return Promise.reject("Binding required for new document creation");
138
142
  }
139
-
140
143
  sProgrammingModel = this.getProgrammingModel(oMainListBinding);
141
144
  if (sProgrammingModel !== ProgrammingModel.Draft && sProgrammingModel !== ProgrammingModel.Sticky) {
142
145
  return Promise.reject("Create document only allowed for draft or sticky session supported services");
143
146
  }
144
-
145
147
  if (mParameters.busyMode === "Local") {
146
148
  // in case of local busy mode we use the list binding name
147
149
  // there's no APY yet so we have to use the .sId TODO provide a public method?
148
150
  sBusyPath = "/busyLocal/" + oMainListBinding.sId;
149
151
  }
150
152
  BusyLocker.lock(this.oLockObject, sBusyPath);
151
-
152
153
  bSkipRefresh = !mParameters.refreshList;
153
-
154
154
  var oResourceBundleCore = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
155
-
156
155
  if (sNewAction) {
157
156
  oCreationPromise = this.callAction(
158
157
  sNewAction,
159
158
  {
160
159
  contexts: oMainListBinding.getHeaderContext(),
161
160
  showActionParameterDialog: true,
162
- label: oResourceBundleCore.getText("C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE"),
161
+ label: this._getSpecificCreateActionDialogLabel(oMetaModel, sMetaPath, sNewAction, oResourceBundleCore),
163
162
  bindingParameters: mBindingParameters,
164
163
  parentControl: mParameters.parentControl,
165
164
  bIsCreateAction: true
@@ -173,35 +172,62 @@ sap.ui.define(
173
172
  var aNonComputedVisibleKeyFields = bIsNewPageCreation
174
173
  ? CommonUtils.getNonComputedVisibleFields(oMetaModel, sMetaPath)
175
174
  : [];
176
- if (aNonComputedVisibleKeyFields.length > 0) {
177
- var oTransientListBinding = oModel.bindList(oMainListBinding.getPath(), oMainListBinding.getContext(), [], [], {
178
- $$updateGroupId: "submitLater"
179
- });
180
- oTransientListBinding.refreshInternal = function() {};
181
- oNewDocumentContext = oTransientListBinding.create(mParameters.data, bSkipRefresh);
182
- oCreationPromise = this._launchDialogWithKeyFields(
183
- oMainListBinding,
184
- oTransientListBinding,
185
- oNewDocumentContext,
186
- aNonComputedVisibleKeyFields,
187
- oModel,
188
- mParameters,
189
- messageHandler
190
- );
191
- oCreationPromise.catch(function() {
192
- Log.trace("transient creation context deleted");
175
+ sFunctionName = bFromCopyPaste ? null : sFunctionName;
176
+ oCreationPromise = operations
177
+ .callFunctionImport(sFunctionName, oModel)
178
+ .then(function(oContext) {
179
+ if (oContext) {
180
+ return oContext.getObject();
181
+ } else {
182
+ return undefined;
183
+ }
184
+ })
185
+ .catch(function(oError) {
186
+ Log.error("Error while calling function Import " + sFunctionName, oError);
187
+ throw oError;
188
+ })
189
+ .then(function(oData) {
190
+ mParameters.data = oData ? Object.assign({}, oData, mParameters.data) : mParameters.data;
191
+ if (mParameters.data) {
192
+ delete mParameters.data["@odata.context"];
193
+ }
194
+ if (aNonComputedVisibleKeyFields.length > 0) {
195
+ var oTransientListBinding = oModel.bindList(
196
+ oMainListBinding.getPath(),
197
+ oMainListBinding.getContext(),
198
+ [],
199
+ [],
200
+ {
201
+ $$updateGroupId: "submitLater"
202
+ }
203
+ );
204
+ oTransientListBinding.refreshInternal = function() {};
205
+ oNewDocumentContext = oTransientListBinding.create(mParameters.data, bSkipRefresh);
206
+ return that._launchDialogWithKeyFields(
207
+ oMainListBinding,
208
+ oTransientListBinding,
209
+ oNewDocumentContext,
210
+ aNonComputedVisibleKeyFields,
211
+ oModel,
212
+ mParameters,
213
+ messageHandler,
214
+ sFunctionName
215
+ );
216
+ } else {
217
+ oNewDocumentContext = oMainListBinding.create(mParameters.data, bSkipRefresh, mParameters.createAtEnd);
218
+ return that.onAfterCreateCompletion(
219
+ oMainListBinding,
220
+ oNewDocumentContext,
221
+ mParameters,
222
+ oResourceBundleCore
223
+ );
224
+ }
225
+ })
226
+ .catch(function(oError) {
227
+ Log.error("Error while creating the new document", oError);
228
+ throw oError;
193
229
  });
194
- } else {
195
- oNewDocumentContext = oMainListBinding.create(mParameters.data, bSkipRefresh, mParameters.createAtEnd);
196
- oCreationPromise = that.onAfterCreateCompletion(
197
- oMainListBinding,
198
- oNewDocumentContext,
199
- mParameters,
200
- oResourceBundleCore
201
- );
202
- }
203
230
  }
204
-
205
231
  return oCreationPromise
206
232
  .then(function(oResult) {
207
233
  if (!oMainListBinding.isRelative()) {
@@ -209,7 +235,6 @@ sap.ui.define(
209
235
  that._bCreateMode = true;
210
236
  }
211
237
  oNewDocumentContext = oNewDocumentContext || (oResult && oResult.response);
212
-
213
238
  // TODO: where does this one coming from???
214
239
  if (oResult && oResult.bConsiderDocumentModified) {
215
240
  that.handleDocumentModifications();
@@ -229,7 +254,6 @@ sap.ui.define(
229
254
  // this line shows the expected console error Uncaught (in promise) Error: Request canceled: POST Travel; group: submitLater
230
255
  oNewDocumentContext.delete("$direct");
231
256
  }
232
-
233
257
  return Promise.reject(oError);
234
258
  });
235
259
  })
@@ -237,7 +261,6 @@ sap.ui.define(
237
261
  BusyLocker.unlock(that.oLockObject, sBusyPath);
238
262
  });
239
263
  },
240
-
241
264
  /**
242
265
  * Find the active contexts of the documents, only for the draft roots.
243
266
  *
@@ -245,14 +268,12 @@ sap.ui.define(
245
268
  * @static
246
269
  * @param {sap.ui.model.odata.v4.Context[]} aContexts Contexts Either one context or an array with contexts to be deleted
247
270
  * @param bFindActiveContexts
248
-
249
271
  * @returns {Array} Array of the active contexts
250
272
  */
251
273
  findActiveDraftRootContexts: function(aContexts, bFindActiveContexts) {
252
274
  if (!bFindActiveContexts) {
253
275
  return Promise.resolve();
254
276
  }
255
-
256
277
  var activeContexts = aContexts.reduce(function(aResult, oContext) {
257
278
  var oMetaModel = oContext.getModel().getMetaModel();
258
279
  var sMetaPath = oMetaModel.getMetaPath(oContext.getPath());
@@ -283,7 +304,6 @@ sap.ui.define(
283
304
  })
284
305
  );
285
306
  },
286
-
287
307
  afterDeleteProcess: function(mParameters, checkBox, aContexts, oResourceBundle) {
288
308
  var oInternalModelContext = mParameters.internalModelContext;
289
309
  if (oInternalModelContext && oInternalModelContext.getProperty("deleteEnabled") != undefined) {
@@ -324,7 +344,6 @@ sap.ui.define(
324
344
  );
325
345
  }
326
346
  },
327
-
328
347
  /**
329
348
  * Delete one or multiple document(s).
330
349
  *
@@ -355,12 +374,10 @@ sap.ui.define(
355
374
  oDeleteMessage = {
356
375
  title: oResourceBundleCore.getText("C_COMMON_OBJECT_PAGE_DELETE")
357
376
  };
358
-
359
377
  BusyLocker.lock(this.oLockObject);
360
378
  if (!Array.isArray(vContexts)) {
361
379
  vContexts = [vContexts];
362
380
  }
363
-
364
381
  Promise.resolve(this.getProgrammingModel(vContexts[0]))
365
382
  .then(function(sProgrammingModel) {
366
383
  if (mParameters) {
@@ -616,7 +633,6 @@ sap.ui.define(
616
633
  bDialogConfirmed = true;
617
634
  BusyLocker.lock(that.oLockObject);
618
635
  var aContexts = aDeletableContexts;
619
-
620
636
  return that
621
637
  .findActiveDraftRootContexts(aContexts, mParameters.bFindActiveContexts)
622
638
  .then(function(activeContexts) {
@@ -660,7 +676,6 @@ sap.ui.define(
660
676
  BusyLocker.unlock(that.oLockObject);
661
677
  });
662
678
  };
663
-
664
679
  var oDialog = new Dialog({
665
680
  title: sTitle,
666
681
  state: "Warning",
@@ -704,13 +719,11 @@ sap.ui.define(
704
719
  Log.warning("Couldn't get Programming model");
705
720
  fnReject();
706
721
  });
707
-
708
722
  return new Promise(function(resolve, reject) {
709
723
  fnReject = reject;
710
724
  fnResolve = resolve;
711
725
  });
712
726
  },
713
-
714
727
  /**
715
728
  * Edits a document.
716
729
  *
@@ -728,17 +741,13 @@ sap.ui.define(
728
741
  var that = this,
729
742
  sProgrammingModel = this.getProgrammingModel(oContext),
730
743
  oEditPromise;
731
-
732
744
  if (!oContext) {
733
745
  return Promise.reject(new Error("Binding context to active document is required"));
734
746
  }
735
-
736
747
  this._bIsModified = false;
737
748
  BusyLocker.lock(that.oLockObject);
738
-
739
749
  // before triggering the edit action we'll have to remove all bound transition messages
740
750
  messageHandler.removeTransitionMessages();
741
-
742
751
  if (sProgrammingModel === ProgrammingModel.Draft) {
743
752
  oEditPromise = draft.createDraftFromActiveDocument(oContext, this._getAppComponent(), {
744
753
  bPreserveChanges: true,
@@ -751,7 +760,6 @@ sap.ui.define(
751
760
  BusyLocker.unlock(that.oLockObject);
752
761
  return Promise.reject(new Error("Edit is only allowed for draft or sticky session supported services"));
753
762
  }
754
-
755
763
  return oEditPromise
756
764
  .then(function(oNewContext) {
757
765
  that._bCreateMode = false;
@@ -768,7 +776,6 @@ sap.ui.define(
768
776
  BusyLocker.unlock(that.oLockObject);
769
777
  });
770
778
  },
771
-
772
779
  /**
773
780
  * Cancel 'edit' mode of a document.
774
781
  *
@@ -791,15 +798,12 @@ sap.ui.define(
791
798
  if (!oContext) {
792
799
  return Promise.reject("No context exists. Pass a meaningful context");
793
800
  }
794
-
795
801
  BusyLocker.lock(that.oLockObject);
796
-
797
802
  mParameters = getParameters(mParameters);
798
803
  var oParamsContext = oContext,
799
804
  oCancelButton = mParameters.cancelButton,
800
805
  oModel = oParamsContext.getModel(),
801
806
  sCanonicalPath;
802
-
803
807
  return Promise.resolve(this.getProgrammingModel(oContext))
804
808
  .then(function(sPModel) {
805
809
  sProgrammingModel = sPModel;
@@ -869,7 +873,6 @@ sap.ui.define(
869
873
  });
870
874
  }
871
875
  });
872
-
873
876
  case ProgrammingModel.Sticky:
874
877
  return sticky.discardDocument(oContext).then(function(oContext) {
875
878
  if (oContext) {
@@ -883,14 +886,12 @@ sap.ui.define(
883
886
  }
884
887
  return false;
885
888
  });
886
-
887
889
  default:
888
890
  return Promise.reject("Cancel document only allowed for draft or sticky session supported services");
889
891
  }
890
892
  })
891
893
  .then(function(context) {
892
894
  that._bIsModified = false;
893
-
894
895
  // remove existing bound transition messages
895
896
  messageHandler.removeTransitionMessages();
896
897
  // show unbound messages
@@ -907,7 +908,6 @@ sap.ui.define(
907
908
  BusyLocker.unlock(that.oLockObject);
908
909
  });
909
910
  },
910
-
911
911
  /**
912
912
  * Saves the document.
913
913
  *
@@ -926,16 +926,13 @@ sap.ui.define(
926
926
  var that = this,
927
927
  sProgrammingModel = this.getProgrammingModel(oContext),
928
928
  oSavePromise;
929
-
930
929
  if (!oContext) {
931
930
  return Promise.reject(new Error("Binding context to draft document is required"));
932
931
  }
933
932
  // in case of saving / activating the bound transition messages shall be removed before the PATCH/POST
934
933
  // is sent to the backend
935
934
  messageHandler.removeTransitionMessages();
936
-
937
935
  BusyLocker.lock(that.oLockObject);
938
-
939
936
  if (sProgrammingModel === ProgrammingModel.Draft) {
940
937
  oSavePromise = draft.activateDocument(oContext, this._getAppComponent());
941
938
  } else if (sProgrammingModel === ProgrammingModel.Sticky) {
@@ -944,7 +941,6 @@ sap.ui.define(
944
941
  BusyLocker.unlock(that.oLockObject);
945
942
  return Promise.reject(new Error("Save is only allowed for draft or sticky session supported services"));
946
943
  }
947
-
948
944
  return oSavePromise
949
945
  .then(function(oActiveDocument) {
950
946
  var bNewObject =
@@ -979,7 +975,6 @@ sap.ui.define(
979
975
  BusyLocker.unlock(that.oLockObject);
980
976
  });
981
977
  },
982
-
983
978
  /**
984
979
  * Calls a bound/unbound action.
985
980
  *
@@ -1011,7 +1006,6 @@ sap.ui.define(
1011
1006
  if (!sActionName) {
1012
1007
  return Promise.reject("Provide name of action to be executed");
1013
1008
  }
1014
-
1015
1009
  // action imports are not directly obtained from the metaModel by it is present inside the entityContainer
1016
1010
  // and the acions it refers to present outside the entitycontainer, hence to obtain kind of the action
1017
1011
  // split() on its name was required
@@ -1183,7 +1177,6 @@ sap.ui.define(
1183
1177
  }
1184
1178
  return messageHandler.showMessageDialog();
1185
1179
  },
1186
-
1187
1180
  /**
1188
1181
  * Handles validation errors for the 'discard' action.
1189
1182
  *
@@ -1294,7 +1287,6 @@ sap.ui.define(
1294
1287
  handleDocumentModifications: function() {
1295
1288
  this._bIsModified = true;
1296
1289
  },
1297
-
1298
1290
  /**
1299
1291
  * Retrieves the owner component.
1300
1292
  *
@@ -1310,7 +1302,6 @@ sap.ui.define(
1310
1302
  _getAppComponent: function() {
1311
1303
  return this._oAppComponent;
1312
1304
  },
1313
-
1314
1305
  _launchDialogWithKeyFields: function(
1315
1306
  oListBinding,
1316
1307
  oTransientListBinding,
@@ -1318,7 +1309,8 @@ sap.ui.define(
1318
1309
  mFields,
1319
1310
  oModel,
1320
1311
  mParameters,
1321
- messageHandler
1312
+ messageHandler,
1313
+ sFunctionName
1322
1314
  ) {
1323
1315
  var that = this,
1324
1316
  oDialog,
@@ -1432,7 +1424,7 @@ sap.ui.define(
1432
1424
  title: CommonUtils.getTranslatedText("C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE", oResourceBundle),
1433
1425
  content: [oDialogContent],
1434
1426
  beginButton: {
1435
- text: CommonUtils.getTranslatedText("C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE", oResourceBundle),
1427
+ text: CommonUtils.getTranslatedText("C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE_BUTTON", oResourceBundle),
1436
1428
  type: "Emphasized",
1437
1429
  press: function(oEvent) {
1438
1430
  var oCreateButton = oEvent.getSource();
@@ -1472,30 +1464,14 @@ sap.ui.define(
1472
1464
  }
1473
1465
  },
1474
1466
  beforeOpen: function() {
1475
- //check if there are dialog default values to be retrieved from DefaultValuesFunction
1476
-
1477
- var oMetaModel = oDialog.getModel().getMetaModel(),
1478
- sListBindingPath = oListBinding.getPath(),
1479
- sFunctionName = oMetaModel.getObject(
1480
- sListBindingPath + "@com.sap.vocabularies.Common.v1.DefaultValuesFunction"
1481
- );
1482
-
1483
1467
  if (sFunctionName) {
1484
- operations
1485
- .callFunctionImport(sFunctionName, oDialog.getModel())
1486
- .then(function(aValues) {
1487
- for (var i = 0; i < mFields.length; i++) {
1488
- if (aValues && Object.keys(aValues.getObject()).indexOf(mFields[i]) > 0) {
1489
- oTransientContext.setProperty(mFields[i], aValues.getProperty(mFields[i]));
1490
- }
1491
- }
1492
- })
1493
- .catch(function(oError) {
1494
- Log.error("Error while calling function Import " + sFunctionName, oError);
1495
- });
1468
+ for (var i = 0; i < Object.keys(mParameters.data).length; i++) {
1469
+ if (mParameters.data && mFields.indexOf(Object.keys(mParameters.data)[i]) > -1) {
1470
+ oTransientContext.setProperty(mFields[i], mParameters.data[mFields[i]]);
1471
+ }
1472
+ }
1496
1473
  }
1497
1474
  },
1498
-
1499
1475
  afterClose: function() {
1500
1476
  // show footer as per UX guidelines when dialog is not open
1501
1477
  oDialog.getBindingContext("internal").setProperty("isCreateDialogOpen", false);
@@ -1540,12 +1516,10 @@ sap.ui.define(
1540
1516
  fnResolve = resolve;
1541
1517
  fnReject = reject;
1542
1518
  });
1543
-
1544
1519
  // Workaround suggested by OData model v4 colleagues
1545
1520
  var fnCreateCompleted = function(oEvent) {
1546
1521
  var oContext = oEvent.getParameter("context"),
1547
1522
  bSuccess = oEvent.getParameter("success");
1548
-
1549
1523
  if (oContext === oNewDocumentContext) {
1550
1524
  oListBinding.detachCreateCompleted(fnCreateCompleted, this);
1551
1525
  if (!bSuccess) {
@@ -1553,7 +1527,6 @@ sap.ui.define(
1553
1527
  if (!mParameters.keepTransientContextOnFailed) {
1554
1528
  // the context is deleted
1555
1529
  oError.bDeleteTransientContext = true;
1556
-
1557
1530
  // this is needed to avoid console errors TO be checked with model colleagues
1558
1531
  oContext
1559
1532
  .created()
@@ -1563,11 +1536,9 @@ sap.ui.define(
1563
1536
  .catch(function(oError) {
1564
1537
  Log.trace("transient creation context deletion error", oError);
1565
1538
  });
1566
-
1567
1539
  // if current state is transient (...), browser will come back to previous state
1568
1540
  oError.navigateBackFromTransientState = true;
1569
1541
  }
1570
-
1571
1542
  fnReject(oError);
1572
1543
  } else {
1573
1544
  fnResolve();
@@ -1575,8 +1546,83 @@ sap.ui.define(
1575
1546
  }
1576
1547
  };
1577
1548
  oListBinding.attachCreateCompleted(fnCreateCompleted, this);
1578
-
1579
1549
  return oPromise;
1550
+ },
1551
+ /**
1552
+ * Retrieves the name of the NewAction to be executed.
1553
+ *
1554
+ * @function
1555
+ * @static
1556
+ * @private
1557
+ * @name sap.fe.core.TransactionHelper._getNewAction
1558
+ * @memberof sap.fe.core.TransactionHelper
1559
+ * @param {object} oStartupParameters Startup parameters of the application
1560
+ * @param {string} sCreateHash Hash to be checked for action type
1561
+ * @param {object} oMetaModel The MetaModel used to check for NewAction parameter
1562
+ * @param {string} sMetaPath The MetaPath
1563
+ * @returns {string} The name of the action
1564
+ * @ui5-restricted
1565
+ * @final
1566
+ **/
1567
+ _getNewAction: function(oStartupParameters, sCreateHash, oMetaModel, sMetaPath) {
1568
+ var sNewAction;
1569
+
1570
+ if (oStartupParameters && oStartupParameters.preferredMode && sCreateHash.indexOf("i-action=createWith") > -1) {
1571
+ var sPreferredMode = oStartupParameters.preferredMode[0];
1572
+ sNewAction =
1573
+ sPreferredMode.indexOf("createWith:") > -1 ? sPreferredMode.substr(sPreferredMode.lastIndexOf(":") + 1) : undefined;
1574
+ } else {
1575
+ sNewAction =
1576
+ oMetaModel && oMetaModel.getObject !== undefined
1577
+ ? oMetaModel.getObject(sMetaPath + "@com.sap.vocabularies.Session.v1.StickySessionSupported/NewAction") ||
1578
+ oMetaModel.getObject(sMetaPath + "@com.sap.vocabularies.Common.v1.DraftRoot/NewAction")
1579
+ : undefined;
1580
+ }
1581
+ return sNewAction;
1582
+ },
1583
+ /**
1584
+ * Retrieves the label for the title of a specific create action dialog, e.g. Create Sales Order from Quotation.
1585
+ *
1586
+ * The following priority is applied:
1587
+ * 1. label of line-item annotation.
1588
+ * 2. label annotated in the action.
1589
+ * 3. "Create" as a constant from i18n.
1590
+ *
1591
+ * @function
1592
+ * @static
1593
+ * @private
1594
+ * @name sap.fe.core.TransactionHelper._getSpecificCreateActionDialogLabel
1595
+ * @memberof sap.fe.core.TransactionHelper
1596
+ * @param {object} oMetaModel The MetaModel used to check for the NewAction parameter
1597
+ * @param {string} sMetaPath The MetaPath
1598
+ * @param {string} sNewAction Contains the name of the action to be executed
1599
+ * @param {object} oResourceBundleCore ResourceBundle to access the default Create label
1600
+ * @returns {string} The label for the Create Action Dialog
1601
+ * @ui5-restricted
1602
+ * @final
1603
+ **/
1604
+ _getSpecificCreateActionDialogLabel: function(oMetaModel, sMetaPath, sNewAction, oResourceBundleCore) {
1605
+ var fnGetLabelFromLineItemAnnotation = function() {
1606
+ if (oMetaModel && oMetaModel.getObject(sMetaPath + "/@com.sap.vocabularies.UI.v1.LineItem")) {
1607
+ var iLineItemIndex = oMetaModel
1608
+ .getObject(sMetaPath + "/@com.sap.vocabularies.UI.v1.LineItem")
1609
+ .findIndex(function(oLineItem) {
1610
+ var aLineItemAction = oLineItem.Action ? oLineItem.Action.split("(") : undefined;
1611
+ return aLineItemAction ? aLineItemAction[0] === sNewAction : false;
1612
+ });
1613
+ return iLineItemIndex > -1
1614
+ ? oMetaModel.getObject(sMetaPath + "/@com.sap.vocabularies.UI.v1.LineItem")[iLineItemIndex].Label
1615
+ : undefined;
1616
+ } else {
1617
+ return undefined;
1618
+ }
1619
+ };
1620
+
1621
+ return (
1622
+ fnGetLabelFromLineItemAnnotation() ||
1623
+ (oMetaModel && oMetaModel.getObject(sMetaPath + "/" + sNewAction + "@com.sap.vocabularies.Common.v1.Label")) ||
1624
+ (oResourceBundleCore && oResourceBundleCore.getText("C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE"))
1625
+ );
1580
1626
  }
1581
1627
  });
1582
1628
  }
@@ -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 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
  // Static functions for Fiori Message Handling
@@ -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