@openui5/sap.ui.core 1.107.1 → 1.108.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.
- package/.dtsgenrc +63 -0
- package/THIRDPARTY.txt +1 -1
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -1
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/i18n/ResourceBundle.js +10 -0
- package/src/sap/base/security/URLListValidator.js +36 -3
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +1 -1
- package/src/sap/base/util/restricted/_compact.js +1 -1
- package/src/sap/base/util/restricted/_curry.js +1 -1
- package/src/sap/base/util/restricted/_debounce.js +1 -1
- package/src/sap/base/util/restricted/_difference.js +1 -1
- package/src/sap/base/util/restricted/_differenceBy.js +1 -1
- package/src/sap/base/util/restricted/_differenceWith.js +1 -1
- package/src/sap/base/util/restricted/_flatMap.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
- package/src/sap/base/util/restricted/_flatten.js +1 -1
- package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
- package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
- package/src/sap/base/util/restricted/_intersection.js +1 -1
- package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
- package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
- package/src/sap/base/util/restricted/_isEqual.js +1 -1
- package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
- package/src/sap/base/util/restricted/_isNil.js +1 -1
- package/src/sap/base/util/restricted/_max.js +1 -1
- package/src/sap/base/util/restricted/_merge.js +1 -1
- package/src/sap/base/util/restricted/_mergeWith.js +1 -1
- package/src/sap/base/util/restricted/_min.js +1 -1
- package/src/sap/base/util/restricted/_omit.js +1 -1
- package/src/sap/base/util/restricted/_pick.js +1 -1
- package/src/sap/base/util/restricted/_pickBy.js +1 -1
- package/src/sap/base/util/restricted/_throttle.js +1 -1
- package/src/sap/base/util/restricted/_toArray.js +1 -1
- package/src/sap/base/util/restricted/_union.js +1 -1
- package/src/sap/base/util/restricted/_unionBy.js +1 -1
- package/src/sap/base/util/restricted/_unionWith.js +1 -1
- package/src/sap/base/util/restricted/_uniq.js +1 -1
- package/src/sap/base/util/restricted/_uniqBy.js +1 -1
- package/src/sap/base/util/restricted/_uniqWith.js +1 -1
- package/src/sap/base/util/restricted/_without.js +1 -1
- package/src/sap/base/util/restricted/_xor.js +1 -1
- package/src/sap/base/util/restricted/_xorBy.js +1 -1
- package/src/sap/base/util/restricted/_xorWith.js +1 -1
- package/src/sap/base/util/restricted/_zipObject.js +1 -1
- package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
- package/src/sap/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +4 -4
- package/src/sap/ui/base/Event.js +1 -1
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +2 -2
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/Metadata.js +1 -1
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +50 -50
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/BusyIndicatorUtils.js +22 -8
- package/src/sap/ui/core/Component.js +21 -4
- package/src/sap/ui/core/ComponentContainer.js +5 -1
- package/src/sap/ui/core/ComponentMetadata.js +1 -1
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +2 -15
- package/src/sap/ui/core/Control.js +20 -2
- package/src/sap/ui/core/Core.js +311 -413
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/Element.js +1 -1
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/FocusHandler.js +12 -14
- package/src/sap/ui/core/Fragment.js +5 -2
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +1 -1
- package/src/sap/ui/core/IconPool.js +7 -1
- package/src/sap/ui/core/IndicationColorSupport.js +1 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +1 -1
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +1 -1
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +1 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/ListItem.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +1 -1
- package/src/sap/ui/core/Manifest.js +16 -83
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Popup.js +14 -4
- package/src/sap/ui/core/RenderManager.js +111 -109
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/ShortcutHintsMixin.js +20 -0
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +1 -1
- package/src/sap/ui/core/UIArea.js +4 -2
- package/src/sap/ui/core/UIComponent.js +1 -1
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/_IconRegistry.js +11 -7
- package/src/sap/ui/core/_UrlResolver.js +139 -0
- package/src/sap/ui/core/date/CalendarUtils.js +87 -0
- package/src/sap/ui/core/date/CalendarWeekNumbering.js +73 -0
- package/src/sap/ui/core/date/UniversalDate.js +198 -74
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- package/src/sap/ui/core/dnd/DragInfo.js +1 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/format/DateFormat.js +187 -57
- package/src/sap/ui/core/format/NumberFormat.js +64 -23
- package/src/sap/ui/core/format/TimezoneUtil.js +3 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +19 -10
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +5 -3
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/messagebundle_fr.properties +1 -1
- package/src/sap/ui/core/mvc/HTMLView.js +10 -2
- package/src/sap/ui/core/mvc/JSONView.js +1 -1
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +1 -1
- package/src/sap/ui/core/mvc/XMLView.js +1 -1
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/LessSupport.js +21 -20
- package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
- package/src/sap/ui/core/postmessage/Bus.js +1 -1
- package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +1 -1
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +3 -3
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- package/src/sap/ui/core/theming/Parameters.js +31 -12
- package/src/sap/ui/core/theming/ThemeHelper.js +56 -1
- package/src/sap/ui/core/theming/ThemeManager.js +817 -0
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -1
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +2 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/ws/ReadyState.js +1 -1
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
- package/src/sap/ui/core/ws/WebSocket.js +1 -1
- package/src/sap/ui/debug/ControlTree.js +1 -1
- package/src/sap/ui/debug/DebugEnv.js +1 -1
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/dom/getFirstEditableInput.js +25 -6
- package/src/sap/ui/dom/includeStylesheet.js +2 -2
- package/src/sap/ui/model/ClientListBinding.js +11 -4
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +60 -5
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/DataState.js +1 -1
- package/src/sap/ui/model/Filter.js +6 -6
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +1 -1
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/Sorter.js +6 -4
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/TreeBinding.js +18 -0
- package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +28 -34
- package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +590 -0
- package/src/sap/ui/model/json/JSONModel.js +1 -1
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
- package/src/sap/ui/model/odata/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/BatchMode.js +2 -2
- package/src/sap/ui/model/odata/v2/Context.js +169 -4
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +39 -17
- package/src/sap/ui/model/odata/v2/ODataModel.js +219 -82
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +35 -22
- package/src/sap/ui/model/odata/v4/ODataBinding.js +28 -22
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -6
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +111 -89
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +5 -4
- package/src/sap/ui/model/odata/v4/ODataModel.js +84 -46
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +19 -20
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +3 -3
- package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +12 -5
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +130 -64
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +56 -15
- package/src/sap/ui/model/resource/ResourceModel.js +1 -1
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +1 -1
- package/src/sap/ui/model/type/Date.js +1 -1
- package/src/sap/ui/model/type/DateInterval.js +1 -1
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
- package/src/sap/ui/model/type/FileSize.js +1 -1
- package/src/sap/ui/model/type/Float.js +1 -1
- package/src/sap/ui/model/type/Integer.js +1 -1
- package/src/sap/ui/model/type/String.js +1 -1
- package/src/sap/ui/model/type/Time.js +1 -1
- package/src/sap/ui/model/type/TimeInterval.js +1 -1
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/TestUtils.js +20 -0
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/thirdparty/mobify-carousel.js +0 -4
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/sap/ui/core/ThemeCheck.js +0 -389
|
@@ -65,6 +65,7 @@ sap.ui.define([
|
|
|
65
65
|
"use strict";
|
|
66
66
|
|
|
67
67
|
var sClassName = "sap.ui.model.odata.v2.ODataModel",
|
|
68
|
+
aDeepCreateParametersAllowlist = ["context", "properties"],
|
|
68
69
|
MessageType = coreLibrary.MessageType,
|
|
69
70
|
mMessageType2Severity = {},
|
|
70
71
|
aRequestSideEffectsParametersAllowList = ["groupId", "urlParameters"];
|
|
@@ -204,7 +205,7 @@ sap.ui.define([
|
|
|
204
205
|
* This model is not prepared to be inherited from.
|
|
205
206
|
*
|
|
206
207
|
* @author SAP SE
|
|
207
|
-
* @version 1.
|
|
208
|
+
* @version 1.108.1
|
|
208
209
|
*
|
|
209
210
|
* @public
|
|
210
211
|
* @alias sap.ui.model.odata.v2.ODataModel
|
|
@@ -3959,6 +3960,7 @@ sap.ui.define([
|
|
|
3959
3960
|
oStoredRequest.method = oRequest.method;
|
|
3960
3961
|
oStoredRequest.headers = oRequest.headers;
|
|
3961
3962
|
oStoredRequest.data = oRequest.data;
|
|
3963
|
+
oStoredRequest.sideEffects = oRequest.sideEffects;
|
|
3962
3964
|
|
|
3963
3965
|
if (oRequest.method === "PUT") {
|
|
3964
3966
|
// if stored request was a MERGE before (created by setProperty) but is now sent via PUT
|
|
@@ -4319,10 +4321,9 @@ sap.ui.define([
|
|
|
4319
4321
|
//need a deep data copy for import
|
|
4320
4322
|
oImportData = merge({}, oResultData);
|
|
4321
4323
|
if (oRequest.key || oRequest.created) {
|
|
4322
|
-
// no need to pass sideEffects because side-effects requests don't have a key or
|
|
4323
|
-
// a created property attached to the request
|
|
4324
4324
|
that._importData(oImportData, mLocalGetEntities, oResponse, oRequest,
|
|
4325
|
-
/*sPath*/undefined, /*sDeepPath*/undefined, /*sKey*/undefined, bIsFunction
|
|
4325
|
+
/*sPath*/undefined, /*sDeepPath*/undefined, /*sKey*/undefined, bIsFunction,
|
|
4326
|
+
/*sPathFromCanonicalParent*/undefined, oRequest.sideEffects);
|
|
4326
4327
|
} else {
|
|
4327
4328
|
that._importData(oImportData, mLocalGetEntities, oResponse, oRequest, sPath,
|
|
4328
4329
|
oRequest.deepPath, /*sKey*/undefined, bIsFunction,
|
|
@@ -4556,8 +4557,9 @@ sap.ui.define([
|
|
|
4556
4557
|
* @private
|
|
4557
4558
|
*/
|
|
4558
4559
|
ODataModel.prototype._processChange = function(sKey, oData, sUpdateMethod, sDeepPath) {
|
|
4559
|
-
var sContentID, bCreated, oEntityType, sETag, oExpandRequest, mHeaders, sMethod,
|
|
4560
|
-
oPayload, oRequest, oUnModifiedEntry, sUrl, aUrlParams,
|
|
4560
|
+
var sContentID, oContext, bCreated, oEntityType, sETag, oExpandRequest, mHeaders, sMethod,
|
|
4561
|
+
mParams, oPayload, oRequest, oUnModifiedEntry, sUrl, aUrlParams,
|
|
4562
|
+
sEntityPath = "/" + sKey,
|
|
4561
4563
|
that = this;
|
|
4562
4564
|
|
|
4563
4565
|
if (sDeepPath && this.mChangedEntities[sKey] && this.mChangedEntities[sKey].__metadata) {
|
|
@@ -4658,8 +4660,9 @@ sap.ui.define([
|
|
|
4658
4660
|
|
|
4659
4661
|
sUrl = this._createRequestUrl('/' + sKey, null, aUrlParams, this.bUseBatch);
|
|
4660
4662
|
|
|
4663
|
+
oContext = this.getContext(sEntityPath);
|
|
4661
4664
|
oRequest = this._createRequest(sUrl, sDeepPath, sMethod, mHeaders, oPayload, sETag,
|
|
4662
|
-
undefined, true);
|
|
4665
|
+
undefined, true, oContext.hasSubContexts());
|
|
4663
4666
|
|
|
4664
4667
|
if (bCreated) {
|
|
4665
4668
|
oRequest.created = true;
|
|
@@ -4672,6 +4675,8 @@ sap.ui.define([
|
|
|
4672
4675
|
if (oData.__metadata.created.functionMetadata) {
|
|
4673
4676
|
oRequest.functionTarget = this.oMetadata._getCanonicalPathOfFunctionImport(
|
|
4674
4677
|
oData.__metadata.created.functionMetadata, mParams.urlParameters);
|
|
4678
|
+
} else {
|
|
4679
|
+
this._addSubEntitiesToPayload(oContext, oPayload);
|
|
4675
4680
|
}
|
|
4676
4681
|
}
|
|
4677
4682
|
|
|
@@ -5113,7 +5118,8 @@ sap.ui.define([
|
|
|
5113
5118
|
* {@link topic:6c47b2b39db9404582994070ec3d57a2#loio4c4cd99af9b14e08bb72470cc7cabff4 Creating
|
|
5114
5119
|
* Entities documentation} for comprehensive information on the topic.
|
|
5115
5120
|
*
|
|
5116
|
-
*
|
|
5121
|
+
* <b>Note:</b> This function does not support a "deep create" scenario. Use
|
|
5122
|
+
* {@link #createEntry} or {@link sap.ui.model.odata.v2.ODataListBinding#create} instead.
|
|
5117
5123
|
*
|
|
5118
5124
|
* @param {string} sPath A string containing the path to the collection where an entry
|
|
5119
5125
|
* should be created. The path is concatenated to the service URL
|
|
@@ -6148,6 +6154,10 @@ sap.ui.define([
|
|
|
6148
6154
|
var oCreatedInfo, oRequest, oRequestHandle0,
|
|
6149
6155
|
oGroupInfo = that._resolveGroup(sKey);
|
|
6150
6156
|
|
|
6157
|
+
if (that.getContext("/" + sKey).hasTransientParent()) {
|
|
6158
|
+
return;
|
|
6159
|
+
}
|
|
6160
|
+
|
|
6151
6161
|
if (oGroupInfo.groupId === sGroupId || !sGroupId) {
|
|
6152
6162
|
oRequest = that._processChange(sKey, oData, sMethod || that.sDefaultUpdateMethod);
|
|
6153
6163
|
oRequest.key = sKey;
|
|
@@ -6294,7 +6304,7 @@ sap.ui.define([
|
|
|
6294
6304
|
* @private
|
|
6295
6305
|
*/
|
|
6296
6306
|
ODataModel.prototype._discardEntityChanges = function (sKey, bDeleteEntity) {
|
|
6297
|
-
var oCreated,
|
|
6307
|
+
var oContext, oCreated,
|
|
6298
6308
|
// determine group synchronously otherwise #_resolveGroup might return a different group
|
|
6299
6309
|
// if for example the entity has been deleted already
|
|
6300
6310
|
sGroupId = this._resolveGroup(sKey).groupId,
|
|
@@ -6305,9 +6315,11 @@ sap.ui.define([
|
|
|
6305
6315
|
that.abortInternalRequest(sGroupId, {requestKey : sKey});
|
|
6306
6316
|
});
|
|
6307
6317
|
if (bDeleteEntity) {
|
|
6318
|
+
oContext = this.getContext("/" + sKey);
|
|
6319
|
+
oContext.removeFromTransientParent();
|
|
6308
6320
|
// remove context synchronously from the list of created contexts to avoid a temporary
|
|
6309
6321
|
// empty table row
|
|
6310
|
-
this.oCreatedContextsCache.findAndRemoveContext(
|
|
6322
|
+
this.oCreatedContextsCache.findAndRemoveContext(oContext);
|
|
6311
6323
|
// remember created information before it is deleted in #_removeEntity
|
|
6312
6324
|
oCreated = this.mChangedEntities[sKey]
|
|
6313
6325
|
&& this.mChangedEntities[sKey].__metadata.created;
|
|
@@ -6354,7 +6366,9 @@ sap.ui.define([
|
|
|
6354
6366
|
* @public
|
|
6355
6367
|
*/
|
|
6356
6368
|
ODataModel.prototype.resetChanges = function (aPath, bAll, bDeleteCreatedEntities) {
|
|
6357
|
-
var
|
|
6369
|
+
var aRemoveKeys,
|
|
6370
|
+
pMetaDataLoaded = this.oMetadata.loaded(),
|
|
6371
|
+
aRemoveRootKeys = [],
|
|
6358
6372
|
that = this;
|
|
6359
6373
|
|
|
6360
6374
|
if (bAll) {
|
|
@@ -6398,12 +6412,20 @@ sap.ui.define([
|
|
|
6398
6412
|
oChangedEntity = that.mChangedEntities[sKey];
|
|
6399
6413
|
if (ODataModel._isChangedEntityEmpty(oChangedEntity)
|
|
6400
6414
|
|| !oEntityInfo.propertyPath) {
|
|
6401
|
-
|
|
6402
|
-
oChangedEntity.__metadata.created && bDeleteCreatedEntities);
|
|
6415
|
+
aRemoveRootKeys.push(sKey);
|
|
6403
6416
|
}
|
|
6404
6417
|
}
|
|
6405
6418
|
}
|
|
6406
6419
|
});
|
|
6420
|
+
aRemoveKeys = aRemoveRootKeys;
|
|
6421
|
+
aRemoveRootKeys.forEach(function (sKey) {
|
|
6422
|
+
aRemoveKeys = aRemoveKeys.concat(
|
|
6423
|
+
that.getContext("/" + sKey).getSubContextsAsKey(/*bRecursive*/true));
|
|
6424
|
+
});
|
|
6425
|
+
(new Set(aRemoveKeys)).forEach(function (sKey) {
|
|
6426
|
+
that._discardEntityChanges(sKey,
|
|
6427
|
+
that.mChangedEntities[sKey].__metadata.created && bDeleteCreatedEntities);
|
|
6428
|
+
});
|
|
6407
6429
|
} else {
|
|
6408
6430
|
each(this.mChangedEntities, function (sKey, oChangedEntity) {
|
|
6409
6431
|
that._discardEntityChanges(sKey,
|
|
@@ -6514,6 +6536,12 @@ sap.ui.define([
|
|
|
6514
6536
|
? _Helper.merge({}, oValue)
|
|
6515
6537
|
: oValue;
|
|
6516
6538
|
|
|
6539
|
+
if (oContext && oContext.hasTransientParent && oContext.hasTransientParent()) {
|
|
6540
|
+
mChangedEntities[sKey] = true;
|
|
6541
|
+
this.checkUpdate(false, bAsyncUpdate, mChangedEntities);
|
|
6542
|
+
return true;
|
|
6543
|
+
}
|
|
6544
|
+
|
|
6517
6545
|
// If property is key property of ReferentialConstraint, also update the corresponding
|
|
6518
6546
|
// navigation property
|
|
6519
6547
|
oEntityType = this.oMetadata._getEntityTypeByPath(oEntityInfo.key);
|
|
@@ -6892,9 +6920,16 @@ sap.ui.define([
|
|
|
6892
6920
|
* initial data, for example if the server requires a unit for an amount. This also applies if
|
|
6893
6921
|
* this property has a default value.
|
|
6894
6922
|
*
|
|
6895
|
-
* Note:
|
|
6896
|
-
*
|
|
6897
|
-
*
|
|
6923
|
+
* Note: Deep create is only supported since 1.108.0, where "deep create" means creation of a
|
|
6924
|
+
* sub-entity for a navigation property of a transient, not yet persisted root entity. Before
|
|
6925
|
+
* 1.108.0, the sub-entity had to be created after the transient entity had been saved
|
|
6926
|
+
* successfully in the back-end system. Since 1.108.0, a deep create is triggered when
|
|
6927
|
+
* the <code>sPath</code> parameter is a navigation property for the entity type associated with
|
|
6928
|
+
* the transient context given in <code>mParameters.context</code>. The payload of the OData
|
|
6929
|
+
* request to create the root entity then contains its sub-entities. On creation of a
|
|
6930
|
+
* sub-entity, only the <code>sPath</code>, <code>mParameters.context</code> and
|
|
6931
|
+
* <code>mParameters.properties</code> method parameters are allowed;
|
|
6932
|
+
* the context given in <code>mParameters.context</code> must not be inactive.
|
|
6898
6933
|
*
|
|
6899
6934
|
* @param {string} sPath
|
|
6900
6935
|
* The path to the EntitySet
|
|
@@ -6951,76 +6986,73 @@ sap.ui.define([
|
|
|
6951
6986
|
* <code>undefined</code> if the service metadata are not yet loaded or if a
|
|
6952
6987
|
* <code>created</code> callback parameter is given
|
|
6953
6988
|
* @throws {Error}
|
|
6954
|
-
* If
|
|
6989
|
+
* If:
|
|
6990
|
+
* <ul>
|
|
6991
|
+
* <li>The <code>expand</code> parameter is used but the batch mode is disabled, or
|
|
6992
|
+
* <li>in the case of a deep create:
|
|
6993
|
+
* <ul>
|
|
6994
|
+
* <li>If an unsupported parameter is used, or
|
|
6995
|
+
* <li>the <code>sPath</code> parameter is either no navigation property or a navigation
|
|
6996
|
+
* property with single cardinality for the entity type associated with the given
|
|
6997
|
+
* <code>mParameters.context</code>, or
|
|
6998
|
+
* <li><code>mParameters.context</code> is inactive.
|
|
6999
|
+
* </ul>
|
|
7000
|
+
* </ul>
|
|
7001
|
+
*
|
|
6955
7002
|
* @public
|
|
6956
7003
|
*/
|
|
6957
7004
|
ODataModel.prototype.createEntry = function (sPath, mParameters) {
|
|
6958
7005
|
var bCanonical, sChangeSetId, oContext, fnCreated, pCreate, fnCreatedPromiseResolve,
|
|
6959
|
-
sDeepPath, fnError, sETag, sExpand, sGroupId, mHeaders,
|
|
6960
|
-
|
|
6961
|
-
aUrlParams, mUrlParams,
|
|
7006
|
+
bDeepCreate, sDeepPath, oEntityMetadata, fnError, sETag, sExpand, sGroupId, mHeaders,
|
|
7007
|
+
bInactive, bIsCollection, sKey, sNormalizedPath, vProperties, bRefreshAfterChange,
|
|
7008
|
+
oRequest, mRequests, fnSuccess, sUrl, aUrlParams, mUrlParams,
|
|
6962
7009
|
oEntity = {},
|
|
6963
7010
|
sMethod = "POST",
|
|
6964
7011
|
that = this;
|
|
6965
7012
|
|
|
6966
|
-
|
|
6967
|
-
|
|
6968
|
-
|
|
6969
|
-
|
|
6970
|
-
|
|
6971
|
-
|
|
6972
|
-
fnError = mParameters.error;
|
|
6973
|
-
fnCreated = mParameters.created;
|
|
6974
|
-
sETag = mParameters.eTag;
|
|
6975
|
-
mHeaders = mParameters.headers;
|
|
6976
|
-
mUrlParams = mParameters.urlParameters;
|
|
6977
|
-
bRefreshAfterChange = mParameters.refreshAfterChange;
|
|
6978
|
-
bCanonical = mParameters.canonicalRequest;
|
|
6979
|
-
sExpand = mParameters.expand;
|
|
6980
|
-
bInactive = mParameters.inactive;
|
|
6981
|
-
}
|
|
6982
|
-
if (sExpand && !this.bUseBatch) {
|
|
6983
|
-
throw new Error("The 'expand' parameter is only supported if batch mode is used");
|
|
7013
|
+
function addEntityToCacheAndCreateContext(oTransientParent) {
|
|
7014
|
+
sKey = that._addEntity(merge({}, oEntity));
|
|
7015
|
+
if (!bInactive) {
|
|
7016
|
+
that.mChangedEntities[sKey] = oEntity;
|
|
7017
|
+
}
|
|
7018
|
+
return that.getContext("/" + sKey, sDeepPath, pCreate, bInactive, oTransientParent);
|
|
6984
7019
|
}
|
|
6985
|
-
bCanonical = this._isCanonicalRequestNeeded(bCanonical);
|
|
6986
|
-
mHeaders = mHeaders || {};
|
|
6987
|
-
aUrlParams = ODataUtils._createUrlParamsArray(mUrlParams);
|
|
6988
7020
|
|
|
6989
|
-
|
|
6990
|
-
|
|
6991
|
-
|
|
6992
|
-
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
|
|
7021
|
+
function checkDeepCreatePreconditions() {
|
|
7022
|
+
var oSrcEntityType;
|
|
7023
|
+
|
|
7024
|
+
if (bDeepCreate) {
|
|
7025
|
+
oSrcEntityType = that.oMetadata._getEntityTypeByPath(oContext.getPath());
|
|
7026
|
+
if (!that.oMetadata._getNavigationPropertyNames(oSrcEntityType).includes(sPath)) {
|
|
7027
|
+
throw new Error("Cannot create entity; path '" + sPath
|
|
7028
|
+
+ "' is not a navigation property of '" + oSrcEntityType.name + "'");
|
|
7029
|
+
}
|
|
7030
|
+
if (!bIsCollection) {
|
|
7031
|
+
throw new Error("Cannot create entity; deep create on navigation property '"
|
|
7032
|
+
+ sPath + "' with single cardinality is not supported");
|
|
6996
7033
|
}
|
|
6997
7034
|
}
|
|
6998
|
-
};
|
|
6999
|
-
|
|
7000
|
-
if (!sPath.startsWith("/") && !oContext) {
|
|
7001
|
-
sPath = "/" + sPath;
|
|
7002
7035
|
}
|
|
7003
7036
|
|
|
7004
|
-
sNormalizedPath = that._normalizePath(sPath, oContext, bCanonical);
|
|
7005
|
-
sDeepPath = that.resolveDeep(sPath, oContext);
|
|
7006
|
-
|
|
7007
7037
|
function create() {
|
|
7008
|
-
var oCreateData, oCreatedContext, oCreateResponse, oEntitySetMetadata,
|
|
7009
|
-
oGroupInfo, sUID,
|
|
7038
|
+
var oCreateData, oCreatedContext, oCreateResponse, oEntitySetMetadata, sEntityType,
|
|
7039
|
+
sEntityUri, oExpandRequest, oGroupInfo, oParentEntity, sUID,
|
|
7010
7040
|
bCreateFailed = false,
|
|
7011
7041
|
fnErrorFromParameters = fnError,
|
|
7012
7042
|
fnSuccessFromParameters = fnSuccess;
|
|
7013
7043
|
|
|
7014
|
-
|
|
7015
|
-
|
|
7016
|
-
|
|
7017
|
-
|
|
7018
|
-
|
|
7019
|
-
|
|
7020
|
-
|
|
7021
|
-
|
|
7044
|
+
bCanonical = that._isCanonicalRequestNeeded(bCanonical);
|
|
7045
|
+
mHeaders = mHeaders || {};
|
|
7046
|
+
aUrlParams = ODataUtils._createUrlParamsArray(mUrlParams);
|
|
7047
|
+
if (!sPath.startsWith("/") && !oContext) {
|
|
7048
|
+
sPath = "/" + sPath;
|
|
7049
|
+
}
|
|
7050
|
+
sNormalizedPath = that._normalizePath(sPath, oContext, bCanonical);
|
|
7051
|
+
sDeepPath = that.resolveDeep(sPath, oContext);
|
|
7052
|
+
bIsCollection = that.oMetadata._isCollection(sDeepPath);
|
|
7053
|
+
checkDeepCreatePreconditions();
|
|
7054
|
+
oEntityMetadata = that.oMetadata._getEntityTypeByPath(sNormalizedPath);
|
|
7022
7055
|
if (!oEntityMetadata) {
|
|
7023
|
-
|
|
7024
7056
|
assert(oEntityMetadata, "No Metadata for collection " + sNormalizedPath + " found");
|
|
7025
7057
|
return undefined;
|
|
7026
7058
|
}
|
|
@@ -7042,16 +7074,31 @@ sap.ui.define([
|
|
|
7042
7074
|
assert(vProperties.length === 0, "No metadata for the following properties found: " + vProperties.join(","));
|
|
7043
7075
|
}
|
|
7044
7076
|
}
|
|
7045
|
-
|
|
7077
|
+
sEntityType = "" + oEntityMetadata.entityType;
|
|
7046
7078
|
oEntitySetMetadata = that.oMetadata._getEntitySetByType(oEntityMetadata);
|
|
7047
7079
|
sUID = uid();
|
|
7048
7080
|
sKey = oEntitySetMetadata.name + "('" + sUID + "')";
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
if (sDeepPath && that.oMetadata._isCollection(sDeepPath)){
|
|
7081
|
+
sEntityUri = that.sServiceUrl + '/' + sKey;
|
|
7082
|
+
if (sDeepPath && bIsCollection) {
|
|
7052
7083
|
sDeepPath = sDeepPath + "('" + sUID + "')";
|
|
7053
7084
|
}
|
|
7085
|
+
if (bDeepCreate) {
|
|
7086
|
+
oParentEntity = that._getObject(oContext.getPath());
|
|
7087
|
+
sChangeSetId = oParentEntity.__metadata.created.changeSetId;
|
|
7088
|
+
sGroupId = oParentEntity.__metadata.created.groupId;
|
|
7089
|
+
oEntity.__metadata = {
|
|
7090
|
+
type : sEntityType,
|
|
7091
|
+
uri : sEntityUri,
|
|
7092
|
+
created : {
|
|
7093
|
+
changeSetId : sChangeSetId,
|
|
7094
|
+
groupId : sGroupId
|
|
7095
|
+
}
|
|
7096
|
+
};
|
|
7097
|
+
oCreatedContext = addEntityToCacheAndCreateContext(oContext);
|
|
7098
|
+
oContext.addSubContext(sPath, oCreatedContext, bIsCollection);
|
|
7054
7099
|
|
|
7100
|
+
return oCreatedContext;
|
|
7101
|
+
}
|
|
7055
7102
|
if (sExpand) {
|
|
7056
7103
|
mHeaders = Object.assign({}, mHeaders, {
|
|
7057
7104
|
"Content-ID" : sUID,
|
|
@@ -7112,9 +7159,15 @@ sap.ui.define([
|
|
|
7112
7159
|
fnCreatedPromiseResolve();
|
|
7113
7160
|
};
|
|
7114
7161
|
}
|
|
7162
|
+
// fallback to groups as defined in mChangeGroups; using path is OK as we don't have an
|
|
7163
|
+
// entity yet and the entity type can be derived from the path to determine the group ID
|
|
7164
|
+
oGroupInfo = that._resolveGroup(sNormalizedPath);
|
|
7165
|
+
sGroupId = sGroupId || oGroupInfo.groupId;
|
|
7166
|
+
sChangeSetId = sChangeSetId || oGroupInfo.changeSetId;
|
|
7167
|
+
bRefreshAfterChange = that._getRefreshAfterChange(bRefreshAfterChange, sGroupId);
|
|
7115
7168
|
oEntity.__metadata = {
|
|
7116
|
-
type :
|
|
7117
|
-
uri :
|
|
7169
|
+
type : sEntityType,
|
|
7170
|
+
uri : sEntityUri,
|
|
7118
7171
|
created : {
|
|
7119
7172
|
changeSetId : sChangeSetId,
|
|
7120
7173
|
error : fnError,
|
|
@@ -7140,6 +7193,11 @@ sap.ui.define([
|
|
|
7140
7193
|
// creation.
|
|
7141
7194
|
oCreatedContext.resetCreatedPromise();
|
|
7142
7195
|
}
|
|
7196
|
+
if (oCreatedContext.hasSubContexts()) {
|
|
7197
|
+
// _processSuccess already removes this entity change, therefore one must
|
|
7198
|
+
// not call resetChanges with oCreatedContext.getPath()
|
|
7199
|
+
that.resetChanges(oCreatedContext.getSubContextsAsPath(), undefined, true);
|
|
7200
|
+
}
|
|
7143
7201
|
resolve();
|
|
7144
7202
|
};
|
|
7145
7203
|
oEntity.__metadata.created.abort = reject;
|
|
@@ -7147,12 +7205,7 @@ sap.ui.define([
|
|
|
7147
7205
|
pCreate.catch(function () {
|
|
7148
7206
|
// avoid uncaught in promise if the caller of #createEntry does not use the promise
|
|
7149
7207
|
});
|
|
7150
|
-
|
|
7151
|
-
sKey = that._addEntity(merge({}, oEntity));
|
|
7152
|
-
if (!bInactive) {
|
|
7153
|
-
that.mChangedEntities[sKey] = oEntity;
|
|
7154
|
-
}
|
|
7155
|
-
|
|
7208
|
+
oCreatedContext = addEntityToCacheAndCreateContext();
|
|
7156
7209
|
sUrl = that._createRequestUrlWithNormalizedPath(sNormalizedPath, aUrlParams, that.bUseBatch);
|
|
7157
7210
|
oRequest = that._createRequest(sUrl, sDeepPath, sMethod, mHeaders, oEntity, sETag);
|
|
7158
7211
|
|
|
@@ -7168,8 +7221,6 @@ sap.ui.define([
|
|
|
7168
7221
|
oEntity.__metadata.created.contentID = sUID;
|
|
7169
7222
|
}
|
|
7170
7223
|
|
|
7171
|
-
oCreatedContext = that.getContext("/" + sKey, sDeepPath, pCreate, bInactive);
|
|
7172
|
-
|
|
7173
7224
|
oRequest.key = sKey;
|
|
7174
7225
|
oRequest.created = true;
|
|
7175
7226
|
|
|
@@ -7180,6 +7231,16 @@ sap.ui.define([
|
|
|
7180
7231
|
|
|
7181
7232
|
that.oMetadata.loaded().then(function () {
|
|
7182
7233
|
oCreatedContext.fetchActivated().then(function () {
|
|
7234
|
+
var oRequestHandle = {
|
|
7235
|
+
abort: function() {
|
|
7236
|
+
if (oRequest) {
|
|
7237
|
+
oRequest._aborted = true;
|
|
7238
|
+
if (oRequest.expandRequest) {
|
|
7239
|
+
oRequest.expandRequest._aborted = true;
|
|
7240
|
+
}
|
|
7241
|
+
}
|
|
7242
|
+
}
|
|
7243
|
+
};
|
|
7183
7244
|
that._pushToRequestQueue(mRequests, sGroupId, sChangeSetId, oRequest, fnSuccess,
|
|
7184
7245
|
fnError, oRequestHandle, bRefreshAfterChange);
|
|
7185
7246
|
that._processRequestQueueAsync(that.mRequests);
|
|
@@ -7189,6 +7250,38 @@ sap.ui.define([
|
|
|
7189
7250
|
return oCreatedContext;
|
|
7190
7251
|
}
|
|
7191
7252
|
|
|
7253
|
+
if (mParameters) {
|
|
7254
|
+
vProperties = mParameters.properties;
|
|
7255
|
+
sGroupId = mParameters.groupId || mParameters.batchGroupId;
|
|
7256
|
+
sChangeSetId = mParameters.changeSetId;
|
|
7257
|
+
oContext = mParameters.context;
|
|
7258
|
+
fnSuccess = mParameters.success;
|
|
7259
|
+
fnError = mParameters.error;
|
|
7260
|
+
fnCreated = mParameters.created;
|
|
7261
|
+
sETag = mParameters.eTag;
|
|
7262
|
+
mHeaders = mParameters.headers;
|
|
7263
|
+
mUrlParams = mParameters.urlParameters;
|
|
7264
|
+
bRefreshAfterChange = mParameters.refreshAfterChange;
|
|
7265
|
+
bCanonical = mParameters.canonicalRequest;
|
|
7266
|
+
sExpand = mParameters.expand;
|
|
7267
|
+
bInactive = mParameters.inactive;
|
|
7268
|
+
}
|
|
7269
|
+
if (sExpand && !this.bUseBatch) {
|
|
7270
|
+
throw new Error("The 'expand' parameter is only supported if batch mode is used");
|
|
7271
|
+
}
|
|
7272
|
+
|
|
7273
|
+
bDeepCreate = oContext && oContext.isTransient && oContext.isTransient();
|
|
7274
|
+
if (bDeepCreate) {
|
|
7275
|
+
Object.keys(mParameters).forEach(function (sParameterKey) {
|
|
7276
|
+
if (!aDeepCreateParametersAllowlist.includes(sParameterKey)) {
|
|
7277
|
+
throw new Error("deep create, unsupported parameter: " + sParameterKey);
|
|
7278
|
+
}
|
|
7279
|
+
});
|
|
7280
|
+
if (oContext.isInactive()) {
|
|
7281
|
+
throw new Error("deep create, context must not be inactive");
|
|
7282
|
+
}
|
|
7283
|
+
}
|
|
7284
|
+
|
|
7192
7285
|
// If no callback function is provided context must be returned synchronously
|
|
7193
7286
|
if (fnCreated) {
|
|
7194
7287
|
this.oMetadata.loaded().then(function() {
|
|
@@ -8129,16 +8222,19 @@ sap.ui.define([
|
|
|
8129
8222
|
* A created promise as specified in the constructor of {@link sap.ui.model.odata.v2.Context}
|
|
8130
8223
|
* @param {boolean} [bInactive]
|
|
8131
8224
|
* Whether the created context is inactive
|
|
8225
|
+
* @param {sap.ui.model.odata.v2.Context} [oTransientParent]
|
|
8226
|
+
* The transient parent context
|
|
8132
8227
|
* @returns {sap.ui.model.odata.v2.Context}
|
|
8133
8228
|
* The ODate V2 context for the given path
|
|
8134
8229
|
* @private
|
|
8135
8230
|
*/
|
|
8136
|
-
ODataModel.prototype.getContext = function (sPath, sDeepPath, oCreatePromise, bInactive
|
|
8231
|
+
ODataModel.prototype.getContext = function (sPath, sDeepPath, oCreatePromise, bInactive,
|
|
8232
|
+
oTransientParent) {
|
|
8137
8233
|
var oContext = this.mContexts[sPath];
|
|
8138
8234
|
|
|
8139
8235
|
if (!oContext) {
|
|
8140
8236
|
oContext = this.mContexts[sPath]
|
|
8141
|
-
= new Context(this, sPath, sDeepPath, oCreatePromise, bInactive);
|
|
8237
|
+
= new Context(this, sPath, sDeepPath, oCreatePromise, bInactive, oTransientParent);
|
|
8142
8238
|
} else {
|
|
8143
8239
|
oContext.setDeepPath(sDeepPath || oContext.getDeepPath() || sPath);
|
|
8144
8240
|
}
|
|
@@ -8444,5 +8540,46 @@ sap.ui.define([
|
|
|
8444
8540
|
});
|
|
8445
8541
|
};
|
|
8446
8542
|
|
|
8543
|
+
/**
|
|
8544
|
+
* Adds the sub-entities contained in the given root context to the given request payload
|
|
8545
|
+
* object.
|
|
8546
|
+
*
|
|
8547
|
+
* @param {sap.ui.model.odata.v2.Context} oRootContext
|
|
8548
|
+
* The root context which may have sub-entities
|
|
8549
|
+
* @param {object} oPayload
|
|
8550
|
+
* The object representing the root context in the payload for the creation POST request
|
|
8551
|
+
*
|
|
8552
|
+
* @private
|
|
8553
|
+
*/
|
|
8554
|
+
ODataModel.prototype._addSubEntitiesToPayload = function (oRootContext, oPayload) {
|
|
8555
|
+
var i, sNavProperty, vSubContexts, oSubEntity,
|
|
8556
|
+
mSubContexts = oRootContext.getSubContexts(),
|
|
8557
|
+
that = this;
|
|
8558
|
+
|
|
8559
|
+
function getEntityData(oContext) {
|
|
8560
|
+
var oEntity = _Helper.merge({}, that._getObject(oContext.getPath()));
|
|
8561
|
+
|
|
8562
|
+
delete oEntity.__metadata;
|
|
8563
|
+
|
|
8564
|
+
return oEntity;
|
|
8565
|
+
}
|
|
8566
|
+
|
|
8567
|
+
for (sNavProperty in mSubContexts) {
|
|
8568
|
+
vSubContexts = mSubContexts[sNavProperty];
|
|
8569
|
+
if (Array.isArray(vSubContexts)) {
|
|
8570
|
+
oPayload[sNavProperty] = [];
|
|
8571
|
+
for (i = 0; i < vSubContexts.length; i += 1) {
|
|
8572
|
+
oSubEntity = getEntityData(vSubContexts[i]);
|
|
8573
|
+
oPayload[sNavProperty].push(oSubEntity);
|
|
8574
|
+
this._addSubEntitiesToPayload(vSubContexts[i], oSubEntity);
|
|
8575
|
+
}
|
|
8576
|
+
} else {
|
|
8577
|
+
oSubEntity = getEntityData(vSubContexts);
|
|
8578
|
+
oPayload[sNavProperty] = oSubEntity;
|
|
8579
|
+
this._addSubEntitiesToPayload(vSubContexts, oSubEntity);
|
|
8580
|
+
}
|
|
8581
|
+
}
|
|
8582
|
+
};
|
|
8583
|
+
|
|
8447
8584
|
return ODataModel;
|
|
8448
8585
|
});
|
|
@@ -94,7 +94,7 @@ sap.ui.define([
|
|
|
94
94
|
* @extends sap.ui.model.TreeBinding
|
|
95
95
|
* @hideconstructor
|
|
96
96
|
* @public
|
|
97
|
-
* @version 1.
|
|
97
|
+
* @version 1.108.1
|
|
98
98
|
*/
|
|
99
99
|
var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
|
|
100
100
|
|