@openui5/sap.ui.core 1.96.5 → 1.99.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 +93 -3
- package/.reuse/dep5 +26 -31
- package/THIRDPARTY.txt +15 -21
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -1
- package/src/jquery.sap.mobile.js +29 -19
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +2 -2
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- 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 +81 -169
- package/src/sap/ui/Global.js +11 -16
- package/src/sap/ui/VersionInfo.js +13 -10
- package/src/sap/ui/base/BindingParser.js +34 -7
- 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 +50 -29
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/Metadata.js +1 -3
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +1 -27
- package/src/sap/ui/core/AppCacheBuster.js +4 -4
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/BusyIndicatorUtils.js +1 -1
- package/src/sap/ui/core/Component.js +33 -11
- 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 +79 -13
- package/src/sap/ui/core/Control.js +4 -3
- package/src/sap/ui/core/Core.js +4 -7
- 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 +6 -12
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/ExtensionPoint.js +1 -1
- package/src/sap/ui/core/FocusHandler.js +1 -1
- package/src/sap/ui/core/Fragment.js +1 -1
- package/src/sap/ui/core/HTML.js +3 -3
- package/src/sap/ui/core/HTMLRenderer.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +2 -3
- package/src/sap/ui/core/IconRenderer.js +1 -1
- package/src/sap/ui/core/IndicationColorSupport.js +1 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +1 -1
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +1 -1
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +9 -2
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/ListItem.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicatorRenderer.js +2 -2
- package/src/sap/ui/core/LocalBusyIndicatorSupport.js +1 -1
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +39 -4
- package/src/sap/ui/core/Manifest.js +1 -1
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Placeholder.js +28 -28
- package/src/sap/ui/core/Popup.js +3 -3
- package/src/sap/ui/core/RenderManager.js +3 -3
- 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 +4 -3
- package/src/sap/ui/core/ScrollBarRenderer.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/ThemeCheck.js +2 -2
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +2 -2
- package/src/sap/ui/core/UIArea.js +3 -3
- package/src/sap/ui/core/UIComponent.js +1 -1
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +26 -5
- package/src/sap/ui/core/_IconRegistry.js +10 -1
- package/src/sap/ui/core/cache/LRUPersistentCache.js +4 -2
- package/src/sap/ui/core/date/Japanese.js +1 -1
- package/src/sap/ui/core/date/UniversalDateUtils.js +205 -2
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +9 -6
- package/src/sap/ui/core/dnd/DragAndDrop.js +2 -2
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- package/src/sap/ui/core/dnd/DragInfo.js +1 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/format/DateFormat.js +562 -174
- package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +43 -0
- package/src/sap/ui/core/format/ListFormat.js +2 -2
- package/src/sap/ui/core/format/NumberFormat.js +1 -1
- package/src/sap/ui/core/format/TimezoneUtil.js +248 -0
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +47 -10
- package/src/sap/ui/core/message/ControlMessageProcessor.js +5 -5
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageMixin.js +2 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +22 -12
- package/src/sap/ui/core/messagebundle.properties +4 -0
- package/src/sap/ui/core/messagebundle_ar.properties +2 -0
- package/src/sap/ui/core/messagebundle_bg.properties +7 -5
- package/src/sap/ui/core/messagebundle_ca.properties +2 -0
- package/src/sap/ui/core/messagebundle_cs.properties +2 -0
- package/src/sap/ui/core/messagebundle_cy.properties +2 -0
- package/src/sap/ui/core/messagebundle_da.properties +2 -0
- package/src/sap/ui/core/messagebundle_de.properties +3 -1
- package/src/sap/ui/core/messagebundle_el.properties +2 -0
- package/src/sap/ui/core/messagebundle_en.properties +2 -0
- package/src/sap/ui/core/messagebundle_en_GB.properties +2 -0
- package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +2 -0
- package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
- package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +2 -0
- package/src/sap/ui/core/messagebundle_es.properties +2 -0
- package/src/sap/ui/core/messagebundle_es_MX.properties +2 -0
- package/src/sap/ui/core/messagebundle_et.properties +2 -0
- package/src/sap/ui/core/messagebundle_fi.properties +2 -0
- package/src/sap/ui/core/messagebundle_fr.properties +9 -7
- package/src/sap/ui/core/messagebundle_fr_CA.properties +2 -0
- package/src/sap/ui/core/messagebundle_hi.properties +2 -0
- package/src/sap/ui/core/messagebundle_hr.properties +2 -0
- package/src/sap/ui/core/messagebundle_hu.properties +2 -0
- package/src/sap/ui/core/messagebundle_id.properties +4 -2
- package/src/sap/ui/core/messagebundle_it.properties +3 -1
- package/src/sap/ui/core/messagebundle_iw.properties +2 -0
- package/src/sap/ui/core/messagebundle_ja.properties +2 -0
- package/src/sap/ui/core/messagebundle_kk.properties +2 -0
- package/src/sap/ui/core/messagebundle_ko.properties +2 -0
- package/src/sap/ui/core/messagebundle_lt.properties +2 -0
- package/src/sap/ui/core/messagebundle_lv.properties +3 -1
- package/src/sap/ui/core/messagebundle_ms.properties +2 -0
- package/src/sap/ui/core/messagebundle_nl.properties +2 -0
- package/src/sap/ui/core/messagebundle_no.properties +6 -4
- package/src/sap/ui/core/messagebundle_pl.properties +2 -0
- package/src/sap/ui/core/messagebundle_pt.properties +2 -0
- package/src/sap/ui/core/messagebundle_pt_PT.properties +2 -0
- package/src/sap/ui/core/messagebundle_ro.properties +2 -0
- package/src/sap/ui/core/messagebundle_ru.properties +23 -21
- package/src/sap/ui/core/messagebundle_sh.properties +2 -0
- package/src/sap/ui/core/messagebundle_sk.properties +2 -0
- package/src/sap/ui/core/messagebundle_sl.properties +2 -0
- package/src/sap/ui/core/messagebundle_sv.properties +2 -0
- package/src/sap/ui/core/messagebundle_th.properties +2 -0
- package/src/sap/ui/core/messagebundle_tr.properties +2 -0
- package/src/sap/ui/core/messagebundle_uk.properties +2 -0
- package/src/sap/ui/core/messagebundle_vi.properties +2 -0
- package/src/sap/ui/core/messagebundle_zh_CN.properties +2 -0
- package/src/sap/ui/core/messagebundle_zh_TW.properties +2 -0
- package/src/sap/ui/core/mvc/Controller.js +4 -4
- package/src/sap/ui/core/mvc/HTMLView.js +1 -1
- package/src/sap/ui/core/mvc/HTMLViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/JSONView.js +2 -1
- package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/JSViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/TemplateViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/View.js +2 -1
- package/src/sap/ui/core/mvc/ViewRenderer.js +1 -1
- package/src/sap/ui/core/mvc/XMLView.js +16 -3
- 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/Route.js +6 -6
- package/src/sap/ui/core/routing/Router.js +4 -3
- package/src/sap/ui/core/routing/Targets.js +17 -13
- package/src/sap/ui/core/rules/Misc.support.js +51 -1
- package/src/sap/ui/core/rules/Model.support.js +95 -8
- package/src/sap/ui/core/rules/Rendering.support.js +1 -4
- package/src/sap/ui/core/rules/View.support.js +14 -46
- 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 +2 -2
- package/src/sap/ui/core/support/RuleEngineOpaExtension.js +0 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/controls/TreeViewer.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 -2
- 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/support/techinfo/TechnicalInfo.js +2 -6
- package/src/sap/ui/core/support/trace/E2eTraceLib.js +3 -3
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- 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/DraftEnabledMockServer.js +21 -16
- 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 +157 -58
- package/src/sap/ui/core/util/PasteHelper.js +4 -4
- package/src/sap/ui/core/util/XMLPreprocessor.js +16 -4
- package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +1 -1
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/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/includeStylesheet.js +8 -3
- package/src/sap/ui/events/jquery/EventExtension.js +1 -1
- package/src/sap/ui/events/jquery/EventSimulation.js +3 -13
- package/src/sap/ui/model/Binding.js +4 -3
- package/src/sap/ui/model/ChangeReason.js +1 -1
- package/src/sap/ui/model/ClientListBinding.js +7 -0
- package/src/sap/ui/model/ClientModel.js +6 -5
- package/src/sap/ui/model/ClientTreeBinding.js +1 -1
- package/src/sap/ui/model/ClientTreeBindingAdapter.js +1 -1
- package/src/sap/ui/model/CompositeBinding.js +1 -1
- package/src/sap/ui/model/CompositeDataState.js +26 -4
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/ContextBinding.js +1 -1
- package/src/sap/ui/model/DataState.js +27 -6
- package/src/sap/ui/model/ListBinding.js +24 -5
- package/src/sap/ui/model/MetaModel.js +2 -3
- package/src/sap/ui/model/Model.js +6 -11
- 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/TreeBindingAdapter.js +0 -2
- package/src/sap/ui/model/TreeBindingUtils.js +2 -0
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +13 -8
- package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +16 -18
- package/src/sap/ui/model/analytics/ODataModelAdapter.js +2 -15
- package/src/sap/ui/model/base/ManagedObjectModel.js +1 -1
- package/src/sap/ui/model/json/JSONListBinding.js +1 -1
- package/src/sap/ui/model/json/JSONModel.js +7 -7
- package/src/sap/ui/model/json/JSONPropertyBinding.js +2 -2
- package/src/sap/ui/model/message/MessageListBinding.js +1 -1
- package/src/sap/ui/model/message/MessageModel.js +3 -3
- package/src/sap/ui/model/message/MessagePropertyBinding.js +2 -2
- package/src/sap/ui/model/odata/AnnotationHelper.js +2 -2
- package/src/sap/ui/model/odata/AnnotationParser.js +4 -2
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataListBinding.js +62 -39
- package/src/sap/ui/model/odata/ODataMessageParser.js +2 -2
- package/src/sap/ui/model/odata/ODataMetaModel.js +3 -3
- package/src/sap/ui/model/odata/ODataMetadata.js +138 -87
- package/src/sap/ui/model/odata/ODataModel.js +443 -216
- package/src/sap/ui/model/odata/ODataPropertyBinding.js +7 -5
- package/src/sap/ui/model/odata/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +27 -17
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +440 -260
- package/src/sap/ui/model/odata/ODataUtils.js +24 -9
- package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +3 -2
- package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +11 -9
- package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +7 -5
- 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 +338 -0
- package/src/sap/ui/model/odata/type/Decimal.js +5 -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/type/UnitMixin.js +1 -2
- package/src/sap/ui/model/odata/v2/Context.js +98 -14
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataContextBinding.js +8 -4
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +418 -172
- package/src/sap/ui/model/odata/v2/ODataModel.js +242 -138
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +164 -92
- package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +117 -7
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +21 -22
- package/src/sap/ui/model/odata/v4/Context.js +249 -83
- package/src/sap/ui/model/odata/v4/ODataBinding.js +100 -43
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +309 -228
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +573 -278
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +131 -100
- package/src/sap/ui/model/odata/v4/ODataModel.js +342 -259
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +113 -100
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +87 -81
- package/src/sap/ui/model/odata/v4/ODataUtils.js +5 -5
- package/src/sap/ui/model/odata/v4/SubmitMode.js +0 -1
- package/src/sap/ui/model/odata/v4/ValueListType.js +0 -1
- package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +20 -20
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +3 -5
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -4
- package/src/sap/ui/model/odata/v4/lib/_Batch.js +21 -20
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +278 -103
- package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +55 -21
- package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +62 -61
- package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Parser.js +52 -43
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +61 -41
- package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +147 -147
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +14 -13
- package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +66 -67
- package/src/sap/ui/model/resource/ResourceModel.js +1 -1
- package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +1 -1
- package/src/sap/ui/model/type/Date.js +1 -1
- package/src/sap/ui/model/type/DateInterval.js +1 -1
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
- package/src/sap/ui/model/type/FileSize.js +1 -1
- package/src/sap/ui/model/type/Float.js +1 -1
- package/src/sap/ui/model/type/Integer.js +1 -1
- package/src/sap/ui/model/type/String.js +1 -1
- package/src/sap/ui/model/type/Time.js +1 -1
- package/src/sap/ui/model/type/TimeInterval.js +1 -1
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLListBinding.js +1 -1
- package/src/sap/ui/model/xml/XMLModel.js +5 -5
- package/src/sap/ui/model/xml/XMLPropertyBinding.js +2 -2
- package/src/sap/ui/performance/trace/Passport.js +3 -3
- 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/BlanketReporter.js +1 -1
- package/src/sap/ui/test/Opa5.js +1 -1
- package/src/sap/ui/test/TestUtils.js +2 -2
- package/src/sap/ui/test/_LogCollector.js +1 -1
- package/src/sap/ui/test/actions/Action.js +11 -2
- package/src/sap/ui/test/actions/Press.js +79 -3
- package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
- package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +111 -0
- package/src/sap/ui/test/starter/createSuite.js +1 -2
- package/src/sap/ui/thirdparty/jquery-mobile-custom.js +3 -6
- package/src/sap/ui/thirdparty/jqueryui/jquery-ui-datepicker.js +143 -3
- package/src/sap/ui/thirdparty/jqueryui/jquery-ui-position.js +8 -1
- package/src/sap/ui/util/Mobile.js +28 -39
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/sap/ui/util/XMLHelper.js +53 -30
- package/src/ui5loader.js +9 -9
- package/ui5.yaml +244 -1
- package/src/sap/ui/core/CustomizingConfiguration.js +0 -47
- package/src/sap/ui/thirdparty/baseuri.js +0 -1
- package/src/sap/ui/thirdparty/es6-object-assign.js +0 -1
- package/src/sap/ui/thirdparty/es6-promise.js +0 -1
- package/src/sap/ui/thirdparty/es6-shim-nopromise.js +0 -1
- package/src/sap/ui/thirdparty/es6-string-methods.js +0 -1
- package/src/sap/ui/thirdparty/flexie.js +0 -1
- package/src/sap/ui/thirdparty/unorm.js +0 -1
- package/src/sap/ui/thirdparty/unormdata.js +0 -1
|
@@ -9,12 +9,11 @@
|
|
|
9
9
|
sap.ui.define([
|
|
10
10
|
"./Context",
|
|
11
11
|
"./ODataBinding",
|
|
12
|
-
"./SubmitMode",
|
|
13
12
|
"./lib/_Helper",
|
|
14
13
|
"sap/base/Log",
|
|
15
14
|
"sap/ui/base/SyncPromise",
|
|
16
15
|
"sap/ui/model/ChangeReason"
|
|
17
|
-
], function (Context, asODataBinding,
|
|
16
|
+
], function (Context, asODataBinding, _Helper, Log, SyncPromise, ChangeReason) {
|
|
18
17
|
"use strict";
|
|
19
18
|
|
|
20
19
|
/**
|
|
@@ -83,9 +82,10 @@ sap.ui.define([
|
|
|
83
82
|
* The new value which must be primitive
|
|
84
83
|
* @param {sap.ui.model.odata.v4.lib._GroupLock} [oGroupLock]
|
|
85
84
|
* A lock for the group ID to be used for the PATCH request; without a lock, no PATCH is sent
|
|
86
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
87
|
-
* handled generically by the caller
|
|
88
|
-
* or a <code>SyncPromise</code> for the
|
|
85
|
+
* @returns {sap.ui.base.SyncPromise|undefined}
|
|
86
|
+
* <code>undefined</code> for the general case which is handled generically by the caller
|
|
87
|
+
* {@link sap.ui.model.odata.v4.Context#doSetProperty} or a <code>SyncPromise</code> for the
|
|
88
|
+
* exceptional case
|
|
89
89
|
*
|
|
90
90
|
* @abstract
|
|
91
91
|
* @function
|
|
@@ -191,15 +191,16 @@ sap.ui.define([
|
|
|
191
191
|
* "5.1.2 System Query Option $expand" and "5.1.3 System Query Option $select" in specification
|
|
192
192
|
* "OData Version 4.0 Part 2: URL Conventions".
|
|
193
193
|
*
|
|
194
|
-
* @param {object} mQueryOptions The query options to be merged
|
|
195
|
-
* @param {string} sBaseMetaPath This binding's meta path
|
|
196
|
-
* @param {boolean} bCacheImmutable Whether the cache of this binding is immutable
|
|
194
|
+
* @param {object} mQueryOptions - The query options to be merged
|
|
195
|
+
* @param {string} sBaseMetaPath - This binding's meta path
|
|
196
|
+
* @param {boolean} bCacheImmutable - Whether the cache of this binding is immutable
|
|
197
|
+
* @param {boolean} bIsProperty - Whether the child is a property binding
|
|
197
198
|
* @returns {boolean} Whether the query options can be fulfilled by this binding
|
|
198
199
|
*
|
|
199
200
|
* @private
|
|
200
201
|
*/
|
|
201
202
|
ODataParentBinding.prototype.aggregateQueryOptions = function (mQueryOptions, sBaseMetaPath,
|
|
202
|
-
bCacheImmutable) {
|
|
203
|
+
bCacheImmutable, bIsProperty) {
|
|
203
204
|
var mAggregatedQueryOptionsClone = _Helper.merge({},
|
|
204
205
|
bCacheImmutable && this.mLateQueryOptions || this.mAggregatedQueryOptions),
|
|
205
206
|
bChanged = false,
|
|
@@ -256,8 +257,9 @@ sap.ui.define([
|
|
|
256
257
|
|
|
257
258
|
// Top-level all query options in the aggregate are OK, even if not repeated in the
|
|
258
259
|
// child. In a $expand the child must also have them (and the second loop checks that
|
|
259
|
-
// they're equal).
|
|
260
|
-
return (
|
|
260
|
+
// they're equal). Property bindings are an exception to this rule.
|
|
261
|
+
return (bIsProperty || !bInsideExpand
|
|
262
|
+
|| Object.keys(mAggregatedQueryOptions).every(function (sName) {
|
|
261
263
|
return sName in mQueryOptions0 || sName === "$count" || sName === "$expand"
|
|
262
264
|
|| sName === "$select";
|
|
263
265
|
}))
|
|
@@ -299,8 +301,8 @@ sap.ui.define([
|
|
|
299
301
|
/**
|
|
300
302
|
* Changes this binding's parameters and refreshes the binding.
|
|
301
303
|
*
|
|
302
|
-
* If there are pending changes an error is thrown. Use
|
|
303
|
-
* there are pending changes. If there are
|
|
304
|
+
* If there are pending changes that cannot be ignored, an error is thrown. Use
|
|
305
|
+
* {@link #hasPendingChanges} to check if there are such pending changes. If there are, call
|
|
304
306
|
* {@link sap.ui.model.odata.v4.ODataModel#submitBatch} to submit the changes or
|
|
305
307
|
* {@link sap.ui.model.odata.v4.ODataModel#resetChanges} to reset the changes before calling
|
|
306
308
|
* {@link #changeParameters}.
|
|
@@ -313,12 +315,16 @@ sap.ui.define([
|
|
|
313
315
|
* Map of binding parameters, see {@link sap.ui.model.odata.v4.ODataModel#bindList} and
|
|
314
316
|
* {@link sap.ui.model.odata.v4.ODataModel#bindContext}
|
|
315
317
|
* @throws {Error}
|
|
316
|
-
* If there are pending changes or if <code>mParameters</code> is
|
|
317
|
-
* binding-specific or unsupported parameters, contains unsupported values,
|
|
318
|
-
* property "$expand" or "$select" when the model is in auto-$expand/$select
|
|
319
|
-
* Since 1.90.0, binding-specific parameters are ignored if they are unchanged. Since
|
|
320
|
-
* string values for "$expand" and "$select" are ignored if they are unchanged;
|
|
321
|
-
* changes are ignored if all parameters are unchanged.
|
|
318
|
+
* If there are pending changes that cannot be ignored or if <code>mParameters</code> is
|
|
319
|
+
* missing, contains binding-specific or unsupported parameters, contains unsupported values,
|
|
320
|
+
* or contains the property "$expand" or "$select" when the model is in auto-$expand/$select
|
|
321
|
+
* mode. Since 1.90.0, binding-specific parameters are ignored if they are unchanged. Since
|
|
322
|
+
* 1.93.0, string values for "$expand" and "$select" are ignored if they are unchanged;
|
|
323
|
+
* pending changes are ignored if all parameters are unchanged. Since 1.97.0, pending changes
|
|
324
|
+
* are ignored if they relate to a
|
|
325
|
+
* {@link sap.ui.model.odata.v4.Context#setKeepAlive kept-alive} context of this binding.
|
|
326
|
+
* Since 1.98.0, {@link sap.ui.model.odata.v4.Context#isTransient transient} contexts
|
|
327
|
+
* of a {@link #getRootBinding root binding} do not count as pending changes.
|
|
322
328
|
*
|
|
323
329
|
* @public
|
|
324
330
|
* @since 1.45.0
|
|
@@ -384,7 +390,7 @@ sap.ui.define([
|
|
|
384
390
|
}
|
|
385
391
|
|
|
386
392
|
if (sChangeReason) {
|
|
387
|
-
if (this.hasPendingChanges()) {
|
|
393
|
+
if (this.hasPendingChanges(true)) {
|
|
388
394
|
throw new Error("Cannot change parameters due to pending changes");
|
|
389
395
|
}
|
|
390
396
|
this.applyParameters(mBindingParameters, sChangeReason);
|
|
@@ -411,7 +417,7 @@ sap.ui.define([
|
|
|
411
417
|
*
|
|
412
418
|
* @returns {sap.ui.base.SyncPromise}
|
|
413
419
|
* A promise resolving without a defined result when the check is finished, or rejecting in
|
|
414
|
-
* case of an error
|
|
420
|
+
* case of an error
|
|
415
421
|
* @throws {Error} If called with parameters
|
|
416
422
|
*
|
|
417
423
|
* @private
|
|
@@ -456,8 +462,11 @@ sap.ui.define([
|
|
|
456
462
|
* The absolute path to the collection in the cache where to create the entity
|
|
457
463
|
* @param {string} sTransientPredicate
|
|
458
464
|
* A (temporary) key predicate for the transient entity: "($uid=...)"
|
|
459
|
-
* @param {object} oInitialData
|
|
465
|
+
* @param {object} [oInitialData={}]
|
|
460
466
|
* The initial data for the created entity
|
|
467
|
+
* @param {boolean} bAtEndOfCreated
|
|
468
|
+
* Whether the newly created entity should be inserted after previously created entities, not
|
|
469
|
+
* before them
|
|
461
470
|
* @param {function} fnErrorCallback
|
|
462
471
|
* A function which is called with an error object each time a POST request for the create
|
|
463
472
|
* fails
|
|
@@ -470,7 +479,8 @@ sap.ui.define([
|
|
|
470
479
|
* @private
|
|
471
480
|
*/
|
|
472
481
|
ODataParentBinding.prototype.createInCache = function (oUpdateGroupLock, vCreatePath,
|
|
473
|
-
sCollectionPath, sTransientPredicate, oInitialData, fnErrorCallback,
|
|
482
|
+
sCollectionPath, sTransientPredicate, oInitialData, bAtEndOfCreated, fnErrorCallback,
|
|
483
|
+
fnSubmitCallback) {
|
|
474
484
|
var that = this;
|
|
475
485
|
|
|
476
486
|
return this.oCachePromise.then(function (oCache) {
|
|
@@ -479,7 +489,8 @@ sap.ui.define([
|
|
|
479
489
|
if (oCache) {
|
|
480
490
|
sPathInCache = _Helper.getRelativePath(sCollectionPath, that.getResolvedPath());
|
|
481
491
|
return oCache.create(oUpdateGroupLock, vCreatePath, sPathInCache,
|
|
482
|
-
sTransientPredicate, oInitialData, fnErrorCallback,
|
|
492
|
+
sTransientPredicate, oInitialData, bAtEndOfCreated, fnErrorCallback,
|
|
493
|
+
fnSubmitCallback
|
|
483
494
|
).then(function (oCreatedEntity) {
|
|
484
495
|
if (that.mCacheByResourcePath) {
|
|
485
496
|
// Ensure that cache containing non-transient created entity is recreated
|
|
@@ -490,8 +501,8 @@ sap.ui.define([
|
|
|
490
501
|
});
|
|
491
502
|
}
|
|
492
503
|
return that.oContext.getBinding().createInCache(oUpdateGroupLock, vCreatePath,
|
|
493
|
-
sCollectionPath, sTransientPredicate, oInitialData,
|
|
494
|
-
fnSubmitCallback);
|
|
504
|
+
sCollectionPath, sTransientPredicate, oInitialData, bAtEndOfCreated,
|
|
505
|
+
fnErrorCallback, fnSubmitCallback);
|
|
495
506
|
});
|
|
496
507
|
};
|
|
497
508
|
|
|
@@ -563,46 +574,41 @@ sap.ui.define([
|
|
|
563
574
|
* Deletes the entity in the cache. If the binding doesn't have a cache, it forwards to the
|
|
564
575
|
* parent binding adjusting the path.
|
|
565
576
|
*
|
|
566
|
-
* @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
|
|
567
|
-
* A lock for the group ID to be used for the DELETE request;
|
|
568
|
-
*
|
|
577
|
+
* @param {sap.ui.model.odata.v4.lib._GroupLock} [oGroupLock]
|
|
578
|
+
* A lock for the group ID to be used for the DELETE request; w/o a lock, no DELETE is sent.
|
|
579
|
+
* For a transient entity, the lock is ignored (use NULL)!
|
|
569
580
|
* @param {string} sEditUrl
|
|
570
|
-
* The edit URL to be used for the DELETE request
|
|
581
|
+
* The entity's edit URL to be used for the DELETE request; w/o a lock, this is mostly
|
|
582
|
+
* ignored.
|
|
571
583
|
* @param {string} sPath
|
|
572
584
|
* The path of the entity relative to this binding
|
|
573
585
|
* @param {object} [oETagEntity]
|
|
574
586
|
* An entity with the ETag of the binding for which the deletion was requested. This is
|
|
575
587
|
* provided if the deletion is delegated from a context binding with empty path to a list
|
|
576
|
-
* binding.
|
|
588
|
+
* binding. W/o a lock, this is ignored.
|
|
589
|
+
* @param {boolean} [bDoNotRequestCount]
|
|
590
|
+
* Whether not to request the new count from the server; useful in case of
|
|
591
|
+
* {@link sap.ui.model.odata.v4.Context#replaceWith} where it is known that the count remains
|
|
592
|
+
* unchanged; w/o a lock this should be true
|
|
577
593
|
* @param {function} fnCallback
|
|
578
|
-
* A function which is called after
|
|
579
|
-
*
|
|
594
|
+
* A function which is called after a transient entity has been deleted from the cache or
|
|
595
|
+
* after the entity has been deleted from the server and from the cache; the index of the
|
|
596
|
+
* entity and the entity list are both passed as parameter, or none of them
|
|
580
597
|
* @returns {sap.ui.base.SyncPromise}
|
|
581
598
|
* A promise which is resolved without a result in case of success, or rejected with an
|
|
582
|
-
* instance of <code>Error</code> in case of failure
|
|
599
|
+
* instance of <code>Error</code> in case of failure; returns <code>undefined</code> if the
|
|
600
|
+
* cache promise for this binding is not yet fulfilled
|
|
583
601
|
* @throws {Error}
|
|
584
|
-
* If the
|
|
585
|
-
* for this binding is not yet fulfilled
|
|
602
|
+
* If the cache is shared
|
|
586
603
|
*
|
|
587
604
|
* @private
|
|
588
605
|
*/
|
|
589
606
|
ODataParentBinding.prototype.deleteFromCache = function (oGroupLock, sEditUrl, sPath,
|
|
590
|
-
oETagEntity, fnCallback) {
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
if (this.oCache) {
|
|
598
|
-
sGroupId = oGroupLock.getGroupId();
|
|
599
|
-
if (!this.oModel.isAutoGroup(sGroupId) && !this.oModel.isDirectGroup(sGroupId)) {
|
|
600
|
-
throw new Error("Illegal update group ID: " + sGroupId);
|
|
601
|
-
}
|
|
602
|
-
return this.oCache._delete(oGroupLock, sEditUrl, sPath, oETagEntity, fnCallback);
|
|
603
|
-
}
|
|
604
|
-
return this.oContext.getBinding().deleteFromCache(oGroupLock, sEditUrl,
|
|
605
|
-
_Helper.buildPath(this.oContext.iIndex, this.sPath, sPath), oETagEntity, fnCallback);
|
|
607
|
+
oETagEntity, bDoNotRequestCount, fnCallback) {
|
|
608
|
+
return this.withCache(function (oCache, sCachePath) {
|
|
609
|
+
return oCache._delete(oGroupLock, sEditUrl, sCachePath, oETagEntity, bDoNotRequestCount,
|
|
610
|
+
fnCallback);
|
|
611
|
+
}, sPath, /*bSync*/true);
|
|
606
612
|
};
|
|
607
613
|
|
|
608
614
|
/**
|
|
@@ -612,7 +618,7 @@ sap.ui.define([
|
|
|
612
618
|
* @since 1.61
|
|
613
619
|
*/
|
|
614
620
|
ODataParentBinding.prototype.destroy = function () {
|
|
615
|
-
//
|
|
621
|
+
// this.mAggregatedQueryOptions = undefined;
|
|
616
622
|
this.aChildCanUseCachePromises = [];
|
|
617
623
|
this.removeReadGroupLock();
|
|
618
624
|
this.oResumePromise = undefined;
|
|
@@ -641,15 +647,18 @@ sap.ui.define([
|
|
|
641
647
|
* The child binding's binding path relative to <code>oContext</code>
|
|
642
648
|
* @param {object|sap.ui.base.SyncPromise} vChildQueryOptions
|
|
643
649
|
* The child binding's (aggregated) query options or a promise resolving with them
|
|
650
|
+
* @param {boolean} bIsProperty
|
|
651
|
+
* Whether the child is a property binding
|
|
644
652
|
* @returns {sap.ui.base.SyncPromise}
|
|
645
653
|
* A promise resolved with the reduced path for the child binding if the child binding can use
|
|
646
|
-
* this binding's or an ancestor binding's cache; <code>undefined</code>
|
|
654
|
+
* this binding's or an ancestor binding's cache; resolved with <code>undefined</code>
|
|
655
|
+
* otherwise.
|
|
647
656
|
*
|
|
648
657
|
* @private
|
|
649
658
|
* @see sap.ui.model.odata.v4.ODataMetaModel#getReducedPath
|
|
650
659
|
*/
|
|
651
660
|
ODataParentBinding.prototype.fetchIfChildCanUseCache = function (oContext, sChildPath,
|
|
652
|
-
vChildQueryOptions) {
|
|
661
|
+
vChildQueryOptions, bIsProperty) {
|
|
653
662
|
// getBaseForPathReduction must be called early, because the (virtual) parent context may be
|
|
654
663
|
// lost again when the path is needed
|
|
655
664
|
var sBaseForPathReduction = this.getBaseForPathReduction(),
|
|
@@ -759,9 +768,9 @@ sap.ui.define([
|
|
|
759
768
|
that.bAggregatedQueryOptionsInitial = false;
|
|
760
769
|
}
|
|
761
770
|
if (bIsAdvertisement) {
|
|
762
|
-
mWrappedChildQueryOptions = {
|
|
771
|
+
mWrappedChildQueryOptions = {$select : [sReducedChildMetaPath.slice(1)]};
|
|
763
772
|
return that.aggregateQueryOptions(mWrappedChildQueryOptions, sBaseMetaPath,
|
|
764
|
-
bCacheImmutable)
|
|
773
|
+
bCacheImmutable, bIsProperty)
|
|
765
774
|
? sReducedPath
|
|
766
775
|
: undefined;
|
|
767
776
|
}
|
|
@@ -773,7 +782,7 @@ sap.ui.define([
|
|
|
773
782
|
that.oModel.oInterface.fetchMetadata);
|
|
774
783
|
if (mWrappedChildQueryOptions) {
|
|
775
784
|
return that.aggregateQueryOptions(mWrappedChildQueryOptions, sBaseMetaPath,
|
|
776
|
-
bCacheImmutable)
|
|
785
|
+
bCacheImmutable, bIsProperty)
|
|
777
786
|
? sReducedPath
|
|
778
787
|
: undefined;
|
|
779
788
|
}
|
|
@@ -781,7 +790,7 @@ sap.ui.define([
|
|
|
781
790
|
}
|
|
782
791
|
if (sReducedChildMetaPath === "value") { // symbolic name for operation result
|
|
783
792
|
return that.aggregateQueryOptions(mChildQueryOptions, sBaseMetaPath,
|
|
784
|
-
bCacheImmutable)
|
|
793
|
+
bCacheImmutable, bIsProperty)
|
|
785
794
|
? sReducedPath
|
|
786
795
|
: undefined;
|
|
787
796
|
}
|
|
@@ -825,7 +834,7 @@ sap.ui.define([
|
|
|
825
834
|
// catch the error, but keep the rejected promise
|
|
826
835
|
this.oCachePromise.catch(function (oError) {
|
|
827
836
|
that.oModel.reportError(that + ": Failed to enhance query options for "
|
|
828
|
-
+ "auto-$expand/$select for child " + sChildPath,
|
|
837
|
+
+ "auto-$expand/$select for child " + sChildPath, sClassName, oError);
|
|
829
838
|
});
|
|
830
839
|
return oCanUseCachePromise;
|
|
831
840
|
};
|
|
@@ -858,9 +867,13 @@ sap.ui.define([
|
|
|
858
867
|
sMetaPath = _Helper.getMetaPath(oModel.resolve(this.sPath, oContext));
|
|
859
868
|
mConvertedQueryOptions = Object.assign({}, mQueryOptions, {$select : []});
|
|
860
869
|
return SyncPromise.all(mQueryOptions.$select.map(function (sSelectPath) {
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
870
|
+
var sMetaSelectPath = sMetaPath + "/" + sSelectPath;
|
|
871
|
+
|
|
872
|
+
if (sMetaSelectPath.endsWith(".*")) { // fetch metadata for namespace itself
|
|
873
|
+
sMetaSelectPath = sMetaSelectPath.slice(0, -1);
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
return _Helper.fetchPropertyAndType(fnFetchMetadata, sMetaSelectPath).then(function () {
|
|
864
877
|
var mWrappedQueryOptions = _Helper.wrapChildQueryOptions(
|
|
865
878
|
sMetaPath, sSelectPath, {}, fnFetchMetadata);
|
|
866
879
|
|
|
@@ -892,8 +905,7 @@ sap.ui.define([
|
|
|
892
905
|
oParentBinding = this.oContext.getBinding();
|
|
893
906
|
sParentUpdateGroupId = oParentBinding.getUpdateGroupId();
|
|
894
907
|
if (sParentUpdateGroupId === this.getUpdateGroupId()
|
|
895
|
-
|| this.oModel.
|
|
896
|
-
!== SubmitMode.API) {
|
|
908
|
+
|| !this.oModel.isApiGroup(sParentUpdateGroupId)) {
|
|
897
909
|
return oParentBinding.getBaseForPathReduction();
|
|
898
910
|
}
|
|
899
911
|
}
|
|
@@ -992,16 +1004,24 @@ sap.ui.define([
|
|
|
992
1004
|
* @override
|
|
993
1005
|
* @see sap.ui.model.odata.v4.ODataBinding#hasPendingChangesInDependents
|
|
994
1006
|
*/
|
|
995
|
-
ODataParentBinding.prototype.hasPendingChangesInDependents = function () {
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
return aDependents.some(function (oDependent) {
|
|
1007
|
+
ODataParentBinding.prototype.hasPendingChangesInDependents = function (bIgnoreKeptAlive0) {
|
|
1008
|
+
return this.getDependentBindings().some(function (oDependent) {
|
|
999
1009
|
var oCache = oDependent.oCache,
|
|
1000
|
-
bHasPendingChanges
|
|
1010
|
+
bHasPendingChanges,
|
|
1011
|
+
bIgnoreKeptAlive = bIgnoreKeptAlive0; // new copy for this dependent only
|
|
1001
1012
|
|
|
1013
|
+
if (bIgnoreKeptAlive) {
|
|
1014
|
+
if (oDependent.oContext.isKeepAlive()) {
|
|
1015
|
+
return false; // changes can be safely ignored here
|
|
1016
|
+
}
|
|
1017
|
+
if (oDependent.oContext.getIndex() !== undefined) {
|
|
1018
|
+
bIgnoreKeptAlive = false; // context of ODLB which is not kept alive: unsafe!
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1002
1021
|
if (oCache !== undefined) {
|
|
1003
1022
|
// Pending changes for this cache are only possible when there is a cache already
|
|
1004
|
-
if (oCache && oCache.hasPendingChangesForPath(""
|
|
1023
|
+
if (oCache && oCache.hasPendingChangesForPath("", false,
|
|
1024
|
+
bIgnoreKeptAlive && oDependent.mParameters.$$ownRequest)) {
|
|
1005
1025
|
return true;
|
|
1006
1026
|
}
|
|
1007
1027
|
} else if (oDependent.hasPendingChangesForPath("")) {
|
|
@@ -1010,14 +1030,17 @@ sap.ui.define([
|
|
|
1010
1030
|
if (oDependent.mCacheByResourcePath) {
|
|
1011
1031
|
bHasPendingChanges = Object.keys(oDependent.mCacheByResourcePath)
|
|
1012
1032
|
.some(function (sPath) {
|
|
1013
|
-
|
|
1033
|
+
var oCacheForPath = oDependent.mCacheByResourcePath[sPath];
|
|
1034
|
+
|
|
1035
|
+
return oCacheForPath !== oCache // don't ask again
|
|
1036
|
+
&& oCacheForPath.hasPendingChangesForPath("");
|
|
1014
1037
|
});
|
|
1015
1038
|
if (bHasPendingChanges) {
|
|
1016
1039
|
return true;
|
|
1017
1040
|
}
|
|
1018
1041
|
}
|
|
1019
1042
|
// Ask dependents, they might have no cache, but pending changes in mCacheByResourcePath
|
|
1020
|
-
return oDependent.hasPendingChangesInDependents();
|
|
1043
|
+
return oDependent.hasPendingChangesInDependents(bIgnoreKeptAlive);
|
|
1021
1044
|
})
|
|
1022
1045
|
|| this.oModel.withUnresolvedBindings("hasPendingChangesInCaches",
|
|
1023
1046
|
this.getResolvedPath().slice(1));
|
|
@@ -1060,9 +1083,11 @@ sap.ui.define([
|
|
|
1060
1083
|
* @param {boolean} [bKeepCacheOnError]
|
|
1061
1084
|
* If <code>true</code>, the binding data remains unchanged if the refresh fails
|
|
1062
1085
|
* @returns {sap.ui.base.SyncPromise}
|
|
1063
|
-
* A promise resolving when all dependent bindings are refreshed; it is rejected
|
|
1064
|
-
*
|
|
1065
|
-
*
|
|
1086
|
+
* A promise resolving when all dependent bindings are refreshed; it is rejected
|
|
1087
|
+
* when the refresh fails; the promise is resolved immediately on a suspended binding
|
|
1088
|
+
* @throws {Error}
|
|
1089
|
+
* If the binding's root binding is suspended and a group ID different from the binding's
|
|
1090
|
+
* group ID is given
|
|
1066
1091
|
*
|
|
1067
1092
|
* @private
|
|
1068
1093
|
*/
|
|
@@ -1078,7 +1103,11 @@ sap.ui.define([
|
|
|
1078
1103
|
* Recursively refreshes all dependent list bindings that have no own cache.
|
|
1079
1104
|
*
|
|
1080
1105
|
* @returns {sap.ui.base.SyncPromise}
|
|
1081
|
-
* A promise resolving when all dependent list bindings without own cache are refreshed
|
|
1106
|
+
* A promise resolving when all dependent list bindings without own cache are refreshed; it is
|
|
1107
|
+
* rejected when the refresh fails; the promise is resolved immediately on a suspended binding
|
|
1108
|
+
* @throws {Error}
|
|
1109
|
+
* If the binding's root binding is suspended and a group ID different from the binding's
|
|
1110
|
+
* group ID is given
|
|
1082
1111
|
*
|
|
1083
1112
|
* @private
|
|
1084
1113
|
*/
|
|
@@ -1106,24 +1135,6 @@ sap.ui.define([
|
|
|
1106
1135
|
}
|
|
1107
1136
|
};
|
|
1108
1137
|
|
|
1109
|
-
/**
|
|
1110
|
-
* Refreshes the binding; expects it to be suspended.
|
|
1111
|
-
*
|
|
1112
|
-
* @param {string} sGroupId
|
|
1113
|
-
* The group ID to be used for the refresh
|
|
1114
|
-
* @throws {Error}
|
|
1115
|
-
* If a group ID different from the binding's group ID is given
|
|
1116
|
-
|
|
1117
|
-
* @private
|
|
1118
|
-
*/
|
|
1119
|
-
ODataParentBinding.prototype.refreshSuspended = function (sGroupId) {
|
|
1120
|
-
if (sGroupId && sGroupId !== this.getGroupId()) {
|
|
1121
|
-
throw new Error(this + ": Cannot refresh a suspended binding with group ID '"
|
|
1122
|
-
+ sGroupId + "' (own group ID is '" + this.getGroupId() + "')");
|
|
1123
|
-
}
|
|
1124
|
-
this.setResumeChangeReason(ChangeReason.Refresh);
|
|
1125
|
-
};
|
|
1126
|
-
|
|
1127
1138
|
/**
|
|
1128
1139
|
* Loads side effects for the given context of this binding.
|
|
1129
1140
|
*
|
|
@@ -1322,8 +1333,11 @@ sap.ui.define([
|
|
|
1322
1333
|
|
|
1323
1334
|
/**
|
|
1324
1335
|
* Suspends this binding. A suspended binding does not fire change events nor does it trigger
|
|
1325
|
-
* data service requests. Call {@link #resume} to resume the binding.
|
|
1326
|
-
*
|
|
1336
|
+
* data service requests. Call {@link #resume} to resume the binding. Before 1.53.0, this method
|
|
1337
|
+
* was not supported and threw an error. Since 1.97.0, pending changes are ignored if they
|
|
1338
|
+
* relate to a {@link sap.ui.model.odata.v4.Context#setKeepAlive kept-alive} context of this
|
|
1339
|
+
* binding. Since 1.98.0, {@link sap.ui.model.odata.v4.Context#isTransient transient} contexts
|
|
1340
|
+
* of a {@link #getRootBinding root binding} do not count as pending changes.
|
|
1327
1341
|
*
|
|
1328
1342
|
* @throws {Error}
|
|
1329
1343
|
* If this binding
|
|
@@ -1331,7 +1345,7 @@ sap.ui.define([
|
|
|
1331
1345
|
* <li>is relative to a {@link sap.ui.model.odata.v4.Context},</li>
|
|
1332
1346
|
* <li>is an operation binding,</li>
|
|
1333
1347
|
* <li>has {@link sap.ui.model.Binding#isSuspended} set to <code>true</code>,</li>
|
|
1334
|
-
* <li>has pending changes,</li>
|
|
1348
|
+
* <li>has pending changes that cannot be ignored,</li>
|
|
1335
1349
|
* <li>is not a root binding. Use {@link #getRootBinding} to determine the root binding.</li>
|
|
1336
1350
|
* </ul>
|
|
1337
1351
|
*
|
|
@@ -1356,7 +1370,7 @@ sap.ui.define([
|
|
|
1356
1370
|
if (this.bSuspended) {
|
|
1357
1371
|
throw new Error("Cannot suspend a suspended binding: " + this);
|
|
1358
1372
|
}
|
|
1359
|
-
if (this.hasPendingChanges()) {
|
|
1373
|
+
if (this.hasPendingChanges(true)) {
|
|
1360
1374
|
throw new Error("Cannot suspend a binding with pending changes: " + this);
|
|
1361
1375
|
}
|
|
1362
1376
|
|
|
@@ -1445,7 +1459,6 @@ sap.ui.define([
|
|
|
1445
1459
|
"adjustPredicate",
|
|
1446
1460
|
"destroy",
|
|
1447
1461
|
"doDeregisterChangeListener",
|
|
1448
|
-
"fetchCache",
|
|
1449
1462
|
"getGeneration",
|
|
1450
1463
|
"hasPendingChangesForPath"
|
|
1451
1464
|
].forEach(function (sMethod) { // method (still) not final, allow for "super" calls
|