@openui5/sap.ui.core 1.106.0 → 1.107.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.
- 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/jquery.sap.ui.js +5 -7
- package/src/sap/base/util/LoaderExtensions.js +6 -6
- package/src/sap/base/util/fetch.js +3 -0
- package/src/sap/base/util/mixedFetch.js +1 -1
- 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/DataType.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 +1 -1
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/ManagedObjectRegistry.js +4 -3
- 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 +1 -1
- package/src/sap/ui/core/AppCacheBuster.js +3 -4
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/BusyIndicatorUtils.js +5 -6
- package/src/sap/ui/core/CalendarType.js +0 -1
- package/src/sap/ui/core/Component.js +12 -10
- package/src/sap/ui/core/ComponentContainer.js +6 -5
- 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 +1 -1
- package/src/sap/ui/core/Control.js +7 -7
- package/src/sap/ui/core/Core.js +31 -304
- 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 +6 -6
- 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 +50 -2
- package/src/sap/ui/core/Fragment.js +1 -1
- package/src/sap/ui/core/HTML.js +1 -2
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +1 -2
- 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 -2
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +5 -5
- package/src/sap/ui/core/Item.js +1 -2
- package/src/sap/ui/core/LabelEnablement.js +1 -1
- package/src/sap/ui/core/LayoutData.js +1 -2
- package/src/sap/ui/core/ListItem.js +1 -2
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -2
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +11 -9
- package/src/sap/ui/core/Manifest.js +8 -6
- package/src/sap/ui/core/Message.js +4 -6
- package/src/sap/ui/core/Popup.js +62 -5
- package/src/sap/ui/core/RenderManager.js +7 -5
- package/src/sap/ui/core/Renderer.js +5 -4
- package/src/sap/ui/core/Rendering.js +251 -0
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +6 -9
- package/src/sap/ui/core/ScrollBarRenderer.js +3 -3
- package/src/sap/ui/core/SeparatorItem.js +1 -2
- package/src/sap/ui/core/Title.js +1 -2
- package/src/sap/ui/core/TooltipBase.js +1 -2
- package/src/sap/ui/core/UIArea.js +389 -121
- package/src/sap/ui/core/UIComponent.js +1 -2
- 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 -2
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +5 -3
- package/src/sap/ui/core/cache/CacheManager.js +7 -6
- package/src/sap/ui/core/cache/LRUPersistentCache.js +4 -4
- package/src/sap/ui/core/date/Islamic.js +4 -4
- package/src/sap/ui/core/date/UniversalDate.js +8 -8
- package/src/sap/ui/core/date/UniversalDateUtils.js +3 -3
- package/src/sap/ui/core/delegate/ItemNavigation.js +5 -5
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- package/src/sap/ui/core/dnd/DragAndDrop.js +4 -3
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -2
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -2
- package/src/sap/ui/core/dnd/DragInfo.js +1 -2
- package/src/sap/ui/core/dnd/DropInfo.js +1 -2
- package/src/sap/ui/core/format/DateFormat.js +9 -7
- package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +0 -1
- package/src/sap/ui/core/format/FileSizeFormat.js +4 -3
- package/src/sap/ui/core/format/ListFormat.js +4 -3
- package/src/sap/ui/core/format/NumberFormat.js +6 -5
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +7 -6
- package/src/sap/ui/core/library.js +3 -55
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +13 -23
- 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/Controller.js +3 -3
- package/src/sap/ui/core/mvc/EventHandlerResolver.js +5 -3
- package/src/sap/ui/core/mvc/HTMLView.js +1 -2
- package/src/sap/ui/core/mvc/JSONView.js +1 -2
- package/src/sap/ui/core/mvc/JSView.js +1 -2
- package/src/sap/ui/core/mvc/TemplateView.js +1 -2
- package/src/sap/ui/core/mvc/View.js +21 -20
- package/src/sap/ui/core/mvc/ViewType.js +0 -1
- package/src/sap/ui/core/mvc/XMLView.js +18 -18
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/LessSupport.js +1 -1
- 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/routing/async/Target.js +4 -3
- package/src/sap/ui/core/rules/Config.support.js +6 -4
- package/src/sap/ui/core/rules/CoreHelper.support.js +3 -3
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -2
- package/src/sap/ui/core/search/SearchProvider.js +1 -3
- 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/ToolsAPI.js +11 -13
- package/src/sap/ui/core/support/plugins/ControlTree.js +4 -4
- 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/support/techinfo/TechnicalInfo.js +7 -5
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -2
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -4
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -2
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -2
- 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 +4 -2
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +4 -4
- 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 +3 -3
- package/src/sap/ui/debug/DebugEnv.js +4 -4
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +3 -1
- 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/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 +22 -17
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/TreeBindingAdapter.js +3 -7
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +2 -0
- package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +5 -7
- package/src/sap/ui/model/json/JSONModel.js +8 -6
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +5 -3
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +31 -8
- package/src/sap/ui/model/odata/ODataMetadata.js +5 -4
- package/src/sap/ui/model/odata/ODataModel.js +6 -5
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +0 -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/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +4 -3
- package/src/sap/ui/model/odata/v2/ODataContextBinding.js +24 -15
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +45 -27
- package/src/sap/ui/model/odata/v2/ODataModel.js +94 -36
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +5 -5
- package/src/sap/ui/model/odata/v4/Context.js +23 -19
- package/src/sap/ui/model/odata/v4/ODataBinding.js +7 -3
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +3 -3
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +121 -57
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +11 -11
- package/src/sap/ui/model/odata/v4/ODataModel.js +111 -69
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +12 -4
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +2 -2
- package/src/sap/ui/model/odata/v4/ODataUtils.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +41 -29
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +59 -20
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +135 -4
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +21 -7
- package/src/sap/ui/model/resource/ResourceModel.js +7 -6
- 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 +5 -4
- package/src/sap/ui/model/xml/XMLModel.js +8 -6
- package/src/sap/ui/performance/trace/Interaction.js +1 -1
- package/src/sap/ui/qunit/QUnitUtils.js +2 -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/Opa.js +7 -5
- package/src/sap/ui/test/Opa5.js +9 -15
- package/src/sap/ui/test/RecorderHotkeyListener.js +1 -1
- package/src/sap/ui/test/TestUtils.js +83 -1
- package/src/sap/ui/test/autowaiter/_autoWaiter.js +9 -0
- package/src/sap/ui/test/autowaiter/_cssAnimationWaiter.js +114 -0
- package/src/sap/ui/test/autowaiter/_cssTransitionWaiter.js +99 -0
- package/src/sap/ui/test/autowaiter/_jsAnimationWaiter.js +70 -0
- package/src/sap/ui/test/autowaiter/_resourceWaiter.js +3 -12
- package/src/sap/ui/test/autowaiter/_utils.js +13 -1
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/matchers/Ancestor.js +1 -0
- package/src/sap/ui/test/matchers/Descendant.js +1 -0
- package/src/sap/ui/test/matchers/Sibling.js +1 -0
- package/src/sap/ui/util/Storage.js +1 -1
|
@@ -175,11 +175,13 @@ sap.ui.define([
|
|
|
175
175
|
oEntity = vDeleteProperty
|
|
176
176
|
? vCacheData[vCachePath] || vCacheData.$byPredicate[vCachePath]
|
|
177
177
|
: vCacheData, // deleting at root level
|
|
178
|
+
aMessages,
|
|
178
179
|
mHeaders,
|
|
179
180
|
iIndex = typeof vCachePath === "number" ? vCachePath : undefined,
|
|
180
181
|
sKeyPredicate = _Helper.getPrivateAnnotation(oEntity, "predicate"),
|
|
181
182
|
sEntityPath = _Helper.buildPath(sParentPath,
|
|
182
183
|
Array.isArray(vCacheData) ? sKeyPredicate : vDeleteProperty),
|
|
184
|
+
oModelInterface = that.oRequestor.getModelInterface(),
|
|
183
185
|
oRequestPromise,
|
|
184
186
|
sTransientGroup = _Helper.getPrivateAnnotation(oEntity, "transient"),
|
|
185
187
|
sTransientPredicate = _Helper.getPrivateAnnotation(oEntity, "transientPredicate");
|
|
@@ -194,6 +196,19 @@ sap.ui.define([
|
|
|
194
196
|
if (oEntity["@$ui5.context.isDeleted"]) {
|
|
195
197
|
throw new Error("Must not delete twice: " + sEditUrl);
|
|
196
198
|
}
|
|
199
|
+
|
|
200
|
+
aMessages = oModelInterface.getMessagesByPath(
|
|
201
|
+
_Helper.buildPath("/", that.sResourcePath, sEntityPath), true);
|
|
202
|
+
|
|
203
|
+
if (aMessages.length) {
|
|
204
|
+
aMessages = aMessages.filter(function (oMessage) {
|
|
205
|
+
return !oMessage.persistent;
|
|
206
|
+
});
|
|
207
|
+
_Helper.setPrivateAnnotation(oEntity, "messages", aMessages);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
oModelInterface.reportStateMessages(that.sResourcePath, {}, [sEntityPath]);
|
|
211
|
+
|
|
197
212
|
oEntity["@$ui5.context.isDeleted"] = true;
|
|
198
213
|
if (Array.isArray(vCacheData)) {
|
|
199
214
|
oDeleted = that.addDeleted(vCacheData, iIndex, sKeyPredicate, oGroupLock,
|
|
@@ -221,6 +236,7 @@ sap.ui.define([
|
|
|
221
236
|
&& that.requestCount(oGroupLock || that.oRequestor.lockGroup("$auto", that)),
|
|
222
237
|
oGroupLock && oGroupLock.unlock() // unlock when all requests have been queued
|
|
223
238
|
]).then(function () {
|
|
239
|
+
_Helper.deletePrivateAnnotation(oEntity, "messages");
|
|
224
240
|
if (Array.isArray(vCacheData)) {
|
|
225
241
|
vCacheData.$deleted.splice(vCacheData.$deleted.indexOf(oDeleted), 1);
|
|
226
242
|
delete vCacheData.$byPredicate[sKeyPredicate];
|
|
@@ -232,10 +248,14 @@ sap.ui.define([
|
|
|
232
248
|
} else { // deleting at root level
|
|
233
249
|
oEntity["$ui5.deleted"] = true;
|
|
234
250
|
}
|
|
235
|
-
that.oRequestor.getModelInterface().reportStateMessages(that.sResourcePath,
|
|
236
|
-
{}, [sEntityPath]);
|
|
237
251
|
}, function (oError) {
|
|
238
|
-
var iDeletedIndex
|
|
252
|
+
var iDeletedIndex,
|
|
253
|
+
aMessages = _Helper.getPrivateAnnotation(oEntity, "messages");
|
|
254
|
+
|
|
255
|
+
if (aMessages) {
|
|
256
|
+
oModelInterface.fireMessageChange({newMessages : aMessages});
|
|
257
|
+
}
|
|
258
|
+
_Helper.deletePrivateAnnotation(oEntity, "messages");
|
|
239
259
|
|
|
240
260
|
delete oEntity["@$ui5.context.isDeleted"];
|
|
241
261
|
if (Array.isArray(vCacheData)) {
|
|
@@ -559,7 +579,8 @@ sap.ui.define([
|
|
|
559
579
|
};
|
|
560
580
|
|
|
561
581
|
/**
|
|
562
|
-
* Deregisters the given change listener. Note: shared caches have
|
|
582
|
+
* Deregisters the given change listener. Note: shared caches only have listeners for the empty
|
|
583
|
+
* path.
|
|
563
584
|
*
|
|
564
585
|
* @param {string} sPath
|
|
565
586
|
* The path
|
|
@@ -569,7 +590,7 @@ sap.ui.define([
|
|
|
569
590
|
* @public
|
|
570
591
|
*/
|
|
571
592
|
_Cache.prototype.deregisterChangeListener = function (sPath, oListener) {
|
|
572
|
-
if (!this.bSharedRequest) {
|
|
593
|
+
if (!(this.bSharedRequest && sPath)) {
|
|
573
594
|
_Helper.removeByPath(this.mChangeListeners, sPath, oListener);
|
|
574
595
|
}
|
|
575
596
|
};
|
|
@@ -622,7 +643,8 @@ sap.ui.define([
|
|
|
622
643
|
* special cases.
|
|
623
644
|
*/
|
|
624
645
|
function missingValue(oValue, sSegment, iPathLength, bAgain) {
|
|
625
|
-
var
|
|
646
|
+
var vPermissions,
|
|
647
|
+
sPropertyName,
|
|
626
648
|
sPropertyPath = aSegments.slice(0, iPathLength).join("/"),
|
|
627
649
|
sPropertyMetaPath = _Helper.getMetaPath(sPropertyPath),
|
|
628
650
|
sReadLink;
|
|
@@ -647,11 +669,15 @@ sap.ui.define([
|
|
|
647
669
|
}
|
|
648
670
|
}
|
|
649
671
|
|
|
672
|
+
vPermissions = oValue[_Helper.getAnnotationKey(oValue, ".Permissions", sSegment)];
|
|
673
|
+
if (vPermissions === 0 || vPermissions === "None") {
|
|
674
|
+
return undefined;
|
|
675
|
+
}
|
|
676
|
+
|
|
650
677
|
return that.oRequestor.getModelInterface()
|
|
651
678
|
.fetchMetadata(that.sMetaPath + "/" + sPropertyMetaPath)
|
|
652
679
|
.then(function (oProperty) {
|
|
653
|
-
var
|
|
654
|
-
vResult = false;
|
|
680
|
+
var vResult = false;
|
|
655
681
|
|
|
656
682
|
if (!oProperty) {
|
|
657
683
|
return invalidSegment(sSegment);
|
|
@@ -669,11 +695,6 @@ sap.ui.define([
|
|
|
669
695
|
}
|
|
670
696
|
}
|
|
671
697
|
if (!bTransient) {
|
|
672
|
-
vPermissions = oValue[
|
|
673
|
-
_Helper.getAnnotationKey(oValue, ".Permissions", sSegment)];
|
|
674
|
-
if (vPermissions === 0 || vPermissions === "None") {
|
|
675
|
-
return undefined;
|
|
676
|
-
}
|
|
677
698
|
// If there is no entity with a key predicate, try it with the cache root
|
|
678
699
|
// object (in case of SimpleCache, the root object of CollectionCache is an
|
|
679
700
|
// array)
|
|
@@ -1443,8 +1464,8 @@ sap.ui.define([
|
|
|
1443
1464
|
};
|
|
1444
1465
|
|
|
1445
1466
|
/**
|
|
1446
|
-
* Registers the listener for the path. Shared caches do not register listeners
|
|
1447
|
-
* read-only.
|
|
1467
|
+
* Registers the listener for the path. Shared caches do not register listeners except for the
|
|
1468
|
+
* empty path, because they are read-only.
|
|
1448
1469
|
*
|
|
1449
1470
|
* @param {string} sPath The path
|
|
1450
1471
|
* @param {object} [oListener] The listener
|
|
@@ -1452,7 +1473,7 @@ sap.ui.define([
|
|
|
1452
1473
|
* @private
|
|
1453
1474
|
*/
|
|
1454
1475
|
_Cache.prototype.registerChangeListener = function (sPath, oListener) {
|
|
1455
|
-
if (!this.bSharedRequest) {
|
|
1476
|
+
if (!(this.bSharedRequest && sPath)) {
|
|
1456
1477
|
_Helper.addByPath(this.mChangeListeners, sPath, oListener);
|
|
1457
1478
|
}
|
|
1458
1479
|
};
|
|
@@ -1564,6 +1585,7 @@ sap.ui.define([
|
|
|
1564
1585
|
var oOldElement, sTransientPredicate;
|
|
1565
1586
|
|
|
1566
1587
|
if (iIndex === undefined) { // kept-alive element not in the list
|
|
1588
|
+
oOldElement = aElements.$byPredicate[sPredicate];
|
|
1567
1589
|
aElements.$byPredicate[sPredicate] = oElement;
|
|
1568
1590
|
} else {
|
|
1569
1591
|
// the element might have moved due to parallel insert/delete
|
|
@@ -1578,6 +1600,8 @@ sap.ui.define([
|
|
|
1578
1600
|
_Helper.setPrivateAnnotation(oElement, "transientPredicate", sTransientPredicate);
|
|
1579
1601
|
}
|
|
1580
1602
|
}
|
|
1603
|
+
_Helper.restoreUpdatingProperties(oOldElement, oElement);
|
|
1604
|
+
|
|
1581
1605
|
// Note: iStart is not needed here because we know we have key predicates
|
|
1582
1606
|
this.visitResponse(oElement, mTypeForMetaPath,
|
|
1583
1607
|
_Helper.getMetaPath(_Helper.buildPath(this.sMetaPath, sPath)), sPath + sPredicate);
|
|
@@ -1691,8 +1715,8 @@ sap.ui.define([
|
|
|
1691
1715
|
this.iActiveUsages -= 1;
|
|
1692
1716
|
if (!this.iActiveUsages) {
|
|
1693
1717
|
this.iInactiveSince = Date.now();
|
|
1718
|
+
this.mChangeListeners = {};
|
|
1694
1719
|
}
|
|
1695
|
-
this.mChangeListeners = {}; // Note: shared caches have no listeners anyway
|
|
1696
1720
|
}
|
|
1697
1721
|
};
|
|
1698
1722
|
|
|
@@ -1730,6 +1754,8 @@ sap.ui.define([
|
|
|
1730
1754
|
* The new value
|
|
1731
1755
|
* @param {string} [sEntityPath]
|
|
1732
1756
|
* Path of the entity, relative to the cache (as used by change listeners)
|
|
1757
|
+
* @param {boolean} [bUpdating]
|
|
1758
|
+
* Whether the given property will not be overwritten by a creation POST(+GET) response
|
|
1733
1759
|
* @returns {Promise}
|
|
1734
1760
|
* A promise which resolves with <code>undefined</code> once the value has been set, or is
|
|
1735
1761
|
* rejected with an error if setting fails somehow
|
|
@@ -1737,14 +1763,14 @@ sap.ui.define([
|
|
|
1737
1763
|
*
|
|
1738
1764
|
* @public
|
|
1739
1765
|
*/
|
|
1740
|
-
_Cache.prototype.setProperty = function (sPropertyPath, vValue, sEntityPath) {
|
|
1766
|
+
_Cache.prototype.setProperty = function (sPropertyPath, vValue, sEntityPath, bUpdating) {
|
|
1741
1767
|
var that = this;
|
|
1742
1768
|
|
|
1743
1769
|
this.checkSharedRequest();
|
|
1744
1770
|
return this.fetchValue(_GroupLock.$cached, sEntityPath, null, null, true)
|
|
1745
1771
|
.then(function (oEntity) {
|
|
1746
1772
|
_Helper.updateAll(that.mChangeListeners, sEntityPath, oEntity,
|
|
1747
|
-
_Cache.makeUpdateData(sPropertyPath.split("/"), vValue));
|
|
1773
|
+
_Cache.makeUpdateData(sPropertyPath.split("/"), vValue, bUpdating));
|
|
1748
1774
|
});
|
|
1749
1775
|
};
|
|
1750
1776
|
|
|
@@ -2012,6 +2038,9 @@ sap.ui.define([
|
|
|
2012
2038
|
throw new Error("Cannot update '" + sPropertyPath + "': '" + sEntityPath
|
|
2013
2039
|
+ "' does not exist");
|
|
2014
2040
|
}
|
|
2041
|
+
|
|
2042
|
+
_Helper.deleteUpdating(sPropertyPath, oEntity);
|
|
2043
|
+
|
|
2015
2044
|
sTransientGroup = _Helper.getPrivateAnnotation(oEntity, "transient");
|
|
2016
2045
|
if (sTransientGroup) {
|
|
2017
2046
|
if (typeof sTransientGroup !== "string") {
|
|
@@ -3230,6 +3259,10 @@ sap.ui.define([
|
|
|
3230
3259
|
aKeptElementPredicates.forEach(function (sPredicate) {
|
|
3231
3260
|
that.aElements.$byPredicate[sPredicate] = mByPredicate[sPredicate];
|
|
3232
3261
|
});
|
|
3262
|
+
if (mChangeListeners[""]) {
|
|
3263
|
+
this.mChangeListeners[""] = mChangeListeners[""];
|
|
3264
|
+
_Helper.fireChange(this.mChangeListeners, "");
|
|
3265
|
+
}
|
|
3233
3266
|
};
|
|
3234
3267
|
|
|
3235
3268
|
/**
|
|
@@ -4008,16 +4041,22 @@ sap.ui.define([
|
|
|
4008
4041
|
* The property path split into an array of segments
|
|
4009
4042
|
* @param {any} vValue
|
|
4010
4043
|
* The property value
|
|
4044
|
+
* @param {boolean} [bUpdating]
|
|
4045
|
+
* Whether the given property will not be overwritten by a creation POST(+GET) response
|
|
4011
4046
|
* @returns {object}
|
|
4012
4047
|
* The resulting object
|
|
4013
4048
|
*
|
|
4014
4049
|
* @private
|
|
4015
4050
|
*/
|
|
4016
|
-
_Cache.makeUpdateData = function (aPropertyPath, vValue) {
|
|
4051
|
+
_Cache.makeUpdateData = function (aPropertyPath, vValue, bUpdating) {
|
|
4017
4052
|
return aPropertyPath.reduceRight(function (vValue0, sSegment) {
|
|
4018
4053
|
var oResult = {};
|
|
4019
4054
|
|
|
4020
4055
|
oResult[sSegment] = vValue0;
|
|
4056
|
+
if (bUpdating) {
|
|
4057
|
+
oResult[sSegment + "@$ui5.updating"] = true;
|
|
4058
|
+
bUpdating = false;
|
|
4059
|
+
}
|
|
4021
4060
|
return oResult;
|
|
4022
4061
|
}, vValue);
|
|
4023
4062
|
};
|
|
@@ -16,11 +16,13 @@ sap.ui.define([
|
|
|
16
16
|
"use strict";
|
|
17
17
|
|
|
18
18
|
var rAmpersand = /&/g,
|
|
19
|
+
rApplicationGroupID = /^\w+$/,
|
|
19
20
|
sClassName = "sap.ui.model.odata.v4.lib._Helper",
|
|
20
21
|
rEquals = /\=/g,
|
|
21
22
|
rEscapedCloseBracket = /%29/g,
|
|
22
23
|
rEscapedOpenBracket = /%28/g,
|
|
23
24
|
rEscapedTick = /%27/g,
|
|
25
|
+
rGroupID = /^(\$auto(\.\w+)?|\$direct|\w+)$/,
|
|
24
26
|
rHash = /#/g,
|
|
25
27
|
// matches the rest of a segment after '(' and any segment that consists only of a number
|
|
26
28
|
rNotMetaContext = /\([^/]*|\/-?\d+/g,
|
|
@@ -312,6 +314,31 @@ sap.ui.define([
|
|
|
312
314
|
return oSelect;
|
|
313
315
|
},
|
|
314
316
|
|
|
317
|
+
/**
|
|
318
|
+
* Checks whether the given group ID is valid, which means it is either undefined, '$auto',
|
|
319
|
+
* '$auto.*', '$direct' or an application group ID as specified in
|
|
320
|
+
* {@link sap.ui.model.odata.v4.ODataModel}.
|
|
321
|
+
*
|
|
322
|
+
* @param {string} sGroupId
|
|
323
|
+
* The group ID
|
|
324
|
+
* @param {boolean} [bApplicationGroup]
|
|
325
|
+
* Whether only an application group ID is considered valid
|
|
326
|
+
* @param {string} [sErrorMessage]
|
|
327
|
+
* The error message to be used if group ID is not valid; the group ID will be appended
|
|
328
|
+
* @throws {Error}
|
|
329
|
+
* For invalid group IDs
|
|
330
|
+
*
|
|
331
|
+
* @private
|
|
332
|
+
*/
|
|
333
|
+
checkGroupId : function (sGroupId, bApplicationGroup, sErrorMessage) {
|
|
334
|
+
if (!bApplicationGroup && sGroupId === undefined
|
|
335
|
+
|| typeof sGroupId === "string"
|
|
336
|
+
&& (bApplicationGroup ? rApplicationGroupID : rGroupID).test(sGroupId)) {
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
throw new Error((sErrorMessage || "Invalid group ID: ") + sGroupId);
|
|
340
|
+
},
|
|
341
|
+
|
|
315
342
|
/**
|
|
316
343
|
* Returns a clone of the given value, according to the rules of
|
|
317
344
|
* <code>JSON.stringify</code>.
|
|
@@ -603,6 +630,8 @@ sap.ui.define([
|
|
|
603
630
|
|
|
604
631
|
if (!isRelevant(oClone.error, sTopLevelContentID)) {
|
|
605
632
|
oClone.error.$ignoreTopLevel = true;
|
|
633
|
+
} else {
|
|
634
|
+
oClone.strictHandlingFailed = oError.strictHandlingFailed;
|
|
606
635
|
}
|
|
607
636
|
if (oClone.error.details) {
|
|
608
637
|
oClone.error.details = oClone.error.details.filter(function (oDetail, i) {
|
|
@@ -636,6 +665,33 @@ sap.ui.define([
|
|
|
636
665
|
}
|
|
637
666
|
},
|
|
638
667
|
|
|
668
|
+
/**
|
|
669
|
+
* Deletes within the given entity and property path the property annotation
|
|
670
|
+
* "@$ui5.updating".
|
|
671
|
+
*
|
|
672
|
+
* @param {string} sPropertyPath
|
|
673
|
+
* The path of the property in the entity which might be annotated with "@$ui5.updating"
|
|
674
|
+
* @param {object} oEntity
|
|
675
|
+
* The entity
|
|
676
|
+
*
|
|
677
|
+
*/
|
|
678
|
+
deleteUpdating : function (sPropertyPath, oEntity) {
|
|
679
|
+
var oData = oEntity;
|
|
680
|
+
|
|
681
|
+
sPropertyPath.split("/").some(function (sSegment) {
|
|
682
|
+
var vValue = oData[sSegment];
|
|
683
|
+
|
|
684
|
+
if (vValue === null || Array.isArray(vValue)) {
|
|
685
|
+
return true;
|
|
686
|
+
}
|
|
687
|
+
if (typeof vValue === "object") {
|
|
688
|
+
oData = vValue;
|
|
689
|
+
return false;
|
|
690
|
+
}
|
|
691
|
+
delete oData[sSegment + "@$ui5.updating"];
|
|
692
|
+
});
|
|
693
|
+
},
|
|
694
|
+
|
|
639
695
|
/**
|
|
640
696
|
* Drills down into the given object according to the given path.
|
|
641
697
|
*
|
|
@@ -1248,6 +1304,27 @@ sap.ui.define([
|
|
|
1248
1304
|
return sPath.replace(rNotMetaContext, "").slice(1);
|
|
1249
1305
|
},
|
|
1250
1306
|
|
|
1307
|
+
/**
|
|
1308
|
+
* Returns the index of the key predicate in the last segment of the given path.
|
|
1309
|
+
*
|
|
1310
|
+
* @param {string} sPath - The path
|
|
1311
|
+
* @returns {number} The index of the key predicate
|
|
1312
|
+
* @throws {Error} If no path is given or the last segment contains no key predicate
|
|
1313
|
+
*
|
|
1314
|
+
* @private
|
|
1315
|
+
*/
|
|
1316
|
+
getPredicateIndex : function (sPath) {
|
|
1317
|
+
var iPredicateIndex = sPath
|
|
1318
|
+
? sPath.indexOf("(", sPath.lastIndexOf("/"))
|
|
1319
|
+
: -1;
|
|
1320
|
+
|
|
1321
|
+
if (iPredicateIndex < 0 || !sPath.endsWith(")")) {
|
|
1322
|
+
throw new Error("Not a list context path to an entity: " + sPath);
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
return iPredicateIndex;
|
|
1326
|
+
},
|
|
1327
|
+
|
|
1251
1328
|
/**
|
|
1252
1329
|
* Returns the value of the private client-side instance annotation with the given
|
|
1253
1330
|
* unqualified name at the given object.
|
|
@@ -1860,6 +1937,41 @@ sap.ui.define([
|
|
|
1860
1937
|
return mHeaders;
|
|
1861
1938
|
},
|
|
1862
1939
|
|
|
1940
|
+
/**
|
|
1941
|
+
* Searches all properties in oOld annotated with "@$ui5.updating" and restores the property
|
|
1942
|
+
* value in oNew.
|
|
1943
|
+
*
|
|
1944
|
+
* @param {object} oOld
|
|
1945
|
+
* The old element
|
|
1946
|
+
* @param {object} oNew
|
|
1947
|
+
* The new element
|
|
1948
|
+
* @returns {object}
|
|
1949
|
+
* The new element with the restored properties
|
|
1950
|
+
*
|
|
1951
|
+
*/
|
|
1952
|
+
restoreUpdatingProperties : function (oOld, oNew) {
|
|
1953
|
+
var oTempNew = oNew || {};
|
|
1954
|
+
|
|
1955
|
+
Object.keys(oOld || {}).forEach(function (sProperty) {
|
|
1956
|
+
if (sProperty.startsWith("@")) {
|
|
1957
|
+
return; // skip annotations
|
|
1958
|
+
}
|
|
1959
|
+
if (Array.isArray(oOld[sProperty])) {
|
|
1960
|
+
return; // skip arrays
|
|
1961
|
+
}
|
|
1962
|
+
if (typeof oOld[sProperty] === "object") {
|
|
1963
|
+
oTempNew[sProperty]
|
|
1964
|
+
= _Helper.restoreUpdatingProperties(oOld[sProperty], oTempNew[sProperty]);
|
|
1965
|
+
}
|
|
1966
|
+
if (oOld[sProperty + "@$ui5.updating"]) {
|
|
1967
|
+
oTempNew[sProperty] = oOld[sProperty];
|
|
1968
|
+
oTempNew[sProperty + "@$ui5.updating"] = oOld[sProperty + "@$ui5.updating"];
|
|
1969
|
+
oNew = oTempNew;
|
|
1970
|
+
}
|
|
1971
|
+
});
|
|
1972
|
+
return oNew;
|
|
1973
|
+
},
|
|
1974
|
+
|
|
1863
1975
|
/**
|
|
1864
1976
|
* Adds the key properties of the given entity type to $select of the given query options.
|
|
1865
1977
|
*
|
|
@@ -1895,6 +2007,23 @@ sap.ui.define([
|
|
|
1895
2007
|
}
|
|
1896
2008
|
},
|
|
1897
2009
|
|
|
2010
|
+
/**
|
|
2011
|
+
* Adds the given language as "sap-language" URL parameter to the given URL, unless such a
|
|
2012
|
+
* parameter is already present, and returns the resulting (or unchanged) URL.
|
|
2013
|
+
*
|
|
2014
|
+
* @param {string} sUrl - A URL w/o a fragment part
|
|
2015
|
+
* @param {string} [sLanguage] - An optional value for "sap-language"
|
|
2016
|
+
* @returns {string} The resulting (or unchanged) URL as described above
|
|
2017
|
+
*/
|
|
2018
|
+
setLanguage : function (sUrl, sLanguage) {
|
|
2019
|
+
if (sLanguage && !sUrl.includes("?sap-language=") && !sUrl.includes("&sap-language=")) {
|
|
2020
|
+
sUrl += (sUrl.includes("?") ? "&" : "?") + "sap-language="
|
|
2021
|
+
+ _Helper.encode(sLanguage);
|
|
2022
|
+
}
|
|
2023
|
+
|
|
2024
|
+
return sUrl;
|
|
2025
|
+
},
|
|
2026
|
+
|
|
1898
2027
|
/**
|
|
1899
2028
|
* Sets the new value of the private client-side instance annotation with the given
|
|
1900
2029
|
* unqualified name at the given object.
|
|
@@ -2152,7 +2281,7 @@ sap.ui.define([
|
|
|
2152
2281
|
* @param {function} [fnCheckKeyPredicate]
|
|
2153
2282
|
* Callback function which tells whether the key predicate for the given path is checked
|
|
2154
2283
|
* for equality instead of just being copied from source to target
|
|
2155
|
-
*
|
|
2284
|
+
* @param {boolean} [bOkIfMissing]
|
|
2156
2285
|
* Whether this should not check for selected properties missing in the response
|
|
2157
2286
|
*/
|
|
2158
2287
|
updateSelected : function (mChangeListeners, sBasePath, oOldValue, oNewValue, aSelect,
|
|
@@ -2196,8 +2325,9 @@ sap.ui.define([
|
|
|
2196
2325
|
// annotations
|
|
2197
2326
|
Object.keys(oTarget).forEach(function (sProperty) {
|
|
2198
2327
|
if (!(sProperty in oSource) && sProperty.includes("@")
|
|
2199
|
-
&& !sProperty.startsWith("@$ui5.")
|
|
2200
|
-
&&
|
|
2328
|
+
&& !sProperty.startsWith("@$ui5.") && getSelect(vSelect, sProperty)
|
|
2329
|
+
&& !sProperty.endsWith("@$ui5.updating")
|
|
2330
|
+
) {
|
|
2201
2331
|
delete oTarget[sProperty];
|
|
2202
2332
|
_Helper.fireChange(mChangeListeners, _Helper.buildPath(sPath, sProperty),
|
|
2203
2333
|
undefined);
|
|
@@ -2235,7 +2365,8 @@ sap.ui.define([
|
|
|
2235
2365
|
&& !sProperty.includes("@")) {
|
|
2236
2366
|
oTarget[sProperty] = update(sPropertyPath, vSelected, vTargetProperty || {},
|
|
2237
2367
|
vSourceProperty);
|
|
2238
|
-
} else if (vTargetProperty !== vSourceProperty
|
|
2368
|
+
} else if (vTargetProperty !== vSourceProperty
|
|
2369
|
+
&& !oTarget[sProperty + "@$ui5.updating"]) {
|
|
2239
2370
|
oTarget[sProperty] = vSourceProperty;
|
|
2240
2371
|
if (vTargetProperty && typeof vTargetProperty === "object") {
|
|
2241
2372
|
// a complex property is replaced by null
|
|
@@ -13,8 +13,10 @@ sap.ui.define([
|
|
|
13
13
|
"sap/base/Log",
|
|
14
14
|
"sap/ui/base/SyncPromise",
|
|
15
15
|
"sap/ui/core/cache/CacheManager",
|
|
16
|
+
"sap/ui/core/Configuration",
|
|
16
17
|
"sap/ui/thirdparty/jquery"
|
|
17
|
-
], function (_Batch, _GroupLock, _Helper, asV2Requestor, Log, SyncPromise, CacheManager,
|
|
18
|
+
], function (_Batch, _GroupLock, _Helper, asV2Requestor, Log, SyncPromise, CacheManager,
|
|
19
|
+
Configuration, jQuery) {
|
|
18
20
|
"use strict";
|
|
19
21
|
|
|
20
22
|
var mBatchHeaders = { // headers for the $batch request
|
|
@@ -531,6 +533,13 @@ sap.ui.define([
|
|
|
531
533
|
*/
|
|
532
534
|
function addToChangeSet(oChange) {
|
|
533
535
|
if (!mergePatch(oChange)) {
|
|
536
|
+
if (oChange.method === "DELETE" && oChange.headers["If-Match"]
|
|
537
|
+
&& oChange.headers["If-Match"]["@odata.etag"]
|
|
538
|
+
&& aChangeSet.find(function (oCandidate) {
|
|
539
|
+
return oCandidate.headers["If-Match"] === oChange.headers["If-Match"];
|
|
540
|
+
})) {
|
|
541
|
+
oChange.headers["If-Match"] = {"@odata.etag" : "*"};
|
|
542
|
+
}
|
|
534
543
|
aChangeSet.push(oChange);
|
|
535
544
|
}
|
|
536
545
|
}
|
|
@@ -1465,7 +1474,7 @@ sap.ui.define([
|
|
|
1465
1474
|
|
|
1466
1475
|
this.oSecurityTokenPromise = null;
|
|
1467
1476
|
|
|
1468
|
-
|
|
1477
|
+
Configuration.getSecurityTokenHandlers().some(function (fnHandler) {
|
|
1469
1478
|
var oSecurityTokenPromise = fnHandler(that.sServiceUrl);
|
|
1470
1479
|
|
|
1471
1480
|
if (oSecurityTokenPromise !== undefined) {
|
|
@@ -2143,10 +2152,12 @@ sap.ui.define([
|
|
|
2143
2152
|
* An interface allowing to call back to the owning model
|
|
2144
2153
|
* @param {function} oModelInterface.fetchEntityContainer
|
|
2145
2154
|
* A promise which is resolved with the $metadata "JSON" object as soon as the entity
|
|
2146
|
-
* container is fully available, or rejected with an error
|
|
2155
|
+
* container is fully available, or rejected with an error
|
|
2147
2156
|
* @param {function} oModelInterface.fetchMetadata
|
|
2148
2157
|
* A function that returns a SyncPromise which resolves with the metadata instance for a
|
|
2149
2158
|
* given meta path
|
|
2159
|
+
* @param {function} oModelInterface.fireMessageChange
|
|
2160
|
+
* A function that fires the 'messageChange' event for the given messages
|
|
2150
2161
|
* @param {function} oModelInterface.fireDataReceived
|
|
2151
2162
|
* A function that fires the 'dataReceived' event at the model with an optional parameter
|
|
2152
2163
|
* <code>oError</code>
|
|
@@ -2154,18 +2165,21 @@ sap.ui.define([
|
|
|
2154
2165
|
* A function that fires the 'dataRequested' event at the model
|
|
2155
2166
|
* @param {function} oModelInterface.fireSessionTimeout
|
|
2156
2167
|
* A function that fires the 'sessionTimeout' event (when the server has created a session for
|
|
2157
|
-
* the model and this session ran into a timeout due to inactivity)
|
|
2168
|
+
* the model and this session ran into a timeout due to inactivity)
|
|
2158
2169
|
* @param {function} oModelInterface.getGroupProperty
|
|
2159
2170
|
* A function called with parameters <code>sGroupId</code> and <code>sPropertyName</code>
|
|
2160
2171
|
* returning the property value in question. Only 'submit' is supported for <code>
|
|
2161
|
-
* sPropertyName</code>. Supported property values are: 'API', 'Auto' and 'Direct'
|
|
2172
|
+
* sPropertyName</code>. Supported property values are: 'API', 'Auto' and 'Direct'
|
|
2173
|
+
* @param {function} oModelInterface.getMessagesByPath
|
|
2174
|
+
* A function returning model messages for which the target matches the given resolved binding
|
|
2175
|
+
* path
|
|
2162
2176
|
* @param {function} oModelInterface.getOptimisticBatchEnabler
|
|
2163
2177
|
* A function that returns a callback function which controls the optimistic batch handling,
|
|
2164
|
-
* see also {@link sap.ui.model.odata.v4.ODataModel#setOptimisticBatchEnabler}
|
|
2178
|
+
* see also {@link sap.ui.model.odata.v4.ODataModel#setOptimisticBatchEnabler}
|
|
2165
2179
|
* @param {function} oModelInterface.getReporter
|
|
2166
2180
|
* A catch handler function expecting an <code>Error</code> instance. This function will call
|
|
2167
2181
|
* {@link sap.ui.model.odata.v4.ODataModel#reportError} if the error has not been reported
|
|
2168
|
-
* yet
|
|
2182
|
+
* yet
|
|
2169
2183
|
* @param {function} oModelInterface.onCreateGroup
|
|
2170
2184
|
* A callback function that is called with the group name as parameter when the first
|
|
2171
2185
|
* request is added to a group
|
|
@@ -14,13 +14,14 @@
|
|
|
14
14
|
|
|
15
15
|
// Provides the resource bundle based model implementation
|
|
16
16
|
sap.ui.define([
|
|
17
|
+
'sap/base/Log',
|
|
18
|
+
'sap/base/i18n/ResourceBundle',
|
|
19
|
+
'sap/ui/core/Configuration',
|
|
17
20
|
'sap/ui/model/BindingMode',
|
|
18
21
|
'sap/ui/model/Model',
|
|
19
|
-
'./ResourcePropertyBinding'
|
|
20
|
-
"sap/base/i18n/ResourceBundle",
|
|
21
|
-
"sap/base/Log"
|
|
22
|
+
'./ResourcePropertyBinding'
|
|
22
23
|
],
|
|
23
|
-
function (
|
|
24
|
+
function (Log, ResourceBundle, Configuration, BindingMode, Model, ResourcePropertyBinding) {
|
|
24
25
|
"use strict";
|
|
25
26
|
|
|
26
27
|
/**
|
|
@@ -228,7 +229,7 @@ sap.ui.define([
|
|
|
228
229
|
*
|
|
229
230
|
* @extends sap.ui.model.Model
|
|
230
231
|
* @public
|
|
231
|
-
* @version 1.
|
|
232
|
+
* @version 1.107.0
|
|
232
233
|
*/
|
|
233
234
|
var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
|
|
234
235
|
|
|
@@ -377,7 +378,7 @@ sap.ui.define([
|
|
|
377
378
|
* @ui5-restricted sap.ui.core.Component
|
|
378
379
|
*/
|
|
379
380
|
ResourceModel.loadResourceBundle = function (oData, bAsync) {
|
|
380
|
-
var oConfiguration =
|
|
381
|
+
var oConfiguration = Configuration,
|
|
381
382
|
sLocale = oData.bundleLocale,
|
|
382
383
|
mParams;
|
|
383
384
|
|
|
@@ -26,7 +26,7 @@ sap.ui.define([
|
|
|
26
26
|
* @extends sap.ui.model.SimpleType
|
|
27
27
|
*
|
|
28
28
|
* @author SAP SE
|
|
29
|
-
* @version 1.
|
|
29
|
+
* @version 1.107.0
|
|
30
30
|
*
|
|
31
31
|
* @public
|
|
32
32
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
|
|
@@ -33,7 +33,7 @@ sap.ui.define([
|
|
|
33
33
|
* @extends sap.ui.model.CompositeType
|
|
34
34
|
*
|
|
35
35
|
* @author SAP SE
|
|
36
|
-
* @version 1.
|
|
36
|
+
* @version 1.107.0
|
|
37
37
|
*
|
|
38
38
|
* @public
|
|
39
39
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.Date
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.107.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.DateInterval
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.107.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
|
|
@@ -24,7 +24,7 @@ sap.ui.define([
|
|
|
24
24
|
* @extends sap.ui.model.SimpleType
|
|
25
25
|
*
|
|
26
26
|
* @author SAP SE
|
|
27
|
-
* @version 1.
|
|
27
|
+
* @version 1.107.0
|
|
28
28
|
*
|
|
29
29
|
* @public
|
|
30
30
|
* @param {object} [oFormatOptions] formatting options. Supports the same options as {@link sap.ui.core.format.FileSizeFormat.getInstance FileSizeFormat.getInstance}
|
|
@@ -26,7 +26,7 @@ sap.ui.define([
|
|
|
26
26
|
* @extends sap.ui.model.SimpleType
|
|
27
27
|
*
|
|
28
28
|
* @author SAP SE
|
|
29
|
-
* @version 1.
|
|
29
|
+
* @version 1.107.0
|
|
30
30
|
*
|
|
31
31
|
* @public
|
|
32
32
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.NumberFormat NumberFormat}.
|
|
@@ -26,7 +26,7 @@ sap.ui.define([
|
|
|
26
26
|
* @extends sap.ui.model.SimpleType
|
|
27
27
|
*
|
|
28
28
|
* @author SAP SE
|
|
29
|
-
* @version 1.
|
|
29
|
+
* @version 1.107.0
|
|
30
30
|
*
|
|
31
31
|
* @public
|
|
32
32
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.NumberFormat NumberFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.Date
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.107.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.DateInterval
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.107.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
|