@openui5/sap.ui.core 1.130.0 → 1.131.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/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/Event.js +1 -1
- package/src/sap/base/Eventing.js +3 -2
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/i18n/LanguageTag.js +1 -1
- package/src/sap/base/i18n/date/CalendarType.js +3 -1
- package/src/sap/base/i18n/date/CalendarWeekNumbering.js +3 -1
- package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
- package/src/sap/base/i18n/date/_EnumHelper.js +43 -0
- package/src/sap/base/util/clamp.js +26 -0
- 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 +11 -8
- package/src/sap/ui/Global.js +3 -3
- package/src/sap/ui/base/BindingInfo.js +4 -2
- package/src/sap/ui/base/DataType.js +7 -2
- 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/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 +3 -3
- package/src/sap/ui/core/BlockLayerUtils.js +17 -29
- package/src/sap/ui/core/BusyIndicator.js +2 -15
- package/src/sap/ui/core/BusyIndicatorUtils.js +34 -3
- package/src/sap/ui/core/Component.js +1 -1
- package/src/sap/ui/core/ComponentContainer.js +1 -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 +1 -1
- package/src/sap/ui/core/ContextMenuSupport.js +2 -1
- package/src/sap/ui/core/Control.js +46 -10
- package/src/sap/ui/core/ControlBehavior.js +14 -18
- package/src/sap/ui/core/Core.js +2 -2
- 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 +230 -32
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +4 -4
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/FocusMode.js +28 -0
- package/src/sap/ui/core/Fragment.js +1 -1
- 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/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 +3 -3
- package/src/sap/ui/core/Manifest.js +2 -2
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Popup.js +12 -0
- package/src/sap/ui/core/RenderManager.js +4 -1
- 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/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +1 -1
- package/src/sap/ui/core/UIArea.js +1 -1
- 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 +1 -0
- package/src/sap/ui/core/cldr/ca.json +1 -1
- package/src/sap/ui/core/cldr/cs.json +1 -1
- package/src/sap/ui/core/cldr/es.json +2 -2
- package/src/sap/ui/core/cldr/es_AR.json +2 -2
- package/src/sap/ui/core/cldr/es_BO.json +2 -2
- package/src/sap/ui/core/cldr/es_CL.json +2 -2
- package/src/sap/ui/core/cldr/es_CO.json +2 -2
- package/src/sap/ui/core/cldr/es_PE.json +2 -2
- package/src/sap/ui/core/cldr/es_UY.json +2 -2
- package/src/sap/ui/core/cldr/es_VE.json +2 -2
- package/src/sap/ui/core/cldr/fi.json +1 -1
- package/src/sap/ui/core/cldr/hu.json +1 -1
- package/src/sap/ui/core/cldr/id.json +2 -2
- package/src/sap/ui/core/cldr/mk.json +2 -2
- package/src/sap/ui/core/cldr/tr.json +1 -1
- package/src/sap/ui/core/cldr/vi.json +2 -2
- package/src/sap/ui/core/date/CalendarWeekNumbering.js +1 -1
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- 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/fieldhelp/FieldHelpCustomData.js +5 -1
- package/src/sap/ui/core/format/FormatUtils.js +1 -1
- package/src/sap/ui/core/format/NumberFormat.js +38 -17
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +23 -19
- 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 +1 -1
- package/src/sap/ui/core/message/MessageMixin.js +5 -2
- 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_no.properties +1 -1
- package/src/sap/ui/core/mvc/HTMLView.js +1 -1
- 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 +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/Target.js +5 -5
- 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/bootstrapFallback.js +1 -0
- 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 +1 -0
- package/src/sap/ui/core/themes/base/base.less +1353 -247
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- package/src/sap/ui/core/themes/base/global.less +32 -0
- package/src/sap/ui/core/themes/base/skeleton.less +93 -3
- package/src/sap/ui/core/theming/ThemeManager.js +2 -2
- 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 +1 -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/webc/WebComponent.js +1 -1
- package/src/sap/ui/core/webc/WebComponentMetadata.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/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +32 -19
- 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 +2 -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 +61 -31
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/TreeBinding.js +21 -17
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +13 -7
- package/src/sap/ui/model/base/ManagedObjectModel.js +1 -1
- 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 +16 -6
- 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/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +7 -4
- package/src/sap/ui/model/odata/v2/ODataModel.js +14 -10
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataBinding.js +1 -0
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -1
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +74 -11
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +93 -19
- package/src/sap/ui/model/odata/v4/ODataModel.js +49 -8
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +3 -1
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +2 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +12 -1
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +51 -30
- package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +49 -31
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +8 -26
- 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/OpaBuilder.js +1 -1
- package/src/sap/ui/test/autowaiter/_promiseWaiter.js +21 -0
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/starter/_utils.js +8 -1
- package/src/sap/ui/test/starter/createSuite.js +1 -1
- package/src/sap/ui/thirdparty/less.js +23 -72
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader.js +9 -4
- package/test/sap/ui/qunit/TestRunner.js +2 -0
|
@@ -15,6 +15,7 @@ sap.ui.define([
|
|
|
15
15
|
"./lib/_Helper",
|
|
16
16
|
"sap/base/Log",
|
|
17
17
|
"sap/ui/base/SyncPromise",
|
|
18
|
+
"sap/ui/core/Messaging",
|
|
18
19
|
"sap/ui/model/Binding",
|
|
19
20
|
"sap/ui/model/ChangeReason",
|
|
20
21
|
"sap/ui/model/Filter",
|
|
@@ -25,8 +26,8 @@ sap.ui.define([
|
|
|
25
26
|
"sap/ui/model/Sorter",
|
|
26
27
|
"sap/ui/model/odata/OperationMode"
|
|
27
28
|
], function (Context, asODataParentBinding, _AggregationCache, _AggregationHelper, _Cache,
|
|
28
|
-
_GroupLock, _Helper, Log, SyncPromise, Binding, ChangeReason, Filter,
|
|
29
|
-
FilterProcessor, FilterType, ListBinding, Sorter, OperationMode) {
|
|
29
|
+
_GroupLock, _Helper, Log, SyncPromise, Messaging, Binding, ChangeReason, Filter,
|
|
30
|
+
FilterOperator, FilterProcessor, FilterType, ListBinding, Sorter, OperationMode) {
|
|
30
31
|
"use strict";
|
|
31
32
|
|
|
32
33
|
var sClassName = "sap.ui.model.odata.v4.ODataListBinding",
|
|
@@ -42,7 +43,8 @@ sap.ui.define([
|
|
|
42
43
|
patchCompleted : true,
|
|
43
44
|
patchSent : true,
|
|
44
45
|
refresh : true,
|
|
45
|
-
selectionChanged : true
|
|
46
|
+
selectionChanged : true,
|
|
47
|
+
separateReceived : true
|
|
46
48
|
},
|
|
47
49
|
/**
|
|
48
50
|
* @alias sap.ui.model.odata.v4.ODataListBinding
|
|
@@ -57,7 +59,7 @@ sap.ui.define([
|
|
|
57
59
|
* @mixes sap.ui.model.odata.v4.ODataParentBinding
|
|
58
60
|
* @public
|
|
59
61
|
* @since 1.37.0
|
|
60
|
-
* @version 1.
|
|
62
|
+
* @version 1.131.0
|
|
61
63
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
|
|
62
64
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
|
|
63
65
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
|
|
@@ -565,6 +567,36 @@ sap.ui.define([
|
|
|
565
567
|
* @since 1.130.0
|
|
566
568
|
*/
|
|
567
569
|
|
|
570
|
+
/**
|
|
571
|
+
* The 'separateReceived' event is fired when a separate property request (see '$$separate'
|
|
572
|
+
* binding parameter of {@link sap.ui.model.odata.v4.ODataModel#bindList}) is completed. The
|
|
573
|
+
* <code>start</code> and <code>length</code> parameters can be used to retrieve the received
|
|
574
|
+
* data via {@link #requestContexts}.
|
|
575
|
+
*
|
|
576
|
+
* If the request fails, the <code>errorMessage</code> is a UI5 message containing the back-end
|
|
577
|
+
* error. It is reported to the message model by default unless
|
|
578
|
+
* {@link sap.ui.base.Event#preventDefault} is called.
|
|
579
|
+
*
|
|
580
|
+
* @param {sap.ui.base.Event} oEvent
|
|
581
|
+
* The event object
|
|
582
|
+
* @param {sap.ui.model.odata.v4.ODataListBinding} oEvent.getSource()
|
|
583
|
+
* This binding
|
|
584
|
+
* @param {function():Object<any>} oEvent.getParameters
|
|
585
|
+
* Function which returns an object containing all event parameters
|
|
586
|
+
* @param {string} oEvent.getParameters.property
|
|
587
|
+
* The requested property name
|
|
588
|
+
* @param {number} oEvent.getParameters.start
|
|
589
|
+
* The start index of the requested range
|
|
590
|
+
* @param {number} oEvent.getParameters.length
|
|
591
|
+
* The length of the requested range
|
|
592
|
+
* @param {sap.ui.core.message.Message} [oEvent.getParameters.errorMessage]
|
|
593
|
+
* A UI5 message of type {@link module:sap/ui/core/message/MessageType MessageType.Error}
|
|
594
|
+
*
|
|
595
|
+
* @event sap.ui.model.odata.v4.ODataListBinding#separateReceived
|
|
596
|
+
* @experimental As of version 1.131.0
|
|
597
|
+
* @public
|
|
598
|
+
*/
|
|
599
|
+
|
|
568
600
|
/**
|
|
569
601
|
* Attach event handler <code>fnFunction</code> to the 'createActivate' event of this binding.
|
|
570
602
|
*
|
|
@@ -1334,7 +1366,7 @@ sap.ui.define([
|
|
|
1334
1366
|
this.oDiff = undefined;
|
|
1335
1367
|
this.aFilters = undefined;
|
|
1336
1368
|
this.oHeaderContext = undefined;
|
|
1337
|
-
|
|
1369
|
+
this.mParameters = undefined;
|
|
1338
1370
|
this.mPreviousContextsByPath = undefined;
|
|
1339
1371
|
this.aPreviousData = undefined;
|
|
1340
1372
|
this.mQueryOptions = undefined;
|
|
@@ -1787,7 +1819,7 @@ sap.ui.define([
|
|
|
1787
1819
|
}
|
|
1788
1820
|
|
|
1789
1821
|
return oCache.read(iIndex, iLength, iMaximumPrefetchSize, oGroupLock,
|
|
1790
|
-
fnDataRequested
|
|
1822
|
+
fnDataRequested, undefined, that.fireSeparateReceived.bind(that)
|
|
1791
1823
|
).then(function (oResult) {
|
|
1792
1824
|
oResult.$checkStillValid = that.checkSameCache.bind(that, oCache);
|
|
1793
1825
|
|
|
@@ -2388,6 +2420,34 @@ sap.ui.define([
|
|
|
2388
2420
|
this.fireEvent("selectionChanged", {context : oContext});
|
|
2389
2421
|
};
|
|
2390
2422
|
|
|
2423
|
+
/**
|
|
2424
|
+
* Fires the 'separateReceived' event.
|
|
2425
|
+
*
|
|
2426
|
+
* @param {string} sProperty - The requested property name
|
|
2427
|
+
* @param {number} iStart - The start index of the requested range
|
|
2428
|
+
* @param {number} iEnd - The index after the requested range
|
|
2429
|
+
* @param {Error} [oError] - A back-end error
|
|
2430
|
+
*
|
|
2431
|
+
* @private
|
|
2432
|
+
*/
|
|
2433
|
+
ODataListBinding.prototype.fireSeparateReceived = function (sProperty, iStart, iEnd, oError) {
|
|
2434
|
+
const oParameters = {
|
|
2435
|
+
property : sProperty,
|
|
2436
|
+
start : iStart,
|
|
2437
|
+
length : iEnd - iStart
|
|
2438
|
+
};
|
|
2439
|
+
if (oError) {
|
|
2440
|
+
oParameters.errorMessage = this.oModel.reportTransitionMessages(
|
|
2441
|
+
_Helper.extractMessages(oError), oError.resourcePath, /*bSilent*/true)[0];
|
|
2442
|
+
}
|
|
2443
|
+
|
|
2444
|
+
const bDefaultAction = this.fireEvent("separateReceived", oParameters, true);
|
|
2445
|
+
|
|
2446
|
+
if (oError && bDefaultAction) {
|
|
2447
|
+
Messaging.updateMessages(undefined, [oParameters.errorMessage]);
|
|
2448
|
+
}
|
|
2449
|
+
};
|
|
2450
|
+
|
|
2391
2451
|
/**
|
|
2392
2452
|
* Returns the current object holding the information needed for data aggregation, see
|
|
2393
2453
|
* {@link #setAggregation}.
|
|
@@ -2557,8 +2617,8 @@ sap.ui.define([
|
|
|
2557
2617
|
bKeepCurrent) {
|
|
2558
2618
|
var sChangeReason,
|
|
2559
2619
|
aContexts,
|
|
2560
|
-
bDataRequested = false,
|
|
2561
2620
|
bFireChange = false,
|
|
2621
|
+
bFireDataReceived,
|
|
2562
2622
|
bPreventBubbling,
|
|
2563
2623
|
oPromise,
|
|
2564
2624
|
bRefreshEvent = !!this.sChangeReason, // ignored for "*VirtualContext"
|
|
@@ -2650,8 +2710,10 @@ sap.ui.define([
|
|
|
2650
2710
|
// make sure "refresh" is followed by async "change"
|
|
2651
2711
|
oPromise = this.fetchContexts(iStart, iLength, iMaximumPrefetchSize, undefined,
|
|
2652
2712
|
/*bAsync*/bRefreshEvent, function () {
|
|
2653
|
-
|
|
2654
|
-
|
|
2713
|
+
if (bFireDataReceived === undefined) {
|
|
2714
|
+
bFireDataReceived = true;
|
|
2715
|
+
that.fireDataRequested(bPreventBubbling);
|
|
2716
|
+
}
|
|
2655
2717
|
});
|
|
2656
2718
|
if (!bRefreshEvent && oPromise.isPending()) {
|
|
2657
2719
|
this.createContextsForCachedData(iStart, iLength);
|
|
@@ -2670,12 +2732,13 @@ sap.ui.define([
|
|
|
2670
2732
|
that.oDiff = undefined;
|
|
2671
2733
|
}
|
|
2672
2734
|
}
|
|
2673
|
-
if (
|
|
2735
|
+
if (bFireDataReceived) {
|
|
2674
2736
|
that.fireDataReceived({data : {}}, bPreventBubbling);
|
|
2675
2737
|
}
|
|
2738
|
+
bFireDataReceived = false; // no subsequent #fireDataRequested allowed
|
|
2676
2739
|
}, function (oError) {
|
|
2677
2740
|
// cache shares promises for concurrent read
|
|
2678
|
-
if (
|
|
2741
|
+
if (bFireDataReceived) {
|
|
2679
2742
|
that.fireDataReceived(oError.canceled ? {data : {}} : {error : oError},
|
|
2680
2743
|
bPreventBubbling);
|
|
2681
2744
|
}
|
|
@@ -158,7 +158,7 @@ sap.ui.define([
|
|
|
158
158
|
* @hideconstructor
|
|
159
159
|
* @public
|
|
160
160
|
* @since 1.37.0
|
|
161
|
-
* @version 1.
|
|
161
|
+
* @version 1.131.0
|
|
162
162
|
*/
|
|
163
163
|
ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
|
|
164
164
|
constructor : constructor
|
|
@@ -537,6 +537,7 @@ sap.ui.define([
|
|
|
537
537
|
// no need to use UI5Date.getInstance as only the timestamp is relevant
|
|
538
538
|
this.oLastModified = new Date(0);
|
|
539
539
|
this.oMetadataPromise = null;
|
|
540
|
+
this.oMetaModelForAnnotations = null; // see #_copyAnnotations
|
|
540
541
|
this.oModel = oModel;
|
|
541
542
|
this.mMetadataUrl2Promise = {};
|
|
542
543
|
this.oRequestor = oRequestor;
|
|
@@ -602,37 +603,73 @@ sap.ui.define([
|
|
|
602
603
|
};
|
|
603
604
|
|
|
604
605
|
/**
|
|
605
|
-
* Changes the given map of annotations by applying the current array of change objects
|
|
606
|
-
* a metamodel path (pointing to an annotation) and a value to be set for that
|
|
606
|
+
* Changes the given scope's map of annotations by applying the current array of change objects
|
|
607
|
+
* defining a metamodel path (pointing to an annotation) and a value to be set for that
|
|
608
|
+
* annotation.
|
|
607
609
|
*
|
|
608
|
-
*
|
|
609
|
-
*
|
|
610
|
+
* Additionally imports annotations for all own schemas from
|
|
611
|
+
* <code>oMetaModelForAnnotations</code>.
|
|
612
|
+
*
|
|
613
|
+
* @param {object} mScope
|
|
614
|
+
* The $metadata "JSON" of the root service
|
|
610
615
|
*
|
|
611
616
|
* @private
|
|
617
|
+
* @see #_copyAnnotations
|
|
612
618
|
*/
|
|
613
|
-
ODataMetaModel.prototype._changeAnnotations = function (
|
|
619
|
+
ODataMetaModel.prototype._changeAnnotations = function (mScope) {
|
|
620
|
+
if (this.oMetaModelForAnnotations) {
|
|
621
|
+
Object.keys(mScope).forEach((sElement) => {
|
|
622
|
+
if (mScope[sElement].$kind === "Schema") {
|
|
623
|
+
this._doMergeAnnotations({
|
|
624
|
+
$Annotations
|
|
625
|
+
: this.oMetaModelForAnnotations._getAnnotationsForSchema(sElement)
|
|
626
|
+
}, mScope.$Annotations, true);
|
|
627
|
+
}
|
|
628
|
+
});
|
|
629
|
+
}
|
|
630
|
+
|
|
614
631
|
this.aAnnotationChanges?.forEach(({path : sPath, value : vValue}) => {
|
|
615
632
|
const iIndexOfAt = sPath.indexOf("@");
|
|
616
633
|
const sTarget = this.getObject(sPath.slice(0, iIndexOfAt) + "@$ui5.target");
|
|
617
634
|
if (sTarget) {
|
|
618
|
-
|
|
619
|
-
|
|
635
|
+
mScope.$Annotations[sTarget] ??= {};
|
|
636
|
+
mScope.$Annotations[sTarget][sPath.slice(iIndexOfAt)] = vValue;
|
|
620
637
|
}
|
|
621
638
|
});
|
|
622
639
|
};
|
|
623
640
|
|
|
641
|
+
/**
|
|
642
|
+
* Saves the meta model delivering annotations that have to be merged later.
|
|
643
|
+
*
|
|
644
|
+
* @param {sap.ui.model.odata.v4.ODataMetaModel} oMetaModel
|
|
645
|
+
* The meta model delivering annotations
|
|
646
|
+
* @throws {Error}
|
|
647
|
+
* If there are local annotation files
|
|
648
|
+
*
|
|
649
|
+
* @private
|
|
650
|
+
* @see #_changeAnnotations
|
|
651
|
+
* @see #_getAnnotationsForSchema
|
|
652
|
+
*/
|
|
653
|
+
ODataMetaModel.prototype._copyAnnotations = function (oMetaModel) {
|
|
654
|
+
if (this.aAnnotationUris) {
|
|
655
|
+
throw new Error("Must not copy annotations when there are local annotation files");
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
this.oMetaModelForAnnotations = oMetaModel;
|
|
659
|
+
};
|
|
660
|
+
|
|
624
661
|
/**
|
|
625
662
|
* Merges the given schema's annotations into the root scope's $Annotations.
|
|
626
663
|
*
|
|
627
664
|
* @param {object} oSchema
|
|
628
|
-
*
|
|
665
|
+
* A schema; schema children are ignored because they do not contain $Annotations
|
|
629
666
|
* @param {object} mAnnotations
|
|
630
|
-
*
|
|
667
|
+
* The root scope's $Annotations
|
|
631
668
|
* @param {boolean} [bPrivileged]
|
|
632
|
-
*
|
|
669
|
+
* Whether the schema has been loaded from a privileged source and thus may overwrite
|
|
633
670
|
* existing annotations
|
|
634
671
|
* @returns {boolean}
|
|
635
|
-
*
|
|
672
|
+
* Whether at least one annotation has been merged
|
|
636
673
|
*
|
|
637
674
|
* @private
|
|
638
675
|
*/
|
|
@@ -657,9 +694,7 @@ sap.ui.define([
|
|
|
657
694
|
}
|
|
658
695
|
|
|
659
696
|
for (const sTarget in oSchema.$Annotations) {
|
|
660
|
-
|
|
661
|
-
mAnnotations[sTarget] = {};
|
|
662
|
-
}
|
|
697
|
+
mAnnotations[sTarget] ??= {};
|
|
663
698
|
extend(mAnnotations[sTarget], oSchema.$Annotations[sTarget]);
|
|
664
699
|
}
|
|
665
700
|
delete oSchema.$Annotations;
|
|
@@ -667,6 +702,31 @@ sap.ui.define([
|
|
|
667
702
|
return bMerged;
|
|
668
703
|
};
|
|
669
704
|
|
|
705
|
+
/**
|
|
706
|
+
* Gets all annotations targeting the given schema. The function expects that the metadata and
|
|
707
|
+
* the local annotation files have already been loaded.
|
|
708
|
+
*
|
|
709
|
+
* @param {string} sSchema
|
|
710
|
+
* A namespace, for example "foo.bar.", of a schema
|
|
711
|
+
* @returns {object}
|
|
712
|
+
* All annotations targeting the given schema
|
|
713
|
+
*
|
|
714
|
+
* @private
|
|
715
|
+
* @see #_changeAnnotations
|
|
716
|
+
* @see #_copyAnnotations
|
|
717
|
+
*/
|
|
718
|
+
ODataMetaModel.prototype._getAnnotationsForSchema = function (sSchema) {
|
|
719
|
+
const mAnnotations = {};
|
|
720
|
+
const mScope = this.fetchEntityContainer().getResult();
|
|
721
|
+
Object.keys(mScope.$Annotations).forEach((sTarget) => {
|
|
722
|
+
if (sTarget.startsWith(sSchema)) {
|
|
723
|
+
mAnnotations[sTarget] = mScope.$Annotations[sTarget];
|
|
724
|
+
}
|
|
725
|
+
});
|
|
726
|
+
|
|
727
|
+
return mAnnotations;
|
|
728
|
+
};
|
|
729
|
+
|
|
670
730
|
/**
|
|
671
731
|
* Returns the schema with the given namespace, or a promise which is resolved as soon as the
|
|
672
732
|
* schema has been included, or <code>undefined</code> in case the schema is neither present nor
|
|
@@ -675,7 +735,7 @@ sap.ui.define([
|
|
|
675
735
|
* @param {object} mScope
|
|
676
736
|
* The $metadata "JSON" of the root service
|
|
677
737
|
* @param {string} sSchema
|
|
678
|
-
* A namespace, for example "foo.bar.", of a schema
|
|
738
|
+
* A namespace, for example "foo.bar.", of a schema
|
|
679
739
|
* @param {function} fnLog
|
|
680
740
|
* The log function
|
|
681
741
|
* @returns {object|sap.ui.base.SyncPromise|undefined}
|
|
@@ -715,7 +775,7 @@ sap.ui.define([
|
|
|
715
775
|
}
|
|
716
776
|
}
|
|
717
777
|
if (bMerged) {
|
|
718
|
-
that._changeAnnotations(mScope
|
|
778
|
+
that._changeAnnotations(mScope);
|
|
719
779
|
}
|
|
720
780
|
}
|
|
721
781
|
|
|
@@ -942,6 +1002,17 @@ sap.ui.define([
|
|
|
942
1002
|
throw new Error("Unsupported operation: v4.ODataMetaModel#bindTree");
|
|
943
1003
|
};
|
|
944
1004
|
|
|
1005
|
+
/**
|
|
1006
|
+
* Destroys this meta model.
|
|
1007
|
+
*
|
|
1008
|
+
* @private
|
|
1009
|
+
*/
|
|
1010
|
+
ODataMetaModel.prototype.destroy = function () {
|
|
1011
|
+
this.oMetaModelForAnnotations = undefined;
|
|
1012
|
+
|
|
1013
|
+
MetaModel.prototype.destroy.apply(this);
|
|
1014
|
+
};
|
|
1015
|
+
|
|
945
1016
|
/**
|
|
946
1017
|
* Returns a promise for an absolute data binding path of a "4.3.1 Canonical URL" for the given
|
|
947
1018
|
* context.
|
|
@@ -1028,7 +1099,7 @@ sap.ui.define([
|
|
|
1028
1099
|
// apply annotation changes before anyone else has access, but after the promise has
|
|
1029
1100
|
// already resolved (else #fetchObject cannot really be used)
|
|
1030
1101
|
this.oMetadataPromise.then(
|
|
1031
|
-
(mScope) => this._changeAnnotations(mScope
|
|
1102
|
+
(mScope) => this._changeAnnotations(mScope),
|
|
1032
1103
|
() => { /* avoid "Uncaught (in promise)" */ });
|
|
1033
1104
|
}
|
|
1034
1105
|
}
|
|
@@ -2422,7 +2493,8 @@ sap.ui.define([
|
|
|
2422
2493
|
/**
|
|
2423
2494
|
* Creates an OData model for the given URL, normalizes the path, caches it, and retrieves it
|
|
2424
2495
|
* from the cache upon further requests. The model is read-only ("OneWay") and can, thus, safely
|
|
2425
|
-
* be shared. It shares this meta model's security token.
|
|
2496
|
+
* be shared. It shares this meta model's security token. The function expects that the metadata
|
|
2497
|
+
* and the local annotation files have already been loaded.
|
|
2426
2498
|
*
|
|
2427
2499
|
* @param {string} sUrl
|
|
2428
2500
|
* The (relative) $metadata URL, for example "../ValueListService/$metadata"
|
|
@@ -2452,6 +2524,8 @@ sap.ui.define([
|
|
|
2452
2524
|
serviceUrl : sUrl,
|
|
2453
2525
|
sharedRequests : true
|
|
2454
2526
|
});
|
|
2527
|
+
oSharedModel.getMetaModel()._copyAnnotations(this.oMetaModelForAnnotations ?? this);
|
|
2528
|
+
|
|
2455
2529
|
mSharedModelByUrl.set(sCacheKey, oSharedModel);
|
|
2456
2530
|
}
|
|
2457
2531
|
return oSharedModel;
|
|
@@ -240,7 +240,7 @@ sap.ui.define([
|
|
|
240
240
|
* @extends sap.ui.model.Model
|
|
241
241
|
* @public
|
|
242
242
|
* @since 1.37.0
|
|
243
|
-
* @version 1.
|
|
243
|
+
* @version 1.131.0
|
|
244
244
|
*/
|
|
245
245
|
ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
|
|
246
246
|
/** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
|
|
@@ -357,10 +357,11 @@ sap.ui.define([
|
|
|
357
357
|
this.mMetadataHeaders = {"Accept-Language" : sLanguageTag};
|
|
358
358
|
|
|
359
359
|
mQueryParams = Object.assign({}, mUriParameters, mParameters.metadataUrlParams);
|
|
360
|
+
const fnGetOrCreateRetryAfterPromise = this.getOrCreateRetryAfterPromise.bind(this);
|
|
360
361
|
this.oMetaModel = new ODataMetaModel(
|
|
361
362
|
_MetadataRequestor.create(this.mMetadataHeaders, sODataVersion,
|
|
362
363
|
mParameters.ignoreAnnotationsFromMetadata, mQueryParams,
|
|
363
|
-
mParameters.withCredentials),
|
|
364
|
+
mParameters.withCredentials, fnGetOrCreateRetryAfterPromise),
|
|
364
365
|
this.sServiceUrl + "$metadata", mParameters.annotationURI, this,
|
|
365
366
|
mParameters.supportReferences, mQueryParams["sap-language"]);
|
|
366
367
|
this.oInterface = {
|
|
@@ -374,10 +375,8 @@ sap.ui.define([
|
|
|
374
375
|
getGroupProperty : this.getGroupProperty.bind(this),
|
|
375
376
|
getMessagesByPath : this.getMessagesByPath.bind(this),
|
|
376
377
|
getOptimisticBatchEnabler : this.getOptimisticBatchEnabler.bind(this),
|
|
378
|
+
getOrCreateRetryAfterPromise : fnGetOrCreateRetryAfterPromise,
|
|
377
379
|
getReporter : this.getReporter.bind(this),
|
|
378
|
-
getRetryAfterHandler : function () {
|
|
379
|
-
return that.fnRetryAfter;
|
|
380
|
-
},
|
|
381
380
|
isIgnoreETag : function () {
|
|
382
381
|
return that.bIgnoreETag;
|
|
383
382
|
},
|
|
@@ -430,6 +429,7 @@ sap.ui.define([
|
|
|
430
429
|
// ensure the events are respectively fired once for a GET request
|
|
431
430
|
this.mPath2DataRequestedCount = {};
|
|
432
431
|
this.fnRetryAfter = null;
|
|
432
|
+
this.oRetryAfterPromise = null;
|
|
433
433
|
}
|
|
434
434
|
|
|
435
435
|
/**
|
|
@@ -1644,6 +1644,8 @@ sap.ui.define([
|
|
|
1644
1644
|
this.oRequestor.destroy();
|
|
1645
1645
|
this.mHeaders = undefined;
|
|
1646
1646
|
this.mMetadataHeaders = undefined;
|
|
1647
|
+
this.oRetryAfterPromise = undefined;
|
|
1648
|
+
|
|
1647
1649
|
return Model.prototype.destroy.apply(this, arguments);
|
|
1648
1650
|
};
|
|
1649
1651
|
|
|
@@ -2094,6 +2096,35 @@ sap.ui.define([
|
|
|
2094
2096
|
return this.fnOptimisticBatchEnabler;
|
|
2095
2097
|
};
|
|
2096
2098
|
|
|
2099
|
+
/**
|
|
2100
|
+
* Returns the promise that is currently being used for "Retry-After" handling. Returns
|
|
2101
|
+
* <code>null</code> if no "Retry-After" is currently known. Creates a new promise if there is
|
|
2102
|
+
* none, an error is given, and a {@link #setRetryAfterHandler handler} is known.
|
|
2103
|
+
*
|
|
2104
|
+
* @param {Error} [oRetryAfterError] - A "Retry-After" error from a back-end call
|
|
2105
|
+
* @returns {Promise|null} The current "Retry-After" promise
|
|
2106
|
+
*
|
|
2107
|
+
* @private
|
|
2108
|
+
*/
|
|
2109
|
+
ODataModel.prototype.getOrCreateRetryAfterPromise = function (oRetryAfterError) {
|
|
2110
|
+
if (!this.oRetryAfterPromise && this.fnRetryAfter && oRetryAfterError) {
|
|
2111
|
+
this.oRetryAfterPromise = this.fnRetryAfter(oRetryAfterError);
|
|
2112
|
+
this.oRetryAfterPromise.finally(() => {
|
|
2113
|
+
this.oRetryAfterPromise = null;
|
|
2114
|
+
}).catch(() => { /* catch is only needed due to finally */ });
|
|
2115
|
+
this.oRetryAfterPromise.catch((oError) => {
|
|
2116
|
+
// own error reason is not reported to the message model
|
|
2117
|
+
if (oError === oRetryAfterError) {
|
|
2118
|
+
this.reportError(oError.message, sClassName, oError);
|
|
2119
|
+
} else {
|
|
2120
|
+
oError.$reported = true;
|
|
2121
|
+
}
|
|
2122
|
+
});
|
|
2123
|
+
}
|
|
2124
|
+
|
|
2125
|
+
return this.oRetryAfterPromise;
|
|
2126
|
+
};
|
|
2127
|
+
|
|
2097
2128
|
/**
|
|
2098
2129
|
* Method not supported
|
|
2099
2130
|
*
|
|
@@ -2594,10 +2625,15 @@ sap.ui.define([
|
|
|
2594
2625
|
* The resource path of the cache that saw the messages; used to resolve the longtext URL and
|
|
2595
2626
|
* for adjusting a message target in case it is an operation parameter, except the binding
|
|
2596
2627
|
* parameter
|
|
2628
|
+
* @param {boolean} [bSilent]
|
|
2629
|
+
* Whether the created UI5 messages should only be returned without reporting them
|
|
2630
|
+
* @returns {sap.ui.core.message.Message[]|undefined}
|
|
2631
|
+
* An array of <code>aMessages</code> transformed to UI5 message instances, or
|
|
2632
|
+
* <code>undefined</code> in case there are no messages
|
|
2597
2633
|
*
|
|
2598
2634
|
* @private
|
|
2599
2635
|
*/
|
|
2600
|
-
ODataModel.prototype.reportTransitionMessages = function (aMessages, sResourcePath) {
|
|
2636
|
+
ODataModel.prototype.reportTransitionMessages = function (aMessages, sResourcePath, bSilent) {
|
|
2601
2637
|
var sContextPath, oOperationMetadata;
|
|
2602
2638
|
|
|
2603
2639
|
if (!aMessages.length) {
|
|
@@ -2617,7 +2653,7 @@ sap.ui.define([
|
|
|
2617
2653
|
}
|
|
2618
2654
|
}
|
|
2619
2655
|
|
|
2620
|
-
|
|
2656
|
+
const aUI5Messages = aMessages.map((oMessage) => {
|
|
2621
2657
|
const oOriginalMessage = oMessage;
|
|
2622
2658
|
if (oOperationMetadata) {
|
|
2623
2659
|
oMessage = _Helper.clone(oMessage);
|
|
@@ -2627,7 +2663,12 @@ sap.ui.define([
|
|
|
2627
2663
|
oMessage.transition = true;
|
|
2628
2664
|
|
|
2629
2665
|
return this.createUI5Message(oMessage, sResourcePath, undefined, oOriginalMessage);
|
|
2630
|
-
})
|
|
2666
|
+
});
|
|
2667
|
+
if (!bSilent) {
|
|
2668
|
+
Messaging.updateMessages(undefined, aUI5Messages);
|
|
2669
|
+
}
|
|
2670
|
+
|
|
2671
|
+
return aUI5Messages;
|
|
2631
2672
|
};
|
|
2632
2673
|
|
|
2633
2674
|
/**
|
|
@@ -644,10 +644,12 @@ sap.ui.define([
|
|
|
644
644
|
* @since 1.61
|
|
645
645
|
*/
|
|
646
646
|
ODataParentBinding.prototype.destroy = function () {
|
|
647
|
-
|
|
647
|
+
this.mAggregatedQueryOptions = undefined;
|
|
648
648
|
this.aChildCanUseCachePromises = [];
|
|
649
649
|
this.removeReadGroupLock();
|
|
650
|
+
this.oRefreshPromise = undefined;
|
|
650
651
|
this.oResumePromise = undefined;
|
|
652
|
+
this.mCanUseCachePromiseByChildPath = undefined;
|
|
651
653
|
|
|
652
654
|
asODataBinding.prototype.destroy.call(this);
|
|
653
655
|
};
|
|
@@ -42,7 +42,7 @@ sap.ui.define([
|
|
|
42
42
|
* @mixes sap.ui.model.odata.v4.ODataBinding
|
|
43
43
|
* @public
|
|
44
44
|
* @since 1.37.0
|
|
45
|
-
* @version 1.
|
|
45
|
+
* @version 1.131.0
|
|
46
46
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
|
|
47
47
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
|
|
48
48
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
|
|
@@ -388,6 +388,7 @@ sap.ui.define([
|
|
|
388
388
|
this.oModel.bindingDestroyed(this);
|
|
389
389
|
this.oCheckUpdateCallToken = undefined;
|
|
390
390
|
this.mQueryOptions = undefined;
|
|
391
|
+
this.mScope = undefined;
|
|
391
392
|
this.vValue = undefined;
|
|
392
393
|
|
|
393
394
|
asODataBinding.prototype.destroy.call(this);
|
|
@@ -408,6 +408,9 @@ sap.ui.define([
|
|
|
408
408
|
let iRemaining = iCount; // with bAll this is the count of the direct children in the end
|
|
409
409
|
for (let i = iIndex + 1; i < iIndex + 1 + iRemaining; i += 1) {
|
|
410
410
|
const oElement = aElements[i];
|
|
411
|
+
if (_Helper.hasPrivateAnnotation(oElement, "placeholder")) {
|
|
412
|
+
continue;
|
|
413
|
+
}
|
|
411
414
|
if (bAll && oElement["@$ui5.node.isExpanded"]) {
|
|
412
415
|
iRemaining -= this.collapse(
|
|
413
416
|
_Helper.getPrivateAnnotation(oElement, "predicate"), oGroupLock, true);
|
|
@@ -1881,10 +1884,11 @@ sap.ui.define([
|
|
|
1881
1884
|
|
|
1882
1885
|
iLength += iPrefetchLength; // "after the given range"
|
|
1883
1886
|
|
|
1887
|
+
const iOutOfPlaceCount = this.oTreeState.getOutOfPlaceCount();
|
|
1884
1888
|
// "before the given range"
|
|
1885
1889
|
// after a side-effects refresh out-of-place nodes may shift the visible range, we have
|
|
1886
1890
|
// to read as many nodes before this range to be on the safe side
|
|
1887
|
-
iPrefetchLength = Math.max(iPrefetchLength,
|
|
1891
|
+
iPrefetchLength = Math.max(iPrefetchLength, iOutOfPlaceCount);
|
|
1888
1892
|
if (iStart > iPrefetchLength) {
|
|
1889
1893
|
iLength += iPrefetchLength;
|
|
1890
1894
|
iStart -= iPrefetchLength;
|
|
@@ -1895,12 +1899,19 @@ sap.ui.define([
|
|
|
1895
1899
|
|
|
1896
1900
|
// Note: this.oFirstLevel.read changes this value
|
|
1897
1901
|
const bSentRequest = this.oFirstLevel.bSentRequest;
|
|
1902
|
+
if (bSentRequest && iOutOfPlaceCount) { // cannot handle result below, avoid new request
|
|
1903
|
+
oGroupLock = _GroupLock.$cached;
|
|
1904
|
+
}
|
|
1898
1905
|
|
|
1899
1906
|
return SyncPromise.all([
|
|
1900
1907
|
this.oFirstLevel.read(iStart, iLength, 0, oGroupLock, fnDataRequested),
|
|
1901
1908
|
// request out-of-place nodes only once
|
|
1902
1909
|
...(bSentRequest ? [] : this.requestOutOfPlaceNodes(oGroupLock))
|
|
1903
1910
|
]).then(function ([oResult, ...aOutOfPlaceResults]) {
|
|
1911
|
+
if (bSentRequest && iOutOfPlaceCount) {
|
|
1912
|
+
return; // not idempotent due to previous #handleOutOfPlaceNodes
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1904
1915
|
// Note: this code must be idempotent, it might well run twice!
|
|
1905
1916
|
var oGrandTotal,
|
|
1906
1917
|
oGrandTotalCopy,
|