@openui5/sap.ui.core 1.124.2 → 1.126.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +4 -1
- package/.reuse/dep5 +9 -4
- package/THIRDPARTY.txt +13 -6
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -1
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/Event.js +1 -1
- package/src/sap/base/Eventing.js +1 -1
- package/src/sap/base/Log.js +0 -16
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/i18n/LanguageTag.js +1 -1
- package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
- package/src/sap/base/util/ObjectPath.js +6 -6
- 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 +35 -10
- package/src/sap/ui/Global.js +6 -6
- 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 +16 -1
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/Metadata.js +1 -1
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +3 -3
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +22 -5
- package/src/sap/ui/core/ComponentContainer.js +1 -1
- package/src/sap/ui/core/ComponentMetadata.js +1 -1
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +1 -1
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/Core.js +31 -29
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/Element.js +1 -1
- package/src/sap/ui/core/ElementMetadata.js +4 -3
- 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 +23 -9
- package/src/sap/ui/core/Fragment.js +15 -1
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +84 -50
- 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 +66 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/Lib.js +2 -2
- 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 +148 -102
- package/src/sap/ui/core/Manifest.js +1 -1
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/RenderManager.js +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/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +1 -1
- package/src/sap/ui/core/UIArea.js +2 -2
- package/src/sap/ui/core/UIComponent.js +23 -16
- 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 +110 -74
- package/src/sap/ui/core/boot.js +1 -6
- package/src/sap/ui/core/cldr/zh_TW.json +20 -20
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +2 -2
- package/src/sap/ui/core/dnd/DragAndDrop.js +180 -33
- package/src/sap/ui/core/dnd/DragDropBase.js +13 -2
- 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 +6 -3
- package/src/sap/ui/core/fieldhelp/FieldHelp.js +389 -0
- package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +62 -0
- package/src/sap/ui/core/format/FormatUtils.js +1 -1
- 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 +2 -1
- package/src/sap/ui/core/library.js +49 -9
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/mvc/Controller.js +77 -77
- 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 +10 -2
- package/src/sap/ui/core/mvc/XMLProcessingMode.js +4 -1
- package/src/sap/ui/core/mvc/XMLView.js +33 -5
- package/src/sap/ui/core/mvc/XMLViewRenderer.js +40 -7
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/LessSupport.js +1 -1
- package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
- package/src/sap/ui/core/postmessage/Bus.js +1 -1
- package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
- package/src/sap/ui/core/routing/async/TargetCache.js +12 -1
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/bootstrapFallback.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +1 -1
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/themes/sap_hcb/base_BlindLayer.less +37 -0
- package/src/sap/ui/core/themes/sap_hcb/base_BrowserScrollbar.less +36 -0
- package/src/sap/ui/core/themes/sap_hcb/base_BusyIndicator.less +19 -0
- package/src/sap/ui/core/themes/sap_hcb/base_CommandShortcutHints.less +20 -0
- package/src/sap/ui/core/themes/sap_hcb/base_DragAndDrop.less +76 -0
- package/src/sap/ui/core/themes/sap_hcb/base_Icon.less +144 -0
- package/src/sap/ui/core/themes/sap_hcb/base_LocalBusyIndicator.less +292 -0
- package/src/sap/ui/core/themes/sap_hcb/base_SAP-icons.less +10 -0
- package/src/sap/ui/core/themes/sap_hcb/base_ScrollBar.less +20 -0
- package/src/sap/ui/core/themes/sap_hcb/base_Shadow.less +3 -0
- package/src/sap/ui/core/themes/sap_hcb/base_TechnicalInfo.less +157 -0
- package/src/sap/ui/core/themes/sap_hcb/base_View.less +12 -0
- package/src/sap/ui/core/themes/sap_hcb/base_media.less +36 -0
- package/src/sap/ui/core/themes/sap_hcb/base_parameterClasses.less +83 -0
- package/src/sap/ui/core/themes/sap_hcb/base_shared.less +340 -0
- package/src/sap/ui/core/themes/sap_hcb/library.source.less +27 -1
- package/src/sap/ui/core/theming/Parameters.js +66 -6
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -1
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/XMLPreprocessor.js +14 -15
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/webc/WebComponent.js +1 -1
- package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
- package/src/sap/ui/core/ws/ReadyState.js +1 -1
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
- package/src/sap/ui/core/ws/WebSocket.js +1 -1
- package/src/sap/ui/debug/ControlTree.js +1 -1
- package/src/sap/ui/debug/DebugEnv.js +1 -1
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/dom/jquery/control.js +6 -3
- package/src/sap/ui/model/Binding.js +38 -0
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/DataState.js +1 -1
- package/src/sap/ui/model/ManagedObjectBindingSupport.js +5 -0
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +1 -1
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +8 -12
- package/src/sap/ui/model/base/ManagedObjectModel.js +12 -2
- package/src/sap/ui/model/json/JSONModel.js +6 -5
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
- package/src/sap/ui/model/odata/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/ODataUtils.js +22 -14
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataModel.js +50 -6
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +127 -46
- package/src/sap/ui/model/odata/v4/ODataBinding.js +20 -20
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +72 -73
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +406 -250
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +49 -47
- package/src/sap/ui/model/odata/v4/ODataModel.js +271 -217
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +205 -205
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +11 -10
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +232 -61
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +53 -9
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +53 -59
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +140 -80
- package/src/sap/ui/model/odata/v4/lib/_Parser.js +3 -3
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +98 -90
- package/src/sap/ui/model/odata/v4/lib/_TreeState.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +22 -22
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +63 -63
- package/src/sap/ui/model/resource/ResourceModel.js +7 -2
- 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/FESR.js +1 -1
- package/src/sap/ui/qunit/qunit-coverage-istanbul.js +1 -1
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/OpaPlugin.js +36 -12
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/starter/_utils.js +18 -3
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader-autoconfig.js +0 -25
- package/test/sap/ui/core/BindableResponseHeaders.html +5 -6
- package/test/sap/ui/core/ComponentCleanup.html +46 -46
- package/test/sap/ui/core/ComponentManifestFirst.html +26 -20
- package/test/sap/ui/core/ContextMenuSupport.html +9 -10
- package/test/sap/ui/core/DesigntimeOverview.html +1 -1
- package/test/sap/ui/core/EventBroadcaster.html +2 -2
- package/test/sap/ui/core/FieldGroup.html +70 -61
- package/test/sap/ui/core/GenericEventBinding.html +26 -23
- package/test/sap/ui/core/HTMLControl.html +46 -38
- package/test/sap/ui/core/HTMLSanitizer.html +70 -45
- package/test/sap/ui/core/IntervalTrigger.html +22 -21
- package/test/sap/ui/core/InvisibleControls.html +72 -72
- package/test/sap/ui/core/InvisibleText.html +2 -2
- package/test/sap/ui/core/LRUPersistentCache.html +19 -18
- package/test/sap/ui/core/LabelEnablement.html +18 -29
- package/test/sap/ui/core/Localization.html +40 -65
- package/test/sap/ui/core/Localization_HeapUsage.html +11 -12
- package/test/sap/ui/core/ManagedObjectModel.html +6 -7
- package/test/sap/ui/core/ODataAnnotationsPerformance.html +592 -602
- package/test/sap/ui/core/ODataV2CanonicalRequests.html +16 -13
- package/test/sap/ui/core/ODataV2Messages.html +15 -12
- package/test/sap/ui/core/ODataV2MessagesPerf.html +156 -132
- package/test/sap/ui/core/Popup.html +18 -14
- package/test/sap/ui/core/PopupWithUserSelection.html +4 -4
- package/test/sap/ui/core/StashedControlSupport.html +1 -1
- package/test/sap/ui/core/ThemeParameters.html +32 -20
- package/test/sap/ui/core/ValidateURL.html +109 -75
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/iStartMyAppInAFrame.html +2 -1
- package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/iStartMyAppInAFrame.js +2 -12
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Component.js +1 -4
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Detail.controller.js +0 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Main.controller.js +0 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/extension/Component.js +1 -5
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/manifest.json +2 -10
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Component.js +4 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/manifest.json +37 -0
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Component.js +5 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/manifest.json +42 -0
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Component.js +6 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Main.view.xml +4 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/manifest.json +49 -0
- package/test/sap/ui/core/demokit/sample/common/Controller.js +2 -2
- package/test/sap/ui/core/demokit/sample/common/ValueHelp.js +2 -2
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTime/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTime/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +35 -31
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/manifest.json +1 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/manifest.json +2 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +71 -68
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/manifest.json +7 -16
- package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Main.controller.js +3 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Draft/manifest.json +1 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/FieldGroups.view.xml +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +46 -43
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +12 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +21 -18
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/manifest.json +4 -7
- package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/SandboxModel.js +6 -6
- package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/manifest.json +1 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +130 -38
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +35 -43
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +1 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +25 -22
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +5 -4
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/manifest.json +3 -7
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/manifest.json +2 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +60 -57
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/manifest.json +4 -6
- package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/Main.view.xml +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/manifest.json +3 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +194 -90
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +102 -58
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +135 -39
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +14 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/manifest.json +1 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/pages/Main.js +4 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/manifest.json +2 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/manifest.json +2 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +19 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/manifest.json +3 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/CreateRelative.js +1 -8
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Main.controller.js +1 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/manifest.json +6 -5
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/manifest.json +2 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/manifest.json +3 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/manifest.json +3 -11
- package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/opaTests.qunit.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/manifest.json +2 -11
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/manifest.json +2 -11
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/manifest.json +2 -11
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/opaTests.qunit.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
- package/test/sap/ui/core/getComputedStyle.html +2 -1
- package/test/sap/ui/core/getComputedStyleFF.html +1 -1
- package/test/sap/ui/core/internal/samples/client/MusicCollection/Component.js +5 -8
- package/test/sap/ui/core/internal/samples/client/MusicCollection/Main.controller.js +6 -2
- package/test/sap/ui/core/internal/samples/client/MusicCollection/Main.view.xml +7 -3
- package/test/sap/ui/core/internal/samples/client/MusicCollection/index.html +1 -3
- package/test/sap/ui/core/internal/samples/client/MusicCollection/manifest.json +1 -13
- package/test/sap/ui/core/internal/samples/odata/twoFields/Component.js +3 -45
- package/test/sap/ui/core/internal/samples/odata/twoFields/Main.controller.js +37 -1
- package/test/sap/ui/core/internal/samples/odata/twoFields/Main.view.xml +5 -5
- package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.html +1 -3
- package/test/sap/ui/core/internal/samples/odata/twoFields/index.html +1 -3
- package/test/sap/ui/core/internal/samples/odata/twoFields/manifest.json +1 -11
- package/test/sap/ui/core/internal/samples/odata/v2/Products/Component.js +3 -22
- package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.controller.js +16 -22
- package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.view.xml +3 -2
- package/test/sap/ui/core/internal/samples/odata/v2/Products/SandboxModel.js +1 -1
- package/test/sap/ui/core/internal/samples/odata/v2/Products/index.html +1 -3
- package/test/sap/ui/core/internal/samples/odata/v2/Products/manifest.json +2 -13
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +1 -0
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +49 -41
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +6 -4
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/manifest.json +3 -12
- package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Component.js +1 -0
- package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.controller.js +2 -2
- package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.view.xml +7 -6
- package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/index.html +1 -3
- package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/manifest.json +1 -11
- package/test/sap/ui/core/qunit/CommandExecution.qunit.js +96 -92
- package/test/sap/ui/core/qunit/Fragment.qunit.js +20 -20
- package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +4 -4
- package/test/sap/ui/core/qunit/Icon.qunit.js +217 -1
- package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +24 -0
- package/test/sap/ui/core/qunit/RenderManager.qunit.js +18 -5
- package/test/sap/ui/core/qunit/ScrollBar.qunit.js +15 -18
- package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +80 -0
- package/test/sap/ui/core/qunit/ThemeParameters_legacyAPIs.qunit.js +1 -0
- package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +6 -14
- package/test/sap/ui/core/qunit/app/testsuite.app.qunit.js +2 -1
- package/test/sap/ui/core/qunit/base/Config.qunit.js +117 -114
- package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.html +3 -3
- package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.js +98 -95
- package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +20 -45
- package/test/sap/ui/core/qunit/base/Config_global.qunit.html +2 -2
- package/test/sap/ui/core/qunit/base/Config_meta.qunit.html +2 -2
- package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.html +2 -2
- package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.js +17 -16
- package/test/sap/ui/core/qunit/base/Config_url.qunit.html +2 -2
- package/test/sap/ui/core/qunit/bootstrap/BootstrapMainModule.beforeBootstrap.js +6 -0
- package/test/sap/ui/core/qunit/bootstrap/BootstrapMainModule.qunit.js +4 -4
- package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.js +30 -10
- package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +5 -1
- package/test/sap/ui/core/qunit/component/Customizing.qunit.js +2 -2
- package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +36 -1
- package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +475 -290
- package/test/sap/ui/core/qunit/component/Models.qunit.js +0 -70
- package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +86 -0
- package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +86 -1
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EP_In_Product_Table_Cell_Found.fragment.xml +5 -0
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EP_In_Product_Table_Column.fragment.xml +5 -0
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EPinNestedView.view.xml +51 -0
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/ExtensionPointProvider.js +27 -4
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/Main.view.xml +5 -0
- package/test/sap/ui/core/qunit/component/testdata/customizing/sap/Main.view.xml +0 -1
- package/test/sap/ui/core/qunit/component/testdata/customizing/sap/Sub2.view.xml +1 -3
- package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +231 -5
- package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +14 -2
- package/test/sap/ui/core/qunit/fieldhelp/FieldHelp.qunit.js +1146 -0
- package/test/sap/ui/core/qunit/fieldhelp/FieldHelpUtil.qunit.js +55 -0
- package/test/sap/ui/core/qunit/fieldhelp/testsuite.fieldhelp.qunit.html +12 -0
- package/test/sap/ui/core/qunit/fieldhelp/testsuite.fieldhelp.qunit.js +50 -0
- package/test/sap/ui/core/qunit/generic/ControlRenderer.qunit.js +4 -1
- package/test/sap/ui/core/qunit/generic/legacy/ControlRenderer.qunit.js +4 -0
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +1 -1
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +6 -0
- package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +1 -1
- package/test/sap/ui/core/qunit/jquery-mobile-custom.beforeBootstrap.js +11 -0
- package/test/sap/ui/core/qunit/jquery-mobile-custom.qunit.js +3 -3
- package/test/sap/ui/core/qunit/loader/amd/base_tag/_launchTest.js +2 -4
- package/test/sap/ui/core/qunit/loader/amd/config_paths/_launchTest.js +2 -4
- package/test/sap/ui/core/qunit/loader/amd/config_paths_relative/_launchTest.js +2 -4
- package/test/sap/ui/core/qunit/loader/amdAPIs.qunit.js +3 -0
- package/test/sap/ui/core/qunit/loader/asyncMode.qunit.js +2 -6
- package/test/sap/ui/core/qunit/loader/config.qunit.js +41 -2
- package/test/sap/ui/core/qunit/model/Binding.qunit.js +13 -0
- package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +2 -2
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +8 -6
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +7 -7
- package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +131 -22
- package/test/sap/ui/core/qunit/mvc/testdata/Async.view.xml +1 -2
- package/test/sap/ui/core/qunit/mvc/testdata/asyncHooks.view.xml +1 -3
- package/test/sap/ui/core/qunit/mvc/testdata/cache.view.xml +1 -1
- package/test/sap/ui/core/qunit/mvc/testdata/legacy/test.view.xml +32 -0
- package/test/sap/ui/core/qunit/mvc/testdata/test.view.xml +2 -15
- package/test/sap/ui/core/qunit/mvc/testsuite.mvc.qunit.js +9 -4
- package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +5 -12
- package/test/sap/ui/core/qunit/odata/type/testsuite.odata.types.qunit.js +1 -0
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +285 -12
- package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +55 -6
- package/test/sap/ui/core/qunit/odata/v2/data/ZUI5_GWSAMPLE_BASIC.metadata.xml +18 -0
- package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +118 -61
- package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +17 -17
- package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +559 -74
- package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +42 -42
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +2695 -97
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +125 -12
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +7 -6
- package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +12 -13
- package/test/sap/ui/core/qunit/odata/v4/_AnnotationHelperExpression.qunit.js +3 -3
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +796 -110
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +102 -2
- package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +48 -57
- package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +141 -33
- package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +2 -2
- package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +175 -69
- package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +3 -3
- package/test/sap/ui/core/qunit/odata/v4/testsuite.odatav4.qunit.js +1 -1
- package/test/sap/ui/core/qunit/resource/ResourceBinding.qunit.js +17 -14
- package/test/sap/ui/core/qunit/routing/async/Views.qunit.js +3 -0
- package/test/sap/ui/core/qunit/rule/testsuite.rule.qunit.js +6 -1
- package/test/sap/ui/core/qunit/test/starter/find/main.js +6 -4
- package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib4/themes/sap_horizon_hcb/library.css +2 -0
- package/test/sap/ui/core/qunit/testdata/routing/HistoryIFrame.html +2 -1
- package/test/sap/ui/core/qunit/testsuite.qunit.js +1 -0
- package/test/sap/ui/core/qunit/testsuites/testsuite.browser.runtime.qunit.js +5 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +4 -1
- package/test/sap/ui/core/qunit/ui/Device.qunit.js +92 -25
- package/test/sap/ui/core/qunit/ui5classes/ManagedObjectMetadata.qunit.js +3 -0
- package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +47 -1
- package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +20 -20
- package/test/sap/ui/core/relnotes/changes-1.124.json +1 -66
- package/test/sap/ui/core/relnotes/changes-1.125.json +32 -0
- package/test/sap/ui/core/relnotes/changes-1.126.json +47 -0
- package/test/sap/ui/core/samples/ResponsiveDemo.html +97 -103
- package/test/sap/ui/core/samples/databinding/UnitTable/ui5.yaml +1 -1
- package/test/sap/ui/core/samples/draganddrop/DragAndDrop.html +2 -2
- package/test/sap/ui/core/samples/mvc/Product.html +1 -7
- package/test/sap/ui/core/samples/mvc/ViewPreprocessor.html +20 -12
- package/test/sap/ui/core/samples/mvc/XMLView.html +77 -24
- package/test/sap/ui/core/samples/mvc/XMLViewAsync.html +13 -19
- package/test/sap/ui/core/samples/mvc/controller/Async.controller.js +0 -1
- package/test/sap/ui/core/samples/mvc/controller/Product.controller.js +0 -1
- package/test/sap/ui/core/samples/mvc/views/Async.view.xml +16 -57
- package/test/sap/ui/core/samples/mvc/views/Dummy.fragment.xml +2 -2
- package/test/sap/ui/core/samples/mvc/views/Dummy.view.xml +2 -2
- package/test/sap/ui/core/samples/mvc/views/Product.view.xml +16 -57
- package/test/sap/ui/core/util/PasteHelper.html +148 -147
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
- package/test/testsuite/js/settings.js +5 -4
- package/test/testsuite/styles/main.css +5 -0
- package/test/sap/ui/core/ResourceRoots.html +0 -28
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/component.json +0 -17
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/component.json +0 -18
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/component.json +0 -30
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +0 -52
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/Component.js +0 -30
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/Sandbox.js +0 -51
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L0_top5.json +0 -32
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_A_skip8.json +0 -138
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_B.json +0 -17
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_C.json +0 -17
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_top8.json +0 -93
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/metadata.xml +0 -2322
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/i18n/i18n.properties +0 -3
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/manifest.json +0 -69
|
@@ -42,7 +42,8 @@ sap.ui.define([
|
|
|
42
42
|
DataStateChange : true,
|
|
43
43
|
patchCompleted : true,
|
|
44
44
|
patchSent : true,
|
|
45
|
-
refresh : true
|
|
45
|
+
refresh : true,
|
|
46
|
+
selectionChanged : true
|
|
46
47
|
},
|
|
47
48
|
/**
|
|
48
49
|
* @alias sap.ui.model.odata.v4.ODataListBinding
|
|
@@ -50,14 +51,14 @@ sap.ui.define([
|
|
|
50
51
|
* @class List binding for an OData V4 model.
|
|
51
52
|
* An event handler can only be attached to this binding for the following events:
|
|
52
53
|
* 'AggregatedDataStateChange', 'change', 'createActivate', 'createCompleted',
|
|
53
|
-
* 'createSent', 'dataReceived', 'dataRequested', 'DataStateChange', '
|
|
54
|
-
* 'patchSent', and 'refresh'. For other events, an error is thrown.
|
|
54
|
+
* 'createSent', 'dataReceived', 'dataRequested', 'DataStateChange', 'selectionChanged',
|
|
55
|
+
* 'patchCompleted', 'patchSent', and 'refresh'. For other events, an error is thrown.
|
|
55
56
|
* @extends sap.ui.model.ListBinding
|
|
56
57
|
* @hideconstructor
|
|
57
58
|
* @mixes sap.ui.model.odata.v4.ODataParentBinding
|
|
58
59
|
* @public
|
|
59
60
|
* @since 1.37.0
|
|
60
|
-
* @version 1.
|
|
61
|
+
* @version 1.126.0
|
|
61
62
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
|
|
62
63
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
|
|
63
64
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
|
|
@@ -178,89 +179,30 @@ sap.ui.define([
|
|
|
178
179
|
asODataParentBinding(ODataListBinding.prototype);
|
|
179
180
|
|
|
180
181
|
/**
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
* @param {function} fnFunction The function to call when the event occurs
|
|
184
|
-
* @param {object} [oListener] Object on which to call the given function
|
|
185
|
-
* @returns {this} <code>this</code> to allow method chaining
|
|
186
|
-
*
|
|
187
|
-
* @public
|
|
188
|
-
* @since 1.98.0
|
|
189
|
-
*/
|
|
190
|
-
ODataListBinding.prototype.attachCreateActivate = function (fnFunction, oListener) {
|
|
191
|
-
return this.attachEvent("createActivate", fnFunction, oListener);
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Detach event handler <code>fnFunction</code> from the 'createActivate' event of this binding.
|
|
196
|
-
*
|
|
197
|
-
* @param {function} fnFunction The function to call when the event occurs
|
|
198
|
-
* @param {object} [oListener] Object on which to call the given function
|
|
199
|
-
* @returns {this} <code>this</code> to allow method chaining
|
|
200
|
-
*
|
|
201
|
-
* @public
|
|
202
|
-
* @since 1.98.0
|
|
203
|
-
*/
|
|
204
|
-
ODataListBinding.prototype.detachCreateActivate = function (fnFunction, oListener) {
|
|
205
|
-
return this.detachEvent("createActivate", fnFunction, oListener);
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Attach event handler <code>fnFunction</code> to the 'createCompleted' event of this binding.
|
|
210
|
-
*
|
|
211
|
-
* @param {function} fnFunction The function to call when the event occurs
|
|
212
|
-
* @param {object} [oListener] Object on which to call the given function
|
|
213
|
-
* @returns {this} <code>this</code> to allow method chaining
|
|
214
|
-
*
|
|
215
|
-
* @public
|
|
216
|
-
* @since 1.66.0
|
|
217
|
-
*/
|
|
218
|
-
ODataListBinding.prototype.attachCreateCompleted = function (fnFunction, oListener) {
|
|
219
|
-
return this.attachEvent("createCompleted", fnFunction, oListener);
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Detach event handler <code>fnFunction</code> from the 'createCompleted' event of this
|
|
224
|
-
* binding.
|
|
225
|
-
*
|
|
226
|
-
* @param {function} fnFunction The function to call when the event occurs
|
|
227
|
-
* @param {object} [oListener] Object on which to call the given function
|
|
228
|
-
* @returns {this} <code>this</code> to allow method chaining
|
|
229
|
-
*
|
|
230
|
-
* @public
|
|
231
|
-
* @since 1.66.0
|
|
232
|
-
*/
|
|
233
|
-
ODataListBinding.prototype.detachCreateCompleted = function (fnFunction, oListener) {
|
|
234
|
-
return this.detachEvent("createCompleted", fnFunction, oListener);
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Attach event handler <code>fnFunction</code> to the 'createSent' event of this binding.
|
|
239
|
-
*
|
|
240
|
-
* @param {function} fnFunction The function to call when the event occurs
|
|
241
|
-
* @param {object} [oListener] Object on which to call the given function
|
|
242
|
-
* @returns {this} <code>this</code> to allow method chaining
|
|
243
|
-
*
|
|
244
|
-
* @public
|
|
245
|
-
* @since 1.66.0
|
|
182
|
+
* @override
|
|
183
|
+
* @see sap.ui.model.Binding#_checkDataStateMessages
|
|
246
184
|
*/
|
|
247
|
-
ODataListBinding.prototype.
|
|
248
|
-
|
|
185
|
+
ODataListBinding.prototype._checkDataStateMessages = function (oDataState, sResolvedPath) {
|
|
186
|
+
if (sResolvedPath) {
|
|
187
|
+
oDataState.setModelMessages(this.oModel.getMessagesByPath(sResolvedPath, true));
|
|
188
|
+
}
|
|
249
189
|
};
|
|
250
190
|
|
|
251
191
|
/**
|
|
252
|
-
*
|
|
253
|
-
* binding.
|
|
192
|
+
* Returns all currently existing contexts of this list binding in no special order.
|
|
254
193
|
*
|
|
255
|
-
* @
|
|
256
|
-
*
|
|
257
|
-
* @returns {this} <code>this</code> to allow method chaining
|
|
194
|
+
* @returns {sap.ui.model.odata.v4.Context[]}
|
|
195
|
+
* All currently existing contexts of this list binding, in no special order
|
|
258
196
|
*
|
|
259
|
-
* @
|
|
260
|
-
* @
|
|
197
|
+
* @private
|
|
198
|
+
* @see #getAllCurrentContexts
|
|
261
199
|
*/
|
|
262
|
-
ODataListBinding.prototype.
|
|
263
|
-
return this.
|
|
200
|
+
ODataListBinding.prototype._getAllExistingContexts = function () {
|
|
201
|
+
return (this.aContexts ?? []).filter(function (oContext) {
|
|
202
|
+
return oContext;
|
|
203
|
+
}).concat(Object.values(this.mPreviousContextsByPath).filter(function (oContext) {
|
|
204
|
+
return oContext.isEffectivelyKeptAlive();
|
|
205
|
+
}));
|
|
264
206
|
};
|
|
265
207
|
|
|
266
208
|
/**
|
|
@@ -304,8 +246,8 @@ sap.ui.define([
|
|
|
304
246
|
this.fetchCache(this.oContext, /*bIgnoreParentCache*/true);
|
|
305
247
|
}
|
|
306
248
|
this.oHeaderContext.adjustPredicate(sTransientPredicate, sPredicate);
|
|
307
|
-
this.aContexts.forEach(function (
|
|
308
|
-
|
|
249
|
+
this.aContexts.forEach(function (oContext0) {
|
|
250
|
+
oContext0.adjustPredicate(sTransientPredicate, sPredicate, adjustPreviousData);
|
|
309
251
|
});
|
|
310
252
|
}
|
|
311
253
|
};
|
|
@@ -606,6 +548,64 @@ sap.ui.define([
|
|
|
606
548
|
* @since 1.37.0
|
|
607
549
|
*/
|
|
608
550
|
|
|
551
|
+
/**
|
|
552
|
+
* The 'selectionChanged' event is fired if the selection state of a context changes; for more
|
|
553
|
+
* information see {@link sap.ui.model.odata.v4.Context#setSelected}.
|
|
554
|
+
*
|
|
555
|
+
* @param {sap.ui.base.Event} oEvent The event object
|
|
556
|
+
* @param {sap.ui.model.odata.v4.ODataListBinding} oEvent.getSource() This binding
|
|
557
|
+
* @param {function():Object<any>} oEvent.getParameters
|
|
558
|
+
* Function which returns an object containing all event parameters
|
|
559
|
+
* @param {boolean} oEvent.getParameters.context
|
|
560
|
+
* The context for which {@link sap.ui.model.odata.v4.Context#setSelected} was called
|
|
561
|
+
*
|
|
562
|
+
* @event sap.ui.model.odata.v4.ODataListBinding#selectionChanged
|
|
563
|
+
* @experimental As of version 1.126.0
|
|
564
|
+
* @public
|
|
565
|
+
*/
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Attach event handler <code>fnFunction</code> to the 'createActivate' event of this binding.
|
|
569
|
+
*
|
|
570
|
+
* @param {function} fnFunction The function to call when the event occurs
|
|
571
|
+
* @param {object} [oListener] Object on which to call the given function
|
|
572
|
+
* @returns {this} <code>this</code> to allow method chaining
|
|
573
|
+
*
|
|
574
|
+
* @public
|
|
575
|
+
* @since 1.98.0
|
|
576
|
+
*/
|
|
577
|
+
ODataListBinding.prototype.attachCreateActivate = function (fnFunction, oListener) {
|
|
578
|
+
return this.attachEvent("createActivate", fnFunction, oListener);
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* Attach event handler <code>fnFunction</code> to the 'createCompleted' event of this binding.
|
|
583
|
+
*
|
|
584
|
+
* @param {function} fnFunction The function to call when the event occurs
|
|
585
|
+
* @param {object} [oListener] Object on which to call the given function
|
|
586
|
+
* @returns {this} <code>this</code> to allow method chaining
|
|
587
|
+
*
|
|
588
|
+
* @public
|
|
589
|
+
* @since 1.66.0
|
|
590
|
+
*/
|
|
591
|
+
ODataListBinding.prototype.attachCreateCompleted = function (fnFunction, oListener) {
|
|
592
|
+
return this.attachEvent("createCompleted", fnFunction, oListener);
|
|
593
|
+
};
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* Attach event handler <code>fnFunction</code> to the 'createSent' event of this binding.
|
|
597
|
+
*
|
|
598
|
+
* @param {function} fnFunction The function to call when the event occurs
|
|
599
|
+
* @param {object} [oListener] Object on which to call the given function
|
|
600
|
+
* @returns {this} <code>this</code> to allow method chaining
|
|
601
|
+
*
|
|
602
|
+
* @public
|
|
603
|
+
* @since 1.66.0
|
|
604
|
+
*/
|
|
605
|
+
ODataListBinding.prototype.attachCreateSent = function (fnFunction, oListener) {
|
|
606
|
+
return this.attachEvent("createSent", fnFunction, oListener);
|
|
607
|
+
};
|
|
608
|
+
|
|
609
609
|
/**
|
|
610
610
|
* See {@link sap.ui.base.EventProvider#attachEvent}
|
|
611
611
|
*
|
|
@@ -628,16 +628,6 @@ sap.ui.define([
|
|
|
628
628
|
return ListBinding.prototype.attachEvent.apply(this, arguments);
|
|
629
629
|
};
|
|
630
630
|
|
|
631
|
-
/**
|
|
632
|
-
* @override
|
|
633
|
-
* @see sap.ui.model.Binding#_checkDataStateMessages
|
|
634
|
-
*/
|
|
635
|
-
ODataListBinding.prototype._checkDataStateMessages = function (oDataState, sResolvedPath) {
|
|
636
|
-
if (sResolvedPath) {
|
|
637
|
-
oDataState.setModelMessages(this.oModel.getMessagesByPath(sResolvedPath, true));
|
|
638
|
-
}
|
|
639
|
-
};
|
|
640
|
-
|
|
641
631
|
/**
|
|
642
632
|
* Checks that deep create is possible in this binding.
|
|
643
633
|
*
|
|
@@ -695,21 +685,26 @@ sap.ui.define([
|
|
|
695
685
|
* @param {number} [iCount]
|
|
696
686
|
* The count of nodes affected by the collapse, in case the cache already performed it
|
|
697
687
|
* @throws {Error}
|
|
698
|
-
* If the binding's root binding is suspended
|
|
688
|
+
* If the binding's root binding is suspended or if the given context is not part of a
|
|
689
|
+
* recursive hierarchy
|
|
699
690
|
*
|
|
700
691
|
* @private
|
|
701
692
|
* @see #expand
|
|
702
693
|
*/
|
|
703
694
|
ODataListBinding.prototype.collapse = function (oContext, bSilent, iCount) {
|
|
695
|
+
if (this.aContexts[oContext.iIndex] !== oContext) {
|
|
696
|
+
throw new Error("Not currently part of the hierarchy: " + oContext);
|
|
697
|
+
}
|
|
698
|
+
|
|
704
699
|
iCount ??= this.oCache.collapse(
|
|
705
700
|
_Helper.getRelativePath(oContext.getPath(), this.oHeaderContext.getPath()));
|
|
706
701
|
|
|
707
702
|
if (iCount > 0) {
|
|
708
703
|
const aContexts = this.aContexts;
|
|
709
704
|
const iModelIndex = oContext.getModelIndex();
|
|
710
|
-
aContexts.splice(iModelIndex + 1, iCount).forEach((
|
|
711
|
-
if (!
|
|
712
|
-
this.mPreviousContextsByPath[
|
|
705
|
+
aContexts.splice(iModelIndex + 1, iCount).forEach((oContext0) => {
|
|
706
|
+
if (!oContext0.created()) {
|
|
707
|
+
this.mPreviousContextsByPath[oContext0.getPath()] = oContext0;
|
|
713
708
|
} // else: created (even persisted) is kept inside "context" annotation
|
|
714
709
|
});
|
|
715
710
|
for (let i = iModelIndex + 1; i < aContexts.length; i += 1) {
|
|
@@ -797,17 +792,35 @@ sap.ui.define([
|
|
|
797
792
|
* the case if the complete collection has been read or if the system query option
|
|
798
793
|
* <code>$count</code> is <code>true</code> and the binding has processed at least one request.
|
|
799
794
|
*
|
|
800
|
-
*
|
|
801
|
-
* or expanded, but not collapsed) is supported
|
|
802
|
-
*
|
|
803
|
-
*
|
|
795
|
+
* Since 1.125.0, creating a new child beneath an existing and visible parent node (which must
|
|
796
|
+
* either be a leaf or expanded, but not collapsed) is supported in case of a recursive
|
|
797
|
+
* hierarchy (see {@link #setAggregation}). The parent node must be identified via an
|
|
798
|
+
* {@link sap.ui.model.odata.v4.Context} instance given as
|
|
804
799
|
* <code>oInitialData["@$ui5.node.parent"]</code> (which is immediately removed from the new
|
|
805
|
-
* child's data). It can be <code>null</code> or absent when creating a new root node
|
|
806
|
-
*
|
|
807
|
-
* <code>
|
|
800
|
+
* child's data). It can be <code>null</code> or absent when creating a new root node.
|
|
801
|
+
* <code>bSkipRefresh</code> must be set, but both <code>bAtEnd</code> and
|
|
802
|
+
* <code>bInactive</code> must not be set. No other creation or
|
|
808
803
|
* {@link sap.ui.model.odata.v4.Context#move move} must be pending, and no other modification
|
|
809
804
|
* (including collapse of some ancestor node) must happen while this creation is pending!
|
|
810
805
|
*
|
|
806
|
+
* When using the <code>createInPlace</code> parameter
|
|
807
|
+
* (see {@link #setAggregation}, @experimental as of version 1.125.0), the new
|
|
808
|
+
* {@link sap.ui.model.odata.v4.Context#isTransient transient} child is hidden until its
|
|
809
|
+
* {@link sap.ui.model.odata.v4.Context#created created promise} resolves, and then it is shown
|
|
810
|
+
* at a position determined by the back end and the current sort order. Note that the returned
|
|
811
|
+
* context is not always part of this list binding's collection and can only be used for the
|
|
812
|
+
* following scenarios:
|
|
813
|
+
* <ul>
|
|
814
|
+
* <li> The position of the new child can be retrieved by using its
|
|
815
|
+
* {@link sap.ui.model.odata.v4.Context#getIndex index}. If the created child does not
|
|
816
|
+
* become part of the hierarchy due to the search or filter criteria, the context will be
|
|
817
|
+
* {@link sap.ui.model.odata.v4.Context#destroy destroyed} and its
|
|
818
|
+
* {@link sap.ui.model.odata.v4.Context#getIndex index} is set to <code>undefined</code>.
|
|
819
|
+
* <li> The created context always knows its
|
|
820
|
+
* {@link sap.ui.model.odata.v4.Context#getPath path}, which can be used for
|
|
821
|
+
* {@link #getKeepAliveContext}.
|
|
822
|
+
* </ul>
|
|
823
|
+
*
|
|
811
824
|
* @param {Object<any>} [oInitialData={}]
|
|
812
825
|
* The initial data for the created entity
|
|
813
826
|
* @param {boolean} [bSkipRefresh]
|
|
@@ -871,6 +884,7 @@ sap.ui.define([
|
|
|
871
884
|
var oAggregation = this.mParameters.$$aggregation,
|
|
872
885
|
iChildIndex, // used only in case of recursive hierarchy
|
|
873
886
|
oContext,
|
|
887
|
+
bCreateInPlace = oAggregation?.createInPlace,
|
|
874
888
|
oCreatePathPromise = this.fetchResourcePath(),
|
|
875
889
|
oCreatePromise,
|
|
876
890
|
oEntityData,
|
|
@@ -879,7 +893,6 @@ sap.ui.define([
|
|
|
879
893
|
sResolvedPath = this.getResolvedPath(),
|
|
880
894
|
sTransientPredicate = "($uid=" + _Helper.uid() + ")",
|
|
881
895
|
sTransientPath = sResolvedPath + sTransientPredicate,
|
|
882
|
-
i,
|
|
883
896
|
that = this;
|
|
884
897
|
|
|
885
898
|
if (!sResolvedPath) {
|
|
@@ -920,6 +933,7 @@ sap.ui.define([
|
|
|
920
933
|
// clone data to avoid modifications outside the cache
|
|
921
934
|
// remove any property starting with "@$ui5."
|
|
922
935
|
oEntityData = _Helper.publicClone(oInitialData, true) || {};
|
|
936
|
+
let bRefresh;
|
|
923
937
|
if (oAggregation) {
|
|
924
938
|
if (!bSkipRefresh) {
|
|
925
939
|
throw new Error("Missing bSkipRefresh");
|
|
@@ -937,6 +951,7 @@ sap.ui.define([
|
|
|
937
951
|
throw new Error("Unsupported collapsed parent: " + oParentContext);
|
|
938
952
|
}
|
|
939
953
|
oEntityData["@$ui5.node.parent"] = oParentContext.getCanonicalPath().slice(1);
|
|
954
|
+
bRefresh = this.oCache.isRefreshNeededAfterCreate(oParentContext.iIndex);
|
|
940
955
|
} else {
|
|
941
956
|
iChildIndex = 0;
|
|
942
957
|
}
|
|
@@ -952,7 +967,7 @@ sap.ui.define([
|
|
|
952
967
|
return;
|
|
953
968
|
}
|
|
954
969
|
|
|
955
|
-
oContext.doSetSelected(false);
|
|
970
|
+
oContext.doSetSelected(false, true);
|
|
956
971
|
that.removeCreated(oContext);
|
|
957
972
|
return Promise.resolve().then(function () {
|
|
958
973
|
// Fire the change asynchronously so that Cache#delete is finished and #getContexts
|
|
@@ -974,7 +989,7 @@ sap.ui.define([
|
|
|
974
989
|
).then(function (oCreatedEntity) {
|
|
975
990
|
// The entity was created on the server
|
|
976
991
|
// Note: This code is not called for nested creates, they are always rejected
|
|
977
|
-
var bDeepCreate,
|
|
992
|
+
var bDeepCreate, sGroupId0, sPredicate;
|
|
978
993
|
|
|
979
994
|
// refreshSingle requires the new key predicate in oContext.getPath()
|
|
980
995
|
sPredicate = _Helper.getPrivateAnnotation(oCreatedEntity, "predicate");
|
|
@@ -983,27 +998,48 @@ sap.ui.define([
|
|
|
983
998
|
that.oModel.checkMessages();
|
|
984
999
|
}
|
|
985
1000
|
that.fireEvent("createCompleted", {context : oContext, success : true});
|
|
1001
|
+
if (bCreateInPlace) {
|
|
1002
|
+
const iRank = _Helper.getPrivateAnnotation(oCreatedEntity, "rank");
|
|
1003
|
+
oContext.iIndex = iRank;
|
|
1004
|
+
if (iRank === undefined || bRefresh) {
|
|
1005
|
+
oContext.destroy();
|
|
1006
|
+
return;
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
that.insertContext(oContext, iRank);
|
|
1010
|
+
}
|
|
986
1011
|
bDeepCreate = _Helper.getPrivateAnnotation(oCreatedEntity, "deepCreate");
|
|
987
1012
|
_Helper.deletePrivateAnnotation(oCreatedEntity, "deepCreate");
|
|
988
|
-
|
|
989
|
-
if (that.oModel.isApiGroup(
|
|
990
|
-
|
|
1013
|
+
sGroupId0 = that.getGroupId();
|
|
1014
|
+
if (that.oModel.isApiGroup(sGroupId0)) {
|
|
1015
|
+
sGroupId0 = "$auto";
|
|
991
1016
|
}
|
|
992
1017
|
// currently the optimized update w/o bSkipRefresh is restricted to deep create
|
|
993
1018
|
return bSkipRefresh || bDeepCreate
|
|
994
|
-
? oContext.updateAfterCreate(bSkipRefresh,
|
|
995
|
-
: that.refreshSingle(oContext, that.lockGroup(
|
|
1019
|
+
? oContext.updateAfterCreate(bSkipRefresh, sGroupId0)
|
|
1020
|
+
: that.refreshSingle(oContext, that.lockGroup(sGroupId0));
|
|
996
1021
|
}, function (oError) {
|
|
997
1022
|
oGroupLock.unlock(true); // createInCache failed, so the lock might still be blocking
|
|
998
1023
|
throw oError;
|
|
999
1024
|
});
|
|
1025
|
+
if (bRefresh) {
|
|
1026
|
+
oCreatePromise = SyncPromise.all([
|
|
1027
|
+
oCreatePromise,
|
|
1028
|
+
this.requestSideEffects(sGroupId, [""])
|
|
1029
|
+
]);
|
|
1030
|
+
}
|
|
1000
1031
|
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1032
|
+
const iIndex = bCreateInPlace ? undefined : iChildIndex ?? -this.iCreatedContexts;
|
|
1033
|
+
oContext = Context.create(this.oModel, this, sTransientPath, iIndex, oCreatePromise,
|
|
1034
|
+
bInactive);
|
|
1035
|
+
oContext.doSetSelected(this.oHeaderContext.isSelected());
|
|
1004
1036
|
if (this.isTransient()) {
|
|
1005
1037
|
oContext.created().catch(this.oModel.getReporter());
|
|
1006
1038
|
}
|
|
1039
|
+
if (bCreateInPlace) {
|
|
1040
|
+
return oContext;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1007
1043
|
// to make sure that #fetchValue does not overtake #createInCache, avoid bCached flag!
|
|
1008
1044
|
oContext.fetchValue().then(function (oElement) {
|
|
1009
1045
|
if (oElement) {
|
|
@@ -1012,23 +1048,7 @@ sap.ui.define([
|
|
|
1012
1048
|
} // else: context already destroyed
|
|
1013
1049
|
});
|
|
1014
1050
|
|
|
1015
|
-
|
|
1016
|
-
this.aContexts.splice(iChildIndex, 0, oContext);
|
|
1017
|
-
for (i = this.aContexts.length - 1; i > iChildIndex; i -= 1) {
|
|
1018
|
-
if (this.aContexts[i]) {
|
|
1019
|
-
this.aContexts[i].iIndex += 1;
|
|
1020
|
-
}
|
|
1021
|
-
}
|
|
1022
|
-
this.iMaxLength += 1;
|
|
1023
|
-
} else if (this.bFirstCreateAtEnd !== bAtEnd) {
|
|
1024
|
-
this.aContexts.splice(this.iCreatedContexts - 1, 0, oContext);
|
|
1025
|
-
for (i = this.iCreatedContexts - 1; i >= 0; i -= 1) {
|
|
1026
|
-
this.aContexts[i].iIndex = i - this.iCreatedContexts;
|
|
1027
|
-
}
|
|
1028
|
-
} else {
|
|
1029
|
-
this.aContexts.unshift(oContext);
|
|
1030
|
-
}
|
|
1031
|
-
this._fireChange({reason : ChangeReason.Add});
|
|
1051
|
+
this.insertContext(oContext, iChildIndex, bAtEnd);
|
|
1032
1052
|
|
|
1033
1053
|
return oContext;
|
|
1034
1054
|
};
|
|
@@ -1059,21 +1079,19 @@ sap.ui.define([
|
|
|
1059
1079
|
sPath = this.getResolvedPath(),
|
|
1060
1080
|
sPredicate,
|
|
1061
1081
|
bStartBeyondRange = iStart > this.aContexts.length,
|
|
1062
|
-
i,
|
|
1063
1082
|
that = this;
|
|
1064
1083
|
|
|
1065
1084
|
/*
|
|
1066
1085
|
* Shrinks contexts to the new length, destroys unneeded contexts
|
|
1067
1086
|
*/
|
|
1068
1087
|
function shrinkContexts() {
|
|
1069
|
-
var iNewLength = that.iMaxLength + that.iCreatedContexts
|
|
1070
|
-
i;
|
|
1088
|
+
var iNewLength = that.iMaxLength + that.iCreatedContexts;
|
|
1071
1089
|
|
|
1072
1090
|
if (iNewLength >= that.aContexts.length) {
|
|
1073
1091
|
return;
|
|
1074
1092
|
}
|
|
1075
1093
|
|
|
1076
|
-
for (i = iNewLength; i < that.aContexts.length; i += 1) {
|
|
1094
|
+
for (let i = iNewLength; i < that.aContexts.length; i += 1) {
|
|
1077
1095
|
if (that.aContexts[i]) {
|
|
1078
1096
|
that.aContexts[i].destroy();
|
|
1079
1097
|
}
|
|
@@ -1085,7 +1103,7 @@ sap.ui.define([
|
|
|
1085
1103
|
bChanged = true;
|
|
1086
1104
|
}
|
|
1087
1105
|
|
|
1088
|
-
for (i = 0; i < aResults.length; i += 1) {
|
|
1106
|
+
for (let i = 0; i < aResults.length; i += 1) {
|
|
1089
1107
|
if (this.aContexts[iStart + i] === undefined && aResults[i]) {
|
|
1090
1108
|
bChanged = true;
|
|
1091
1109
|
i$skipIndex = iStart + i - this.iCreatedContexts; // index on server ($skip)
|
|
@@ -1115,7 +1133,7 @@ sap.ui.define([
|
|
|
1115
1133
|
}
|
|
1116
1134
|
} else {
|
|
1117
1135
|
oContext = Context.create(oModel, this, sContextPath, i$skipIndex);
|
|
1118
|
-
oContext.
|
|
1136
|
+
oContext.doSetSelected(this.oHeaderContext.isSelected());
|
|
1119
1137
|
}
|
|
1120
1138
|
this.aContexts[iStart + i] = oContext;
|
|
1121
1139
|
}
|
|
@@ -1365,6 +1383,50 @@ sap.ui.define([
|
|
|
1365
1383
|
}
|
|
1366
1384
|
};
|
|
1367
1385
|
|
|
1386
|
+
/**
|
|
1387
|
+
* Detach event handler <code>fnFunction</code> from the 'createActivate' event of this binding.
|
|
1388
|
+
*
|
|
1389
|
+
* @param {function} fnFunction The function to call when the event occurs
|
|
1390
|
+
* @param {object} [oListener] Object on which to call the given function
|
|
1391
|
+
* @returns {this} <code>this</code> to allow method chaining
|
|
1392
|
+
*
|
|
1393
|
+
* @public
|
|
1394
|
+
* @since 1.98.0
|
|
1395
|
+
*/
|
|
1396
|
+
ODataListBinding.prototype.detachCreateActivate = function (fnFunction, oListener) {
|
|
1397
|
+
return this.detachEvent("createActivate", fnFunction, oListener);
|
|
1398
|
+
};
|
|
1399
|
+
|
|
1400
|
+
/**
|
|
1401
|
+
* Detach event handler <code>fnFunction</code> from the 'createCompleted' event of this
|
|
1402
|
+
* binding.
|
|
1403
|
+
*
|
|
1404
|
+
* @param {function} fnFunction The function to call when the event occurs
|
|
1405
|
+
* @param {object} [oListener] Object on which to call the given function
|
|
1406
|
+
* @returns {this} <code>this</code> to allow method chaining
|
|
1407
|
+
*
|
|
1408
|
+
* @public
|
|
1409
|
+
* @since 1.66.0
|
|
1410
|
+
*/
|
|
1411
|
+
ODataListBinding.prototype.detachCreateCompleted = function (fnFunction, oListener) {
|
|
1412
|
+
return this.detachEvent("createCompleted", fnFunction, oListener);
|
|
1413
|
+
};
|
|
1414
|
+
|
|
1415
|
+
/**
|
|
1416
|
+
* Detach event handler <code>fnFunction</code> from the 'createSent' event of this
|
|
1417
|
+
* binding.
|
|
1418
|
+
*
|
|
1419
|
+
* @param {function} fnFunction The function to call when the event occurs
|
|
1420
|
+
* @param {object} [oListener] Object on which to call the given function
|
|
1421
|
+
* @returns {this} <code>this</code> to allow method chaining
|
|
1422
|
+
*
|
|
1423
|
+
* @public
|
|
1424
|
+
* @since 1.66.0
|
|
1425
|
+
*/
|
|
1426
|
+
ODataListBinding.prototype.detachCreateSent = function (fnFunction, oListener) {
|
|
1427
|
+
return this.detachEvent("createSent", fnFunction, oListener);
|
|
1428
|
+
};
|
|
1429
|
+
|
|
1368
1430
|
/**
|
|
1369
1431
|
* @override
|
|
1370
1432
|
* @see sap.ui.model.odata.v4.ODataBinding#doCreateCache
|
|
@@ -1527,13 +1589,18 @@ sap.ui.define([
|
|
|
1527
1589
|
* @returns {sap.ui.base.SyncPromise}
|
|
1528
1590
|
* A promise that is resolved when the expand is successful and rejected when it fails
|
|
1529
1591
|
* @throws {Error}
|
|
1530
|
-
* If the binding's root binding is suspended
|
|
1592
|
+
* If the binding's root binding is suspended or if the given context is not part of a
|
|
1593
|
+
* recursive hierarchy
|
|
1531
1594
|
*
|
|
1532
1595
|
* @private
|
|
1533
1596
|
* @see #collapse
|
|
1534
1597
|
*/
|
|
1535
1598
|
ODataListBinding.prototype.expand = function (oContext, bSilent) {
|
|
1536
1599
|
this.checkSuspended();
|
|
1600
|
+
if (this.aContexts[oContext.iIndex] !== oContext) {
|
|
1601
|
+
throw new Error("Not currently part of the hierarchy: " + oContext);
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1537
1604
|
let bDataRequested = false;
|
|
1538
1605
|
|
|
1539
1606
|
return this.oCache.expand(this.lockGroup(),
|
|
@@ -1918,7 +1985,7 @@ sap.ui.define([
|
|
|
1918
1985
|
*
|
|
1919
1986
|
* @param {sap.ui.model.odata.v4.Context} oNode
|
|
1920
1987
|
* Some node which could have a parent
|
|
1921
|
-
|
|
1988
|
+
* @param {boolean} [bAllowRequest]
|
|
1922
1989
|
* Whether it is allowed to send a GET request to fetch the parent node's data
|
|
1923
1990
|
* @returns {sap.ui.model.odata.v4.Context|null|undefined|
|
|
1924
1991
|
* Promise<sap.ui.model.odata.v4.Context>|sap.ui.base.SyncPromise}
|
|
@@ -1935,9 +2002,7 @@ sap.ui.define([
|
|
|
1935
2002
|
* @private
|
|
1936
2003
|
*/
|
|
1937
2004
|
ODataListBinding.prototype.fetchOrGetParent = function (oNode, bAllowRequest) {
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
if (!oAggregation || !oAggregation.hierarchyQualifier) {
|
|
2005
|
+
if (!this.mParameters.$$aggregation?.hierarchyQualifier) {
|
|
1941
2006
|
throw new Error("Missing recursive hierarchy");
|
|
1942
2007
|
}
|
|
1943
2008
|
if (this.aContexts[oNode.iIndex] !== oNode) {
|
|
@@ -1962,6 +2027,64 @@ sap.ui.define([
|
|
|
1962
2027
|
return this.aContexts[iParentIndex];
|
|
1963
2028
|
};
|
|
1964
2029
|
|
|
2030
|
+
/**
|
|
2031
|
+
* Fetches (if <code>bAllowRequest</code> is set) or gets the given node's sibling, either the
|
|
2032
|
+
* next one (via offset +1) or the previous one (via offset -1).
|
|
2033
|
+
*
|
|
2034
|
+
* @param {sap.ui.model.odata.v4.Context} oNode - A node
|
|
2035
|
+
* @param {number} iOffset - An offset, either -1 or +1
|
|
2036
|
+
* @param {boolean} [bAllowRequest]
|
|
2037
|
+
* Whether it is allowed to send a GET request to fetch the sibling
|
|
2038
|
+
* @returns {sap.ui.model.odata.v4.Context|null|undefined
|
|
2039
|
+
* |Promise<sap.ui.model.odata.v4.Context|null>}
|
|
2040
|
+
* The sibling's context, or <code>null</code> if no such sibling exists for sure, or
|
|
2041
|
+
* <code>undefined</code> if we cannot tell and it is not allowed to send a request (see
|
|
2042
|
+
* <code>bAllowRequest</code>). Or a promise (if a request was sent) which resolves with the
|
|
2043
|
+
* sibling's context (or <code>null</code> if no such sibling exists) in case of success, or
|
|
2044
|
+
* rejects with an instance of <code>Error</code> in case of failure.
|
|
2045
|
+
* @throws {Error} If
|
|
2046
|
+
* <ul>
|
|
2047
|
+
* <li> the given offset is unsupported,
|
|
2048
|
+
* <li> this binding's root binding is suspended,
|
|
2049
|
+
* <li> the given context is {@link #isDeleted deleted}, {@link #isTransient transient}, or
|
|
2050
|
+
* not part of a recursive hierarchy.
|
|
2051
|
+
* </ul>
|
|
2052
|
+
*
|
|
2053
|
+
* @private
|
|
2054
|
+
*/
|
|
2055
|
+
ODataListBinding.prototype.fetchOrGetSibling = function (oNode, iOffset = +1,
|
|
2056
|
+
bAllowRequest = false) {
|
|
2057
|
+
if (!this.mParameters.$$aggregation?.hierarchyQualifier) {
|
|
2058
|
+
throw new Error("Missing recursive hierarchy");
|
|
2059
|
+
}
|
|
2060
|
+
if (iOffset !== -1 && iOffset !== +1) {
|
|
2061
|
+
throw new Error("Unsupported offset: " + iOffset);
|
|
2062
|
+
}
|
|
2063
|
+
if (oNode.isDeleted() || oNode.isTransient() || this.aContexts[oNode.iIndex] !== oNode) {
|
|
2064
|
+
throw new Error("Unsupported context: " + oNode);
|
|
2065
|
+
}
|
|
2066
|
+
this.checkSuspended();
|
|
2067
|
+
|
|
2068
|
+
const iSibling = this.oCache.getSiblingIndex(oNode.iIndex, iOffset);
|
|
2069
|
+
if (iSibling < 0) {
|
|
2070
|
+
return null;
|
|
2071
|
+
}
|
|
2072
|
+
if (iSibling !== undefined) {
|
|
2073
|
+
this.fetchContexts(iSibling, 1, 0, _GroupLock.$cached);
|
|
2074
|
+
return this.aContexts[iSibling];
|
|
2075
|
+
}
|
|
2076
|
+
if (!bAllowRequest) {
|
|
2077
|
+
return undefined;
|
|
2078
|
+
}
|
|
2079
|
+
|
|
2080
|
+
return this.oCache.requestSiblingIndex(oNode.iIndex, iOffset, this.lockGroup())
|
|
2081
|
+
.then((iIndex) => {
|
|
2082
|
+
return iIndex < 0
|
|
2083
|
+
? null
|
|
2084
|
+
: this.requestContexts(iIndex, 1).then((aResult) => aResult[0]);
|
|
2085
|
+
});
|
|
2086
|
+
};
|
|
2087
|
+
|
|
1965
2088
|
/**
|
|
1966
2089
|
* Requests the value for the given path and index; the value is requested from this binding's
|
|
1967
2090
|
* cache or from its context in case it has no cache.
|
|
@@ -2000,31 +2123,6 @@ sap.ui.define([
|
|
|
2000
2123
|
});
|
|
2001
2124
|
};
|
|
2002
2125
|
|
|
2003
|
-
/**
|
|
2004
|
-
* @override
|
|
2005
|
-
* @see sap.ui.model.odata.v4.ODataParentBinding#findContextForCanonicalPath
|
|
2006
|
-
*/
|
|
2007
|
-
ODataListBinding.prototype.findContextForCanonicalPath = function (sCanonicalPath) {
|
|
2008
|
-
var aKeptAliveContexts = Object.values(this.mPreviousContextsByPath)
|
|
2009
|
-
.filter(function (oCandidate) {
|
|
2010
|
-
return oCandidate.isEffectivelyKeptAlive();
|
|
2011
|
-
});
|
|
2012
|
-
|
|
2013
|
-
function check(aContexts) {
|
|
2014
|
-
return aContexts.find(function (oCandidate) {
|
|
2015
|
-
var oPromise;
|
|
2016
|
-
|
|
2017
|
-
if (oCandidate) {
|
|
2018
|
-
oPromise = oCandidate.fetchCanonicalPath();
|
|
2019
|
-
oPromise.caught();
|
|
2020
|
-
return oPromise.getResult() === sCanonicalPath;
|
|
2021
|
-
}
|
|
2022
|
-
});
|
|
2023
|
-
}
|
|
2024
|
-
|
|
2025
|
-
return check(aKeptAliveContexts) || check(this.aContexts);
|
|
2026
|
-
};
|
|
2027
|
-
|
|
2028
2126
|
/**
|
|
2029
2127
|
* Filters the list with the given filters. Since 1.97.0, if filters are unchanged, no request
|
|
2030
2128
|
* is sent, regardless of pending changes. Since 1.111.0, all contexts (incl. the header
|
|
@@ -2148,6 +2246,31 @@ sap.ui.define([
|
|
|
2148
2246
|
return this;
|
|
2149
2247
|
};
|
|
2150
2248
|
|
|
2249
|
+
/**
|
|
2250
|
+
* @override
|
|
2251
|
+
* @see sap.ui.model.odata.v4.ODataParentBinding#findContextForCanonicalPath
|
|
2252
|
+
*/
|
|
2253
|
+
ODataListBinding.prototype.findContextForCanonicalPath = function (sCanonicalPath) {
|
|
2254
|
+
var aKeptAliveContexts = Object.values(this.mPreviousContextsByPath)
|
|
2255
|
+
.filter(function (oCandidate) {
|
|
2256
|
+
return oCandidate.isEffectivelyKeptAlive();
|
|
2257
|
+
});
|
|
2258
|
+
|
|
2259
|
+
function check(aContexts) {
|
|
2260
|
+
return aContexts.find(function (oCandidate) {
|
|
2261
|
+
var oPromise;
|
|
2262
|
+
|
|
2263
|
+
if (oCandidate) {
|
|
2264
|
+
oPromise = oCandidate.fetchCanonicalPath();
|
|
2265
|
+
oPromise.caught();
|
|
2266
|
+
return oPromise.getResult() === sCanonicalPath;
|
|
2267
|
+
}
|
|
2268
|
+
});
|
|
2269
|
+
}
|
|
2270
|
+
|
|
2271
|
+
return check(aKeptAliveContexts) || check(this.aContexts);
|
|
2272
|
+
};
|
|
2273
|
+
|
|
2151
2274
|
/**
|
|
2152
2275
|
* Fires the 'createActivate' event.
|
|
2153
2276
|
*
|
|
@@ -2168,14 +2291,26 @@ sap.ui.define([
|
|
|
2168
2291
|
return false;
|
|
2169
2292
|
};
|
|
2170
2293
|
|
|
2294
|
+
/**
|
|
2295
|
+
* Fires the 'selectionChanged' event.
|
|
2296
|
+
*
|
|
2297
|
+
* @param {sap.ui.model.odata.v4.Context} oContext
|
|
2298
|
+
* The context whose selection has changed
|
|
2299
|
+
*
|
|
2300
|
+
* @private
|
|
2301
|
+
*/
|
|
2302
|
+
ODataListBinding.prototype.fireSelectionChanged = function (oContext) {
|
|
2303
|
+
this.fireEvent("selectionChanged", {context : oContext});
|
|
2304
|
+
};
|
|
2305
|
+
|
|
2171
2306
|
/**
|
|
2172
2307
|
* Returns the current object holding the information needed for data aggregation, see
|
|
2173
2308
|
* {@link #setAggregation}.
|
|
2174
2309
|
*
|
|
2175
2310
|
* @param {boolean} [bVerbose]
|
|
2176
2311
|
* Whether to additionally return the "$"-prefixed values described below which obviously
|
|
2177
|
-
* cannot be given back to the setter (
|
|
2178
|
-
*
|
|
2312
|
+
* cannot be given back to the setter (since 1.125.0). They are retrieved from the pair of
|
|
2313
|
+
* "Org.OData.Aggregation.V1.RecursiveHierarchy" and
|
|
2179
2314
|
* "com.sap.vocabularies.Hierarchy.v1.RecursiveHierarchy" annotations at this binding's
|
|
2180
2315
|
* entity type, identified via the <code>hierarchyQualifier</code> given to
|
|
2181
2316
|
* {@link #setAggregation}.
|
|
@@ -2711,7 +2846,9 @@ sap.ui.define([
|
|
|
2711
2846
|
* from which the tree has been created
|
|
2712
2847
|
* @returns {object} The AST of the filter tree including the static filter as string or null if
|
|
2713
2848
|
* no filters are set
|
|
2849
|
+
*
|
|
2714
2850
|
* @private
|
|
2851
|
+
* @since 1.57.0
|
|
2715
2852
|
* @ui5-restricted sap.ui.table, sap.ui.export
|
|
2716
2853
|
*/
|
|
2717
2854
|
// @override sap.ui.model.ListBinding#getFilterInfo
|
|
@@ -2771,28 +2908,6 @@ sap.ui.define([
|
|
|
2771
2908
|
return this.isResolved() ? this.oHeaderContext : null;
|
|
2772
2909
|
};
|
|
2773
2910
|
|
|
2774
|
-
/**
|
|
2775
|
-
* Converts the view index of a context to the model index in case there are contexts created at
|
|
2776
|
-
* the end.
|
|
2777
|
-
*
|
|
2778
|
-
* @param {number} iViewIndex The view index
|
|
2779
|
-
* @returns {number} The model index
|
|
2780
|
-
*
|
|
2781
|
-
* @private
|
|
2782
|
-
*/
|
|
2783
|
-
ODataListBinding.prototype.getModelIndex = function (iViewIndex) {
|
|
2784
|
-
if (!this.bFirstCreateAtEnd) {
|
|
2785
|
-
return iViewIndex;
|
|
2786
|
-
}
|
|
2787
|
-
if (!this.bLengthFinal) { // created at end, but the read is pending and $count unknown yet
|
|
2788
|
-
return this.aContexts.length - iViewIndex - 1;
|
|
2789
|
-
}
|
|
2790
|
-
return iViewIndex < this.getLength() - this.iCreatedContexts
|
|
2791
|
-
? iViewIndex + this.iCreatedContexts
|
|
2792
|
-
// Note: the created rows are mirrored at the end
|
|
2793
|
-
: this.getLength() - iViewIndex - 1;
|
|
2794
|
-
};
|
|
2795
|
-
|
|
2796
2911
|
/**
|
|
2797
2912
|
* Calls {@link sap.ui.model.odata.v4.Context#setKeepAlive} at the context for the given path
|
|
2798
2913
|
* and returns it. Since 1.100.0 the function always returns such a context. If none exists yet,
|
|
@@ -2819,7 +2934,7 @@ sap.ui.define([
|
|
|
2819
2934
|
* </ul>
|
|
2820
2935
|
*
|
|
2821
2936
|
* @public
|
|
2822
|
-
* @see sap.ui.model.odata.v4.
|
|
2937
|
+
* @see sap.ui.model.odata.v4.ODataModel#getKeepAliveContext
|
|
2823
2938
|
* @since 1.99.0
|
|
2824
2939
|
*/
|
|
2825
2940
|
ODataListBinding.prototype.getKeepAliveContext = function (sPath, bRequestMessages, sGroupId) {
|
|
@@ -2911,6 +3026,28 @@ sap.ui.define([
|
|
|
2911
3026
|
return this.aContexts.length ? this.aContexts.length + 10 : 0;
|
|
2912
3027
|
};
|
|
2913
3028
|
|
|
3029
|
+
/**
|
|
3030
|
+
* Converts the view index of a context to the model index in case there are contexts created at
|
|
3031
|
+
* the end.
|
|
3032
|
+
*
|
|
3033
|
+
* @param {number} iViewIndex The view index
|
|
3034
|
+
* @returns {number} The model index
|
|
3035
|
+
*
|
|
3036
|
+
* @private
|
|
3037
|
+
*/
|
|
3038
|
+
ODataListBinding.prototype.getModelIndex = function (iViewIndex) {
|
|
3039
|
+
if (!this.bFirstCreateAtEnd) {
|
|
3040
|
+
return iViewIndex;
|
|
3041
|
+
}
|
|
3042
|
+
if (!this.bLengthFinal) { // created at end, but the read is pending and $count unknown yet
|
|
3043
|
+
return this.aContexts.length - iViewIndex - 1;
|
|
3044
|
+
}
|
|
3045
|
+
return iViewIndex < this.getLength() - this.iCreatedContexts
|
|
3046
|
+
? iViewIndex + this.iCreatedContexts
|
|
3047
|
+
// Note: the created rows are mirrored at the end
|
|
3048
|
+
: this.getLength() - iViewIndex - 1;
|
|
3049
|
+
};
|
|
3050
|
+
|
|
2914
3051
|
/**
|
|
2915
3052
|
* Builds the value for the OData V4 '$orderby' system query option from the given sorters
|
|
2916
3053
|
* and the optional static '$orderby' value which is appended to the sorters.
|
|
@@ -3078,6 +3215,39 @@ sap.ui.define([
|
|
|
3078
3215
|
}
|
|
3079
3216
|
};
|
|
3080
3217
|
|
|
3218
|
+
/**
|
|
3219
|
+
* Inserts the given context at the given position into <code>this.aContexts</code>. The
|
|
3220
|
+
* position can be described either via a specific <code>iIndex</code>, or the relative position
|
|
3221
|
+
* in the creation area according to <code>bAtEnd</code>. Fires a change event with
|
|
3222
|
+
* <code>ChangeReason.Add</code>.
|
|
3223
|
+
*
|
|
3224
|
+
* @param {sap.ui.model.odata.v4.Context} oContext
|
|
3225
|
+
* The context to be inserted
|
|
3226
|
+
* @param {number} [iIndex]
|
|
3227
|
+
* The insertion index
|
|
3228
|
+
* @param {boolean} [bAtEnd]
|
|
3229
|
+
* The relative position in the creation area
|
|
3230
|
+
*/
|
|
3231
|
+
ODataListBinding.prototype.insertContext = function (oContext, iIndex, bAtEnd) {
|
|
3232
|
+
if (iIndex !== undefined) {
|
|
3233
|
+
_Helper.insert(this.aContexts, iIndex, oContext);
|
|
3234
|
+
for (let i = this.aContexts.length - 1; i > iIndex; i -= 1) {
|
|
3235
|
+
if (this.aContexts[i]) {
|
|
3236
|
+
this.aContexts[i].iIndex += 1;
|
|
3237
|
+
}
|
|
3238
|
+
}
|
|
3239
|
+
this.iMaxLength += 1;
|
|
3240
|
+
} else if (this.bFirstCreateAtEnd !== bAtEnd) {
|
|
3241
|
+
this.aContexts.splice(this.iCreatedContexts - 1, 0, oContext);
|
|
3242
|
+
for (let i = this.iCreatedContexts - 1; i >= 0; i -= 1) {
|
|
3243
|
+
this.aContexts[i].iIndex = i - this.iCreatedContexts;
|
|
3244
|
+
}
|
|
3245
|
+
} else {
|
|
3246
|
+
this.aContexts.unshift(oContext);
|
|
3247
|
+
}
|
|
3248
|
+
this._fireChange({reason : ChangeReason.Add});
|
|
3249
|
+
};
|
|
3250
|
+
|
|
3081
3251
|
/**
|
|
3082
3252
|
* Inserts a new gap into <code>this.aContexts</code> just after the given index and with the
|
|
3083
3253
|
* given positive length. Note that the given index may be the last within the array, but not
|
|
@@ -3123,7 +3293,7 @@ sap.ui.define([
|
|
|
3123
3293
|
* @private
|
|
3124
3294
|
*/
|
|
3125
3295
|
ODataListBinding.prototype.isAncestorOf = function (oAncestor, oDescendant) {
|
|
3126
|
-
if (!this.mParameters.$$aggregation
|
|
3296
|
+
if (!this.mParameters.$$aggregation?.hierarchyQualifier) {
|
|
3127
3297
|
throw new Error("Missing recursive hierarchy");
|
|
3128
3298
|
}
|
|
3129
3299
|
if (!oDescendant) {
|
|
@@ -3283,7 +3453,8 @@ sap.ui.define([
|
|
|
3283
3453
|
* @returns {sap.ui.base.SyncPromise<void>}
|
|
3284
3454
|
* A promise which is resolved without a defined result when the move is finished, or
|
|
3285
3455
|
* rejected in case of an error
|
|
3286
|
-
* @throws {Error} If there is no recursive hierarchy
|
|
3456
|
+
* @throws {Error} If there is no recursive hierarchy or if this binding's root binding is
|
|
3457
|
+
* suspended
|
|
3287
3458
|
*
|
|
3288
3459
|
* @private
|
|
3289
3460
|
*/
|
|
@@ -3306,10 +3477,10 @@ sap.ui.define([
|
|
|
3306
3477
|
}
|
|
3307
3478
|
};
|
|
3308
3479
|
|
|
3309
|
-
|
|
3310
|
-
if (!oAggregation || !oAggregation.hierarchyQualifier) {
|
|
3480
|
+
if (!this.mParameters.$$aggregation?.hierarchyQualifier) {
|
|
3311
3481
|
throw new Error("Missing recursive hierarchy");
|
|
3312
3482
|
}
|
|
3483
|
+
this.checkSuspended();
|
|
3313
3484
|
|
|
3314
3485
|
const sUpdateGroupId = this.getUpdateGroupId();
|
|
3315
3486
|
const oGroupLock = this.lockGroup(sUpdateGroupId, true, true);
|
|
@@ -3323,16 +3494,21 @@ sap.ui.define([
|
|
|
3323
3494
|
const sNonCanonicalChildPath = oSiblingContext === undefined
|
|
3324
3495
|
? undefined
|
|
3325
3496
|
: oChildContext.getPath().slice(1);
|
|
3497
|
+
const bUpdateSiblingIndex = oSiblingContext?.isEffectivelyKeptAlive();
|
|
3326
3498
|
const {promise : oPromise, refresh : bRefresh} = this.oCache.move(oGroupLock, sChildPath,
|
|
3327
|
-
sParentPath, sSiblingPath, sNonCanonicalChildPath);
|
|
3499
|
+
sParentPath, sSiblingPath, sNonCanonicalChildPath, bUpdateSiblingIndex);
|
|
3328
3500
|
|
|
3329
3501
|
if (bRefresh) {
|
|
3330
3502
|
return SyncPromise.all([
|
|
3331
3503
|
oPromise,
|
|
3332
3504
|
this.requestSideEffects(sUpdateGroupId, [""])
|
|
3333
|
-
]).then(([
|
|
3505
|
+
]).then(([fnGetIndices]) => {
|
|
3334
3506
|
// Note: wait for side-effects refresh before getting index!
|
|
3335
|
-
|
|
3507
|
+
const [iChildIndex, iSiblingIndex] = fnGetIndices();
|
|
3508
|
+
oChildContext.iIndex = iChildIndex;
|
|
3509
|
+
if (bUpdateSiblingIndex) {
|
|
3510
|
+
oSiblingContext.iIndex = iSiblingIndex;
|
|
3511
|
+
}
|
|
3336
3512
|
});
|
|
3337
3513
|
}
|
|
3338
3514
|
|
|
@@ -3345,12 +3521,8 @@ sap.ui.define([
|
|
|
3345
3521
|
}
|
|
3346
3522
|
const iOldIndex = oChildContext.getModelIndex();
|
|
3347
3523
|
this.aContexts.splice(iOldIndex, 1);
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
// Note: no need to adjust iMaxLength
|
|
3351
|
-
} else {
|
|
3352
|
-
this.aContexts.splice(iNewIndex, 0, oChildContext);
|
|
3353
|
-
}
|
|
3524
|
+
// Note: no need to adjust iMaxLength
|
|
3525
|
+
_Helper.insert(this.aContexts, iNewIndex, oChildContext);
|
|
3354
3526
|
setIndices(iOldIndex, iNewIndex);
|
|
3355
3527
|
|
|
3356
3528
|
if (iCollapseCount) {
|
|
@@ -3454,20 +3626,20 @@ sap.ui.define([
|
|
|
3454
3626
|
sResolvedPath = that.getResolvedPath();
|
|
3455
3627
|
|
|
3456
3628
|
that.aContexts = aInitialDataCollection.map(function (oInitialData, i) {
|
|
3457
|
-
var
|
|
3629
|
+
var oContext0,
|
|
3458
3630
|
sTransientPredicate
|
|
3459
3631
|
= _Helper.getPrivateAnnotation(oInitialData, "transientPredicate"),
|
|
3460
3632
|
oPromise = _Helper.getPrivateAnnotation(oInitialData, "promise");
|
|
3461
3633
|
|
|
3462
|
-
|
|
3634
|
+
oContext0 = Context.create(that.oModel, that, sResolvedPath + sTransientPredicate,
|
|
3463
3635
|
i - aInitialDataCollection.length, oPromise, false, true);
|
|
3464
|
-
|
|
3636
|
+
oContext0.created().catch(that.oModel.getReporter());
|
|
3465
3637
|
|
|
3466
|
-
_Helper.setPrivateAnnotation(oInitialData, "context",
|
|
3638
|
+
_Helper.setPrivateAnnotation(oInitialData, "context", oContext0);
|
|
3467
3639
|
_Helper.setPrivateAnnotation(oInitialData, "firstCreateAtEnd", false);
|
|
3468
3640
|
_Helper.deletePrivateAnnotation(oInitialData, "promise");
|
|
3469
3641
|
|
|
3470
|
-
return
|
|
3642
|
+
return oContext0;
|
|
3471
3643
|
});
|
|
3472
3644
|
that.iCreatedContexts = that.iActiveContexts = that.aContexts.length;
|
|
3473
3645
|
that.bFirstCreateAtEnd = false;
|
|
@@ -3613,7 +3785,7 @@ sap.ui.define([
|
|
|
3613
3785
|
if (iIndex >= 0) { // Note: implies oContext.created()
|
|
3614
3786
|
that.removeCreated(oContext);
|
|
3615
3787
|
}
|
|
3616
|
-
},
|
|
3788
|
+
}, bIgnorePendingChanges);
|
|
3617
3789
|
}).catch(function (oError) {
|
|
3618
3790
|
that.oModel.reportError("Failed to refresh kept-alive elements", sClassName, oError);
|
|
3619
3791
|
throw oError;
|
|
@@ -4074,8 +4246,7 @@ sap.ui.define([
|
|
|
4074
4246
|
* @private
|
|
4075
4247
|
*/
|
|
4076
4248
|
ODataListBinding.prototype.reset = function (sChangeReason, bDrop, sGroupId) {
|
|
4077
|
-
var
|
|
4078
|
-
iCreated = 0, // index (and finally number) of created elements that we keep
|
|
4249
|
+
var iCreated = 0, // index (and finally number) of created elements that we keep
|
|
4079
4250
|
bEmpty = this.iCurrentEnd === 0,
|
|
4080
4251
|
bKeepTransient = sGroupId && sGroupId !== this.getUpdateGroupId(),
|
|
4081
4252
|
i,
|
|
@@ -4090,7 +4261,7 @@ sap.ui.define([
|
|
|
4090
4261
|
that.mPreviousContextsByPath[oContext.getPath()] = oContext;
|
|
4091
4262
|
});
|
|
4092
4263
|
for (i = 0; i < this.iCreatedContexts; i += 1) {
|
|
4093
|
-
oContext = this.aContexts[i];
|
|
4264
|
+
const oContext = this.aContexts[i];
|
|
4094
4265
|
if (bDrop === false
|
|
4095
4266
|
? bKeepTransient && oContext.isTransient()
|
|
4096
4267
|
|| oContext.isInactive() !== undefined
|
|
@@ -4241,17 +4412,16 @@ sap.ui.define([
|
|
|
4241
4412
|
* used to remove the data aggregation object, which allows to set <code>$apply</code>
|
|
4242
4413
|
* explicitly afterwards. <code>null</code> is not supported.
|
|
4243
4414
|
* <br>
|
|
4244
|
-
* Since 1.89.0, the deprecated property <code>"grandTotal like 1.84" : true</code> can
|
|
4245
|
-
* used to turn on the handling of grand totals like in 1.84.0, using aggregates of
|
|
4246
|
-
* and thus allowing to filter by aggregated properties while grand totals are
|
|
4247
|
-
* that methods like "average" or "countdistinct" are not compatible with this
|
|
4248
|
-
* it cannot be combined with group levels.
|
|
4415
|
+
* Since 1.89.0, the <b>deprecated</b> property <code>"grandTotal like 1.84" : true</code> can
|
|
4416
|
+
* be used to turn on the handling of grand totals like in 1.84.0, using aggregates of
|
|
4417
|
+
* aggregates and thus allowing to filter by aggregated properties while grand totals are
|
|
4418
|
+
* needed. Beware that methods like "average" or "countdistinct" are not compatible with this
|
|
4419
|
+
* approach, and it cannot be combined with group levels.
|
|
4249
4420
|
* <br>
|
|
4250
|
-
* Since 1.
|
|
4251
|
-
* mix; <code>hierarchyQualifier</code> is the leading property that decides
|
|
4252
|
-
* use cases
|
|
4253
|
-
*
|
|
4254
|
-
* hierarchies.
|
|
4421
|
+
* Since 1.117.0, either a read-only recursive hierarchy or pure data aggregation is
|
|
4422
|
+
* supported, but no mix; <code>hierarchyQualifier</code> is the leading property that decides
|
|
4423
|
+
* between those two use cases. Since 1.125.0, maintenance of a recursive hierarchy is
|
|
4424
|
+
* supported.
|
|
4255
4425
|
* @param {object} [oAggregation.aggregate]
|
|
4256
4426
|
* A map from aggregatable property names or aliases to objects containing the following
|
|
4257
4427
|
* details:
|
|
@@ -4279,10 +4449,13 @@ sap.ui.define([
|
|
|
4279
4449
|
* there is only one, or <code>null</code> otherwise ("multi-unit situation"). (SQL
|
|
4280
4450
|
* suggestion: <code>CASE WHEN MIN(Unit) = MAX(Unit) THEN MIN(Unit) END</code>)
|
|
4281
4451
|
* </ul>
|
|
4452
|
+
* @param {boolean} [oAggregation.createInPlace]
|
|
4453
|
+
* Whether created nodes are shown in place at the position specified by the service
|
|
4454
|
+
* (@experimental as of version 1.125.0); only the value <code>true</code> is allowed.
|
|
4455
|
+
* Otherwise, created nodes are displayed out of place as the first child of their parent.
|
|
4282
4456
|
* @param {number} [oAggregation.expandTo=1]
|
|
4283
4457
|
* The number (as a positive integer) of different levels initially available without calling
|
|
4284
|
-
* {@link sap.ui.model.odata.v4.Context#expand} (
|
|
4285
|
-
* available for read-only hierarchies since 1.117.0), supported only if a
|
|
4458
|
+
* {@link sap.ui.model.odata.v4.Context#expand} (since 1.117.0), supported only if a
|
|
4286
4459
|
* <code>hierarchyQualifier</code> is given. Root nodes are on the first level. By default,
|
|
4287
4460
|
* only root nodes are available; they are not yet expanded. Since 1.120.0,
|
|
4288
4461
|
* <code>expandTo >= Number.MAX_SAFE_INTEGER</code> can be used to expand all levels
|
|
@@ -4312,14 +4485,14 @@ sap.ui.define([
|
|
|
4312
4485
|
* @param {string} [oAggregation.hierarchyQualifier]
|
|
4313
4486
|
* The qualifier for the pair of "Org.OData.Aggregation.V1.RecursiveHierarchy" and
|
|
4314
4487
|
* "com.sap.vocabularies.Hierarchy.v1.RecursiveHierarchy" annotations at this binding's
|
|
4315
|
-
* entity type (
|
|
4316
|
-
*
|
|
4317
|
-
*
|
|
4318
|
-
*
|
|
4488
|
+
* entity type (since 1.117.0). If present, a recursive hierarchy without data aggregation is
|
|
4489
|
+
* defined, and the only other supported properties are <code>createInPlace</code>,
|
|
4490
|
+
* <code>expandTo</code>, and <code>search</code>. A recursive hierarchy cannot be combined
|
|
4491
|
+
* with:
|
|
4319
4492
|
* <ul>
|
|
4320
4493
|
* <li> "$search",
|
|
4321
|
-
* <li> the <code>vGroup</code> parameter of {@link sap.ui.model.Sorter}
|
|
4322
|
-
* <li> shared requests
|
|
4494
|
+
* <li> the <code>vGroup</code> parameter of {@link sap.ui.model.Sorter},
|
|
4495
|
+
* <li> shared requests.
|
|
4323
4496
|
* </ul>
|
|
4324
4497
|
* @param {string} [oAggregation.search]
|
|
4325
4498
|
* Like the <a href=
|
|
@@ -4442,10 +4615,10 @@ sap.ui.define([
|
|
|
4442
4615
|
sResolvedPath = this.oModel.resolve(this.sPath, oContext);
|
|
4443
4616
|
// Note: oHeaderContext is missing only if called from c'tor
|
|
4444
4617
|
if (this.oHeaderContext && this.oHeaderContext.getPath() !== sResolvedPath) {
|
|
4618
|
+
this.oHeaderContext.doSetSelected(false);
|
|
4445
4619
|
// Do not destroy the context immediately to avoid timing issues with
|
|
4446
4620
|
// dependent bindings, keep it in mPreviousContextsByPath to destroy it
|
|
4447
4621
|
// later
|
|
4448
|
-
this.oHeaderContext.setSelected(false);
|
|
4449
4622
|
this.mPreviousContextsByPath[this.oHeaderContext.getPath()]
|
|
4450
4623
|
= this.oHeaderContext;
|
|
4451
4624
|
this.oHeaderContext = null;
|
|
@@ -4732,23 +4905,6 @@ sap.ui.define([
|
|
|
4732
4905
|
}
|
|
4733
4906
|
};
|
|
4734
4907
|
|
|
4735
|
-
/**
|
|
4736
|
-
* Returns all currently existing contexts of this list binding in no special order.
|
|
4737
|
-
*
|
|
4738
|
-
* @returns {sap.ui.model.odata.v4.Context[]}
|
|
4739
|
-
* All currently existing contexts of this list binding, in no special order
|
|
4740
|
-
*
|
|
4741
|
-
* @private
|
|
4742
|
-
* @see #getAllCurrentContexts
|
|
4743
|
-
*/
|
|
4744
|
-
ODataListBinding.prototype._getAllExistingContexts = function () {
|
|
4745
|
-
return (this.aContexts ?? []).filter(function (oContext) {
|
|
4746
|
-
return oContext;
|
|
4747
|
-
}).concat(Object.values(this.mPreviousContextsByPath).filter(function (oContext) {
|
|
4748
|
-
return oContext.isEffectivelyKeptAlive();
|
|
4749
|
-
}));
|
|
4750
|
-
};
|
|
4751
|
-
|
|
4752
4908
|
//*********************************************************************************************
|
|
4753
4909
|
// "static" functions
|
|
4754
4910
|
//*********************************************************************************************
|