@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
|
@@ -156,7 +156,7 @@ sap.ui.define([
|
|
|
156
156
|
* @hideconstructor
|
|
157
157
|
* @public
|
|
158
158
|
* @since 1.37.0
|
|
159
|
-
* @version 1.120.
|
|
159
|
+
* @version 1.120.2
|
|
160
160
|
*/
|
|
161
161
|
ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
|
|
162
162
|
constructor : constructor
|
|
@@ -724,7 +724,7 @@ sap.ui.define([
|
|
|
724
724
|
this.mSchema2MetadataUrl = {};
|
|
725
725
|
this.mSupportedBindingModes = {OneTime : true, OneWay : true};
|
|
726
726
|
this.bSupportReferences = bSupportReferences !== false; // default is true
|
|
727
|
-
// ClientListBinding#filter calls
|
|
727
|
+
// ClientListBinding#filter calls checkFilter on the model; ClientModel does
|
|
728
728
|
// not support "All" and "Any" filters
|
|
729
729
|
this.mUnsupportedFilterOperators = {All : true, Any : true};
|
|
730
730
|
this.sUrl = sUrl;
|
|
@@ -234,7 +234,7 @@ sap.ui.define([
|
|
|
234
234
|
* @extends sap.ui.model.Model
|
|
235
235
|
* @public
|
|
236
236
|
* @since 1.37.0
|
|
237
|
-
* @version 1.120.
|
|
237
|
+
* @version 1.120.2
|
|
238
238
|
*/
|
|
239
239
|
ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
|
|
240
240
|
/** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
|
|
@@ -965,9 +965,14 @@ sap.ui.define([
|
|
|
965
965
|
* For valid values, see parameter "$$groupId".
|
|
966
966
|
* @returns {sap.ui.model.odata.v4.ODataListBinding}
|
|
967
967
|
* The list binding
|
|
968
|
-
* @throws {Error}
|
|
969
|
-
*
|
|
970
|
-
*
|
|
968
|
+
* @throws {Error} If
|
|
969
|
+
* <ul>
|
|
970
|
+
* <li> disallowed binding parameters are provided,
|
|
971
|
+
* <li> an unsupported operation mode is used,
|
|
972
|
+
* <li> the {@link sap.ui.model.Filter.NONE} filter instance is contained in
|
|
973
|
+
* <code>vFilters</code> together with other filters,
|
|
974
|
+
* <li> {@link sap.ui.model.Filter.NONE} is combined with <code>$$aggregation</code>
|
|
975
|
+
* </ul>
|
|
971
976
|
* @public
|
|
972
977
|
* @see sap.ui.model.Model#bindList
|
|
973
978
|
* @since 1.37.0
|
|
@@ -911,14 +911,15 @@ sap.ui.define([
|
|
|
911
911
|
this.mCanUseCachePromiseByChildPath[sChildPath] = oCanUseCachePromise;
|
|
912
912
|
}
|
|
913
913
|
this.aChildCanUseCachePromises.push(oCanUseCachePromise);
|
|
914
|
-
|
|
915
|
-
|
|
914
|
+
// If the cache is immutable, only mLateQueryOptions may have changed
|
|
915
|
+
const oPromise = bCacheImmutable
|
|
916
|
+
? oCanUseCachePromise
|
|
917
|
+
: SyncPromise.all([this.oCachePromise, oCanUseCachePromise]).then(function (aResult) {
|
|
916
918
|
var oCache = aResult[0];
|
|
917
919
|
|
|
918
920
|
// Note: in operation bindings mAggregatedQueryOptions misses the options from
|
|
919
921
|
// $$inheritExpandSelect
|
|
920
|
-
|
|
921
|
-
if (!bCacheImmutable && oCache && !oCache.hasSentRequest() && !that.oOperation) {
|
|
922
|
+
if (oCache && !oCache.hasSentRequest() && !that.oOperation) {
|
|
922
923
|
if (that.bSharedRequest) {
|
|
923
924
|
oCache.setActive(false);
|
|
924
925
|
oCache = that.createAndSetCache(that.mAggregatedQueryOptions,
|
|
@@ -931,11 +932,13 @@ sap.ui.define([
|
|
|
931
932
|
return oCache;
|
|
932
933
|
});
|
|
933
934
|
// catch the error, but keep the rejected promise
|
|
934
|
-
|
|
935
|
+
oPromise.catch(function (oError) {
|
|
935
936
|
that.oModel.reportError(that + ": Failed to enhance query options for "
|
|
936
937
|
+ "auto-$expand/$select for child " + sChildPath, sClassName, oError);
|
|
937
938
|
});
|
|
938
|
-
|
|
939
|
+
if (!bCacheImmutable) {
|
|
940
|
+
this.oCachePromise = oPromise;
|
|
941
|
+
}
|
|
939
942
|
return oCanUseCachePromise;
|
|
940
943
|
};
|
|
941
944
|
|
|
@@ -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.120.
|
|
45
|
+
* @version 1.120.2
|
|
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
|
|
@@ -174,7 +174,7 @@ sap.ui.define([
|
|
|
174
174
|
iIndex = _Cache.getElementIndex(this.aElements, sPredicate, iIndex);
|
|
175
175
|
// remove in parent cache
|
|
176
176
|
const iIndexInParentCache = oParentCache.removeElement(
|
|
177
|
-
_Helper.getPrivateAnnotation(oElement, "
|
|
177
|
+
_Helper.getPrivateAnnotation(oElement, "rank", 0), sPredicate);
|
|
178
178
|
// remove the descendants in the parent cache (if any)
|
|
179
179
|
const iDescendants = _Helper.getPrivateAnnotation(oElement, "descendants", 0);
|
|
180
180
|
for (let i = 0; i < iDescendants; i += 1) {
|
|
@@ -187,9 +187,7 @@ sap.ui.define([
|
|
|
187
187
|
// make parent a leaf (the direct predecessor)
|
|
188
188
|
this.makeLeaf(this.aElements[iIndex - 1]);
|
|
189
189
|
}
|
|
190
|
-
|
|
191
|
-
this.shiftIndex(iIndex, -iOffset);
|
|
192
|
-
}
|
|
190
|
+
this.shiftRank(iIndex, -iOffset);
|
|
193
191
|
// remove in this cache
|
|
194
192
|
this.removeElement(iIndex, sPredicate);
|
|
195
193
|
// notify caller
|
|
@@ -208,8 +206,9 @@ sap.ui.define([
|
|
|
208
206
|
* The group level cache which the given elements have been read from; omit it only for grand
|
|
209
207
|
* totals or separate subtotals
|
|
210
208
|
* @param {number} [iStart]
|
|
211
|
-
* The $skip index of the first given element within the cache's collection; omit
|
|
212
|
-
* no group level cache is given or for a single created element (where it
|
|
209
|
+
* The rank (aka. $skip index) of the first given element within the cache's collection; omit
|
|
210
|
+
* it only if no group level cache is given or for a single created element (where it may be
|
|
211
|
+
* unknown)
|
|
213
212
|
* @throws {Error}
|
|
214
213
|
* In case an unexpected element or placeholder would be overwritten, if the given offset is
|
|
215
214
|
* negative, if a resulting array index is out of bounds, in case of a duplicate predicate, or
|
|
@@ -268,9 +267,9 @@ sap.ui.define([
|
|
|
268
267
|
}
|
|
269
268
|
|
|
270
269
|
if (sTransientPredicate) { // created
|
|
271
|
-
iStart -= 1; // "shift"
|
|
270
|
+
iStart -= 1; // "shift" rank of non-created elements behind this one
|
|
272
271
|
} else {
|
|
273
|
-
_Helper.setPrivateAnnotation(oElement, "
|
|
272
|
+
_Helper.setPrivateAnnotation(oElement, "rank", iStart + i);
|
|
274
273
|
}
|
|
275
274
|
}
|
|
276
275
|
|
|
@@ -309,7 +308,7 @@ sap.ui.define([
|
|
|
309
308
|
} else if (iCandidateLevel < iLevel) {
|
|
310
309
|
if (!bInitialPlaceholderFound || this.isAncestorOf(iCandidateIndex, iIndex)) {
|
|
311
310
|
const iCount
|
|
312
|
-
= _Helper.getPrivateAnnotation(oCandidate, "descendants") + iOffset;
|
|
311
|
+
= _Helper.getPrivateAnnotation(oCandidate, "descendants", 0) + iOffset;
|
|
313
312
|
_Helper.setPrivateAnnotation(oCandidate, "descendants", iCount);
|
|
314
313
|
if (iCount === 0) {
|
|
315
314
|
this.makeLeaf(oCandidate);
|
|
@@ -395,7 +394,7 @@ sap.ui.define([
|
|
|
395
394
|
_Helper.getPrivateAnnotation(aElements[i], "transientPredicate")];
|
|
396
395
|
}
|
|
397
396
|
const aSpliced = aElements.splice(iIndex + 1, iCount);
|
|
398
|
-
aSpliced.$
|
|
397
|
+
aSpliced.$rank = _Helper.getPrivateAnnotation(oGroupNode, "rank");
|
|
399
398
|
_Helper.setPrivateAnnotation(oGroupNode, "spliced", aSpliced);
|
|
400
399
|
aElements.$count -= iCount;
|
|
401
400
|
|
|
@@ -420,8 +419,8 @@ sap.ui.define([
|
|
|
420
419
|
let iGroupNodeLevel = oGroupNode["@$ui5.node.level"];
|
|
421
420
|
let iDescendants = _Helper.getPrivateAnnotation(oGroupNode, "descendants");
|
|
422
421
|
if (iDescendants) { // => this.oAggregation.expandTo > 1
|
|
423
|
-
// Note: "descendants" refers to
|
|
424
|
-
//
|
|
422
|
+
// Note: "descendants" refers to LimitedDescendantCount and counts descendants within
|
|
423
|
+
// "top pyramid" only!
|
|
425
424
|
iGroupNodeLevel = this.oAggregation.expandTo;
|
|
426
425
|
}
|
|
427
426
|
const aElements = this.aElements;
|
|
@@ -490,6 +489,10 @@ sap.ui.define([
|
|
|
490
489
|
if (oParentNode?.["@$ui5.node.isExpanded"] === false) {
|
|
491
490
|
throw new Error("Unsupported collapsed parent: " + sParentPath);
|
|
492
491
|
}
|
|
492
|
+
if (oParentNode && oParentNode["@$ui5.node.isExpanded"] === undefined) {
|
|
493
|
+
_Helper.updateAll(this.mChangeListeners, sParentPredicate, oParentNode,
|
|
494
|
+
{"@$ui5.node.isExpanded" : true}); // not a leaf anymore
|
|
495
|
+
}
|
|
493
496
|
|
|
494
497
|
const iLevel = oParentNode
|
|
495
498
|
? oParentNode["@$ui5.node.level"] + 1
|
|
@@ -501,8 +504,6 @@ sap.ui.define([
|
|
|
501
504
|
oCache = this.createGroupLevelCache(oParentNode);
|
|
502
505
|
oCache.setEmpty();
|
|
503
506
|
_Helper.setPrivateAnnotation(oParentNode, "cache", oCache);
|
|
504
|
-
_Helper.updateAll(this.mChangeListeners, sParentPredicate, oParentNode,
|
|
505
|
-
{"@$ui5.node.isExpanded" : true}); // not a leaf anymore
|
|
506
507
|
}
|
|
507
508
|
|
|
508
509
|
const iIndex = aElements.indexOf(oParentNode) + 1; // 0 w/o oParentNode :-)
|
|
@@ -512,8 +513,7 @@ sap.ui.define([
|
|
|
512
513
|
this.adjustDescendantCount(oEntityData, iIndex, -1);
|
|
513
514
|
}
|
|
514
515
|
aElements.$count -= 1;
|
|
515
|
-
delete aElements.$byPredicate[
|
|
516
|
-
_Helper.getPrivateAnnotation(oEntityData, "transientPredicate")];
|
|
516
|
+
delete aElements.$byPredicate[sTransientPredicate];
|
|
517
517
|
aElements.splice(iIndex, 1);
|
|
518
518
|
});
|
|
519
519
|
|
|
@@ -525,18 +525,30 @@ sap.ui.define([
|
|
|
525
525
|
oEntityData["@$ui5.node.level"] = iLevel; // do not send via POST!
|
|
526
526
|
|
|
527
527
|
aElements.splice(iIndex, 0, null); // create a gap
|
|
528
|
-
this.addElements(oEntityData, iIndex, oCache); //
|
|
528
|
+
this.addElements(oEntityData, iIndex, oCache); // rank is undefined!
|
|
529
529
|
aElements.$count += 1;
|
|
530
530
|
if (oCache === this.oFirstLevel) {
|
|
531
531
|
this.adjustDescendantCount(oEntityData, iIndex, +1);
|
|
532
532
|
}
|
|
533
533
|
|
|
534
|
-
return oPromise.then(
|
|
534
|
+
return oPromise.then(async () => {
|
|
535
535
|
aElements.$byPredicate[_Helper.getPrivateAnnotation(oEntityData, "predicate")]
|
|
536
536
|
= oEntityData;
|
|
537
537
|
// Note: #calculateKeyPredicateRH doesn't know better :-(
|
|
538
538
|
oEntityData["@$ui5.node.level"] = iLevel;
|
|
539
539
|
|
|
540
|
+
if (this.oAggregation.expandTo >= 999) { // "expand all"
|
|
541
|
+
const iRank = await this.requestRank(oEntityData, oGroupLock.getUnlockedCopy());
|
|
542
|
+
|
|
543
|
+
this.oFirstLevel.removeElement(0, sTransientPredicate);
|
|
544
|
+
_Helper.deletePrivateAnnotation(oEntityData, "transientPredicate");
|
|
545
|
+
this.oFirstLevel.restoreElement(iRank, oEntityData);
|
|
546
|
+
|
|
547
|
+
delete this.aElements.$byPredicate[sTransientPredicate];
|
|
548
|
+
_Helper.setPrivateAnnotation(oEntityData, "rank", iRank);
|
|
549
|
+
this.shiftRank(iIndex, +1);
|
|
550
|
+
}
|
|
551
|
+
|
|
540
552
|
return oEntityData;
|
|
541
553
|
});
|
|
542
554
|
};
|
|
@@ -639,15 +651,19 @@ sap.ui.define([
|
|
|
639
651
|
iCount = aSpliced.length;
|
|
640
652
|
this.aElements.$count = aOldElements.$count + iCount;
|
|
641
653
|
const iLevelDiff = oGroupNode["@$ui5.node.level"] + 1 - aSpliced[0]["@$ui5.node.level"];
|
|
642
|
-
const
|
|
654
|
+
const iRankDiff = _Helper.getPrivateAnnotation(oGroupNode, "rank") - aSpliced.$rank;
|
|
643
655
|
aSpliced.forEach(function (oElement) {
|
|
644
656
|
var sPredicate = _Helper.getPrivateAnnotation(oElement, "predicate");
|
|
645
657
|
|
|
646
|
-
oElement["@$ui5.node.level"]
|
|
658
|
+
if (oElement["@$ui5.node.level"]) {
|
|
659
|
+
// Note: level 0 is used for initial placeholders of 1st level cache in case
|
|
660
|
+
// expandTo > 1
|
|
661
|
+
oElement["@$ui5.node.level"] += iLevelDiff;
|
|
662
|
+
}
|
|
647
663
|
if (_Helper.getPrivateAnnotation(oElement, "parent") === that.oFirstLevel) {
|
|
648
|
-
const
|
|
649
|
-
if (
|
|
650
|
-
_Helper.setPrivateAnnotation(oElement, "
|
|
664
|
+
const iRank = _Helper.getPrivateAnnotation(oElement, "rank");
|
|
665
|
+
if (iRank !== undefined) {
|
|
666
|
+
_Helper.setPrivateAnnotation(oElement, "rank", iRank + iRankDiff);
|
|
651
667
|
}
|
|
652
668
|
}
|
|
653
669
|
if (!_Helper.hasPrivateAnnotation(oElement, "placeholder")) {
|
|
@@ -748,6 +764,45 @@ sap.ui.define([
|
|
|
748
764
|
});
|
|
749
765
|
};
|
|
750
766
|
|
|
767
|
+
/**
|
|
768
|
+
* Returns a promise to be resolved with an OData object for the requested parent node.
|
|
769
|
+
*
|
|
770
|
+
* @param {number} iIndex
|
|
771
|
+
* The index of the child node
|
|
772
|
+
* @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
|
|
773
|
+
* A lock for the group to associate the requests with
|
|
774
|
+
* @returns {sap.ui.base.SyncPromise}
|
|
775
|
+
* A promise to be resolved with the requested data of the parent.
|
|
776
|
+
*
|
|
777
|
+
* @public
|
|
778
|
+
*/
|
|
779
|
+
_AggregationCache.prototype.fetchParent = function (iIndex, oGroupLock) {
|
|
780
|
+
const sFilter = _Helper.getKeyFilter(this.aElements[iIndex], this.oAggregation.$metaPath,
|
|
781
|
+
this.getTypes());
|
|
782
|
+
const mQueryOptions = Object.assign({}, this.mQueryOptions);
|
|
783
|
+
|
|
784
|
+
mQueryOptions.$apply = "ancestors($root" + this.oAggregation.$path
|
|
785
|
+
+ "," + this.oAggregation.hierarchyQualifier + "," + this.oAggregation.$NodeProperty
|
|
786
|
+
+ ",filter(" + sFilter + "),1)";
|
|
787
|
+
|
|
788
|
+
const sQueryString = this.sResourcePath
|
|
789
|
+
+ this.oRequestor.buildQueryString(/*sMetaPath*/null, mQueryOptions);
|
|
790
|
+
|
|
791
|
+
return SyncPromise.all([
|
|
792
|
+
this.oRequestor.request("GET", sQueryString, oGroupLock),
|
|
793
|
+
this.fetchTypes()
|
|
794
|
+
]).then((aResults) => {
|
|
795
|
+
const oParent = aResults[0].value[0];
|
|
796
|
+
this.visitResponse(oParent, aResults[1],
|
|
797
|
+
_Helper.getMetaPath(_Helper.buildPath(this.sMetaPath, "")));
|
|
798
|
+
|
|
799
|
+
this.aElements.$byPredicate[_Helper.getPrivateAnnotation(oParent, "predicate")]
|
|
800
|
+
= oParent;
|
|
801
|
+
|
|
802
|
+
return oParent;
|
|
803
|
+
});
|
|
804
|
+
};
|
|
805
|
+
|
|
751
806
|
/**
|
|
752
807
|
* Returns a promise to be resolved with an OData object for the requested data.
|
|
753
808
|
*
|
|
@@ -865,16 +920,13 @@ sap.ui.define([
|
|
|
865
920
|
};
|
|
866
921
|
|
|
867
922
|
/**
|
|
868
|
-
* Returns the index of a parent node
|
|
923
|
+
* Returns the index of a parent node.
|
|
869
924
|
*
|
|
870
925
|
* @param {number} iIndex
|
|
871
926
|
* The index of the child node
|
|
872
|
-
* @returns {number|
|
|
927
|
+
* @returns {number|undefined}
|
|
873
928
|
* The parent node's index, or -1 if the given node is a root node and thus has
|
|
874
|
-
* no parent
|
|
875
|
-
* @throws {Error}
|
|
876
|
-
* If the index of a parent cannot be found
|
|
877
|
-
*
|
|
929
|
+
* no parent, or <code>undefined</code> if the parent node hasn't been read yet
|
|
878
930
|
*
|
|
879
931
|
* @public
|
|
880
932
|
*/
|
|
@@ -885,13 +937,22 @@ sap.ui.define([
|
|
|
885
937
|
return -1; // a root has no parent
|
|
886
938
|
}
|
|
887
939
|
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
940
|
+
let bInitialPlaceholderFound = false;
|
|
941
|
+
for (let i = iIndex; i >= 0; i -= 1) {
|
|
942
|
+
const oCandidate = this.aElements[i];
|
|
943
|
+
const iCandidateLevel = oCandidate["@$ui5.node.level"];
|
|
944
|
+
|
|
945
|
+
if (iCandidateLevel === 0) {
|
|
946
|
+
bInitialPlaceholderFound = true;
|
|
947
|
+
} else if (iCandidateLevel < iLevel) {
|
|
948
|
+
if (iCandidateLevel === iLevel - 1
|
|
949
|
+
&& (!bInitialPlaceholderFound || this.isAncestorOf(i, iIndex))) {
|
|
950
|
+
return i;
|
|
951
|
+
}
|
|
952
|
+
break; // missed the parent
|
|
891
953
|
}
|
|
892
954
|
}
|
|
893
|
-
|
|
894
|
-
throw new Error("Unexpected error");
|
|
955
|
+
// return undefined;
|
|
895
956
|
};
|
|
896
957
|
|
|
897
958
|
/**
|
|
@@ -996,13 +1057,13 @@ sap.ui.define([
|
|
|
996
1057
|
/**
|
|
997
1058
|
* Moves the (child) node with the given path to the parent node with the given path by sending
|
|
998
1059
|
* a PATCH request for "<parent navigation>@odata.bind". The (child) node may be a leaf or a
|
|
999
|
-
* collapsed node, but not expanded!
|
|
1060
|
+
* collapsed node, but not expanded! Omitting a new parent turns the child into a root.
|
|
1000
1061
|
*
|
|
1001
1062
|
* @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
|
|
1002
1063
|
* A lock for the group to associate the requests with
|
|
1003
1064
|
* @param {string} sChildPath
|
|
1004
1065
|
* The (child) node's path relative to the cache
|
|
1005
|
-
* @param {string} sParentPath
|
|
1066
|
+
* @param {string} [sParentPath=null]
|
|
1006
1067
|
* The parent node's path relative to the cache
|
|
1007
1068
|
* @returns {sap.ui.base.SyncPromise<number>}
|
|
1008
1069
|
* A promise which is resolved with the number of child nodes added (normally one, but maybe
|
|
@@ -1011,20 +1072,24 @@ sap.ui.define([
|
|
|
1011
1072
|
*
|
|
1012
1073
|
* @public
|
|
1013
1074
|
*/
|
|
1014
|
-
_AggregationCache.prototype.move = function (oGroupLock, sChildPath, sParentPath) {
|
|
1075
|
+
_AggregationCache.prototype.move = function (oGroupLock, sChildPath, sParentPath = null) {
|
|
1015
1076
|
const sTransientPredicate = "($uid=" + _Helper.uid() + ")";
|
|
1016
1077
|
|
|
1017
1078
|
const sChildPredicate = sChildPath.slice(sChildPath.indexOf("("));
|
|
1018
1079
|
const oChildNode = this.aElements.$byPredicate[sChildPredicate];
|
|
1019
|
-
const sParentPredicate = sParentPath
|
|
1080
|
+
const sParentPredicate = sParentPath?.slice(sParentPath.indexOf("("));
|
|
1020
1081
|
const oParentNode = this.aElements.$byPredicate[sParentPredicate];
|
|
1021
1082
|
|
|
1022
1083
|
let oReadPromise;
|
|
1023
|
-
let oCache =
|
|
1024
|
-
|
|
1084
|
+
let oCache = oParentNode
|
|
1085
|
+
? _Helper.getPrivateAnnotation(oParentNode, "cache")
|
|
1086
|
+
: this.oFirstLevel;
|
|
1087
|
+
if (this.oAggregation.expandTo > 1) { // "expand all": GET LimitedRank
|
|
1088
|
+
oReadPromise = this.requestRank(oChildNode, oGroupLock.getUnlockedCopy());
|
|
1089
|
+
} else if (!oCache && oParentNode["@$ui5.node.isExpanded"] === false) {
|
|
1025
1090
|
oCache = this.createGroupLevelCache(oParentNode);
|
|
1026
1091
|
// @see #getExclusiveFilter
|
|
1027
|
-
oCache.restoreElement(
|
|
1092
|
+
oCache.restoreElement(0, oChildNode, undefined, sTransientPredicate);
|
|
1028
1093
|
// prefetch from the group level cache
|
|
1029
1094
|
oReadPromise = oCache.read(0, this.iReadLength, 0, oGroupLock.getUnlockedCopy());
|
|
1030
1095
|
}
|
|
@@ -1036,17 +1101,48 @@ sap.ui.define([
|
|
|
1036
1101
|
}, {[this.oAggregation.$ParentNavigationProperty + "@odata.bind"] : sParentPath},
|
|
1037
1102
|
/*fnSubmit*/null, function fnCancel() { /*nothing to do*/ }),
|
|
1038
1103
|
oReadPromise
|
|
1039
|
-
]).then(([oPatchResult,
|
|
1104
|
+
]).then(([oPatchResult, iPreorderRank]) => {
|
|
1105
|
+
const updateChildNode = () => {
|
|
1106
|
+
// update the cache with the PATCH response (Note: "@odata.etag" is optional!)
|
|
1107
|
+
_Helper.updateExisting(this.mChangeListeners, sChildPredicate, oChildNode, {
|
|
1108
|
+
"@odata.etag" : oPatchResult["@odata.etag"],
|
|
1109
|
+
"@$ui5.node.level" : oParentNode ? oParentNode["@$ui5.node.level"] + 1 : 1
|
|
1110
|
+
});
|
|
1111
|
+
};
|
|
1040
1112
|
const iOldIndex = this.aElements.indexOf(oChildNode);
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1113
|
+
let iResult = 1;
|
|
1114
|
+
|
|
1115
|
+
if (this.oAggregation.expandTo > 1) {
|
|
1116
|
+
const iOffset = _Helper.getPrivateAnnotation(oChildNode, "descendants", 0) + 1;
|
|
1117
|
+
this.adjustDescendantCount(oChildNode, iOldIndex, -iOffset);
|
|
1118
|
+
this.shiftRank(iOldIndex, -iOffset);
|
|
1119
|
+
this.aElements.splice(iOldIndex, 1);
|
|
1120
|
+
this.oFirstLevel.move(_Helper.getPrivateAnnotation(oChildNode, "rank"),
|
|
1121
|
+
iPreorderRank, iOffset);
|
|
1122
|
+
updateChildNode();
|
|
1123
|
+
_Helper.setPrivateAnnotation(oChildNode, "rank", iPreorderRank);
|
|
1124
|
+
switch (oParentNode ? oParentNode["@$ui5.node.isExpanded"] : true) {
|
|
1125
|
+
case false:
|
|
1126
|
+
iResult = this.expand(_GroupLock.$cached, sParentPredicate).unwrap() + 1;
|
|
1127
|
+
// fall through
|
|
1128
|
+
case true:
|
|
1129
|
+
break;
|
|
1130
|
+
|
|
1131
|
+
default:
|
|
1132
|
+
_Helper.updateAll(this.mChangeListeners, sParentPredicate, oParentNode,
|
|
1133
|
+
{"@$ui5.node.isExpanded" : true}); // not a leaf anymore
|
|
1134
|
+
}
|
|
1135
|
+
const iNewIndex = this.aElements.indexOf(oParentNode) + 1; // 0 w/o oParentNode :-)
|
|
1136
|
+
this.aElements.splice(iNewIndex, 0, oChildNode);
|
|
1137
|
+
this.shiftRank(iNewIndex, +iOffset);
|
|
1138
|
+
this.adjustDescendantCount(oChildNode, iNewIndex, +iOffset);
|
|
1139
|
+
|
|
1140
|
+
return iResult;
|
|
1141
|
+
}
|
|
1046
1142
|
|
|
1047
1143
|
// remove original element from its cache's collection
|
|
1048
1144
|
const oOldParentCache = _Helper.getPrivateAnnotation(oChildNode, "parent");
|
|
1049
|
-
oOldParentCache.removeElement(_Helper.getPrivateAnnotation(oChildNode, "
|
|
1145
|
+
oOldParentCache.removeElement(_Helper.getPrivateAnnotation(oChildNode, "rank", 0),
|
|
1050
1146
|
sChildPredicate);
|
|
1051
1147
|
if (oOldParentCache.getValue("$count") === 0) { // last child has gone
|
|
1052
1148
|
const oOldParent = this.aElements[iOldIndex - 1];
|
|
@@ -1056,18 +1152,19 @@ sap.ui.define([
|
|
|
1056
1152
|
}
|
|
1057
1153
|
|
|
1058
1154
|
// once oChildNode has moved, it should look 'created' because of its new position
|
|
1059
|
-
_Helper.deletePrivateAnnotation(oChildNode, "index");
|
|
1060
1155
|
if (!_Helper.hasPrivateAnnotation(oChildNode, "transientPredicate")) {
|
|
1061
1156
|
_Helper.setPrivateAnnotation(oChildNode, "transientPredicate",
|
|
1062
1157
|
sTransientPredicate);
|
|
1063
1158
|
this.aElements.$byPredicate[sTransientPredicate] = oChildNode;
|
|
1064
1159
|
_Helper.updateAll(this.mChangeListeners, sChildPredicate, oChildNode,
|
|
1065
1160
|
{"@$ui5.context.isTransient" : false});
|
|
1066
|
-
this.
|
|
1161
|
+
this.shiftRank(iOldIndex, -1); // only shift indices after non-created ones
|
|
1067
1162
|
}
|
|
1163
|
+
_Helper.deletePrivateAnnotation(oChildNode, "rank");
|
|
1068
1164
|
this.aElements.splice(iOldIndex, 1);
|
|
1069
1165
|
|
|
1070
|
-
|
|
1166
|
+
updateChildNode();
|
|
1167
|
+
|
|
1071
1168
|
if (oReadPromise) {
|
|
1072
1169
|
_Helper.setPrivateAnnotation(oChildNode, "parent", oCache);
|
|
1073
1170
|
_Helper.setPrivateAnnotation(oParentNode, "cache", oCache);
|
|
@@ -1075,7 +1172,7 @@ sap.ui.define([
|
|
|
1075
1172
|
// Note: oChildNode already belongs to oCache!
|
|
1076
1173
|
this.aElements.$count -= 1; // #expand adjusts $count incl. oChildNode!
|
|
1077
1174
|
iResult = this.expand(_GroupLock.$cached, sParentPredicate).unwrap();
|
|
1078
|
-
// Note: "
|
|
1175
|
+
// Note: "rank" created OK by #expand for oChildNode's siblings
|
|
1079
1176
|
} else {
|
|
1080
1177
|
if (!oCache) {
|
|
1081
1178
|
oCache = this.createGroupLevelCache(oParentNode);
|
|
@@ -1085,10 +1182,11 @@ sap.ui.define([
|
|
|
1085
1182
|
{"@$ui5.node.isExpanded" : true}); // not a leaf anymore
|
|
1086
1183
|
}
|
|
1087
1184
|
_Helper.setPrivateAnnotation(oChildNode, "parent", oCache);
|
|
1088
|
-
oCache.restoreElement(
|
|
1185
|
+
oCache.restoreElement(0, oChildNode);
|
|
1089
1186
|
|
|
1090
|
-
const iNewIndex = this.aElements.indexOf(oParentNode) + 1;
|
|
1091
|
-
const aSpliced
|
|
1187
|
+
const iNewIndex = this.aElements.indexOf(oParentNode) + 1; // 0 w/o oParentNode :-)
|
|
1188
|
+
const aSpliced
|
|
1189
|
+
= oParentNode && _Helper.getPrivateAnnotation(oParentNode, "spliced");
|
|
1092
1190
|
if (aSpliced) {
|
|
1093
1191
|
// Note: "@$ui5.node.level" will be adjusted by #expand for aSpliced!
|
|
1094
1192
|
oChildNode["@$ui5.node.level"] = aSpliced[0]["@$ui5.node.level"];
|
|
@@ -1201,10 +1299,10 @@ sap.ui.define([
|
|
|
1201
1299
|
oGapParent = oCurrentParent;
|
|
1202
1300
|
}
|
|
1203
1301
|
} else if (iGapStart !== undefined
|
|
1204
|
-
&& _Helper.getPrivateAnnotation(oElement, "
|
|
1205
|
-
!== _Helper.getPrivateAnnotation(this.aElements[i - 1], "
|
|
1206
|
-
// Note: w/ side effect,
|
|
1207
|
-
// Note: an undefined "
|
|
1302
|
+
&& _Helper.getPrivateAnnotation(oElement, "rank")
|
|
1303
|
+
!== _Helper.getPrivateAnnotation(this.aElements[i - 1], "rank") + 1) {
|
|
1304
|
+
// Note: w/ side effect, ranks might not be consecutive => split gap
|
|
1305
|
+
// Note: an undefined "rank" causes a split gap, which is important!
|
|
1208
1306
|
readGap(iGapStart, i);
|
|
1209
1307
|
iGapStart = i;
|
|
1210
1308
|
}
|
|
@@ -1372,8 +1470,8 @@ sap.ui.define([
|
|
|
1372
1470
|
_AggregationCache.prototype.readGap = function (oCache, iStart, iEnd, oGroupLock,
|
|
1373
1471
|
fnDataRequested) {
|
|
1374
1472
|
const oStartElement = this.aElements[iStart];
|
|
1375
|
-
const
|
|
1376
|
-
if (
|
|
1473
|
+
const iRank = _Helper.getPrivateAnnotation(oStartElement, "rank");
|
|
1474
|
+
if (iRank === undefined) {
|
|
1377
1475
|
if (iEnd - iStart !== 1) {
|
|
1378
1476
|
throw new Error("Not just a single created persisted");
|
|
1379
1477
|
}
|
|
@@ -1395,7 +1493,7 @@ sap.ui.define([
|
|
|
1395
1493
|
oCache.setQueryOptions(mQueryOptions, true);
|
|
1396
1494
|
}
|
|
1397
1495
|
|
|
1398
|
-
const oPromise = oCache.read(
|
|
1496
|
+
const oPromise = oCache.read(iRank, iEnd - iStart, 0, oGroupLock, fnDataRequested, true)
|
|
1399
1497
|
.then((oResult) => {
|
|
1400
1498
|
// Note: this code must be idempotent, it might well run twice!
|
|
1401
1499
|
var bGapHasMoved = false,
|
|
@@ -1417,7 +1515,7 @@ sap.ui.define([
|
|
|
1417
1515
|
}
|
|
1418
1516
|
}
|
|
1419
1517
|
|
|
1420
|
-
this.addElements(oResult.value, iStart, oCache,
|
|
1518
|
+
this.addElements(oResult.value, iStart, oCache, iRank);
|
|
1421
1519
|
|
|
1422
1520
|
if (bGapHasMoved) {
|
|
1423
1521
|
oError = new Error("Collapse or expand before read has finished");
|
|
@@ -1447,6 +1545,37 @@ sap.ui.define([
|
|
|
1447
1545
|
return this.oFirstLevel.refreshKeptElements.call(this, oGroupLock, fnOnRemove, true);
|
|
1448
1546
|
};
|
|
1449
1547
|
|
|
1548
|
+
/**
|
|
1549
|
+
* Requests the (limited preorder) rank of the given element which must belong to
|
|
1550
|
+
* <code>this.oFirstLevel</code>.
|
|
1551
|
+
*
|
|
1552
|
+
* @param {object} oElement - The element
|
|
1553
|
+
* @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
|
|
1554
|
+
* A lock for the group ID to be used for the GET request
|
|
1555
|
+
* @returns {Promise<number>}
|
|
1556
|
+
* A promise which is resolved with the (limited preorder) rank of the given element, or
|
|
1557
|
+
* rejected in case of an error
|
|
1558
|
+
*
|
|
1559
|
+
* @private
|
|
1560
|
+
*/
|
|
1561
|
+
_AggregationCache.prototype.requestRank = async function (oElement, oGroupLock) {
|
|
1562
|
+
const sMetaPath = this.oAggregation.$metaPath;
|
|
1563
|
+
const {$apply, $orderby} = this.oFirstLevel.getQueryOptions();
|
|
1564
|
+
const mQueryOptions = {
|
|
1565
|
+
$apply,
|
|
1566
|
+
$filter : _Helper.getKeyFilter(oElement, sMetaPath, this.getTypes()),
|
|
1567
|
+
$select : this.oAggregation.$LimitedRank
|
|
1568
|
+
};
|
|
1569
|
+
if ($orderby) {
|
|
1570
|
+
mQueryOptions.$orderby = $orderby;
|
|
1571
|
+
}
|
|
1572
|
+
const sResourcePath = this.sResourcePath
|
|
1573
|
+
+ this.oRequestor.buildQueryString(sMetaPath, mQueryOptions, false, true);
|
|
1574
|
+
const oResult = await this.oRequestor.request("GET", sResourcePath, oGroupLock);
|
|
1575
|
+
|
|
1576
|
+
return parseInt(_Helper.drillDown(oResult.value[0], this.oAggregation.$LimitedRank));
|
|
1577
|
+
};
|
|
1578
|
+
|
|
1450
1579
|
/**
|
|
1451
1580
|
* @override
|
|
1452
1581
|
* @see sap.ui.model.odata.v4.lib._CollectionCache#reset
|
|
@@ -1512,27 +1641,33 @@ sap.ui.define([
|
|
|
1512
1641
|
};
|
|
1513
1642
|
|
|
1514
1643
|
/**
|
|
1515
|
-
* Shifts the $skip
|
|
1516
|
-
* index by the given offset, except for
|
|
1517
|
-
* <code>undefined</code>
|
|
1644
|
+
* Shifts the rank (aka. $skip index) of all siblings (nodes or placeholders) after the node at
|
|
1645
|
+
* the given array index by the given offset, except for elements where it is
|
|
1646
|
+
* <code>undefined</code> or lower than the node's own rank. If the node at the given index
|
|
1647
|
+
* itself has an <code>undefined</code> rank, nothing is shifted. Note that inside
|
|
1648
|
+
* <code>this.oFirstLevel</code> not only siblings are affected.
|
|
1518
1649
|
*
|
|
1519
1650
|
* @param {number} iIndex
|
|
1520
1651
|
* Index in <code>this.aElements</code> of a node
|
|
1521
1652
|
* @param {number} iOffset
|
|
1522
|
-
* Offset to add to
|
|
1653
|
+
* Offset to add to rank
|
|
1523
1654
|
*
|
|
1524
1655
|
* @private
|
|
1525
1656
|
*/
|
|
1526
|
-
_AggregationCache.prototype.
|
|
1527
|
-
const
|
|
1528
|
-
const
|
|
1657
|
+
_AggregationCache.prototype.shiftRank = function (iIndex, iOffset) {
|
|
1658
|
+
const oNode = this.aElements[iIndex];
|
|
1659
|
+
const iMinRank = _Helper.getPrivateAnnotation(oNode, "rank");
|
|
1660
|
+
if (iMinRank === undefined) {
|
|
1661
|
+
return;
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1529
1664
|
const oCache = _Helper.getPrivateAnnotation(oNode, "parent");
|
|
1530
|
-
for (let i = iIndex + 1; i < aElements.length; i += 1) {
|
|
1531
|
-
const oSibling = aElements[i];
|
|
1665
|
+
for (let i = iIndex + 1; i < this.aElements.length; i += 1) {
|
|
1666
|
+
const oSibling = this.aElements[i];
|
|
1532
1667
|
if (_Helper.getPrivateAnnotation(oSibling, "parent") === oCache) {
|
|
1533
|
-
const
|
|
1534
|
-
if (
|
|
1535
|
-
_Helper.setPrivateAnnotation(oSibling, "
|
|
1668
|
+
const iRank = _Helper.getPrivateAnnotation(oSibling, "rank");
|
|
1669
|
+
if (iRank >= iMinRank) { // Note: undefined >= ... is false
|
|
1670
|
+
_Helper.setPrivateAnnotation(oSibling, "rank", iRank + iOffset);
|
|
1536
1671
|
}
|
|
1537
1672
|
}
|
|
1538
1673
|
if (oCache !== this.oFirstLevel
|
|
@@ -1576,9 +1711,9 @@ sap.ui.define([
|
|
|
1576
1711
|
_AggregationHelper.markSplicedStale(oElement);
|
|
1577
1712
|
delete this.aElements.$byPredicate[sPredicate];
|
|
1578
1713
|
// drop original element from its cache's collection
|
|
1579
|
-
const
|
|
1580
|
-
if (
|
|
1581
|
-
_Helper.getPrivateAnnotation(oElement, "parent").drop(
|
|
1714
|
+
const iRank = _Helper.getPrivateAnnotation(oElement, "rank");
|
|
1715
|
+
if (iRank !== undefined) {
|
|
1716
|
+
_Helper.getPrivateAnnotation(oElement, "parent").drop(iRank, sPredicate, true);
|
|
1582
1717
|
} // else: special handling inside #readGap
|
|
1583
1718
|
};
|
|
1584
1719
|
|
|
@@ -1688,7 +1823,7 @@ sap.ui.define([
|
|
|
1688
1823
|
return sPredicate;
|
|
1689
1824
|
}
|
|
1690
1825
|
|
|
1691
|
-
switch (_Helper.drillDown(oElement, oAggregation.$
|
|
1826
|
+
switch (_Helper.drillDown(oElement, oAggregation.$DrillState)) {
|
|
1692
1827
|
case "expanded":
|
|
1693
1828
|
bIsExpanded = true;
|
|
1694
1829
|
break;
|
|
@@ -1700,24 +1835,24 @@ sap.ui.define([
|
|
|
1700
1835
|
default: // "leaf"
|
|
1701
1836
|
// bIsExpanded = undefined;
|
|
1702
1837
|
}
|
|
1703
|
-
_Helper.deleteProperty(oElement, oAggregation.$
|
|
1838
|
+
_Helper.deleteProperty(oElement, oAggregation.$DrillState);
|
|
1704
1839
|
if (oGroupNode) {
|
|
1705
1840
|
iLevel = oGroupNode["@$ui5.node.level"] + 1;
|
|
1706
1841
|
} else {
|
|
1707
|
-
sDistanceFromRoot = _Helper.drillDown(oElement, oAggregation.$
|
|
1842
|
+
sDistanceFromRoot = _Helper.drillDown(oElement, oAggregation.$DistanceFromRoot);
|
|
1708
1843
|
if (sDistanceFromRoot) { // Edm.Int64
|
|
1709
|
-
_Helper.deleteProperty(oElement, oAggregation.$
|
|
1844
|
+
_Helper.deleteProperty(oElement, oAggregation.$DistanceFromRoot);
|
|
1710
1845
|
iLevel = parseInt(sDistanceFromRoot) + 1;
|
|
1711
1846
|
}
|
|
1712
1847
|
}
|
|
1713
1848
|
// set the node values
|
|
1714
1849
|
_AggregationHelper.setAnnotations(oElement, bIsExpanded, /*bIsTotal*/undefined, iLevel);
|
|
1715
1850
|
|
|
1716
|
-
if (oAggregation.$
|
|
1851
|
+
if (oAggregation.$LimitedDescendantCount) {
|
|
1717
1852
|
sLimitedDescendantCount
|
|
1718
|
-
= _Helper.drillDown(oElement, oAggregation.$
|
|
1853
|
+
= _Helper.drillDown(oElement, oAggregation.$LimitedDescendantCount);
|
|
1719
1854
|
if (sLimitedDescendantCount) {
|
|
1720
|
-
_Helper.deleteProperty(oElement, oAggregation.$
|
|
1855
|
+
_Helper.deleteProperty(oElement, oAggregation.$LimitedDescendantCount);
|
|
1721
1856
|
if (sLimitedDescendantCount !== "0") { // Edm.Int64
|
|
1722
1857
|
_Helper.setPrivateAnnotation(oElement, "descendants",
|
|
1723
1858
|
parseInt(sLimitedDescendantCount));
|