@openui5/sap.ui.core 1.120.0 → 1.120.2
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/.reuse/dep5 +1 -1
- 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 +2 -2
- package/src/sap/base/Eventing.js +1 -1
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/i18n/Formatting.js +30 -14
- package/src/sap/base/i18n/LanguageTag.js +1 -1
- package/src/sap/base/i18n/Localization.js +1 -2
- 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 +4 -4
- package/src/sap/ui/base/BindingParser.js +4 -4
- package/src/sap/ui/base/DataType.js +5 -5
- 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 +9 -65
- package/src/sap/ui/base/ManagedObjectMetadata.js +25 -1
- package/src/sap/ui/base/ManagedObjectRegistry.js +186 -169
- 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/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +55 -150
- package/src/sap/ui/core/ComponentContainer.js +5 -5
- package/src/sap/ui/core/ComponentMetadata.js +1 -1
- package/src/sap/ui/core/ComponentRegistry.js +153 -0
- package/src/sap/ui/core/ComponentSupport.js +3 -3
- package/src/sap/ui/core/Configuration.js +9 -7
- package/src/sap/ui/core/Control.js +6 -4
- package/src/sap/ui/core/Core.js +19 -71
- 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 +30 -142
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/ElementRegistry.js +159 -0
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/ExtensionPoint.js +5 -5
- package/src/sap/ui/core/FocusHandler.js +3 -2
- package/src/sap/ui/core/Fragment.js +7 -7
- 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/Lib.js +62 -32
- 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 +55 -11
- package/src/sap/ui/core/Manifest.js +4 -5
- package/src/sap/ui/core/Message.js +2 -1
- package/src/sap/ui/core/Messaging.js +2 -2
- package/src/sap/ui/core/RenderManager.js +1 -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/Shortcut.js +15 -9
- package/src/sap/ui/core/StaticArea.js +4 -1
- package/src/sap/ui/core/Theming.js +3 -3
- 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 +54 -12
- package/src/sap/ui/core/UIAreaRegistry.js +150 -0
- package/src/sap/ui/core/UIComponent.js +3 -3
- 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 +95 -76
- package/src/sap/ui/core/cldr/Unicode-Data-Files-LICENSE.txt +1 -1
- package/src/sap/ui/core/cldr/cy.json +12 -3
- package/src/sap/ui/core/cldr/en_AU.json +48 -12
- package/src/sap/ui/core/cldr/en_GB.json +24 -6
- package/src/sap/ui/core/cldr/en_HK.json +24 -6
- package/src/sap/ui/core/cldr/en_IE.json +24 -6
- package/src/sap/ui/core/cldr/en_IN.json +24 -6
- package/src/sap/ui/core/cldr/en_NZ.json +24 -6
- package/src/sap/ui/core/cldr/en_PG.json +24 -6
- package/src/sap/ui/core/cldr/en_SG.json +24 -6
- package/src/sap/ui/core/cldr/en_ZA.json +24 -6
- package/src/sap/ui/core/cldr/es.json +288 -72
- package/src/sap/ui/core/cldr/es_AR.json +288 -72
- package/src/sap/ui/core/cldr/es_BO.json +288 -72
- package/src/sap/ui/core/cldr/es_CL.json +144 -36
- package/src/sap/ui/core/cldr/es_CO.json +144 -36
- package/src/sap/ui/core/cldr/es_MX.json +288 -72
- package/src/sap/ui/core/cldr/fa.json +48 -12
- package/src/sap/ui/core/cldr/id.json +56 -14
- package/src/sap/ui/core/cldr/kk.json +184 -46
- package/src/sap/ui/core/cldr/ms.json +56 -14
- package/src/sap/ui/core/cldr/nb.json +36 -9
- package/src/sap/ui/core/cldr/nl.json +264 -66
- package/src/sap/ui/core/cldr/nl_BE.json +264 -66
- package/src/sap/ui/core/cldr/pt.json +288 -72
- package/src/sap/ui/core/cldr/pt_PT.json +288 -72
- package/src/sap/ui/core/cldr/sr.json +96 -24
- package/src/sap/ui/core/cldr/sr_Latn.json +72 -18
- package/src/sap/ui/core/date/Islamic.js +4 -4
- 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/format/DateFormat.js +25 -13
- 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 +9 -3
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +7 -7
- 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/message/MessageType.js +1 -1
- package/src/sap/ui/core/mvc/Controller.js +15 -13
- package/src/sap/ui/core/mvc/ControllerExtension.js +7 -5
- package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +2 -2
- package/src/sap/ui/core/mvc/ControllerMetadata.js +1 -1
- package/src/sap/ui/core/mvc/EventHandlerResolver.js +4 -4
- 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 +21 -10
- package/src/sap/ui/core/mvc/XMLView.js +8 -2
- 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/History.js +1 -1
- package/src/sap/ui/core/routing/Route.js +6 -6
- package/src/sap/ui/core/routing/Router.js +6 -6
- package/src/sap/ui/core/routing/Targets.js +3 -3
- package/src/sap/ui/core/routing/async/Target.js +2 -2
- package/src/sap/ui/core/routing/async/Targets.js +1 -1
- package/src/sap/ui/core/rules/Misc.support.js +3 -3
- package/src/sap/ui/core/search/OpenSearchProvider.js +2 -1
- package/src/sap/ui/core/search/SearchProvider.js +2 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +7 -5
- 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/theming/Parameters.js +7 -7
- package/src/sap/ui/core/theming/ThemeHelper.js +2 -2
- 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 +34 -3
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/_LocalizationHelper.js +122 -0
- 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/Binding.js +2 -2
- package/src/sap/ui/model/ClientListBinding.js +6 -3
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +6 -3
- package/src/sap/ui/model/CompositeDataState.js +5 -5
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/DataState.js +10 -10
- package/src/sap/ui/model/FilterProcessor.js +19 -16
- package/src/sap/ui/model/ManagedObjectBindingSupport.js +2 -2
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +10 -8
- 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/odata4analytics.js +6 -6
- 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/ODataListBinding.js +5 -2
- package/src/sap/ui/model/odata/ODataMessageParser.js +3 -3
- 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/ODataListBinding.js +5 -2
- package/src/sap/ui/model/odata/v2/ODataModel.js +9 -58
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +6 -3
- package/src/sap/ui/model/odata/v4/Context.js +32 -27
- package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -0
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +198 -155
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +2 -2
- package/src/sap/ui/model/odata/v4/ODataModel.js +9 -4
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +9 -6
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +220 -85
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +33 -20
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +70 -18
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +9 -5
- 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/performance/trace/Interaction.js +20 -16
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +5 -5
- package/src/sap/ui/test/BranchTracking.js +4 -0
- package/src/sap/ui/test/actions/EnterText.js +1 -1
- package/src/sap/ui/test/generic/GenericTestCollection.js +1 -0
- package/src/sap/ui/test/generic/TestBase.js +4 -4
- package/src/sap/ui/test/generic/Utils.js +3 -2
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader-autoconfig.js +23 -15
- package/src/ui5loader.js +9 -4
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/manifest.json +3 -10
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Template.controller.js +3 -3
- package/test/sap/ui/core/demokit/sample/common/Controller.js +0 -1
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/Component.js +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +14 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +6 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/MIT.MultipleInlineCreationRowsGrid.html +5 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.view.xml +9 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +23 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/pages/Main.js +58 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +75 -30
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +19 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +84 -28
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +3 -3
- package/test/sap/ui/core/demokit/tutorial/databinding/01/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/01/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/02/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/02/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/03/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/03/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/04/Component.js +9 -26
- package/test/sap/ui/core/demokit/tutorial/databinding/04/manifest.json +21 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/05/Component.js +9 -26
- package/test/sap/ui/core/demokit/tutorial/databinding/05/manifest.json +21 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/06/Component.js +9 -27
- package/test/sap/ui/core/demokit/tutorial/databinding/06/manifest.json +22 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/07/Component.js +9 -28
- package/test/sap/ui/core/demokit/tutorial/databinding/07/manifest.json +23 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/08/Component.js +9 -28
- package/test/sap/ui/core/demokit/tutorial/databinding/08/manifest.json +23 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/09/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/09/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/10/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/10/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/11/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/11/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/12/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/12/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/13/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/13/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/14/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/14/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/15/Component.js +9 -32
- package/test/sap/ui/core/demokit/tutorial/databinding/15/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/01/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/navigation/01/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/02/Component.js +9 -35
- package/test/sap/ui/core/demokit/tutorial/navigation/02/manifest.json +30 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/03/Component.js +9 -37
- package/test/sap/ui/core/demokit/tutorial/navigation/03/manifest.json +32 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/04/Component.js +9 -38
- package/test/sap/ui/core/demokit/tutorial/navigation/04/manifest.json +33 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/05/Component.js +9 -38
- package/test/sap/ui/core/demokit/tutorial/navigation/05/manifest.json +33 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/06/Component.js +9 -40
- package/test/sap/ui/core/demokit/tutorial/navigation/06/manifest.json +35 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/07/Component.js +9 -42
- package/test/sap/ui/core/demokit/tutorial/navigation/07/manifest.json +37 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/08/Component.js +9 -45
- package/test/sap/ui/core/demokit/tutorial/navigation/08/manifest.json +40 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/09/Component.js +9 -45
- package/test/sap/ui/core/demokit/tutorial/navigation/09/manifest.json +40 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/10/Component.js +9 -47
- package/test/sap/ui/core/demokit/tutorial/navigation/10/manifest.json +42 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/11/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/11/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/12/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/12/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/13/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/13/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/14/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/14/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/15/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/15/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/16/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/16/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/17/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/17/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
- package/test/sap/ui/core/qunit/BindingParser.qunit.js +4 -4
- package/test/sap/ui/core/qunit/ClientModel.qunit.js +28 -28
- package/test/sap/ui/core/qunit/CommandExecution.qunit.js +3 -1
- package/test/sap/ui/core/qunit/Core.qunit.js +1 -1
- package/test/sap/ui/core/qunit/DataBinding.qunit.js +6 -6
- package/test/sap/ui/core/qunit/Declarative.qunit.js +6 -6
- package/test/sap/ui/core/qunit/Element_base.qunit.js +8 -7
- package/test/sap/ui/core/qunit/Element_base_legacyAPIs.qunit.js +48 -0
- package/test/sap/ui/core/qunit/Element_closestTo.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Fragment.qunit.js +63 -13
- package/test/sap/ui/core/qunit/HTML.qunit.js +5 -5
- package/test/sap/ui/core/qunit/Lib.qunit.js +59 -0
- package/test/sap/ui/core/qunit/ManagedObject.qunit.js +86 -3
- package/test/sap/ui/core/qunit/PlaceAt.qunit.js +6 -6
- package/test/sap/ui/core/qunit/Shortcut.qunit.js +9 -1
- package/test/sap/ui/core/qunit/UIArea.qunit.js +7 -6
- package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +41 -0
- package/test/sap/ui/core/qunit/base/Config_cascade.qunit.html +7 -5
- package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +46 -7
- package/test/sap/ui/core/qunit/base/config/GlobalConfigForCascade.js +24 -21
- package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +19 -0
- package/test/sap/ui/core/qunit/component/Component.qunit.js +35 -11
- package/test/sap/ui/core/qunit/component/ComponentContainer.qunit.js +1 -1
- package/test/sap/ui/core/qunit/component/Models.qunit.js +29 -30
- package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +3 -3
- package/test/sap/ui/core/qunit/generic/ControlMemoryLeaks.qunit.js +4 -3
- package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +6 -7
- package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +3 -2
- package/test/sap/ui/core/qunit/generic/legacy/testsuite.generic.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/Islamic.qunit.js +4 -4
- package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +65 -0
- package/test/sap/ui/core/qunit/jquery.sap.ui.qunit.js +12 -12
- package/test/sap/ui/core/qunit/loader/syncMode_unavoidablySync.qunit.js +54 -1
- package/test/sap/ui/core/qunit/messages/messagesGeneral.qunit.js +3 -1
- package/test/sap/ui/core/qunit/mockserver/testdata/shopping/Products.json +1 -1
- package/test/sap/ui/core/qunit/model/ClientListBinding.qunit.js +2 -2
- package/test/sap/ui/core/qunit/model/ClientTreeBinding.qunit.js +2 -2
- package/test/sap/ui/core/qunit/model/FilterProcessor.qunit.js +58 -16
- package/test/sap/ui/core/qunit/model/Model.qunit.js +43 -2
- package/test/sap/ui/core/qunit/mvc/AnyView.qunit.js +3 -0
- package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +3 -2
- package/test/sap/ui/core/qunit/mvc/EventHandlerResolver.qunit.js +2 -2
- package/test/sap/ui/core/qunit/mvc/View.qunit.js +38 -35
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessor.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +5 -5
- package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/extensions/ControllerMetadata.qunit.js +6 -2
- package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions.qunit.js +12 -0
- package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions_legacy.qunit.js +12 -0
- package/test/sap/ui/core/qunit/mvc/extensions/testdata/AnotherMain.controller.js +3 -1
- package/test/sap/ui/core/qunit/mvc/testdata/XMLViewEmbeddingTypedViews.view.xml +1 -1
- package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +26 -7
- package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLTemplateProcessorRequireXML_legacyAPIs.qunit.js +5 -5
- package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +2 -2
- package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +36 -34
- package/test/sap/ui/core/qunit/odata/ODataModel_legacyAPIs.qunit.js +22 -22
- package/test/sap/ui/core/qunit/odata/ODataTreeBindingAdapter.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +16 -16
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +69 -0
- package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +2 -11
- package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +17 -17
- package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +32 -36
- package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +43 -22
- package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +19 -9
- package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +318 -217
- package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +5 -5
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +2148 -124
- package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +43 -35
- package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +20 -2
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +453 -125
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +70 -33
- package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +256 -8
- package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +10 -2
- package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +40 -1
- package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +11 -2
- package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +4 -7
- package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +102 -52
- package/test/sap/ui/core/qunit/routing/async/Target.qunit.js +1 -1
- package/test/sap/ui/core/qunit/routing/async/Targets.qunit.js +4 -5
- package/test/sap/ui/core/qunit/routing/async/TitleHistory.qunit.js +1 -1
- package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Child/Component.js +1 -0
- package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Child/manifest.json +1 -5
- package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Parent/Component.js +1 -0
- package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Parent/manifest.json +1 -5
- package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/ParentExtended/Component.js +15 -0
- package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/ParentExtended/manifest.json +8 -0
- package/test/sap/ui/core/qunit/routing/sync/Router.qunit.js +2 -2
- package/test/sap/ui/core/qunit/routing/sync/Targets.qunit.js +2 -3
- package/test/sap/ui/core/qunit/testdata/fragments/XMLTestFragmentWithXMLView.fragment.xml +5 -0
- package/test/sap/ui/core/qunit/testsuites/testsuite.base.configuration.qunit.js +1 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.control.framework.qunit.js +4 -0
- package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +190 -0
- package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +2 -2
- package/test/sap/ui/core/qunit/ui5classes/ManagedObjectRegistry.qunit.js +161 -0
- package/test/sap/ui/core/qunit/ui5classes/ManagedObjectRegistry_legacyAPIs.qunit.js +150 -0
- package/test/sap/ui/core/qunit/ui5classes/testsuite.ui5classes.qunit.js +84 -0
- package/test/sap/ui/core/qunit/util/ViewSerializer.qunit.js +4 -3
- package/test/sap/ui/core/relnotes/changes-1.120.json +307 -0
|
@@ -57,7 +57,7 @@ sap.ui.define([
|
|
|
57
57
|
* @mixes sap.ui.model.odata.v4.ODataParentBinding
|
|
58
58
|
* @public
|
|
59
59
|
* @since 1.37.0
|
|
60
|
-
* @version 1.120.
|
|
60
|
+
* @version 1.120.2
|
|
61
61
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
|
|
62
62
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
|
|
63
63
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
|
|
@@ -117,9 +117,13 @@ sap.ui.define([
|
|
|
117
117
|
this.checkBindingParameters(mParameters, ["$$aggregation", "$$canonicalPath",
|
|
118
118
|
"$$getKeepAliveContext", "$$groupId", "$$operationMode", "$$ownRequest",
|
|
119
119
|
"$$patchWithoutSideEffects", "$$sharedRequest", "$$updateGroupId"]);
|
|
120
|
+
const aFilters = _Helper.toArray(vFilters);
|
|
121
|
+
if (mParameters.$$aggregation && aFilters[0] === Filter.NONE) {
|
|
122
|
+
throw new Error("Cannot combine Filter.NONE with $$aggregation");
|
|
123
|
+
}
|
|
120
124
|
// number of active (client-side) created contexts in aContexts
|
|
121
125
|
this.iActiveContexts = 0;
|
|
122
|
-
this.aApplicationFilters =
|
|
126
|
+
this.aApplicationFilters = aFilters;
|
|
123
127
|
this.sChangeReason = oModel.bAutoExpandSelect && !_Helper.isDataAggregation(mParameters)
|
|
124
128
|
? "AddVirtualContext"
|
|
125
129
|
: undefined;
|
|
@@ -433,7 +437,7 @@ sap.ui.define([
|
|
|
433
437
|
* The context for the created entity
|
|
434
438
|
* @param {boolean} oEvent.getParameters.success
|
|
435
439
|
* Whether the POST was successfully processed; in case of an error, the error is already
|
|
436
|
-
* reported to
|
|
440
|
+
* reported to {@link sap.ui.core.Messaging}
|
|
437
441
|
*
|
|
438
442
|
* @event sap.ui.model.odata.v4.ODataListBinding#createCompleted
|
|
439
443
|
* @public
|
|
@@ -748,7 +752,7 @@ sap.ui.define([
|
|
|
748
752
|
* method then adds a transient entity to the parent's navigation property, which is sent with
|
|
749
753
|
* the payload of the parent entity. Such a nested context cannot be inactive.
|
|
750
754
|
*
|
|
751
|
-
* <b>Note:</b> After a
|
|
755
|
+
* <b>Note:</b> After a successful creation of the main entity the context returned for a
|
|
752
756
|
* nested entity is no longer valid. Do not use the
|
|
753
757
|
* {@link sap.ui.model.odata.v4.Context#created created} promise of such a context! New contexts
|
|
754
758
|
* are created for the nested collection because it is not possible to reliably assign the
|
|
@@ -1075,6 +1079,8 @@ sap.ui.define([
|
|
|
1075
1079
|
// created persisted contexts can be restored from their data, for example in
|
|
1076
1080
|
// case of Recursive Hierarchy maintenance
|
|
1077
1081
|
oContext = _Helper.getPrivateAnnotation(aResults[i], "context");
|
|
1082
|
+
oContext.iIndex = i$skipIndex;
|
|
1083
|
+
// oContext.checkUpdate(); // Note: no changes expected here
|
|
1078
1084
|
} else {
|
|
1079
1085
|
oContext = Context.create(oModel, this, sContextPath, i$skipIndex);
|
|
1080
1086
|
}
|
|
@@ -1526,7 +1532,8 @@ sap.ui.define([
|
|
|
1526
1532
|
* @param {number} iMaximumPrefetchSize
|
|
1527
1533
|
* The maximum number of rows to read before and after the given range
|
|
1528
1534
|
* @param {sap.ui.model.odata.v4.lib._GroupLock} [oGroupLock]
|
|
1529
|
-
* A lock for the group ID to be used
|
|
1535
|
+
* A lock for the group ID to be used; if not given, the read group lock or a lock to the
|
|
1536
|
+
* binding's group ID are used
|
|
1530
1537
|
* @param {boolean} [bAsync]
|
|
1531
1538
|
* Whether the function must be async even if the data is available synchronously
|
|
1532
1539
|
* @param {function} [fnDataRequested]
|
|
@@ -1550,7 +1557,10 @@ sap.ui.define([
|
|
|
1550
1557
|
// estimated length.
|
|
1551
1558
|
iStart += this.iCreatedContexts;
|
|
1552
1559
|
}
|
|
1553
|
-
|
|
1560
|
+
if (!oGroupLock) {
|
|
1561
|
+
oGroupLock = this.oReadGroupLock || this.lockGroup();
|
|
1562
|
+
this.oReadGroupLock = undefined;
|
|
1563
|
+
}
|
|
1554
1564
|
oPromise = this.fetchData(iStart, iLength, iMaximumPrefetchSize, oGroupLock,
|
|
1555
1565
|
fnDataRequested);
|
|
1556
1566
|
if (bAsync) {
|
|
@@ -1610,7 +1620,8 @@ sap.ui.define([
|
|
|
1610
1620
|
}
|
|
1611
1621
|
|
|
1612
1622
|
if (oCache) {
|
|
1613
|
-
if (!oCache.hasSentRequest() &&
|
|
1623
|
+
if (!oCache.hasSentRequest() && that.isRelative()
|
|
1624
|
+
&& ODataListBinding.isBelowCreated(oContext)) {
|
|
1614
1625
|
aElements = oContext.getAndRemoveCollection(that.sPath);
|
|
1615
1626
|
if (aElements) { // there is a collection from a finished deep create
|
|
1616
1627
|
// copy the created elements into the newly created cache
|
|
@@ -1645,13 +1656,14 @@ sap.ui.define([
|
|
|
1645
1656
|
/**
|
|
1646
1657
|
* Returns a URL by which the complete content of the list can be downloaded in JSON format. The
|
|
1647
1658
|
* request delivers all entities considering the binding's query options (such as filters or
|
|
1648
|
-
* sorters).
|
|
1659
|
+
* sorters). Returns <code>null</code> if the binding's filter is
|
|
1660
|
+
* {@link sap.ui.filter.Filter.NONE}.
|
|
1649
1661
|
*
|
|
1650
|
-
* @returns {sap.ui.base.SyncPromise<string>}
|
|
1651
|
-
* A promise that is resolved with the download URL
|
|
1662
|
+
* @returns {sap.ui.base.SyncPromise<string|null>}
|
|
1663
|
+
* A promise that is resolved with the download URL or <code>null</code>
|
|
1652
1664
|
* @throws {Error}
|
|
1653
1665
|
* If the binding is unresolved or is {@link #isTransient transient} (part of a
|
|
1654
|
-
* {@link sap.ui.model.odata.v4.ODataListBinding#create deep create})
|
|
1666
|
+
* {@link sap.ui.model.odata.v4.ODataListBinding#create deep create})
|
|
1655
1667
|
*
|
|
1656
1668
|
* @private
|
|
1657
1669
|
*/
|
|
@@ -1662,14 +1674,20 @@ sap.ui.define([
|
|
|
1662
1674
|
if (!this.isResolved()) {
|
|
1663
1675
|
throw new Error("Binding is unresolved");
|
|
1664
1676
|
}
|
|
1677
|
+
if (this.hasFilterNone()) {
|
|
1678
|
+
return SyncPromise.resolve(null);
|
|
1679
|
+
}
|
|
1680
|
+
|
|
1665
1681
|
return this.withCache(function (oCache, sPath) {
|
|
1666
1682
|
return oCache.getDownloadUrl(sPath, mUriParameters);
|
|
1667
1683
|
});
|
|
1668
1684
|
};
|
|
1669
1685
|
|
|
1670
1686
|
/**
|
|
1671
|
-
* Requests a $filter query option value for
|
|
1672
|
-
* given arrays of dynamic application and control filters and the given static filter.
|
|
1687
|
+
* Requests a $filter query option value for this binding; the value is computed from the
|
|
1688
|
+
* given arrays of dynamic application and control filters and the given static filter. If
|
|
1689
|
+
* {@link sap.ui.filter.Filter.NONE} is set as any of the dynamic filters, it will override
|
|
1690
|
+
* all static filters.
|
|
1673
1691
|
*
|
|
1674
1692
|
* @param {sap.ui.model.Context} oContext
|
|
1675
1693
|
* The context instance to be used; it is given as a parameter and this.oContext is unused
|
|
@@ -1678,7 +1696,7 @@ sap.ui.define([
|
|
|
1678
1696
|
* @param {string} sStaticFilter
|
|
1679
1697
|
* The static filter value
|
|
1680
1698
|
* @returns {sap.ui.base.SyncPromise} A promise which resolves with an array that consists of
|
|
1681
|
-
* two filters, the first one ("$filter") has to be
|
|
1699
|
+
* two filters, the first one ("$filter") has to be applied after and the second one
|
|
1682
1700
|
* ("$$filterBeforeAggregate") has to be applied before aggregating the data.
|
|
1683
1701
|
* Both can be <code>undefined</code>. It rejects with an error if a filter has an unknown
|
|
1684
1702
|
* operator or an invalid path.
|
|
@@ -1830,6 +1848,9 @@ sap.ui.define([
|
|
|
1830
1848
|
if (!oCombinedFilter) {
|
|
1831
1849
|
return SyncPromise.resolve([sStaticFilter]);
|
|
1832
1850
|
}
|
|
1851
|
+
if (oCombinedFilter === Filter.NONE) {
|
|
1852
|
+
return SyncPromise.resolve(["false"]);
|
|
1853
|
+
}
|
|
1833
1854
|
aFilters = _AggregationHelper.splitFilter(oCombinedFilter, this.mParameters.$$aggregation);
|
|
1834
1855
|
oMetaModel = this.oModel.getMetaModel();
|
|
1835
1856
|
oMetaContext = oMetaModel.getMetaContext(this.oModel.resolve(this.sPath, oContext));
|
|
@@ -1844,6 +1865,59 @@ sap.ui.define([
|
|
|
1844
1865
|
]);
|
|
1845
1866
|
};
|
|
1846
1867
|
|
|
1868
|
+
/**
|
|
1869
|
+
* Fetches (<code>bAllowRequest</code> must be set to <code>true</code>) or gets the parent node
|
|
1870
|
+
* of a given child node (in case of a recursive hierarchy; see {@link #setAggregation}).
|
|
1871
|
+
*
|
|
1872
|
+
* @param {sap.ui.model.odata.v4.Context} oNode
|
|
1873
|
+
* Some node which could have a parent
|
|
1874
|
+
* @param {boolean} [bAllowRequest]
|
|
1875
|
+
* Whether it is allowed to send a GET request to fetch the parent node's data
|
|
1876
|
+
* @returns {sap.ui.model.odata.v4.Context|null|undefined|
|
|
1877
|
+
* Promise<sap.ui.model.odata.v4.Context>|sap.ui.base.SyncPromise}
|
|
1878
|
+
* <ul>
|
|
1879
|
+
* <li> The parent node if already known,
|
|
1880
|
+
* <li> <code>null</code> if the given node is a root node and thus has no parent,
|
|
1881
|
+
* <li> <code>undefined</code> if the parent node hasn't been read yet and it is not
|
|
1882
|
+
* allowed to send a request (see <code>bAllowRequest</code>),
|
|
1883
|
+
* <li> a promise (if a request was sent) which resolves with the parent node or rejects
|
|
1884
|
+
* with an <code>Error</code> instance.
|
|
1885
|
+
* </ul>
|
|
1886
|
+
* @throws {Error} If the given node is not part of a recursive hierarchy
|
|
1887
|
+
*
|
|
1888
|
+
* @private
|
|
1889
|
+
*/
|
|
1890
|
+
ODataListBinding.prototype.fetchOrGetParent = function (oNode, bAllowRequest) {
|
|
1891
|
+
const oAggregation = this.mParameters.$$aggregation;
|
|
1892
|
+
|
|
1893
|
+
if (!oAggregation || !oAggregation.hierarchyQualifier) {
|
|
1894
|
+
throw new Error("Missing recursive hierarchy");
|
|
1895
|
+
}
|
|
1896
|
+
if (this.aContexts[oNode.iIndex] !== oNode) {
|
|
1897
|
+
throw new Error("Not currently part of a recursive hierarchy: " + oNode);
|
|
1898
|
+
}
|
|
1899
|
+
|
|
1900
|
+
const iParentIndex = this.oCache.getParentIndex(oNode.iIndex);
|
|
1901
|
+
if (iParentIndex < 0) {
|
|
1902
|
+
return null;
|
|
1903
|
+
}
|
|
1904
|
+
|
|
1905
|
+
if (iParentIndex === undefined && bAllowRequest) {
|
|
1906
|
+
return this.oCache.fetchParent(oNode.iIndex, this.lockGroup()).then((oResult) => {
|
|
1907
|
+
const sPath = this.getResolvedPath()
|
|
1908
|
+
+ _Helper.getPrivateAnnotation(oResult, "predicate");
|
|
1909
|
+
const oParentContext = Context.create(this.oModel, this, sPath);
|
|
1910
|
+
this.mPreviousContextsByPath[sPath] = oParentContext;
|
|
1911
|
+
|
|
1912
|
+
return oParentContext;
|
|
1913
|
+
});
|
|
1914
|
+
}
|
|
1915
|
+
|
|
1916
|
+
return bAllowRequest
|
|
1917
|
+
? this.requestContexts(iParentIndex, 1).then((aResult) => aResult[0])
|
|
1918
|
+
: this.aContexts[iParentIndex];
|
|
1919
|
+
};
|
|
1920
|
+
|
|
1847
1921
|
/**
|
|
1848
1922
|
* Requests the value for the given path and index; the value is requested from this binding's
|
|
1849
1923
|
* cache or from its context in case it has no cache.
|
|
@@ -1958,7 +2032,10 @@ sap.ui.define([
|
|
|
1958
2032
|
* <li> the binding is {@link #isTransient transient} (part of a
|
|
1959
2033
|
* {@link sap.ui.model.odata.v4.ODataListBinding#create deep create}),
|
|
1960
2034
|
* <li> an unsupported operation mode is used (see
|
|
1961
|
-
* {@link sap.ui.model.odata.v4.ODataModel#bindList})
|
|
2035
|
+
* {@link sap.ui.model.odata.v4.ODataModel#bindList}),
|
|
2036
|
+
* <li> the {@link sap.ui.model.Filter.NONE} filter instance is contained in
|
|
2037
|
+
* <code>vFilters</code> together with other filters,
|
|
2038
|
+
* <li> {@link sap.ui.model.Filter.NONE} is applied to a binding with $$aggregation
|
|
1962
2039
|
* </ul>
|
|
1963
2040
|
* The following pending changes are ignored:
|
|
1964
2041
|
* <ul>
|
|
@@ -1979,6 +2056,10 @@ sap.ui.define([
|
|
|
1979
2056
|
var aFilters = _Helper.toArray(vFilters);
|
|
1980
2057
|
|
|
1981
2058
|
this.checkTransient();
|
|
2059
|
+
Filter.checkFilterNone(aFilters);
|
|
2060
|
+
if (aFilters[0] === Filter.NONE && this.mParameters.$$aggregation) {
|
|
2061
|
+
throw new Error("Cannot combine Filter.NONE with $$aggregation");
|
|
2062
|
+
}
|
|
1982
2063
|
if (this.sOperationMode !== OperationMode.Server) {
|
|
1983
2064
|
throw new Error("Operation mode has to be sap.ui.model.odata.OperationMode.Server");
|
|
1984
2065
|
}
|
|
@@ -2050,10 +2131,10 @@ sap.ui.define([
|
|
|
2050
2131
|
* entity type, identified via the <code>hierarchyQualifier</code> given to
|
|
2051
2132
|
* {@link #setAggregation}.
|
|
2052
2133
|
* <ul>
|
|
2053
|
-
* <li> "$
|
|
2134
|
+
* <li> "$DistanceFromRoot" holds the path to the property which provides the raw
|
|
2054
2135
|
* value for "@$ui5.node.level" (minus one) and should be used only to interpret the
|
|
2055
2136
|
* response retrieved via {@link #getDownloadUrl}.
|
|
2056
|
-
* <li> "$
|
|
2137
|
+
* <li> "$DrillState" holds the path to the property which provides the raw value
|
|
2057
2138
|
* for "@$ui5.node.isExpanded" and should be used only to interpret the response retrieved
|
|
2058
2139
|
* via {@link #getDownloadUrl}.
|
|
2059
2140
|
* <li> "$NodeProperty" holds the path to the property which provides the hierarchy node
|
|
@@ -2069,7 +2150,7 @@ sap.ui.define([
|
|
|
2069
2150
|
ODataListBinding.prototype.getAggregation = function (bVerbose) {
|
|
2070
2151
|
return _Helper.clone(this.mParameters.$$aggregation, function (sKey, vValue) {
|
|
2071
2152
|
return sKey[0] === "$"
|
|
2072
|
-
&& !(bVerbose && ["$
|
|
2153
|
+
&& !(bVerbose && ["$DistanceFromRoot", "$DrillState",
|
|
2073
2154
|
"$NodeProperty"].includes(sKey))
|
|
2074
2155
|
? undefined
|
|
2075
2156
|
: vValue;
|
|
@@ -2209,7 +2290,6 @@ sap.ui.define([
|
|
|
2209
2290
|
aContexts,
|
|
2210
2291
|
bDataRequested = false,
|
|
2211
2292
|
bFireChange = false,
|
|
2212
|
-
oGroupLock,
|
|
2213
2293
|
bPreventBubbling,
|
|
2214
2294
|
oPromise,
|
|
2215
2295
|
bRefreshEvent = !!this.sChangeReason, // ignored for "*VirtualContext"
|
|
@@ -2296,13 +2376,11 @@ sap.ui.define([
|
|
|
2296
2376
|
iMaximumPrefetchSize = 0;
|
|
2297
2377
|
}
|
|
2298
2378
|
|
|
2299
|
-
oGroupLock = this.oReadGroupLock;
|
|
2300
|
-
this.oReadGroupLock = undefined;
|
|
2301
2379
|
if (!this.oDiff) { // w/o E.C.D there won't be a diff
|
|
2302
2380
|
// before fetchContexts needing it and resolveRefreshPromise destroying it
|
|
2303
2381
|
bPreventBubbling = this.isRefreshWithoutBubbling();
|
|
2304
2382
|
// make sure "refresh" is followed by async "change"
|
|
2305
|
-
oPromise = this.fetchContexts(iStart, iLength, iMaximumPrefetchSize,
|
|
2383
|
+
oPromise = this.fetchContexts(iStart, iLength, iMaximumPrefetchSize, undefined,
|
|
2306
2384
|
/*bAsync*/bRefreshEvent, function () {
|
|
2307
2385
|
bDataRequested = true;
|
|
2308
2386
|
that.fireDataRequested(bPreventBubbling);
|
|
@@ -2339,11 +2417,6 @@ sap.ui.define([
|
|
|
2339
2417
|
});
|
|
2340
2418
|
// in case of asynchronous processing ensure to fire a change event
|
|
2341
2419
|
bFireChange = true;
|
|
2342
|
-
} else if (oGroupLock) { // unexpected oReadGroupLock and oDiff
|
|
2343
|
-
if (oGroupLock.isLocked()) {
|
|
2344
|
-
throw new Error("Unexpected: " + oGroupLock);
|
|
2345
|
-
}
|
|
2346
|
-
Log.error("Unexpected", oGroupLock, sClassName);
|
|
2347
2420
|
}
|
|
2348
2421
|
if (!bKeepCurrent) {
|
|
2349
2422
|
this.iCurrentBegin = iStart;
|
|
@@ -2523,8 +2596,9 @@ sap.ui.define([
|
|
|
2523
2596
|
/**
|
|
2524
2597
|
* Returns a URL by which the complete content of the list can be downloaded in JSON format. The
|
|
2525
2598
|
* request delivers all entities considering the binding's query options (such as filters or
|
|
2526
|
-
* sorters).
|
|
2527
|
-
*
|
|
2599
|
+
* sorters). Returns <code>null</code> if the binding's filter is
|
|
2600
|
+
* {@link sap.ui.filter.Filter.NONE}.
|
|
2601
|
+
|
|
2528
2602
|
* The returned URL does not specify <code>$skip</code> and <code>$top</code> and leaves it up
|
|
2529
2603
|
* to the server how many rows it delivers. Many servers tend to choose a small limit without
|
|
2530
2604
|
* <code>$skip</code> and <code>$top</code>, so it might be wise to add an appropriate value for
|
|
@@ -2536,14 +2610,14 @@ sap.ui.define([
|
|
|
2536
2610
|
* The URL cannot be determined synchronously in all cases; use {@link #requestDownloadUrl} to
|
|
2537
2611
|
* allow for asynchronous determination then.
|
|
2538
2612
|
*
|
|
2539
|
-
* @returns {string}
|
|
2540
|
-
* The download URL
|
|
2613
|
+
* @returns {string|null}
|
|
2614
|
+
* The download URL or <code>null</code>
|
|
2541
2615
|
* @throws {Error}
|
|
2542
2616
|
* If the binding is unresolved or if the URL cannot be determined synchronously (either due
|
|
2543
2617
|
* to a pending metadata request or because the <code>autoExpandSelect</code> parameter at the
|
|
2544
2618
|
* {@link sap.ui.model.odata.v4.ODataModel#constructor model} is used and the binding has been
|
|
2545
2619
|
* newly created and is thus still automatically generating its $select and $expand system
|
|
2546
|
-
* query options from the binding hierarchy)
|
|
2620
|
+
* query options from the binding hierarchy).
|
|
2547
2621
|
*
|
|
2548
2622
|
* @function
|
|
2549
2623
|
* @public
|
|
@@ -2822,42 +2896,6 @@ sap.ui.define([
|
|
|
2822
2896
|
return aOrderbyOptions.join(",");
|
|
2823
2897
|
};
|
|
2824
2898
|
|
|
2825
|
-
/**
|
|
2826
|
-
* Returns the parent node of a given child node (in case of a recursive hierarchy, see
|
|
2827
|
-
* {@link sap.ui.model.odata.v4.ODataListBinding#setAggregation}, where
|
|
2828
|
-
* <code>oAggregation.expandTo</code> must be equal to one).
|
|
2829
|
-
*
|
|
2830
|
-
* @param {sap.ui.model.odata.v4.Context} oNode
|
|
2831
|
-
* Some node which could have a parent
|
|
2832
|
-
* @returns {sap.ui.model.odata.v4.Context|null}
|
|
2833
|
-
* The parent node, or <code>null</code> if the given node is a root node and thus has no
|
|
2834
|
-
* parent
|
|
2835
|
-
* @throws {Error} If
|
|
2836
|
-
* <ul>
|
|
2837
|
-
* <li> the given node is not part of a recursive hierarchy,
|
|
2838
|
-
* <li> <code>oAggregation.expandTo</code> is greater than one.
|
|
2839
|
-
* </ul>
|
|
2840
|
-
*
|
|
2841
|
-
* @private
|
|
2842
|
-
* @see #requestParent
|
|
2843
|
-
*/
|
|
2844
|
-
ODataListBinding.prototype.getParent = function (oNode) {
|
|
2845
|
-
const oAggregation = this.mParameters.$$aggregation;
|
|
2846
|
-
|
|
2847
|
-
if (!oAggregation || !oAggregation.hierarchyQualifier) {
|
|
2848
|
-
throw new Error("Missing recursive hierarchy");
|
|
2849
|
-
}
|
|
2850
|
-
if (oAggregation.expandTo > 1) {
|
|
2851
|
-
throw new Error("Unsupported $$aggregation.expandTo: " + oAggregation.expandTo);
|
|
2852
|
-
}
|
|
2853
|
-
if (this.aContexts[oNode.iIndex] !== oNode) {
|
|
2854
|
-
throw new Error("Not currently part of a recursive hierarchy: " + oNode);
|
|
2855
|
-
}
|
|
2856
|
-
const iParentIndex = this.oCache.getParentIndex(oNode.iIndex);
|
|
2857
|
-
|
|
2858
|
-
return iParentIndex < 0 ? null : this.aContexts[iParentIndex];
|
|
2859
|
-
};
|
|
2860
|
-
|
|
2861
2899
|
/**
|
|
2862
2900
|
* Returns the query options of the binding.
|
|
2863
2901
|
*
|
|
@@ -2904,6 +2942,17 @@ sap.ui.define([
|
|
|
2904
2942
|
return this.mQueryOptions;
|
|
2905
2943
|
};
|
|
2906
2944
|
|
|
2945
|
+
/**
|
|
2946
|
+
* Returns true if the binding has {@link sap.ui.model.Filter.NONE} in its filters.
|
|
2947
|
+
*
|
|
2948
|
+
* @returns {boolean} Whether there is a {@link sap.ui.model.Filter.NONE}
|
|
2949
|
+
*
|
|
2950
|
+
* @private
|
|
2951
|
+
*/
|
|
2952
|
+
ODataListBinding.prototype.hasFilterNone = function () {
|
|
2953
|
+
return this.aFilters[0] === Filter.NONE || this.aApplicationFilters[0] === Filter.NONE;
|
|
2954
|
+
};
|
|
2955
|
+
|
|
2907
2956
|
/**
|
|
2908
2957
|
* @override
|
|
2909
2958
|
* @see sap.ui.model.odata.v4.ODataBinding#hasPendingChangesForPath
|
|
@@ -3012,7 +3061,7 @@ sap.ui.define([
|
|
|
3012
3061
|
* (in case of a recursive hierarchy).
|
|
3013
3062
|
*
|
|
3014
3063
|
* @param {sap.ui.model.odata.v4.Context} oAncestor - Some node which may be an ancestor
|
|
3015
|
-
* @param {sap.ui.model.odata.v4.Context} oDescendant - Some node which may be a descendant
|
|
3064
|
+
* @param {sap.ui.model.odata.v4.Context} [oDescendant] - Some node which may be a descendant
|
|
3016
3065
|
* @returns {boolean} Whether the assumed ancestor relation holds
|
|
3017
3066
|
* @throws {Error} If either context does not represent a node in a recursive hierarchy
|
|
3018
3067
|
* according to its current expansion state
|
|
@@ -3023,6 +3072,9 @@ sap.ui.define([
|
|
|
3023
3072
|
if (!this.mParameters.$$aggregation || !this.mParameters.$$aggregation.hierarchyQualifier) {
|
|
3024
3073
|
throw new Error("Missing recursive hierarchy");
|
|
3025
3074
|
}
|
|
3075
|
+
if (!oDescendant) {
|
|
3076
|
+
return false;
|
|
3077
|
+
}
|
|
3026
3078
|
[oAncestor, oDescendant].forEach((oNode) => {
|
|
3027
3079
|
if (this.aContexts[oNode.iIndex] !== oNode) {
|
|
3028
3080
|
throw new Error("Not currently part of a recursive hierarchy: " + oNode);
|
|
@@ -3085,6 +3137,8 @@ sap.ui.define([
|
|
|
3085
3137
|
*/
|
|
3086
3138
|
ODataListBinding.prototype.isUnchangedParameter = function (sName, vOtherValue) {
|
|
3087
3139
|
if (sName === "$$aggregation") {
|
|
3140
|
+
// Note: $fetchMetadata is lost here, but never mind - $apply does not matter, only
|
|
3141
|
+
// normalization is needed
|
|
3088
3142
|
vOtherValue = _Helper.clone(vOtherValue); // avoid modification due to normalization
|
|
3089
3143
|
_AggregationHelper.buildApply(vOtherValue);
|
|
3090
3144
|
|
|
@@ -3106,51 +3160,54 @@ sap.ui.define([
|
|
|
3106
3160
|
* @see #getCurrentContexts
|
|
3107
3161
|
*/
|
|
3108
3162
|
ODataListBinding.prototype.keepOnlyVisibleContexts = function () {
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
|
|
3163
|
+
const aCreatedContexts = this.aContexts.slice(0, this.iCreatedContexts);
|
|
3164
|
+
const aContexts = aCreatedContexts.concat(
|
|
3165
|
+
this.getCurrentContexts().filter((oContext) => {
|
|
3166
|
+
// avoid duplicates for created contexts
|
|
3167
|
+
// Note: avoid #created or #isTransient because there may be created contexts
|
|
3168
|
+
// outside aContexts' area of "created contexts" (via "keep alive" or selection)
|
|
3169
|
+
return oContext && !aCreatedContexts.includes(oContext);
|
|
3170
|
+
})
|
|
3171
|
+
);
|
|
3172
|
+
|
|
3173
|
+
// add kept-alive contexts outside collection
|
|
3174
|
+
Object.keys(this.mPreviousContextsByPath).forEach((sPath) => {
|
|
3175
|
+
var oContext = this.mPreviousContextsByPath[sPath];
|
|
3176
|
+
|
|
3177
|
+
if (oContext.isEffectivelyKeptAlive()) {
|
|
3178
|
+
aContexts.push(oContext);
|
|
3179
|
+
}
|
|
3180
|
+
});
|
|
3181
|
+
|
|
3182
|
+
let iNewLength = 0;
|
|
3119
3183
|
|
|
3120
3184
|
/**
|
|
3121
3185
|
* Keeps and requests created contexts, destroys others.
|
|
3122
3186
|
*
|
|
3187
|
+
* @param {number} iBase - A base index
|
|
3123
3188
|
* @param {sap.ui.model.odata.v4.Context} oContext0 - A context, maybe created
|
|
3189
|
+
* @param {number} iIndex - A relative index
|
|
3124
3190
|
*/
|
|
3125
|
-
function keepOrDestroy(oContext0) {
|
|
3191
|
+
function keepOrDestroy(iBase, oContext0, iIndex) {
|
|
3126
3192
|
if (oContext0.created()) { // e.g. Recursive Hierarchy maintenance
|
|
3127
3193
|
aContexts.push(oContext0);
|
|
3194
|
+
iNewLength = iBase + iIndex + 1;
|
|
3128
3195
|
} else {
|
|
3129
|
-
|
|
3196
|
+
delete this.aContexts[iBase + iIndex];
|
|
3197
|
+
this.destroyLater(oContext0);
|
|
3130
3198
|
}
|
|
3131
3199
|
}
|
|
3132
3200
|
|
|
3133
|
-
// add kept-alive contexts outside collection
|
|
3134
|
-
Object.keys(this.mPreviousContextsByPath).forEach(function (sPath) {
|
|
3135
|
-
var oContext = that.mPreviousContextsByPath[sPath];
|
|
3136
|
-
|
|
3137
|
-
if (oContext.isEffectivelyKeptAlive()) {
|
|
3138
|
-
aContexts.push(oContext);
|
|
3139
|
-
}
|
|
3140
|
-
});
|
|
3141
|
-
|
|
3142
3201
|
// remove and later destroy others
|
|
3143
3202
|
this.aContexts.slice(this.iCreatedContexts, this.iCurrentBegin)
|
|
3144
|
-
.forEach(
|
|
3145
|
-
delete that.aContexts[that.iCreatedContexts + i];
|
|
3146
|
-
keepOrDestroy(oContext0);
|
|
3147
|
-
});
|
|
3203
|
+
.forEach(keepOrDestroy.bind(this, this.iCreatedContexts));
|
|
3148
3204
|
if (this.aContexts.length > this.iCurrentEnd && this.iCurrentEnd >= this.iCreatedContexts) {
|
|
3149
|
-
this.aContexts.slice(this.iCurrentEnd)
|
|
3150
|
-
|
|
3205
|
+
this.aContexts.slice(this.iCurrentEnd)
|
|
3206
|
+
.forEach(keepOrDestroy.bind(this, this.iCurrentEnd));
|
|
3207
|
+
this.aContexts.length = Math.max(iNewLength, this.iCurrentEnd);
|
|
3151
3208
|
}
|
|
3152
3209
|
|
|
3153
|
-
return aContexts.filter(
|
|
3210
|
+
return aContexts.filter((oContext) => {
|
|
3154
3211
|
// cannot request side effects for transient contexts
|
|
3155
3212
|
// Note: do not use #isTransient because #created() may not be resolved yet,
|
|
3156
3213
|
// although already persisted (timing issue, see caller)
|
|
@@ -3162,12 +3219,16 @@ sap.ui.define([
|
|
|
3162
3219
|
* Moves the given (child) node to the given parent. An expanded (child) node is silently
|
|
3163
3220
|
* collapsed before and expanded after the move. A collapsed parent is automatically expanded;
|
|
3164
3221
|
* so is a leaf. The (child) node is added as the parent's 1st child (created persisted).
|
|
3222
|
+
* Omitting a new parent turns the child into a root.
|
|
3165
3223
|
*
|
|
3166
3224
|
* @param {sap.ui.model.odata.v4.Context} oChildContext - The (child) node to be moved
|
|
3167
|
-
* @param {sap.ui.model.odata.v4.Context} oParentContext - The new parent's context
|
|
3225
|
+
* @param {sap.ui.model.odata.v4.Context} [oParentContext] - The new parent's context
|
|
3168
3226
|
* @returns {sap.ui.base.SyncPromise<void>}
|
|
3169
3227
|
* A promise which is resolved without a defined result when the move is finished, or
|
|
3170
3228
|
* rejected in case of an error
|
|
3229
|
+
* @throws {Error}
|
|
3230
|
+
* If <code>oAggregation.expandTo</code> is unsupported (neither one nor at least
|
|
3231
|
+
* <code>Number.MAX_SAFE_INTEGER</code>).
|
|
3171
3232
|
*
|
|
3172
3233
|
* @private
|
|
3173
3234
|
*/
|
|
@@ -3186,13 +3247,21 @@ sap.ui.define([
|
|
|
3186
3247
|
}
|
|
3187
3248
|
};
|
|
3188
3249
|
|
|
3250
|
+
const oAggregation = this.mParameters.$$aggregation;
|
|
3251
|
+
if (!oAggregation || !oAggregation.hierarchyQualifier) {
|
|
3252
|
+
throw new Error("Missing recursive hierarchy");
|
|
3253
|
+
}
|
|
3254
|
+
if (oAggregation.expandTo > 1 && oAggregation.expandTo < 999) {
|
|
3255
|
+
throw new Error("Unsupported $$aggregation.expandTo: " + oAggregation.expandTo);
|
|
3256
|
+
} // Note: undefined is well allowed!
|
|
3257
|
+
|
|
3189
3258
|
const bExpanded = oChildContext.isExpanded();
|
|
3190
3259
|
if (bExpanded) {
|
|
3191
3260
|
this.collapse(oChildContext, /*bSilent*/true);
|
|
3192
3261
|
}
|
|
3193
3262
|
|
|
3194
3263
|
const sChildPath = oChildContext.getCanonicalPath().slice(1);
|
|
3195
|
-
const sParentPath = oParentContext
|
|
3264
|
+
const sParentPath = oParentContext?.getCanonicalPath().slice(1); // before #lockGroup!
|
|
3196
3265
|
const oGroupLock = this.lockGroup(this.getUpdateGroupId(), true, true);
|
|
3197
3266
|
|
|
3198
3267
|
return this.oCache.move(oGroupLock, sChildPath, sParentPath).then((iCount) => {
|
|
@@ -3202,6 +3271,7 @@ sap.ui.define([
|
|
|
3202
3271
|
}
|
|
3203
3272
|
|
|
3204
3273
|
const iChildIndex = this.aContexts.indexOf(oChildContext);
|
|
3274
|
+
// Note: w/o oParentContext, iParentIndex === -1 and iParentIndex + 1 === 0 :-)
|
|
3205
3275
|
const iParentIndex = this.aContexts.indexOf(oParentContext); // Note: !== iChildIndex
|
|
3206
3276
|
if (iChildIndex < iParentIndex) {
|
|
3207
3277
|
this.aContexts.splice(iParentIndex + 1, 0, oChildContext);
|
|
@@ -3212,9 +3282,11 @@ sap.ui.define([
|
|
|
3212
3282
|
this.aContexts.splice(iParentIndex + 1, 0, oChildContext);
|
|
3213
3283
|
setIndices(iParentIndex + 1, iChildIndex);
|
|
3214
3284
|
} // else: iChildIndex === iParentIndex + 1 => nothing to do
|
|
3215
|
-
|
|
3285
|
+
|
|
3286
|
+
if (!oChildContext.created() && !(oAggregation.expandTo > 1)) {
|
|
3216
3287
|
oChildContext.setCreatedPersisted();
|
|
3217
3288
|
}
|
|
3289
|
+
|
|
3218
3290
|
if (bExpanded) {
|
|
3219
3291
|
this.expand(oChildContext).unwrap(); // guaranteed to be sync! incl. _fireChange
|
|
3220
3292
|
} else {
|
|
@@ -3721,8 +3793,9 @@ sap.ui.define([
|
|
|
3721
3793
|
|
|
3722
3794
|
iStart = iStart || 0;
|
|
3723
3795
|
iLength = iLength || this.oModel.iSizeLimit;
|
|
3796
|
+
const oGroupLock = sGroupId && this.lockGroup(sGroupId, true);
|
|
3724
3797
|
return Promise.resolve(
|
|
3725
|
-
this.fetchContexts(iStart, iLength, 0,
|
|
3798
|
+
this.fetchContexts(iStart, iLength, 0, oGroupLock)
|
|
3726
3799
|
).then(function (bChanged) {
|
|
3727
3800
|
if (bChanged) {
|
|
3728
3801
|
that._fireChange({reason : ChangeReason.Change});
|
|
@@ -3739,9 +3812,10 @@ sap.ui.define([
|
|
|
3739
3812
|
};
|
|
3740
3813
|
|
|
3741
3814
|
/**
|
|
3742
|
-
*
|
|
3743
|
-
* request delivers all entities considering the binding's query options (such as
|
|
3744
|
-
* sorters).
|
|
3815
|
+
* Resolves with a URL by which the complete content of the list can be downloaded in JSON
|
|
3816
|
+
* format. The request delivers all entities considering the binding's query options (such as
|
|
3817
|
+
* filters or sorters). Resolves with <code>null</code> if the binding's filter is
|
|
3818
|
+
* {@link sap.ui.filter.Filter.NONE}.
|
|
3745
3819
|
*
|
|
3746
3820
|
* The returned URL does not specify <code>$skip</code> and <code>$top</code> and leaves it up
|
|
3747
3821
|
* to the server how many rows it delivers. Many servers tend to choose a small limit without
|
|
@@ -3751,8 +3825,8 @@ sap.ui.define([
|
|
|
3751
3825
|
* Additionally, you must be aware of server-driven paging and be ready to send a follow-up
|
|
3752
3826
|
* request if the response contains <code>@odata.nextlink</code>.
|
|
3753
3827
|
*
|
|
3754
|
-
* @returns {Promise<string>}
|
|
3755
|
-
* A promise that is resolved with the download URL
|
|
3828
|
+
* @returns {Promise<string|null>}
|
|
3829
|
+
* A promise that is resolved with the download URL or <code>null</code>
|
|
3756
3830
|
* @throws {Error}
|
|
3757
3831
|
* If the binding is unresolved
|
|
3758
3832
|
*
|
|
@@ -3772,6 +3846,9 @@ sap.ui.define([
|
|
|
3772
3846
|
* binding in its constructor or in its {@link #filter} method; add filters which you want to
|
|
3773
3847
|
* keep with the "and" conjunction to the resulting filter before calling {@link #filter}.
|
|
3774
3848
|
*
|
|
3849
|
+
* If there are only messages for transient entries, the method returns
|
|
3850
|
+
* {@link sap.ui.model.Filter.NONE}. Take care not to combine this filter with other filters.
|
|
3851
|
+
*
|
|
3775
3852
|
* @param {function(sap.ui.core.message.Message):boolean} [fnFilter]
|
|
3776
3853
|
* A callback function to filter only relevant messages. The callback returns whether the
|
|
3777
3854
|
* given {@link sap.ui.core.message.Message} is considered. If no callback function is given,
|
|
@@ -3803,7 +3880,8 @@ sap.ui.define([
|
|
|
3803
3880
|
sMetaPath = _Helper.getMetaPath(sResolvedPath);
|
|
3804
3881
|
return oMetaModel.requestObject(sMetaPath + "/").then(function (oEntityType) {
|
|
3805
3882
|
var aFilters,
|
|
3806
|
-
mPredicates = {}
|
|
3883
|
+
mPredicates = {},
|
|
3884
|
+
bTransientMatched = false;
|
|
3807
3885
|
|
|
3808
3886
|
that.oModel.getMessagesByPath(sResolvedPath, true).filter(function (oMessage) {
|
|
3809
3887
|
return !fnFilter || fnFilter(oMessage);
|
|
@@ -3811,8 +3889,12 @@ sap.ui.define([
|
|
|
3811
3889
|
oMessage.getTargets().forEach(function (sTarget) {
|
|
3812
3890
|
var sPredicate = sTarget.slice(sResolvedPath.length).split("/")[0];
|
|
3813
3891
|
|
|
3814
|
-
if (sPredicate
|
|
3815
|
-
|
|
3892
|
+
if (sPredicate) {
|
|
3893
|
+
if (sPredicate.startsWith("($uid=")) {
|
|
3894
|
+
bTransientMatched = true;
|
|
3895
|
+
} else {
|
|
3896
|
+
mPredicates[sPredicate] = true;
|
|
3897
|
+
}
|
|
3816
3898
|
}
|
|
3817
3899
|
});
|
|
3818
3900
|
});
|
|
@@ -3823,57 +3905,13 @@ sap.ui.define([
|
|
|
3823
3905
|
});
|
|
3824
3906
|
|
|
3825
3907
|
if (aFilters.length === 0) {
|
|
3826
|
-
return null;
|
|
3908
|
+
return bTransientMatched ? Filter.NONE : null;
|
|
3827
3909
|
}
|
|
3828
3910
|
|
|
3829
3911
|
return aFilters.length === 1 ? aFilters[0] : new Filter({filters : aFilters});
|
|
3830
3912
|
});
|
|
3831
3913
|
};
|
|
3832
3914
|
|
|
3833
|
-
/**
|
|
3834
|
-
* Requests the parent node of a given child node (in case of a recursive hierarchy, see
|
|
3835
|
-
* {@link sap.ui.model.odata.v4.ODataListBinding#setAggregation}, where
|
|
3836
|
-
* <code>oAggregation.expandTo</code> must be equal to one).
|
|
3837
|
-
*
|
|
3838
|
-
* @param {sap.ui.model.odata.v4.Context} oNode
|
|
3839
|
-
* Some node which could have a parent
|
|
3840
|
-
* @returns {Promise<sap.ui.model.odata.v4.Context|null>} A promise which:
|
|
3841
|
-
* <ul>
|
|
3842
|
-
* <li> Resolves if successful with either the parent node or <code>null</code> for a root
|
|
3843
|
-
* node that has no parent</li>
|
|
3844
|
-
* <li> Rejects with an <code>Error</code> instance otherwise</li>
|
|
3845
|
-
* </ul>
|
|
3846
|
-
* @throws {Error} If
|
|
3847
|
-
* <ul>
|
|
3848
|
-
* <li> the given node is not part of a recursive hierarchy,
|
|
3849
|
-
* <li> <code>oAggregation.expandTo</code> is greater than one.
|
|
3850
|
-
* </ul>
|
|
3851
|
-
*
|
|
3852
|
-
* @private
|
|
3853
|
-
* @see #getParent
|
|
3854
|
-
*/
|
|
3855
|
-
ODataListBinding.prototype.requestParent = function (oNode) {
|
|
3856
|
-
const oAggregation = this.mParameters.$$aggregation;
|
|
3857
|
-
|
|
3858
|
-
if (!oAggregation || !oAggregation.hierarchyQualifier) {
|
|
3859
|
-
throw new Error("Missing recursive hierarchy");
|
|
3860
|
-
}
|
|
3861
|
-
if (oAggregation.expandTo > 1) {
|
|
3862
|
-
throw new Error("Unsupported $$aggregation.expandTo: " + oAggregation.expandTo);
|
|
3863
|
-
}
|
|
3864
|
-
if (this.aContexts[oNode.iIndex] !== oNode) {
|
|
3865
|
-
throw new Error("Not currently part of a recursive hierarchy: " + oNode);
|
|
3866
|
-
}
|
|
3867
|
-
|
|
3868
|
-
const iParentIndex = this.oCache.getParentIndex(oNode.iIndex);
|
|
3869
|
-
if (iParentIndex < 0) {
|
|
3870
|
-
return Promise.resolve(null);
|
|
3871
|
-
}
|
|
3872
|
-
return this.requestContexts(iParentIndex, 1).then(function (aResult) {
|
|
3873
|
-
return aResult[0];
|
|
3874
|
-
});
|
|
3875
|
-
};
|
|
3876
|
-
|
|
3877
3915
|
/**
|
|
3878
3916
|
* @override
|
|
3879
3917
|
* @see sap.ui.model.odata.v4.ODataParentBinding#requestSideEffects
|
|
@@ -4178,7 +4216,8 @@ sap.ui.define([
|
|
|
4178
4216
|
* available for read-only hierarchies since 1.117.0), supported only if a
|
|
4179
4217
|
* <code>hierarchyQualifier</code> is given. Root nodes are on the first level. By default,
|
|
4180
4218
|
* only root nodes are available; they are not yet expanded. Since 1.120.0,
|
|
4181
|
-
* <code>Number.MAX_SAFE_INTEGER</code> can be used to expand all levels
|
|
4219
|
+
* <code>expandTo >= Number.MAX_SAFE_INTEGER</code> can be used to expand all levels
|
|
4220
|
+
* (<code>1E16</code> is recommended inside XML views for simplicity).
|
|
4182
4221
|
* @param {boolean} [oAggregation.grandTotalAtBottomOnly]
|
|
4183
4222
|
* Tells whether the grand totals for aggregatable properties are displayed at the bottom only
|
|
4184
4223
|
* (since 1.86.0); <code>true</code> for bottom only, <code>false</code> for top and bottom,
|
|
@@ -4240,6 +4279,7 @@ sap.ui.define([
|
|
|
4240
4279
|
* <code>autoExpandSelect</code> parameter,
|
|
4241
4280
|
* <li> the binding is {@link #isTransient transient} (part of a
|
|
4242
4281
|
* {@link sap.ui.model.odata.v4.ODataListBinding#create deep create}),
|
|
4282
|
+
* <li> the binding has {@link sap.ui.model.Filter.NONE}
|
|
4243
4283
|
* </ul>
|
|
4244
4284
|
*
|
|
4245
4285
|
* @example <caption>First group level is product category including subtotals for the net
|
|
@@ -4282,6 +4322,9 @@ sap.ui.define([
|
|
|
4282
4322
|
}
|
|
4283
4323
|
|
|
4284
4324
|
this.checkTransient();
|
|
4325
|
+
if (this.hasFilterNone()) {
|
|
4326
|
+
throw new Error("Cannot combine Filter.NONE with $$aggregation");
|
|
4327
|
+
}
|
|
4285
4328
|
if (this.hasPendingChanges()) {
|
|
4286
4329
|
throw new Error("Cannot set $$aggregation due to pending changes");
|
|
4287
4330
|
}
|