@openui5/sap.ui.core 1.122.1 → 1.123.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 +7 -1
- package/.eslintrc.json +3 -0
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -17
- 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 +1 -1
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/future.js +3 -1
- package/src/sap/base/i18n/Formatting.js +119 -94
- package/src/sap/base/i18n/LanguageTag.js +1 -1
- package/src/sap/base/i18n/date/TimezoneUtils.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 +7 -4
- package/src/sap/ui/base/BindingInfo.js +22 -0
- 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 +5 -14
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/Metadata.js +15 -14
- 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/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +17 -16
- 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 +53 -18
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/Core.js +58 -21
- 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 +6 -2
- package/src/sap/ui/core/Fragment.js +10 -5
- 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 +37 -21
- package/src/sap/ui/core/Manifest.js +1 -1
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/RenderManager.js +7 -1
- package/src/sap/ui/core/Renderer.js +4 -1
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +2 -2
- 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 +37 -47
- 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/XMLTemplateProcessor.js +12 -0
- package/src/sap/ui/core/_IconRegistry.js +1 -0
- 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 +2 -2
- 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/FormatUtils.js +1 -1
- package/src/sap/ui/core/format/NumberFormat.js +28 -3
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/getCompatibilityVersion.js +6 -2
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +3 -3
- 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/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +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 +12 -7
- 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/rules/CoreHelper.support.js +2 -3
- package/src/sap/ui/core/rules/Misc.support.js +3 -12
- package/src/sap/ui/core/rules/Theming.support.js +5 -9
- 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 -20
- 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/.theming +3 -1
- 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/theming/Parameters.js +5 -1
- 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 +2 -2
- package/src/sap/ui/core/util/ExportCell.js +2 -2
- package/src/sap/ui/core/util/ExportColumn.js +2 -2
- package/src/sap/ui/core/util/ExportRow.js +2 -2
- package/src/sap/ui/core/util/ExportType.js +2 -2
- package/src/sap/ui/core/util/ExportTypeCSV.js +2 -2
- 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/XMLPreprocessor.js +8 -13
- 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/dom/jquery/Aria.js +19 -0
- package/src/sap/ui/events/jquery/EventExtension.js +4 -3
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +4 -4
- package/src/sap/ui/model/DataState.js +2 -2
- package/src/sap/ui/model/ManagedObjectBindingSupport.js +22 -33
- 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/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
- package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +7 -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/AnnotationHelper.js +11 -8
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataExpressionAddons.js +21 -0
- 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/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataModel.js +17 -48
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +2 -0
- package/src/sap/ui/model/odata/v4/Context.js +66 -22
- package/src/sap/ui/model/odata/v4/ODataBinding.js +10 -11
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +207 -180
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +75 -52
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +9 -11
- package/src/sap/ui/model/odata/v4/ODataModel.js +34 -35
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +9 -9
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +20 -8
- package/src/sap/ui/model/odata/v4/SubmitMode.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +126 -46
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +56 -11
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +21 -34
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +16 -27
- package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +2 -6
- package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Parser.js +6 -5
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +49 -38
- package/src/sap/ui/model/odata/v4/lib/_TreeState.js +75 -24
- package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +3 -4
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +4 -12
- package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +1 -1
- 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 +48 -4
- 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 +1 -1
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +4 -1
- package/src/sap/ui/test/ModuleTracking.js +46 -0
- package/src/sap/ui/test/OpaBuilder.js +19 -19
- package/src/sap/ui/test/autowaiter/_jsAnimationWaiter.js +39 -6
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/sap/ui/util/_enforceNoReturnValue.js +3 -1
- package/src/ui5loader-autoconfig.js +22 -16
- package/src/ui5loader.js +38 -1
- package/test/sap/ui/core/demokit/docuindex.json +17 -6
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicMessages/Component.js +1 -1
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicMessages/Controller.controller.js +30 -47
- package/test/sap/ui/core/demokit/sample/Messaging/BasicMessages/MessagePopover.fragment.xml +13 -0
- package/test/sap/ui/core/demokit/sample/Messaging/BasicMessages/View.view.xml +135 -0
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicMessages/manifest.json +2 -2
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/Component.js +1 -1
- package/test/sap/ui/core/demokit/sample/Messaging/BasicODataMessages/Controller.controller.js +58 -0
- package/test/sap/ui/core/demokit/sample/Messaging/BasicODataMessages/MessagePopover.fragment.xml +13 -0
- package/test/sap/ui/core/demokit/sample/Messaging/BasicODataMessages/View.view.xml +57 -0
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/localService/mockserver.js +11 -13
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/manifest.json +2 -2
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/Component.js +1 -1
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/manifest.json +2 -1
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/package.json +1 -1
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/Component.js +2 -2
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/controller/App.controller.js +12 -0
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/controller/BaseController.js +41 -0
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/controller/Employee.controller.js +54 -0
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/controller/NotFound.controller.js +9 -11
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/fragment/MessagePopover.fragment.xml +13 -0
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/i18n/i18n.properties +9 -0
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/index.html +20 -0
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/index.js +16 -0
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/mockserver.js +27 -27
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/manifest.json +7 -4
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/view/App.view.xml +1 -1
- package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/view/Employee.view.xml +6 -6
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/view/NotFound.view.xml +13 -0
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Types.controller.js +1 -1
- package/test/sap/ui/core/demokit/sample/common/Helper.js +8 -9
- package/test/sap/ui/core/demokit/sample/common/SandboxModelHelper.js +1 -1
- package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithOPA5/GherkinTestRunner.html +2 -2
- package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithPageObjects/GherkinTestRunner.html +2 -2
- package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithQUnit/GherkinTestRunner.html +2 -2
- package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithQUnit/Steps.js +4 -5
- package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithUIComponent/GherkinTestRunner.html +2 -2
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/Main.controller.js +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Draft/ObjectPage.controller.js +2 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/MIT.ListBinding.html +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Main.controller.js +5 -7
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Main.view.xml +2 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/MIT.ListBindingTemplate.html +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +3 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.view.xml +6 -5
- package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/ObjectPage.controller.js +5 -7
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/MIT.Products.html +2 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/pages/Main.js +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +27 -9
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/MIT.SalesOrderTP100.html +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/MIT.SalesOrderTP100.html +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.Basics.html +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.SalesOrderAdditionalTargets.html +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.SalesOrderCreate.html +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.SalesOrderCreateMultiple.html +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.SalesOrderCreateRelative.html +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.SalesOrderMessageHandling.html +3 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.controller.js +5 -5
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.view.xml +3 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/pages/Main.js +7 -9
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/MessageHandling.js +3 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/MIT.RTA.html +2 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/MIT.SalesOrdersTemplate.html +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/MIT.Sticky.html +3 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Main.controller.js +3 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/pages/Main.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
- package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.view.xml +1 -1
- package/test/sap/ui/core/qunit/CustomStyleClassSupport.qunit.js +12 -3
- package/test/sap/ui/core/qunit/CustomThemeFallback.qunit.js +33 -38
- package/test/sap/ui/core/qunit/CustomThemeFallback_unavoidablySync.qunit.js +119 -0
- package/test/sap/ui/core/qunit/EventBus.qunit.js +15 -0
- package/test/sap/ui/core/qunit/Lib_terminologies.qunit.js +109 -0
- package/test/sap/ui/core/qunit/StashedControlSupport_unavoidablySync.qunit.js +19 -0
- package/test/sap/ui/core/qunit/StashedControlSupport_unavoidablySync.view.xml +27 -0
- package/test/sap/ui/core/qunit/app/ThemeClassParameters.qunit.js +105 -140
- package/test/sap/ui/core/qunit/app/testsuite.app.qunit.js +75 -2
- package/test/sap/ui/core/qunit/base/Config.qunit.js +6 -2
- package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.html +4 -1
- package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.js +6 -2
- package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +6 -3
- package/test/sap/ui/core/qunit/base/Config_global.qunit.html +5 -2
- package/test/sap/ui/core/qunit/base/Config_meta.qunit.html +5 -2
- package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.html +5 -2
- package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.js +5 -1
- package/test/sap/ui/core/qunit/base/Config_url.qunit.html +5 -2
- package/test/sap/ui/core/qunit/bootstrap/BootstrapWithNoJQuery-without-jquery-ui-position.qunit.html +2 -1
- package/test/sap/ui/core/qunit/bootstrap/BootstrapWithNoJQuery.qunit.html +2 -1
- package/test/sap/ui/core/qunit/bootstrap/DebugMode.beforeBootstrap.qunit.js +7 -0
- package/test/sap/ui/core/qunit/bootstrap/DebugModeAsync.qunit.html +10 -4
- package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +7 -0
- package/test/sap/ui/core/qunit/component/Component_keepAlive.qunit.js +9 -0
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessAmbiguous.html +2 -2
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessDuplicate.html +2 -2
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessFailing.html +2 -2
- package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.html +2 -2
- package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.html +2 -2
- package/test/sap/ui/core/qunit/gherkin/testHarnessTests.js +1 -1
- package/test/sap/ui/core/qunit/i18n/GenericLocaleData.qunit.js +1 -1
- package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +15 -15
- package/test/sap/ui/core/qunit/i18n/testsuite.i18n.qunit.js +7 -1
- package/test/sap/ui/core/qunit/loader/config.qunit.js +14 -6
- package/test/sap/ui/core/qunit/model/PropertyBinding.qunit.js +288 -0
- package/test/sap/ui/core/qunit/model/controlhelper/TreeBindingProxy.qunit.js +12 -0
- package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +7 -2
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +225 -40
- package/test/sap/ui/core/qunit/odata/v2/ODataPropertyBinding.qunit.js +78 -7
- package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +142 -17
- package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +93 -87
- package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +116 -86
- package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +3 -3
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1828 -548
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +26 -23
- package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +9 -0
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +251 -113
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +50 -0
- package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +3 -3
- package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +31 -11
- package/test/sap/ui/core/qunit/odata/v4/lib/_Parser.qunit.js +8 -2
- package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +46 -31
- package/test/sap/ui/core/qunit/odata/v4/lib/_TreeState.qunit.js +144 -45
- package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +5 -5
- package/test/sap/ui/core/qunit/odata/v4/lib/data/v2/QM_INSP_PLAN_SRV/metadata.xml +3 -3
- package/test/sap/ui/core/qunit/odata/v4/lib/data/v2/QM_INSP_PLAN_SRV/metadata_only.xml +3 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +82 -0
- package/test/sap/ui/core/qunit/testdata/libraries/terminologies/simple/i18n/i18n_fr.properties +1 -0
- package/test/sap/ui/core/qunit/testdata/libraries/terminologies/simple/i18n/terminologies/oil/i18n_fr.properties +2 -0
- package/test/sap/ui/core/qunit/testdata/libraries/terminologies/simple/library-preload.js +2 -2
- package/test/sap/ui/core/qunit/testdata/uilib-custom-theme-fallback/themes/sap_hcb/library.css +3 -0
- package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +19 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +14 -0
- package/test/sap/ui/core/qunit/types/NumberFormat.qunit.js +37 -20
- package/test/sap/ui/core/qunit/types/NumberFormatCurrencies.qunit.js +21 -0
- package/test/sap/ui/core/qunit/types/Types.qunit.js +126 -15
- package/test/sap/ui/core/qunit/ui5classes/ManagedObject.qunit.js +58 -4
- package/test/sap/ui/core/relnotes/changes-1.122.json +0 -22
- package/test/sap/ui/core/relnotes/changes-1.123.json +47 -0
- package/test/sap/ui/core/samples/databinding/DataBindingDeclarativeSyntax.js +55 -56
- package/test/sap/ui/core/samples/databinding/DatabindingDeclarativeSyntax.html +4 -4
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
- package/test/testsuite/js/testfwk.js +47 -64
- package/test/sap/ui/core/demokit/sample/MessageManager/BasicMessages/MessagePopover.fragment.xml +0 -13
- package/test/sap/ui/core/demokit/sample/MessageManager/BasicMessages/View.view.xml +0 -136
- package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/Controller.controller.js +0 -74
- package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/MessagePopover.fragment.xml +0 -13
- package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/View.view.xml +0 -58
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +0 -11
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/controller/App.controller.js +0 -14
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/controller/BaseController.js +0 -55
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/controller/Employee.controller.js +0 -56
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/fragment/MessagePopover.fragment.xml +0 -13
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/i18n/i18n.properties +0 -5
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/index.html +0 -42
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/view/NotFound.view.xml +0 -11
- package/test/sap/ui/core/qunit/app/beforeBootstrap.js +0 -19
- package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.html +0 -24
- /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/localService/metadata.xml +0 -0
- /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/localService/mockdata/Employees.json +0 -0
- /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/localService/response/ODataErrorResponse.json +0 -0
- /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/metadata.xml +0 -0
- /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/mockdata/Employees.json +0 -0
- /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/mockdata/Employees_3.json +0 -0
- /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/response/ODataErrorResponseTemplate.json +0 -0
- /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/response/SAP-Message-Header.json +0 -0
|
@@ -131,7 +131,7 @@ sap.ui.define([
|
|
|
131
131
|
throw new Error("Completed more PATCH requests than sent");
|
|
132
132
|
}
|
|
133
133
|
this.iPatchCounter -= 1;
|
|
134
|
-
this.bPatchSuccess
|
|
134
|
+
this.bPatchSuccess &&= bSuccess;
|
|
135
135
|
if (this.iPatchCounter === 0) {
|
|
136
136
|
this.fireEvent("patchCompleted", {success : this.bPatchSuccess});
|
|
137
137
|
this.bPatchSuccess = true;
|
|
@@ -296,10 +296,10 @@ sap.ui.define([
|
|
|
296
296
|
}
|
|
297
297
|
return true;
|
|
298
298
|
case "$expand":
|
|
299
|
-
mAggregatedQueryOptions.$expand
|
|
299
|
+
mAggregatedQueryOptions.$expand ??= {};
|
|
300
300
|
return Object.keys(mQueryOptions0.$expand).every(mergeExpandPath);
|
|
301
301
|
case "$select":
|
|
302
|
-
mAggregatedQueryOptions.$select
|
|
302
|
+
mAggregatedQueryOptions.$select ??= [];
|
|
303
303
|
return mQueryOptions0.$select.every(mergeSelectPath);
|
|
304
304
|
default:
|
|
305
305
|
if (bAdd) {
|
|
@@ -398,8 +398,8 @@ sap.ui.define([
|
|
|
398
398
|
sChangeReason = ChangeReason.Filter;
|
|
399
399
|
} else if (sName === "$orderby" && sChangeReason !== ChangeReason.Filter) {
|
|
400
400
|
sChangeReason = ChangeReason.Sort;
|
|
401
|
-
} else
|
|
402
|
-
sChangeReason
|
|
401
|
+
} else {
|
|
402
|
+
sChangeReason ??= ChangeReason.Change;
|
|
403
403
|
}
|
|
404
404
|
}
|
|
405
405
|
|
|
@@ -1069,7 +1069,7 @@ sap.ui.define([
|
|
|
1069
1069
|
return _Helper.getQueryOptionsForPath(this.getQueryOptionsFromParameters(), sPath);
|
|
1070
1070
|
}
|
|
1071
1071
|
|
|
1072
|
-
oContext
|
|
1072
|
+
oContext ??= this.oContext;
|
|
1073
1073
|
// oContext is always set; as getQueryOptionsForPath is called only from ODLB#doCreateCache
|
|
1074
1074
|
// binding has no parameters -> no own query options
|
|
1075
1075
|
if (!this.bRelative || !oContext.getQueryOptionsForPath) {
|
|
@@ -1343,7 +1343,7 @@ sap.ui.define([
|
|
|
1343
1343
|
};
|
|
1344
1344
|
|
|
1345
1345
|
/**
|
|
1346
|
-
* Resumes this binding. The binding can again fire change events and
|
|
1346
|
+
* Resumes this binding. The binding can again fire change events and initiate data service
|
|
1347
1347
|
* requests.
|
|
1348
1348
|
*
|
|
1349
1349
|
* @param {boolean} bAsPrerenderingTask
|
|
@@ -1390,7 +1390,7 @@ sap.ui.define([
|
|
|
1390
1390
|
};
|
|
1391
1391
|
|
|
1392
1392
|
/**
|
|
1393
|
-
* Resumes this binding. The binding can then again fire change events and
|
|
1393
|
+
* Resumes this binding. The binding can then again fire change events and initiate data service
|
|
1394
1394
|
* requests.
|
|
1395
1395
|
* Before 1.53.0, this method was not supported and threw an error.
|
|
1396
1396
|
*
|
|
@@ -1452,7 +1452,7 @@ sap.ui.define([
|
|
|
1452
1452
|
};
|
|
1453
1453
|
|
|
1454
1454
|
/**
|
|
1455
|
-
* Suspends this binding. A suspended binding does not fire change events nor does it
|
|
1455
|
+
* Suspends this binding. A suspended binding does not fire change events nor does it initiate
|
|
1456
1456
|
* data service requests. Call {@link #resume} to resume the binding. Before 1.53.0, this method
|
|
1457
1457
|
* was not supported and threw an error. Since 1.97.0, pending changes are ignored if they
|
|
1458
1458
|
* relate to a {@link sap.ui.model.odata.v4.Context#isKeepAlive kept-alive} context of this
|
|
@@ -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.123.1
|
|
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
|
|
@@ -226,7 +226,7 @@ sap.ui.define([
|
|
|
226
226
|
* type information.
|
|
227
227
|
* If the binding's path cannot be resolved or if reading the binding's value fails or if the
|
|
228
228
|
* value read is invalid (e.g. not a primitive value), the binding's value is reset to
|
|
229
|
-
* <code>undefined</code>. As described above, this may
|
|
229
|
+
* <code>undefined</code>. As described above, this may initiate a change event depending on the
|
|
230
230
|
* previous value and the <code>bForceUpdate</code> parameter. In the end the data state is
|
|
231
231
|
* checked (see {@link sap.ui.model.PropertyBinding#checkDataState}) even if there is no change
|
|
232
232
|
* event. If there are multiple synchronous <code>checkUpdateInternal</code> calls the data
|
|
@@ -341,8 +341,7 @@ sap.ui.define([
|
|
|
341
341
|
});
|
|
342
342
|
if (bForceUpdate && vValue.isFulfilled()) {
|
|
343
343
|
if (vType && vType.isFulfilled && vType.isFulfilled()) {
|
|
344
|
-
|
|
345
|
-
.call(this, vType.getResult(), this.sInternalType);
|
|
344
|
+
this.doSetType(vType.getResult());
|
|
346
345
|
}
|
|
347
346
|
this.vValue = vValue.getResult();
|
|
348
347
|
}
|
|
@@ -356,7 +355,7 @@ sap.ui.define([
|
|
|
356
355
|
|
|
357
356
|
if (oCallToken === that.oCheckUpdateCallToken) { // latest call to checkUpdateInternal
|
|
358
357
|
that.oCheckUpdateCallToken = undefined;
|
|
359
|
-
|
|
358
|
+
that.doSetType(oType);
|
|
360
359
|
if (oCallToken.forceUpdate || that.vValue !== vValue) {
|
|
361
360
|
that.bInitial = false;
|
|
362
361
|
that.vValue = vValue;
|
|
@@ -423,6 +422,19 @@ sap.ui.define([
|
|
|
423
422
|
return this.isRoot() ? this.mQueryOptions : undefined;
|
|
424
423
|
};
|
|
425
424
|
|
|
425
|
+
/**
|
|
426
|
+
* Sets the given type for this binding while keeping its internal type.
|
|
427
|
+
*
|
|
428
|
+
* @param {sap.ui.model.Type} oType
|
|
429
|
+
* The type for this binding
|
|
430
|
+
*
|
|
431
|
+
* @private
|
|
432
|
+
* @see sap.ui.model.PropertyBinding#setType
|
|
433
|
+
*/
|
|
434
|
+
ODataPropertyBinding.prototype.doSetType = function (oType) {
|
|
435
|
+
PropertyBinding.prototype.setType.call(this, oType, this.sInternalType);
|
|
436
|
+
};
|
|
437
|
+
|
|
426
438
|
/**
|
|
427
439
|
* @override
|
|
428
440
|
* @see sap.ui.model.odata.v4.ODataBinding#getDependentBindings
|
|
@@ -673,7 +685,7 @@ sap.ui.define([
|
|
|
673
685
|
};
|
|
674
686
|
|
|
675
687
|
/**
|
|
676
|
-
* Sets the (base) context if the binding path is relative.
|
|
688
|
+
* Sets the (base) context if the binding path is relative. Invokes (@link #fetchCache) to
|
|
677
689
|
* create a cache and {@link #checkUpdate} to check for the current value if the
|
|
678
690
|
* context has changed. In case of absolute bindings nothing is done.
|
|
679
691
|
*
|
|
@@ -695,7 +707,7 @@ sap.ui.define([
|
|
|
695
707
|
// Note: this.oType => this.sReducedPath
|
|
696
708
|
&& _Helper.getMetaPath(this.oModel.resolve(this.sPath, oContext))
|
|
697
709
|
!== _Helper.getMetaPath(this.sReducedPath)) {
|
|
698
|
-
|
|
710
|
+
this.doSetType(undefined);
|
|
699
711
|
}
|
|
700
712
|
this.sReducedPath = undefined;
|
|
701
713
|
}
|
|
@@ -746,7 +758,7 @@ sap.ui.define([
|
|
|
746
758
|
* {@link sap.ui.model.odata.v4.ODataModel#event:propertyChange 'propertyChange'} event is
|
|
747
759
|
* fired and provides a promise on the outcome of the asynchronous operation. Since 1.122.0
|
|
748
760
|
* this method allows updates to the client-side annotation "@$ui5.context.isSelected". Note:
|
|
749
|
-
* Changing the value of a client-side annotation never
|
|
761
|
+
* Changing the value of a client-side annotation never initiates a PATCH request, no matter
|
|
750
762
|
* which <code>sGroupId</code> is given. Thus, it cannot be reverted via {@link #resetChanges}.
|
|
751
763
|
*
|
|
752
764
|
* @param {any} vValue
|
|
@@ -25,7 +25,7 @@ sap.ui.define(function () {
|
|
|
25
25
|
API : "API",
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
-
* Requests associated with the group ID are sent in a batch request which is
|
|
28
|
+
* Requests associated with the group ID are sent in a batch request which is initiated
|
|
29
29
|
* automatically before rendering.
|
|
30
30
|
* @public
|
|
31
31
|
*/
|
|
@@ -176,6 +176,7 @@ sap.ui.define([
|
|
|
176
176
|
return SyncPromise.resolve(
|
|
177
177
|
this.oRequestor.request("DELETE", sEditUrl, oGroupLock, {"If-Match" : oElement})
|
|
178
178
|
).then(() => {
|
|
179
|
+
this.oTreeState.delete(oElement);
|
|
179
180
|
// the element might have moved due to parallel insert/delete
|
|
180
181
|
iIndex = _Cache.getElementIndex(this.aElements, sPredicate, iIndex);
|
|
181
182
|
// remove in parent cache
|
|
@@ -402,6 +403,7 @@ sap.ui.define([
|
|
|
402
403
|
_Helper.getPrivateAnnotation(aElements[i], "transientPredicate")];
|
|
403
404
|
}
|
|
404
405
|
const aSpliced = aElements.splice(iIndex + 1, iCount);
|
|
406
|
+
aSpliced.$level = oGroupNode["@$ui5.node.level"];
|
|
405
407
|
aSpliced.$rank = _Helper.getPrivateAnnotation(oGroupNode, "rank");
|
|
406
408
|
_Helper.setPrivateAnnotation(oGroupNode, "spliced", aSpliced);
|
|
407
409
|
aElements.$count -= iCount;
|
|
@@ -554,7 +556,7 @@ sap.ui.define([
|
|
|
554
556
|
if (oCache === this.oFirstLevel && this.oAggregation.expandTo > 1) {
|
|
555
557
|
const [iRank] = await Promise.all([
|
|
556
558
|
this.requestRank(oEntityData, oGroupLock),
|
|
557
|
-
this.requestNodeProperty(oEntityData, oGroupLock)
|
|
559
|
+
this.requestNodeProperty(oEntityData, oGroupLock, /*bDropFilter*/true)
|
|
558
560
|
]);
|
|
559
561
|
|
|
560
562
|
oCache.removeElement(0, sTransientPredicate);
|
|
@@ -565,7 +567,7 @@ sap.ui.define([
|
|
|
565
567
|
_Helper.setPrivateAnnotation(oEntityData, "rank", iRank);
|
|
566
568
|
this.shiftRank(iIndex, +1);
|
|
567
569
|
} else {
|
|
568
|
-
await this.requestNodeProperty(oEntityData, oGroupLock);
|
|
570
|
+
await this.requestNodeProperty(oEntityData, oGroupLock, /*bDropFilter*/true);
|
|
569
571
|
}
|
|
570
572
|
|
|
571
573
|
return oEntityData;
|
|
@@ -588,7 +590,7 @@ sap.ui.define([
|
|
|
588
590
|
_AggregationCache.prototype.createGroupLevelCache = function (oGroupNode, bHasConcatHelper) {
|
|
589
591
|
var oAggregation = this.oAggregation,
|
|
590
592
|
iLevel = oGroupNode ? oGroupNode["@$ui5.node.level"] + 1 : 1,
|
|
591
|
-
aAllProperties, oCache, aGroupBy, bLeaf, mQueryOptions, bTotal;
|
|
593
|
+
aAllProperties, oCache, aGroupBy, bLeaf, sParentFilter, mQueryOptions, bTotal;
|
|
592
594
|
|
|
593
595
|
if (oAggregation.hierarchyQualifier) {
|
|
594
596
|
mQueryOptions = Object.assign({}, this.mQueryOptions);
|
|
@@ -605,8 +607,8 @@ sap.ui.define([
|
|
|
605
607
|
});
|
|
606
608
|
}
|
|
607
609
|
if (oGroupNode) {
|
|
608
|
-
|
|
609
|
-
|| _Helper.getKeyFilter(oGroupNode,
|
|
610
|
+
sParentFilter = _Helper.getPrivateAnnotation(oGroupNode, "filter")
|
|
611
|
+
|| _Helper.getKeyFilter(oGroupNode, this.sMetaPath, this.getTypes());
|
|
610
612
|
// Note: parent filter is just eq/and, no need for parentheses, but
|
|
611
613
|
// $$filterBeforeAggregate is a black box! Put specific filter 1st for performance!
|
|
612
614
|
mQueryOptions.$$filterBeforeAggregate = sParentFilter
|
|
@@ -625,6 +627,9 @@ sap.ui.define([
|
|
|
625
627
|
? _AggregationCache.calculateKeyPredicateRH.bind(null, oGroupNode, oAggregation)
|
|
626
628
|
: _AggregationCache.calculateKeyPredicate.bind(null, oGroupNode, aGroupBy,
|
|
627
629
|
aAllProperties, bLeaf, bTotal);
|
|
630
|
+
if (sParentFilter) {
|
|
631
|
+
oCache.$parentFilter = sParentFilter;
|
|
632
|
+
}
|
|
628
633
|
|
|
629
634
|
return oCache;
|
|
630
635
|
};
|
|
@@ -672,7 +677,7 @@ sap.ui.define([
|
|
|
672
677
|
this.aElements.$byPredicate = aOldElements.$byPredicate;
|
|
673
678
|
iCount = aSpliced.length;
|
|
674
679
|
this.aElements.$count = aOldElements.$count + iCount;
|
|
675
|
-
const iLevelDiff = oGroupNode["@$ui5.node.level"]
|
|
680
|
+
const iLevelDiff = oGroupNode["@$ui5.node.level"] - aSpliced.$level;
|
|
676
681
|
const iRankDiff = _Helper.getPrivateAnnotation(oGroupNode, "rank") - aSpliced.$rank;
|
|
677
682
|
aSpliced.forEach(function (oElement) {
|
|
678
683
|
var sPredicate = _Helper.getPrivateAnnotation(oElement, "predicate");
|
|
@@ -825,7 +830,7 @@ sap.ui.define([
|
|
|
825
830
|
return oPromise;
|
|
826
831
|
}
|
|
827
832
|
|
|
828
|
-
const sFilter = _Helper.getKeyFilter(oNode, this.
|
|
833
|
+
const sFilter = _Helper.getKeyFilter(oNode, this.sMetaPath, this.getTypes());
|
|
829
834
|
const mQueryOptions = Object.assign({}, this.mQueryOptions);
|
|
830
835
|
mQueryOptions.$apply = "ancestors($root" + this.oAggregation.$path
|
|
831
836
|
+ "," + this.oAggregation.hierarchyQualifier + "," + this.oAggregation.$NodeProperty
|
|
@@ -853,7 +858,7 @@ sap.ui.define([
|
|
|
853
858
|
const [iRank] = await Promise.all([
|
|
854
859
|
this.requestRank(oParent, oGroupLock),
|
|
855
860
|
this.requestProperties(oParent, aSelect, oGroupLock, true),
|
|
856
|
-
this.requestNodeProperty(oParent, oGroupLock)
|
|
861
|
+
this.requestNodeProperty(oParent, oGroupLock, /*bDropFilter*/false)
|
|
857
862
|
]);
|
|
858
863
|
|
|
859
864
|
// Note: overridden by _AggregationCache.calculateKeyPredicateRH
|
|
@@ -1108,14 +1113,27 @@ sap.ui.define([
|
|
|
1108
1113
|
oRankResult.value.forEach((oNode) => {
|
|
1109
1114
|
mPredicate2RankResult[getPredicate(oNode)] = oNode;
|
|
1110
1115
|
});
|
|
1116
|
+
// all nodes are considered in place until they are found to still have the same parent
|
|
1117
|
+
const oPredicatesNowInPlace = new Set(this.oTreeState.getOutOfPlacePredicates());
|
|
1111
1118
|
|
|
1112
1119
|
// import data
|
|
1113
1120
|
aNodeResults.forEach((oNodeResult) => {
|
|
1114
1121
|
oNodeResult.value.forEach((oNode) => {
|
|
1115
1122
|
const sPredicate = getPredicate(oNode);
|
|
1123
|
+
oPredicatesNowInPlace.delete(sPredicate); // still the same parent
|
|
1116
1124
|
if (this.aElements.$byPredicate[sPredicate]) {
|
|
1117
1125
|
return; // already read with the in-place request
|
|
1118
1126
|
}
|
|
1127
|
+
const sParentPredicate = this.oTreeState.getOutOfPlace(sPredicate).parentPredicate;
|
|
1128
|
+
const oParent = mPredicate2RankResult[sParentPredicate];
|
|
1129
|
+
if (oParent) { // parent has a rank
|
|
1130
|
+
const sDrillState = _Helper.drillDown(oParent, this.oAggregation.$DrillState);
|
|
1131
|
+
if (sDrillState === "collapsed") {
|
|
1132
|
+
return; // parent is collapsed -> do not insert
|
|
1133
|
+
}
|
|
1134
|
+
} else if (sParentPredicate) { // parent has no rank
|
|
1135
|
+
return; // do not insert
|
|
1136
|
+
} // else: no parent (root) -> insert
|
|
1119
1137
|
_Helper.merge(oNode, mPredicate2RankResult[sPredicate]);
|
|
1120
1138
|
// Note: overridden by _AggregationCache.calculateKeyPredicateRH
|
|
1121
1139
|
this.oFirstLevel.calculateKeyPredicate(oNode, this.getTypes(), this.sMetaPath);
|
|
@@ -1124,6 +1142,8 @@ sap.ui.define([
|
|
|
1124
1142
|
});
|
|
1125
1143
|
});
|
|
1126
1144
|
|
|
1145
|
+
oPredicatesNowInPlace.forEach((sPredicate) => this.oTreeState.deleteOutOfPlace(sPredicate));
|
|
1146
|
+
|
|
1127
1147
|
this.oTreeState.getOutOfPlaceGroupedByParent().forEach((oOutOfPlace) => {
|
|
1128
1148
|
// move the out-of-place nodes in creation order
|
|
1129
1149
|
const oParentRankResult = mPredicate2RankResult[oOutOfPlace.parentPredicate];
|
|
@@ -1285,25 +1305,17 @@ sap.ui.define([
|
|
|
1285
1305
|
/*fnSubmit*/null, function fnCancel() { /*nothing to do*/ }),
|
|
1286
1306
|
oReadPromise
|
|
1287
1307
|
]).then(([oPatchResult, iPreorderRank]) => {
|
|
1288
|
-
const updateChildNode = () => {
|
|
1308
|
+
const updateChildNode = (oAdditional = {}) => {
|
|
1289
1309
|
// update the cache with the PATCH response (Note: "@odata.etag" is optional!)
|
|
1290
1310
|
_Helper.updateExisting(this.mChangeListeners, sChildPredicate, oChildNode, {
|
|
1291
1311
|
"@odata.etag" : oPatchResult["@odata.etag"],
|
|
1292
|
-
"@$ui5.node.level" : oParentNode ? oParentNode["@$ui5.node.level"] + 1 : 1
|
|
1312
|
+
"@$ui5.node.level" : oParentNode ? oParentNode["@$ui5.node.level"] + 1 : 1,
|
|
1313
|
+
...oAdditional
|
|
1293
1314
|
});
|
|
1294
1315
|
};
|
|
1295
|
-
const iOldIndex = this.aElements.indexOf(oChildNode);
|
|
1296
1316
|
let iResult = 1;
|
|
1297
1317
|
|
|
1298
1318
|
if (this.oAggregation.expandTo > 1) {
|
|
1299
|
-
const iOffset = _Helper.getPrivateAnnotation(oChildNode, "descendants", 0) + 1;
|
|
1300
|
-
this.adjustDescendantCount(oChildNode, iOldIndex, -iOffset);
|
|
1301
|
-
this.shiftRank(iOldIndex, -iOffset);
|
|
1302
|
-
this.aElements.splice(iOldIndex, 1);
|
|
1303
|
-
this.oFirstLevel.move(_Helper.getPrivateAnnotation(oChildNode, "rank"),
|
|
1304
|
-
iPreorderRank, iOffset);
|
|
1305
|
-
updateChildNode();
|
|
1306
|
-
_Helper.setPrivateAnnotation(oChildNode, "rank", iPreorderRank);
|
|
1307
1319
|
switch (oParentNode ? oParentNode["@$ui5.node.isExpanded"] : true) {
|
|
1308
1320
|
case false:
|
|
1309
1321
|
iResult = this.expand(_GroupLock.$cached, sParentPredicate).unwrap() + 1;
|
|
@@ -1315,14 +1327,24 @@ sap.ui.define([
|
|
|
1315
1327
|
_Helper.updateAll(this.mChangeListeners, sParentPredicate, oParentNode,
|
|
1316
1328
|
{"@$ui5.node.isExpanded" : true}); // not a leaf anymore
|
|
1317
1329
|
}
|
|
1318
|
-
|
|
1330
|
+
// Note: iOldIndex might be affected by #expand above
|
|
1331
|
+
const iOldIndex = this.aElements.indexOf(oChildNode);
|
|
1332
|
+
const iOffset = _Helper.getPrivateAnnotation(oChildNode, "descendants", 0) + 1;
|
|
1333
|
+
this.adjustDescendantCount(oChildNode, iOldIndex, -iOffset);
|
|
1334
|
+
this.aElements.splice(iOldIndex, 1);
|
|
1335
|
+
const iOldRank = _Helper.getPrivateAnnotation(oChildNode, "rank");
|
|
1336
|
+
this.shiftRankForMove(iOldRank, iOffset, iPreorderRank);
|
|
1337
|
+
this.oFirstLevel.move(iOldRank, iPreorderRank, iOffset);
|
|
1338
|
+
updateChildNode({"@$ui5.context.isTransient" : undefined});
|
|
1339
|
+
_Helper.setPrivateAnnotation(oChildNode, "rank", iPreorderRank);
|
|
1340
|
+
const iNewIndex = this.getArrayIndex(iPreorderRank);
|
|
1319
1341
|
this.aElements.splice(iNewIndex, 0, oChildNode);
|
|
1320
|
-
this.shiftRank(iNewIndex, +iOffset);
|
|
1321
1342
|
this.adjustDescendantCount(oChildNode, iNewIndex, +iOffset);
|
|
1322
1343
|
|
|
1323
|
-
return iResult;
|
|
1344
|
+
return [iResult, iNewIndex];
|
|
1324
1345
|
}
|
|
1325
1346
|
|
|
1347
|
+
const iOldIndex = this.aElements.indexOf(oChildNode);
|
|
1326
1348
|
// remove original element from its cache's collection
|
|
1327
1349
|
const oOldParentCache = _Helper.getPrivateAnnotation(oChildNode, "parent");
|
|
1328
1350
|
oOldParentCache.removeElement(_Helper.getPrivateAnnotation(oChildNode, "rank", 0),
|
|
@@ -1381,7 +1403,7 @@ sap.ui.define([
|
|
|
1381
1403
|
}
|
|
1382
1404
|
}
|
|
1383
1405
|
|
|
1384
|
-
return iResult;
|
|
1406
|
+
return [iResult];
|
|
1385
1407
|
});
|
|
1386
1408
|
};
|
|
1387
1409
|
|
|
@@ -1403,9 +1425,18 @@ sap.ui.define([
|
|
|
1403
1425
|
(oNode) => _Helper.getPrivateAnnotation(oNode, "rank") === iParentRank);
|
|
1404
1426
|
aOutOfPlacePredicates.forEach((sNodePredicate) => {
|
|
1405
1427
|
const oNode = this.aElements.$byPredicate[sNodePredicate];
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1428
|
+
if (oNode) {
|
|
1429
|
+
const bExpanded = oNode["@$ui5.node.isExpanded"];
|
|
1430
|
+
if (bExpanded) {
|
|
1431
|
+
this.collapse(sNodePredicate);
|
|
1432
|
+
}
|
|
1433
|
+
const iNodeIndex = this.aElements.indexOf(oNode);
|
|
1434
|
+
this.aElements.splice(iNodeIndex, 1);
|
|
1435
|
+
this.aElements.splice(iParentIndex + 1, 0, oNode);
|
|
1436
|
+
if (bExpanded) {
|
|
1437
|
+
this.expand(_GroupLock.$cached, sNodePredicate);
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1409
1440
|
});
|
|
1410
1441
|
};
|
|
1411
1442
|
|
|
@@ -1625,7 +1656,7 @@ sap.ui.define([
|
|
|
1625
1656
|
// "before the given range"
|
|
1626
1657
|
// after a side-effects refresh out-of-place nodes may shift the visible range, we have
|
|
1627
1658
|
// to read as many nodes before this range to be on the safe side
|
|
1628
|
-
iPrefetchLength
|
|
1659
|
+
iPrefetchLength = Math.max(iPrefetchLength, this.oTreeState.getOutOfPlaceCount());
|
|
1629
1660
|
if (iStart > iPrefetchLength) {
|
|
1630
1661
|
iLength += iPrefetchLength;
|
|
1631
1662
|
iStart -= iPrefetchLength;
|
|
@@ -1634,9 +1665,13 @@ sap.ui.define([
|
|
|
1634
1665
|
iStart = 0;
|
|
1635
1666
|
}
|
|
1636
1667
|
|
|
1668
|
+
// Note: this.oFirstLevel.read changes this value
|
|
1669
|
+
const bSentRequest = this.oFirstLevel.bSentRequest;
|
|
1670
|
+
|
|
1637
1671
|
return SyncPromise.all([
|
|
1638
1672
|
this.oFirstLevel.read(iStart, iLength, 0, oGroupLock, fnDataRequested),
|
|
1639
|
-
|
|
1673
|
+
// request out-of-place nodes only once
|
|
1674
|
+
...(bSentRequest ? [] : this.requestOutOfPlaceNodes(oGroupLock))
|
|
1640
1675
|
]).then(function ([oResult, ...aOutOfPlaceResults]) {
|
|
1641
1676
|
// Note: this code must be idempotent, it might well run twice!
|
|
1642
1677
|
var oGrandTotal,
|
|
@@ -1674,13 +1709,11 @@ sap.ui.define([
|
|
|
1674
1709
|
|
|
1675
1710
|
that.addElements(oResult.value, iStart + iOffset, that.oFirstLevel, iStart);
|
|
1676
1711
|
for (j = 0; j < that.aElements.$count; j += 1) {
|
|
1677
|
-
|
|
1678
|
-
that.
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
j - iOffset, that.oFirstLevel);
|
|
1683
|
-
}
|
|
1712
|
+
that.aElements[j] ??= _AggregationHelper.createPlaceholder(
|
|
1713
|
+
that.oAggregation.expandTo > 1 || that.bUnifiedCache
|
|
1714
|
+
? /*don't know*/0
|
|
1715
|
+
: 1,
|
|
1716
|
+
j - iOffset, that.oFirstLevel);
|
|
1684
1717
|
}
|
|
1685
1718
|
|
|
1686
1719
|
that.handleOutOfPlaceNodes(aOutOfPlaceResults);
|
|
@@ -1799,18 +1832,23 @@ sap.ui.define([
|
|
|
1799
1832
|
* @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
|
|
1800
1833
|
* An original lock for the group ID to be used for the GET request, to be cloned via
|
|
1801
1834
|
* {@link sap.ui.model.odata.v4.lib._GroupLock#getUnlockedCopy}
|
|
1835
|
+
* @param {boolean} [bDropFilter]
|
|
1836
|
+
* Whether to drop the list's filter from the request in order to support out-of-place nodes
|
|
1837
|
+
* outside the list's current collection
|
|
1802
1838
|
* @returns {Promise<void>}
|
|
1803
1839
|
* A promise which is resolved without a defined result in case of success, or
|
|
1804
1840
|
* rejected in case of an error
|
|
1805
1841
|
*
|
|
1806
1842
|
* @private
|
|
1807
1843
|
*/
|
|
1808
|
-
_AggregationCache.prototype.requestNodeProperty = async function (oElement, oGroupLock
|
|
1844
|
+
_AggregationCache.prototype.requestNodeProperty = async function (oElement, oGroupLock,
|
|
1845
|
+
bDropFilter) {
|
|
1809
1846
|
if (_Helper.drillDown(oElement, this.oAggregation.$NodeProperty) !== undefined) {
|
|
1810
1847
|
return; // already available
|
|
1811
1848
|
}
|
|
1812
1849
|
|
|
1813
|
-
await this.requestProperties(oElement, [this.oAggregation.$NodeProperty], oGroupLock, true
|
|
1850
|
+
await this.requestProperties(oElement, [this.oAggregation.$NodeProperty], oGroupLock, true,
|
|
1851
|
+
bDropFilter);
|
|
1814
1852
|
};
|
|
1815
1853
|
|
|
1816
1854
|
/**
|
|
@@ -1864,6 +1902,9 @@ sap.ui.define([
|
|
|
1864
1902
|
* {@link sap.ui.model.odata.v4.lib._GroupLock#getUnlockedCopy}
|
|
1865
1903
|
* @param {boolean} [bInheritResult]
|
|
1866
1904
|
* Whether the result is inherited in the given element
|
|
1905
|
+
* @param {boolean} [bDropFilter]
|
|
1906
|
+
* Whether to drop the list's filter from the request in order to support out-of-place nodes
|
|
1907
|
+
* outside the list's current collection
|
|
1867
1908
|
* @returns {Promise<object|void>}
|
|
1868
1909
|
* A promise which is resolved without a defined result in case <code>bInheritResult</code> is
|
|
1869
1910
|
* set to <code>true</code>, or with the result object, or rejected in case of an error
|
|
@@ -1871,17 +1912,27 @@ sap.ui.define([
|
|
|
1871
1912
|
* @private
|
|
1872
1913
|
*/
|
|
1873
1914
|
_AggregationCache.prototype.requestProperties = async function (oElement, aSelect, oGroupLock,
|
|
1874
|
-
bInheritResult) {
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1915
|
+
bInheritResult, bDropFilter) {
|
|
1916
|
+
function getApply(mQueryOptions) { // keep $apply and custom query options
|
|
1917
|
+
mQueryOptions = {...mQueryOptions};
|
|
1918
|
+
// Note: $filter is overwritten below, $orderby is part of $apply already
|
|
1919
|
+
delete mQueryOptions.$count;
|
|
1920
|
+
delete mQueryOptions.$expand;
|
|
1921
|
+
delete mQueryOptions.$select;
|
|
1922
|
+
return mQueryOptions;
|
|
1923
|
+
}
|
|
1924
|
+
|
|
1925
|
+
const oCache = _Helper.getPrivateAnnotation(oElement, "parent");
|
|
1926
|
+
const mQueryOptions = bDropFilter
|
|
1927
|
+
? _AggregationHelper
|
|
1928
|
+
.dropFilter(this.oAggregation, this.mQueryOptions, oCache.$parentFilter)
|
|
1929
|
+
: getApply(oCache.getQueryOptions());
|
|
1930
|
+
mQueryOptions.$filter = _Helper.getKeyFilter(oElement, this.sMetaPath, this.getTypes());
|
|
1880
1931
|
const sResourcePath = this.sResourcePath
|
|
1881
|
-
+ this.oRequestor.buildQueryString(sMetaPath, mQueryOptions, false, true);
|
|
1932
|
+
+ this.oRequestor.buildQueryString(this.sMetaPath, mQueryOptions, false, true);
|
|
1882
1933
|
const oResult = await this.oRequestor.request("GET", sResourcePath,
|
|
1883
|
-
oGroupLock.getUnlockedCopy(), undefined, undefined, undefined, undefined,
|
|
1884
|
-
undefined, false, {$select : aSelect}, this);
|
|
1934
|
+
oGroupLock.getUnlockedCopy(), undefined, undefined, undefined, undefined,
|
|
1935
|
+
this.sMetaPath, undefined, false, {$select : aSelect}, this);
|
|
1885
1936
|
const oRequestedProperties = oResult.value[0];
|
|
1886
1937
|
|
|
1887
1938
|
if (bInheritResult) {
|
|
@@ -2031,6 +2082,35 @@ sap.ui.define([
|
|
|
2031
2082
|
}
|
|
2032
2083
|
};
|
|
2033
2084
|
|
|
2085
|
+
/**
|
|
2086
|
+
* Shifts the rank (aka. $skip index) of all other nodes or placeholders affected by the move of
|
|
2087
|
+
* a subtree of the given size from the given old to the given new rank. The subtree itself is
|
|
2088
|
+
* unaffected and may, but need not be present.
|
|
2089
|
+
*
|
|
2090
|
+
* @param {number} iOldRank - The old rank of the subtree's root node
|
|
2091
|
+
* @param {number} iSize - Size of subtree (number of moving elements)
|
|
2092
|
+
* @param {number} iNewRank - The new rank of the subtree's root node
|
|
2093
|
+
*
|
|
2094
|
+
* @private
|
|
2095
|
+
*/
|
|
2096
|
+
_AggregationCache.prototype.shiftRankForMove = function (iOldRank, iSize, iNewRank) {
|
|
2097
|
+
if (iOldRank < iNewRank) {
|
|
2098
|
+
this.aElements.forEach((oElement) => {
|
|
2099
|
+
const iRank = _Helper.getPrivateAnnotation(oElement, "rank");
|
|
2100
|
+
if (iOldRank + iSize <= iRank && iRank < iNewRank + iSize) {
|
|
2101
|
+
_Helper.setPrivateAnnotation(oElement, "rank", iRank - iSize);
|
|
2102
|
+
}
|
|
2103
|
+
});
|
|
2104
|
+
} else if (iNewRank < iOldRank) {
|
|
2105
|
+
this.aElements.forEach((oElement) => {
|
|
2106
|
+
const iRank = _Helper.getPrivateAnnotation(oElement, "rank");
|
|
2107
|
+
if (iNewRank <= iRank && iRank < iOldRank) {
|
|
2108
|
+
_Helper.setPrivateAnnotation(oElement, "rank", iRank + iSize);
|
|
2109
|
+
}
|
|
2110
|
+
});
|
|
2111
|
+
} // iOldRank === iNewRank => nothing to do
|
|
2112
|
+
};
|
|
2113
|
+
|
|
2034
2114
|
/**
|
|
2035
2115
|
* Returns the cache's URL.
|
|
2036
2116
|
*
|
|
@@ -296,12 +296,12 @@ sap.ui.define([
|
|
|
296
296
|
}
|
|
297
297
|
|
|
298
298
|
mQueryOptions = Object.assign({}, mQueryOptions);
|
|
299
|
-
oAggregation.groupLevels
|
|
299
|
+
oAggregation.groupLevels ??= [];
|
|
300
300
|
bIsLeafLevel = !iLevel || iLevel > oAggregation.groupLevels.length;
|
|
301
301
|
|
|
302
|
-
oAggregation.group
|
|
302
|
+
oAggregation.group ??= {};
|
|
303
303
|
oAggregation.groupLevels.forEach(function (sGroup) {
|
|
304
|
-
oAggregation.group[sGroup]
|
|
304
|
+
oAggregation.group[sGroup] ??= {};
|
|
305
305
|
});
|
|
306
306
|
aGroupBy = bIsLeafLevel
|
|
307
307
|
? Object.keys(oAggregation.group).sort().filter(function (sGroup) {
|
|
@@ -312,7 +312,7 @@ sap.ui.define([
|
|
|
312
312
|
aGroupBy = oAggregation.groupLevels.concat(aGroupBy);
|
|
313
313
|
}
|
|
314
314
|
|
|
315
|
-
oAggregation.aggregate
|
|
315
|
+
oAggregation.aggregate ??= {};
|
|
316
316
|
aAliases = Object.keys(oAggregation.aggregate).sort();
|
|
317
317
|
if (iLevel === 1 && !bFollowUp) {
|
|
318
318
|
aAliases.filter(function (sAlias) {
|
|
@@ -433,6 +433,9 @@ sap.ui.define([
|
|
|
433
433
|
* into the search expression parameter of an "ancestors()" transformation
|
|
434
434
|
* @param {object} [mQueryOptions={}]
|
|
435
435
|
* A map of key-value pairs representing the query string; it is not modified
|
|
436
|
+
* @param {string} [mQueryOptions.$$filterBeforeAggregate]
|
|
437
|
+
* The value for a filter which identifies a parent node; it is removed from the returned
|
|
438
|
+
* map and turned into a "filter()" transformation
|
|
436
439
|
* @param {string} [mQueryOptions.$filter]
|
|
437
440
|
* The value for a "$filter" system query option; it is removed from the returned map and
|
|
438
441
|
* turned into the filter expression parameter of an "ancestors()" transformation
|
|
@@ -458,12 +461,10 @@ sap.ui.define([
|
|
|
458
461
|
if (mQueryOptions.$select) {
|
|
459
462
|
let sPropertyPath = oAggregation["$" + sProperty];
|
|
460
463
|
if (!sPropertyPath) {
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
).getResult();
|
|
466
|
-
}
|
|
464
|
+
mRecursiveHierarchy ??= oAggregation.$fetchMetadata(oAggregation.$metaPath
|
|
465
|
+
+ "/@com.sap.vocabularies.Hierarchy.v1.RecursiveHierarchy#"
|
|
466
|
+
+ oAggregation.hierarchyQualifier
|
|
467
|
+
).getResult();
|
|
467
468
|
|
|
468
469
|
sPropertyPath = oAggregation["$" + sProperty]
|
|
469
470
|
= mRecursiveHierarchy[sProperty + "Property"]?.$PropertyPath
|
|
@@ -664,6 +665,50 @@ sap.ui.define([
|
|
|
664
665
|
return oPlaceholder;
|
|
665
666
|
},
|
|
666
667
|
|
|
668
|
+
/**
|
|
669
|
+
* Drops filter, search, and other stuff from the given query options and recursive
|
|
670
|
+
* hierarchy information, then adds the corresponding "$apply" system query option.
|
|
671
|
+
*
|
|
672
|
+
* @param {object} oAggregation
|
|
673
|
+
* An object holding the information needed for a recursive hierarchy; see
|
|
674
|
+
* {@link sap.ui.model.odata.v4.ODataListBinding#setAggregation}.
|
|
675
|
+
* @param {string} [oAggregation.search] - Ignored
|
|
676
|
+
* @param {object} mQueryOptions
|
|
677
|
+
* A map of key-value pairs representing the query string; it is not modified
|
|
678
|
+
* @param {string} [mQueryOptions.$$filterBeforeAggregate] - Removed from the returned map
|
|
679
|
+
* @param {string} [mQueryOptions.$apply] - Replaced in the returned map
|
|
680
|
+
* @param {string} [mQueryOptions.$count] - Removed from the returned map
|
|
681
|
+
* @param {string} [mQueryOptions.$expand] - Removed from the returned map
|
|
682
|
+
* @param {string} [mQueryOptions.$filter] - Removed from the returned map
|
|
683
|
+
* @param {string} [mQueryOptions.$orderby] - Removed from the returned map
|
|
684
|
+
* @param {string} [mQueryOptions.$select] - Removed from the returned map
|
|
685
|
+
* @param {string} [sFilterBeforeAggregate]
|
|
686
|
+
* The value for a filter which identifies a parent node; see
|
|
687
|
+
* {@link #buildApply4Hierarchy}
|
|
688
|
+
* @returns {object}
|
|
689
|
+
* A map of key-value pairs representing the query string, including a value for the
|
|
690
|
+
* "$apply" system query option; it is a modified copy of <code>mQueryOptions</code>, with
|
|
691
|
+
* values changed as described above
|
|
692
|
+
*/
|
|
693
|
+
dropFilter : function (oAggregation, mQueryOptions, sFilterBeforeAggregate) {
|
|
694
|
+
oAggregation = {...oAggregation};
|
|
695
|
+
delete oAggregation.search;
|
|
696
|
+
|
|
697
|
+
mQueryOptions = {...mQueryOptions};
|
|
698
|
+
delete mQueryOptions.$count;
|
|
699
|
+
delete mQueryOptions.$expand;
|
|
700
|
+
delete mQueryOptions.$filter;
|
|
701
|
+
delete mQueryOptions.$orderby;
|
|
702
|
+
delete mQueryOptions.$select;
|
|
703
|
+
if (sFilterBeforeAggregate) {
|
|
704
|
+
mQueryOptions.$$filterBeforeAggregate = sFilterBeforeAggregate;
|
|
705
|
+
} else {
|
|
706
|
+
delete mQueryOptions.$$filterBeforeAggregate;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
return _AggregationHelper.buildApply4Hierarchy(oAggregation, mQueryOptions);
|
|
710
|
+
},
|
|
711
|
+
|
|
667
712
|
/**
|
|
668
713
|
* Extract subtotals and their units from the given group node, so that they can be used
|
|
669
714
|
* for an extra row showing subtotals at the bottom and also to restore them when
|
|
@@ -954,7 +999,7 @@ sap.ui.define([
|
|
|
954
999
|
delete mQueryOptions.$filter;
|
|
955
1000
|
delete mQueryOptions.$orderby;
|
|
956
1001
|
mQueryOptions = _AggregationHelper.buildApply(oAggregation, mQueryOptions, 1);
|
|
957
|
-
const aNodeFilters = oOutOfPlace.nodeFilters.
|
|
1002
|
+
const aNodeFilters = oOutOfPlace.nodeFilters.slice().sort();
|
|
958
1003
|
mQueryOptions.$filter = aNodeFilters.join(" or ");
|
|
959
1004
|
mQueryOptions.$top = aNodeFilters.length;
|
|
960
1005
|
const iDrillStateIndex = mQueryOptions.$select.indexOf(oAggregation.$DrillState);
|