@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
|
@@ -201,7 +201,7 @@ sap.ui.define([
|
|
|
201
201
|
* This model is not prepared to be inherited from.
|
|
202
202
|
*
|
|
203
203
|
* @author SAP SE
|
|
204
|
-
* @version 1.
|
|
204
|
+
* @version 1.99.0
|
|
205
205
|
*
|
|
206
206
|
* @public
|
|
207
207
|
* @alias sap.ui.model.odata.v2.ODataModel
|
|
@@ -936,6 +936,13 @@ sap.ui.define([
|
|
|
936
936
|
};
|
|
937
937
|
|
|
938
938
|
/**
|
|
939
|
+
* Get the shared data for the section and the key. If it doesn't exist yet, an empty shared
|
|
940
|
+
* data object is created and stored under the section and the key.
|
|
941
|
+
*
|
|
942
|
+
* @param {string} sSection The data section
|
|
943
|
+
* @param {string} sKey A key in the section
|
|
944
|
+
* @returns {object} The shared data
|
|
945
|
+
*
|
|
939
946
|
* @private
|
|
940
947
|
*/
|
|
941
948
|
ODataModel._getSharedData = function(sSection, sKey) {
|
|
@@ -981,21 +988,26 @@ sap.ui.define([
|
|
|
981
988
|
/**
|
|
982
989
|
* Refreshes the metadata for this model, for example when the request for metadata has failed.
|
|
983
990
|
*
|
|
984
|
-
* <b>Note</b>: Do not use <code>refreshMetadata</code> if the metadata is outdated or should be
|
|
985
|
-
*
|
|
991
|
+
* <b>Note</b>: Do not use <code>refreshMetadata</code> if the metadata is outdated or should be
|
|
992
|
+
* updated. This will lead to inconsistent data in the application.
|
|
986
993
|
*
|
|
987
|
-
* Returns a new promise which can be resolved or rejected depending on the metadata loading
|
|
994
|
+
* Returns a new promise which can be resolved or rejected depending on the metadata loading
|
|
995
|
+
* state.
|
|
988
996
|
*
|
|
989
|
-
* @returns {Promise}
|
|
997
|
+
* @returns {Promise|undefined}
|
|
998
|
+
* A promise on metadata loaded state or <code>undefined</code> if metadata is not initialized
|
|
999
|
+
* or currently refreshed
|
|
990
1000
|
*
|
|
991
1001
|
* @deprecated As of version 1.42.
|
|
992
1002
|
*
|
|
993
1003
|
* @public
|
|
994
1004
|
*/
|
|
995
|
-
ODataModel.prototype.refreshMetadata = function(){
|
|
996
|
-
if (this.oMetadata && this.oMetadata.refresh){
|
|
1005
|
+
ODataModel.prototype.refreshMetadata = function() {
|
|
1006
|
+
if (this.oMetadata && this.oMetadata.refresh) {
|
|
997
1007
|
return this.oMetadata.refresh();
|
|
998
1008
|
}
|
|
1009
|
+
|
|
1010
|
+
return undefined;
|
|
999
1011
|
};
|
|
1000
1012
|
|
|
1001
1013
|
|
|
@@ -1227,7 +1239,8 @@ sap.ui.define([
|
|
|
1227
1239
|
* @private
|
|
1228
1240
|
*/
|
|
1229
1241
|
ODataModel.prototype._createEventInfo = function(oRequest, oResponse, aBatchRequests) {
|
|
1230
|
-
var
|
|
1242
|
+
var oInnerResponse, oBatchRequest,
|
|
1243
|
+
oEventInfo = {};
|
|
1231
1244
|
|
|
1232
1245
|
oEventInfo.url = oRequest.requestUri;
|
|
1233
1246
|
oEventInfo.method = oRequest.method;
|
|
@@ -1237,13 +1250,13 @@ sap.ui.define([
|
|
|
1237
1250
|
if (aBatchRequests) {
|
|
1238
1251
|
oEventInfo.requests = [];
|
|
1239
1252
|
for (var i = 0; i < aBatchRequests.length; i++) {
|
|
1240
|
-
|
|
1253
|
+
oBatchRequest = {};
|
|
1241
1254
|
//changeSets
|
|
1242
1255
|
if (Array.isArray(aBatchRequests[i])) {
|
|
1243
1256
|
var aChangeSet = aBatchRequests[i];
|
|
1244
1257
|
for (var j = 0; j < aChangeSet.length; j++) {
|
|
1245
|
-
|
|
1246
|
-
|
|
1258
|
+
oRequest = aChangeSet[j].request;
|
|
1259
|
+
oInnerResponse = aBatchRequests[i][j].response;
|
|
1247
1260
|
oBatchRequest = {};
|
|
1248
1261
|
oBatchRequest.url = oRequest.requestUri;
|
|
1249
1262
|
oBatchRequest.method = oRequest.method;
|
|
@@ -1270,8 +1283,8 @@ sap.ui.define([
|
|
|
1270
1283
|
oEventInfo.requests.push(oBatchRequest);
|
|
1271
1284
|
}
|
|
1272
1285
|
} else {
|
|
1273
|
-
|
|
1274
|
-
|
|
1286
|
+
oRequest = aBatchRequests[i].request;
|
|
1287
|
+
oInnerResponse = aBatchRequests[i].response;
|
|
1275
1288
|
oBatchRequest.url = oRequest.requestUri;
|
|
1276
1289
|
oBatchRequest.method = oRequest.method;
|
|
1277
1290
|
oBatchRequest.headers = oRequest.headers;
|
|
@@ -1874,7 +1887,7 @@ sap.ui.define([
|
|
|
1874
1887
|
* function lead to a single synchronous call where <code>mChangedEntities</code> is the union
|
|
1875
1888
|
* of all <code>mChangedEntities</Code> from the asynchronous calls.
|
|
1876
1889
|
*
|
|
1877
|
-
* @param {boolean} bForceUpdate
|
|
1890
|
+
* @param {boolean} [bForceUpdate]
|
|
1878
1891
|
* The parameter <code>bForceUpdate</code> for the <code>checkUpdate</code> call on the
|
|
1879
1892
|
* bindings
|
|
1880
1893
|
* @param {boolean} bAsync
|
|
@@ -2158,18 +2171,15 @@ sap.ui.define([
|
|
|
2158
2171
|
* function is the newly created binding context, an instance of
|
|
2159
2172
|
* {@link sap.ui.model.odata.v2.Context}.
|
|
2160
2173
|
* @param {boolean} [bReload] Whether to reload data
|
|
2161
|
-
* @return {sap.ui.model.odata.v2.Context}
|
|
2174
|
+
* @return {sap.ui.model.odata.v2.Context|undefined}
|
|
2162
2175
|
* The created binding context, only if the data is already available and the binding context
|
|
2163
|
-
* could be created synchronously
|
|
2176
|
+
* could be created synchronously; <code>undefined</code> otherwise
|
|
2164
2177
|
* @public
|
|
2165
2178
|
*/
|
|
2166
2179
|
ODataModel.prototype.createBindingContext = function(sPath, oContext, mParameters, fnCallBack, bReload) {
|
|
2167
|
-
var
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
sGroupId,
|
|
2171
|
-
sDeepPath,
|
|
2172
|
-
that = this, bCanonical;
|
|
2180
|
+
var bCanonical, sCanonicalPath, sCustomParams, sDeepPath, sGroupId, bIsRelative,
|
|
2181
|
+
oNewContext, aParams, sResolvedPath,
|
|
2182
|
+
that = this;
|
|
2173
2183
|
|
|
2174
2184
|
// optional parameter handling
|
|
2175
2185
|
if (oContext !== null && typeof oContext === "object"
|
|
@@ -2288,8 +2298,8 @@ sap.ui.define([
|
|
|
2288
2298
|
}
|
|
2289
2299
|
|
|
2290
2300
|
if (fnCallBack) {
|
|
2291
|
-
|
|
2292
|
-
|
|
2301
|
+
bIsRelative = !sPath.startsWith("/");
|
|
2302
|
+
aParams = [];
|
|
2293
2303
|
sCustomParams = this.createCustomParams(mParameters);
|
|
2294
2304
|
if (sCustomParams) {
|
|
2295
2305
|
aParams.push(sCustomParams);
|
|
@@ -2318,6 +2328,7 @@ sap.ui.define([
|
|
|
2318
2328
|
return oNewContext;
|
|
2319
2329
|
}
|
|
2320
2330
|
|
|
2331
|
+
return undefined;
|
|
2321
2332
|
};
|
|
2322
2333
|
|
|
2323
2334
|
/**
|
|
@@ -2396,9 +2407,10 @@ sap.ui.define([
|
|
|
2396
2407
|
* Filter expand properties for expand applying to the current entity (remove deep expands)
|
|
2397
2408
|
* and remove expands not covered by the select entries
|
|
2398
2409
|
*
|
|
2399
|
-
* @param {string[]
|
|
2400
|
-
* @param {string[]
|
|
2410
|
+
* @param {Array.<string[]>} aExpand Own expand entries as string arrays
|
|
2411
|
+
* @param {Array.<string[]>} aSelect Own select entries as string arrays
|
|
2401
2412
|
* @returns {string[]} Array of own expand properties
|
|
2413
|
+
*
|
|
2402
2414
|
* @private
|
|
2403
2415
|
*/
|
|
2404
2416
|
ODataModel.prototype._filterOwnExpand = function(aExpand, aSelect) {
|
|
@@ -2488,9 +2500,8 @@ sap.ui.define([
|
|
|
2488
2500
|
}
|
|
2489
2501
|
|
|
2490
2502
|
function checkReloadNeeded(oEntityType, oEntity, aSelect, aExpand) {
|
|
2491
|
-
var
|
|
2492
|
-
|
|
2493
|
-
sExpand, sSelect;
|
|
2503
|
+
var sExpand, i, vNavData, oNavEntity, oNavEntityType,
|
|
2504
|
+
aNavExpand, aNavSelect, aOwnExpand, aOwnSelect, sSelect;
|
|
2494
2505
|
|
|
2495
2506
|
// if no entity type could be found we decide not to reload
|
|
2496
2507
|
if (!oEntityType) {
|
|
@@ -2511,7 +2522,7 @@ sap.ui.define([
|
|
|
2511
2522
|
|
|
2512
2523
|
// check select properties
|
|
2513
2524
|
aOwnSelect = that._filterOwnSelect(aSelect, oEntityType.property);
|
|
2514
|
-
for (
|
|
2525
|
+
for (i = 0; i < aOwnSelect.length; i++) {
|
|
2515
2526
|
sSelect = aOwnSelect[i];
|
|
2516
2527
|
if (oEntity[sSelect] === undefined) {
|
|
2517
2528
|
return true;
|
|
@@ -2520,7 +2531,7 @@ sap.ui.define([
|
|
|
2520
2531
|
|
|
2521
2532
|
// check expanded entities
|
|
2522
2533
|
aOwnExpand = that._filterOwnExpand(aExpand, aSelect);
|
|
2523
|
-
for (
|
|
2534
|
+
for (i = 0; i < aOwnExpand.length; i++) {
|
|
2524
2535
|
sExpand = aOwnExpand[i];
|
|
2525
2536
|
vNavData = oEntity[sExpand];
|
|
2526
2537
|
|
|
@@ -2894,11 +2905,8 @@ sap.ui.define([
|
|
|
2894
2905
|
}
|
|
2895
2906
|
|
|
2896
2907
|
function getRequestedData(oEntityType, oValue, aSelect, aExpand) {
|
|
2897
|
-
var
|
|
2898
|
-
|
|
2899
|
-
vNavData, oNavEntityType, oNavValue, oNavObject,
|
|
2900
|
-
aNavSelect, aNavExpand,
|
|
2901
|
-
sExpand, sSelect, aResultProps;
|
|
2908
|
+
var sExpand, i,vNavData, oNavEntityType, aNavExpand, oNavObject, aNavSelect, oNavValue,
|
|
2909
|
+
aOwnExpand, aOwnNavSelect, aOwnPropSelect, aResultProps, oResultValue, sSelect;
|
|
2902
2910
|
|
|
2903
2911
|
// if no value we return undefined
|
|
2904
2912
|
if (!oValue) {
|
|
@@ -2912,9 +2920,9 @@ sap.ui.define([
|
|
|
2912
2920
|
aOwnPropSelect = that._filterOwnSelect(aSelect, oEntityType.property);
|
|
2913
2921
|
// copy selected properties
|
|
2914
2922
|
oResultValue = {};
|
|
2915
|
-
for (
|
|
2923
|
+
for (i = 0; i < aOwnPropSelect.length; i++) {
|
|
2916
2924
|
sSelect = aOwnPropSelect[i];
|
|
2917
|
-
if (oValue[sSelect] !== undefined) {
|
|
2925
|
+
if (oValue[sSelect] !== undefined || oValue.__metadata.created) {
|
|
2918
2926
|
oResultValue[sSelect] = oValue[sSelect];
|
|
2919
2927
|
} else {
|
|
2920
2928
|
Log.fatal("No data loaded for select property: " + sSelect + " of entry: " + that.getKey(oValue));
|
|
@@ -2928,7 +2936,7 @@ sap.ui.define([
|
|
|
2928
2936
|
|
|
2929
2937
|
// check expanded entities
|
|
2930
2938
|
aOwnExpand = that._filterOwnExpand(aExpand, aSelect);
|
|
2931
|
-
for (
|
|
2939
|
+
for (i = 0; i < aOwnExpand.length; i++) {
|
|
2932
2940
|
sExpand = aOwnExpand[i];
|
|
2933
2941
|
vNavData = oValue[sExpand];
|
|
2934
2942
|
|
|
@@ -3314,16 +3322,14 @@ sap.ui.define([
|
|
|
3314
3322
|
that["fireRequest" + sType](oEventInfo);
|
|
3315
3323
|
});
|
|
3316
3324
|
});
|
|
3317
|
-
} else {
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
oEventInfo = that._createEventInfo(oRequest.request, oPart.fnError);
|
|
3321
|
-
that["fireRequest" + sType](oEventInfo);
|
|
3322
|
-
});
|
|
3323
|
-
} else {
|
|
3324
|
-
oEventInfo = that._createEventInfo(oRequest.request, oRequest.fnError);
|
|
3325
|
+
} else if (oRequest.parts) {
|
|
3326
|
+
each(oRequest.parts, function(i, oPart) {
|
|
3327
|
+
oEventInfo = that._createEventInfo(oRequest.request, oPart.fnError);
|
|
3325
3328
|
that["fireRequest" + sType](oEventInfo);
|
|
3326
|
-
}
|
|
3329
|
+
});
|
|
3330
|
+
} else {
|
|
3331
|
+
oEventInfo = that._createEventInfo(oRequest.request, oRequest.fnError);
|
|
3332
|
+
that["fireRequest" + sType](oEventInfo);
|
|
3327
3333
|
}
|
|
3328
3334
|
});
|
|
3329
3335
|
if (oRequest.eventInfo.batch){
|
|
@@ -3431,12 +3437,14 @@ sap.ui.define([
|
|
|
3431
3437
|
}
|
|
3432
3438
|
|
|
3433
3439
|
function handleError(oError) {
|
|
3440
|
+
var i;
|
|
3441
|
+
|
|
3434
3442
|
if (oError.message == "Request aborted") {
|
|
3435
|
-
for (
|
|
3443
|
+
for (i = 0; i < oRequest.parts.length; i++){
|
|
3436
3444
|
that._processAborted(oRequest.parts[i].request, oError);
|
|
3437
3445
|
}
|
|
3438
3446
|
} else {
|
|
3439
|
-
for (
|
|
3447
|
+
for (i = 0; i < oRequest.parts.length; i++) {
|
|
3440
3448
|
that._processError(oRequest.parts[i].request, oError, oRequest.parts[i].fnError);
|
|
3441
3449
|
}
|
|
3442
3450
|
}
|
|
@@ -3768,7 +3776,8 @@ sap.ui.define([
|
|
|
3768
3776
|
* @private
|
|
3769
3777
|
*/
|
|
3770
3778
|
ODataModel.prototype._pushToRequestQueue = function(mRequests, sGroupId, sChangeSetId, oRequest, fnSuccess, fnError, requestHandle, bRefreshAfterChange) {
|
|
3771
|
-
var
|
|
3779
|
+
var oGroupEntry,
|
|
3780
|
+
oRequestGroup = mRequests[sGroupId],
|
|
3772
3781
|
sRequestKey = oRequest.key ? oRequest.key : oRequest.method + ":" + oRequest.requestUri;
|
|
3773
3782
|
|
|
3774
3783
|
//ignore requests in warmup scenario
|
|
@@ -3785,7 +3794,7 @@ sap.ui.define([
|
|
|
3785
3794
|
|
|
3786
3795
|
//'combine' only GET and internal create&change requests.
|
|
3787
3796
|
if (sRequestKey in oRequestGroup.map && (oRequest.key || oRequest.method === 'GET')) {
|
|
3788
|
-
|
|
3797
|
+
oGroupEntry = oRequestGroup.map[sRequestKey];
|
|
3789
3798
|
var oStoredRequest = oGroupEntry.request;
|
|
3790
3799
|
oRequest.deepPath = oStoredRequest.deepPath;
|
|
3791
3800
|
if (this.sMessageScope === MessageScope.BusinessObject) {
|
|
@@ -3832,7 +3841,7 @@ sap.ui.define([
|
|
|
3832
3841
|
oStoredRequest.functionTarget = oRequest.functionTarget;
|
|
3833
3842
|
}
|
|
3834
3843
|
} else {
|
|
3835
|
-
|
|
3844
|
+
oGroupEntry = {
|
|
3836
3845
|
request: oRequest,
|
|
3837
3846
|
bRefreshAfterChange: bRefreshAfterChange,
|
|
3838
3847
|
parts: [{
|
|
@@ -4361,10 +4370,17 @@ sap.ui.define([
|
|
|
4361
4370
|
/**
|
|
4362
4371
|
* Process a two-way binding change.
|
|
4363
4372
|
*
|
|
4364
|
-
* @param {string} sKey
|
|
4365
|
-
*
|
|
4366
|
-
* @param {
|
|
4367
|
-
*
|
|
4373
|
+
* @param {string} sKey
|
|
4374
|
+
* Key of the entity to change
|
|
4375
|
+
* @param {object} oData
|
|
4376
|
+
* The entry data
|
|
4377
|
+
* @param {boolean} [sUpdateMethod]
|
|
4378
|
+
* Sets <code>MERGE/PUT</code> method, defaults to <code>MERGE</code> if not provided
|
|
4379
|
+
* @param {string} [sDeepPath]
|
|
4380
|
+
* The deep path
|
|
4381
|
+
* @returns {object}
|
|
4382
|
+
* The request object
|
|
4383
|
+
*
|
|
4368
4384
|
* @private
|
|
4369
4385
|
*/
|
|
4370
4386
|
ODataModel.prototype._processChange = function(sKey, oData, sUpdateMethod, sDeepPath) {
|
|
@@ -4912,7 +4928,10 @@ sap.ui.define([
|
|
|
4912
4928
|
};
|
|
4913
4929
|
|
|
4914
4930
|
/**
|
|
4915
|
-
* Trigger a <code>POST</code> request to the OData service that was specified in the model
|
|
4931
|
+
* Trigger a <code>POST</code> request to the OData service that was specified in the model
|
|
4932
|
+
* constructor; see
|
|
4933
|
+
* {@link topic:6c47b2b39db9404582994070ec3d57a2#loio4c4cd99af9b14e08bb72470cc7cabff4 Creating
|
|
4934
|
+
* Entities documentation} for comprehensive information on the topic.
|
|
4916
4935
|
*
|
|
4917
4936
|
* Please note that deep creates are not supported and may not work.
|
|
4918
4937
|
*
|
|
@@ -5182,7 +5201,7 @@ sap.ui.define([
|
|
|
5182
5201
|
* @param {function} [mParameters.success]
|
|
5183
5202
|
* A callback function which is called when the data has been successfully retrieved; the
|
|
5184
5203
|
* handler can have the following parameters: <code>oData</code> and <code>response</code>.
|
|
5185
|
-
* @param {Object<string,
|
|
5204
|
+
* @param {Object<string,any>} [mParameters.urlParameters]
|
|
5186
5205
|
* Maps the function import parameter name as specified in the function import's metadata to
|
|
5187
5206
|
* its value; the value is formatted based on the parameter's type as specified in the metadata
|
|
5188
5207
|
* @param {string} [mParameters.batchGroupId]
|
|
@@ -5395,18 +5414,21 @@ sap.ui.define([
|
|
|
5395
5414
|
delete mUrlParams.__metadata;
|
|
5396
5415
|
delete mUrlParams["$result"];
|
|
5397
5416
|
var oFunctionMetadata = this.oMetadata._getFunctionImportMetadata(sFunctionName, sMethod);
|
|
5398
|
-
assert(oFunctionMetadata,
|
|
5417
|
+
assert(oFunctionMetadata,
|
|
5418
|
+
this + ": Function " + sFunctionName + " not found in the metadata !");
|
|
5399
5419
|
if (!oFunctionMetadata) {
|
|
5400
|
-
return;
|
|
5420
|
+
return undefined;
|
|
5401
5421
|
}
|
|
5402
5422
|
|
|
5403
5423
|
if (oFunctionMetadata.parameter != null) {
|
|
5404
5424
|
each(oFunctionMetadata.parameter, function (iIndex, oParam) {
|
|
5405
5425
|
if (mUrlParams && mUrlParams[oParam.name] !== undefined) {
|
|
5406
|
-
mUrlParams[oParam.name] =
|
|
5426
|
+
mUrlParams[oParam.name] =
|
|
5427
|
+
ODataUtils.formatValue(mUrlParams[oParam.name], oParam.type);
|
|
5407
5428
|
}
|
|
5408
5429
|
});
|
|
5409
5430
|
}
|
|
5431
|
+
|
|
5410
5432
|
return mUrlParams;
|
|
5411
5433
|
};
|
|
5412
5434
|
|
|
@@ -5571,17 +5593,20 @@ sap.ui.define([
|
|
|
5571
5593
|
/**
|
|
5572
5594
|
* Return the parsed XML metadata as a Javascript object.
|
|
5573
5595
|
*
|
|
5574
|
-
* Please note that the metadata is loaded asynchronously and this function might return
|
|
5575
|
-
* metadata has not been loaded yet.
|
|
5576
|
-
* In this case attach to the <code>metadataLoaded</code> event to get notified when the
|
|
5596
|
+
* Please note that the metadata is loaded asynchronously and this function might return
|
|
5597
|
+
* <code>undefined</code> because the metadata has not been loaded yet.
|
|
5598
|
+
* In this case attach to the <code>metadataLoaded</code> event to get notified when the
|
|
5599
|
+
* metadata is available and then call this function.
|
|
5577
5600
|
*
|
|
5578
|
-
* @return {Object} Metadata object
|
|
5601
|
+
* @return {Object|undefined} Metadata object
|
|
5579
5602
|
* @public
|
|
5580
5603
|
*/
|
|
5581
5604
|
ODataModel.prototype.getServiceMetadata = function() {
|
|
5582
5605
|
if (this.oMetadata && this.oMetadata.isLoaded()) {
|
|
5583
5606
|
return this.oMetadata.getServiceMetadata();
|
|
5584
5607
|
}
|
|
5608
|
+
|
|
5609
|
+
return undefined;
|
|
5585
5610
|
};
|
|
5586
5611
|
|
|
5587
5612
|
/**
|
|
@@ -5809,11 +5834,10 @@ sap.ui.define([
|
|
|
5809
5834
|
* @public
|
|
5810
5835
|
*/
|
|
5811
5836
|
ODataModel.prototype.submitChanges = function(mParameters) {
|
|
5812
|
-
var
|
|
5813
|
-
|
|
5814
|
-
bAborted = false,
|
|
5837
|
+
var mChangedEntities, fnError, sGroupId, sMethod, oRequestHandle, vRequestHandleInternal,
|
|
5838
|
+
fnSuccess,
|
|
5839
|
+
bAborted = false,
|
|
5815
5840
|
bRefreshAfterChange = this.bRefreshAfterChange,
|
|
5816
|
-
mParams,
|
|
5817
5841
|
that = this;
|
|
5818
5842
|
|
|
5819
5843
|
if (mParameters) {
|
|
@@ -5833,28 +5857,37 @@ sap.ui.define([
|
|
|
5833
5857
|
mChangedEntities = merge({}, that.mChangedEntities);
|
|
5834
5858
|
|
|
5835
5859
|
this.oMetadata.loaded().then(function() {
|
|
5860
|
+
var oChange, aChanges, sChangeSetId, i, sRequestGroupId, oRequestGroup;
|
|
5861
|
+
|
|
5836
5862
|
each(mChangedEntities, function(sKey, oData) {
|
|
5837
|
-
|
|
5863
|
+
var oCreatedInfo, oRequest, oRequestHandle0,
|
|
5864
|
+
oGroupInfo = that._resolveGroup(sKey);
|
|
5865
|
+
|
|
5838
5866
|
if (oGroupInfo.groupId === sGroupId || !sGroupId) {
|
|
5839
5867
|
oRequest = that._processChange(sKey, oData, sMethod || that.sDefaultUpdateMethod);
|
|
5840
5868
|
oRequest.key = sKey;
|
|
5841
5869
|
//get params for created entries: could contain success/error handler
|
|
5842
|
-
|
|
5843
|
-
|
|
5870
|
+
oCreatedInfo = oData.__metadata && oData.__metadata.created
|
|
5871
|
+
? oData.__metadata.created
|
|
5872
|
+
: {};
|
|
5873
|
+
oRequestHandle0 = {
|
|
5844
5874
|
abort: function() {
|
|
5845
5875
|
oRequest._aborted = true;
|
|
5846
5876
|
}
|
|
5847
5877
|
};
|
|
5848
5878
|
if (oGroupInfo.groupId in that.mDeferredGroups) {
|
|
5849
|
-
that._pushToRequestQueue(that.mDeferredRequests, oGroupInfo.groupId,
|
|
5850
|
-
oRequest,
|
|
5879
|
+
that._pushToRequestQueue(that.mDeferredRequests, oGroupInfo.groupId,
|
|
5880
|
+
oGroupInfo.changeSetId, oRequest, oCreatedInfo.success,
|
|
5881
|
+
oCreatedInfo.error, oRequestHandle0,
|
|
5882
|
+
oCreatedInfo.refreshAfterChange === undefined
|
|
5883
|
+
? bRefreshAfterChange
|
|
5884
|
+
: oCreatedInfo.refreshAfterChange);
|
|
5851
5885
|
}
|
|
5852
5886
|
}
|
|
5853
5887
|
});
|
|
5854
5888
|
|
|
5855
5889
|
// Set undefined refreshAfterChange flags
|
|
5856
5890
|
// If undefined => overwrite with current global refreshAfterChange state
|
|
5857
|
-
var sRequestGroupId, sChangeSetId, oRequestGroup, aChanges, oChange, i;
|
|
5858
5891
|
for (sRequestGroupId in that.mDeferredRequests) {
|
|
5859
5892
|
oRequestGroup = that.mDeferredRequests[sRequestGroupId];
|
|
5860
5893
|
for (sChangeSetId in oRequestGroup.changes) {
|
|
@@ -5993,6 +6026,9 @@ sap.ui.define([
|
|
|
5993
6026
|
that.abortInternalRequest(sGroupId, {requestKey : sKey});
|
|
5994
6027
|
});
|
|
5995
6028
|
if (bDeleteCreatedEntities && oCreated) {
|
|
6029
|
+
// remove context synchronously from the list of created contexts to avoid a temporary
|
|
6030
|
+
// empty table row
|
|
6031
|
+
this.oCreatedContextsCache.findAndRemoveContext(this.mContexts["/" + sKey]);
|
|
5996
6032
|
this._removeEntity(sKey);
|
|
5997
6033
|
if (oCreated.abort) {
|
|
5998
6034
|
oCreated.abort(ODataModel._createAbortedError());
|
|
@@ -6022,7 +6058,7 @@ sap.ui.define([
|
|
|
6022
6058
|
* </ul>
|
|
6023
6059
|
*
|
|
6024
6060
|
* @param {array} [aPath]
|
|
6025
|
-
* Paths to be
|
|
6061
|
+
* Paths to be reset; if no array is passed, all changes are reset
|
|
6026
6062
|
* @param {boolean} [bAll=false]
|
|
6027
6063
|
* Whether also deferred requests are taken into account
|
|
6028
6064
|
* @param {boolean} [bDeleteCreatedEntities=false]
|
|
@@ -6114,11 +6150,14 @@ sap.ui.define([
|
|
|
6114
6150
|
*/
|
|
6115
6151
|
ODataModel.prototype.setProperty = function(sPath, oValue, oContext, bAsyncUpdate) {
|
|
6116
6152
|
|
|
6117
|
-
var
|
|
6118
|
-
|
|
6119
|
-
|
|
6120
|
-
|
|
6121
|
-
|
|
6153
|
+
var oContextToActivate, oChangeObject, bCreated, sDeepPath, oEntityMetadata, oEntityType,
|
|
6154
|
+
oEntry, oGroupInfo, bIsNavPropExpanded, sKey, mKeys, oNavPropRefInfo, oOriginalEntry,
|
|
6155
|
+
oOriginalValue, mParams, aParts, sPropertyPath, oRef, bRefreshAfterChange, oRequest,
|
|
6156
|
+
mRequests, oRequestHandle, sResolvedPath,
|
|
6157
|
+
mChangedEntities = {},
|
|
6158
|
+
oEntityInfo = {},
|
|
6159
|
+
bFunction = false,
|
|
6160
|
+
that = this;
|
|
6122
6161
|
|
|
6123
6162
|
function updateChangedEntities(oOriginalObject, oChangedObject) {
|
|
6124
6163
|
each(oChangedObject,function(sKey) {
|
|
@@ -6234,7 +6273,13 @@ sap.ui.define([
|
|
|
6234
6273
|
|
|
6235
6274
|
bRefreshAfterChange = this._getRefreshAfterChange(undefined, oGroupInfo.groupId);
|
|
6236
6275
|
|
|
6237
|
-
|
|
6276
|
+
if (oEntry.__metadata.created && !oEntry.__metadata.created.functionImport) {
|
|
6277
|
+
oContextToActivate = this.oCreatedContextsCache.findCreatedContext(sResolvedPath);
|
|
6278
|
+
if (oContextToActivate) {
|
|
6279
|
+
oContextToActivate.activate();
|
|
6280
|
+
}
|
|
6281
|
+
}
|
|
6282
|
+
this.oMetadata.loaded().then(function () {
|
|
6238
6283
|
oRequestHandle = {
|
|
6239
6284
|
abort: function() {
|
|
6240
6285
|
oRequest._aborted = true;
|
|
@@ -6453,23 +6498,28 @@ sap.ui.define([
|
|
|
6453
6498
|
* @deprecated since 1.95.0; use {@link #resetChanges} instead
|
|
6454
6499
|
*/
|
|
6455
6500
|
ODataModel.prototype.deleteCreatedEntry = function (oContext) {
|
|
6456
|
-
var
|
|
6501
|
+
var sGroupId, sKey,
|
|
6502
|
+
that = this;
|
|
6503
|
+
|
|
6457
6504
|
if (oContext) {
|
|
6458
|
-
|
|
6505
|
+
sKey = oContext.getPath().substr(1);
|
|
6459
6506
|
sGroupId = this._resolveGroup(sKey).groupId;
|
|
6460
6507
|
that.oMetadata.loaded().then(function() {
|
|
6461
6508
|
that.abortInternalRequest(sGroupId, {requestKey: sKey});
|
|
6462
6509
|
});
|
|
6463
6510
|
that._removeEntity(sKey);
|
|
6464
6511
|
//cleanup Messages for created Entry
|
|
6465
|
-
sap.ui.getCore().getMessageManager().removeMessages(
|
|
6512
|
+
sap.ui.getCore().getMessageManager().removeMessages(
|
|
6513
|
+
this.getMessagesByEntity(oContext.getPath(), true));
|
|
6466
6514
|
}
|
|
6467
6515
|
};
|
|
6468
6516
|
|
|
6469
6517
|
/**
|
|
6470
6518
|
* Creates a new entry object which is described by the metadata of the entity type of the
|
|
6471
6519
|
* specified <code>sPath</code> Name. A context object is returned which can be used to bind
|
|
6472
|
-
* against the newly created object.
|
|
6520
|
+
* against the newly created object. See
|
|
6521
|
+
* {@link topic:6c47b2b39db9404582994070ec3d57a2#loio4c4cd99af9b14e08bb72470cc7cabff4 Creating
|
|
6522
|
+
* Entities documentation} for comprehensive information on the topic.
|
|
6473
6523
|
*
|
|
6474
6524
|
* For each created entry a request is created and stored in a request queue.
|
|
6475
6525
|
* The request queue can be submitted by calling {@link #submitChanges}. As long as the context
|
|
@@ -6564,6 +6614,10 @@ sap.ui.define([
|
|
|
6564
6614
|
* batch request
|
|
6565
6615
|
* @param {Object<string,string>} [mParameters.headers]
|
|
6566
6616
|
* A map of headers
|
|
6617
|
+
* @param {boolean} [mParameters.inactive]
|
|
6618
|
+
* Whether the created context is inactive. An inactive context will only be sent to the
|
|
6619
|
+
* server after the first property update. From then on it behaves like any other created
|
|
6620
|
+
* context. Supported since 1.98.0
|
|
6567
6621
|
* @param {array|object} [mParameters.properties]
|
|
6568
6622
|
* An array that specifies a set of properties or the entry
|
|
6569
6623
|
* @param {boolean} [mParameters.refreshAfterChange]
|
|
@@ -6585,9 +6639,9 @@ sap.ui.define([
|
|
|
6585
6639
|
*/
|
|
6586
6640
|
ODataModel.prototype.createEntry = function (sPath, mParameters) {
|
|
6587
6641
|
var bCanonical, sChangeSetId, oContext, fnCreated, pCreate, fnCreatedPromiseResolve,
|
|
6588
|
-
sDeepPath, fnError, sETag, sExpand, sGroupId, mHeaders,
|
|
6589
|
-
vProperties, bRefreshAfterChange, oRequest, mRequests, fnSuccess, sUrl,
|
|
6590
|
-
mUrlParams,
|
|
6642
|
+
sDeepPath, fnError, sETag, sExpand, sGroupId, mHeaders, bInactive, sKey,
|
|
6643
|
+
sNormalizedPath, vProperties, bRefreshAfterChange, oRequest, mRequests, fnSuccess, sUrl,
|
|
6644
|
+
aUrlParams, mUrlParams,
|
|
6591
6645
|
oEntity = {},
|
|
6592
6646
|
sMethod = "POST",
|
|
6593
6647
|
that = this;
|
|
@@ -6606,6 +6660,7 @@ sap.ui.define([
|
|
|
6606
6660
|
bRefreshAfterChange = mParameters.refreshAfterChange;
|
|
6607
6661
|
bCanonical = mParameters.canonicalRequest;
|
|
6608
6662
|
sExpand = mParameters.expand;
|
|
6663
|
+
bInactive = mParameters.inactive;
|
|
6609
6664
|
}
|
|
6610
6665
|
if (sExpand && !this.bUseBatch) {
|
|
6611
6666
|
throw new Error("The 'expand' parameter is only supported if batch mode is used");
|
|
@@ -6739,22 +6794,35 @@ sap.ui.define([
|
|
|
6739
6794
|
};
|
|
6740
6795
|
}
|
|
6741
6796
|
oEntity.__metadata = {
|
|
6742
|
-
type: "" + oEntityMetadata.entityType,
|
|
6743
|
-
uri: that.sServiceUrl + '/' + sKey,
|
|
6744
|
-
created: {
|
|
6745
|
-
|
|
6746
|
-
|
|
6747
|
-
|
|
6748
|
-
|
|
6749
|
-
|
|
6750
|
-
|
|
6751
|
-
|
|
6752
|
-
|
|
6797
|
+
type : "" + oEntityMetadata.entityType,
|
|
6798
|
+
uri : that.sServiceUrl + '/' + sKey,
|
|
6799
|
+
created : {
|
|
6800
|
+
changeSetId : sChangeSetId,
|
|
6801
|
+
error : fnError,
|
|
6802
|
+
eTag : sETag,
|
|
6803
|
+
groupId : sGroupId,
|
|
6804
|
+
headers : mHeaders,
|
|
6805
|
+
key : sNormalizedPath.substring(1), //store path for later POST
|
|
6806
|
+
refreshAfterChange : bRefreshAfterChange,
|
|
6807
|
+
success : fnSuccess,
|
|
6808
|
+
urlParameters : mUrlParams
|
|
6753
6809
|
},
|
|
6754
|
-
deepPath: sDeepPath
|
|
6810
|
+
deepPath : sDeepPath
|
|
6755
6811
|
};
|
|
6756
6812
|
pCreate = new SyncPromise(function (resolve, reject) {
|
|
6757
|
-
fnCreatedPromiseResolve =
|
|
6813
|
+
fnCreatedPromiseResolve = function () {
|
|
6814
|
+
if (!that.oCreatedContextsCache.getCacheInfo(oCreatedContext)) {
|
|
6815
|
+
// If ODataModel#createEntry is called by ODataListBinding#create, the
|
|
6816
|
+
// created context is added to the created contexts cache and has to keep
|
|
6817
|
+
// the create promise until the context gets removed from the cache, see
|
|
6818
|
+
// sap.ui.model.odata.v2._CreatedContextsCache#removePersistedContexts.
|
|
6819
|
+
// If the context is not in the cache ODataModel#createEntry has been called
|
|
6820
|
+
// directly and the create promise has to be reset after successful
|
|
6821
|
+
// creation.
|
|
6822
|
+
oCreatedContext.resetCreatedPromise();
|
|
6823
|
+
}
|
|
6824
|
+
resolve();
|
|
6825
|
+
};
|
|
6758
6826
|
oEntity.__metadata.created.abort = reject;
|
|
6759
6827
|
});
|
|
6760
6828
|
pCreate.catch(function () {
|
|
@@ -6762,7 +6830,9 @@ sap.ui.define([
|
|
|
6762
6830
|
});
|
|
6763
6831
|
|
|
6764
6832
|
sKey = that._addEntity(merge({}, oEntity));
|
|
6765
|
-
|
|
6833
|
+
if (!bInactive) {
|
|
6834
|
+
that.mChangedEntities[sKey] = oEntity;
|
|
6835
|
+
}
|
|
6766
6836
|
|
|
6767
6837
|
sUrl = that._createRequestUrlWithNormalizedPath(sNormalizedPath, aUrlParams, that.bUseBatch);
|
|
6768
6838
|
oRequest = that._createRequest(sUrl, sDeepPath, sMethod, mHeaders, oEntity, sETag);
|
|
@@ -6779,7 +6849,7 @@ sap.ui.define([
|
|
|
6779
6849
|
oEntity.__metadata.created.contentID = sUID;
|
|
6780
6850
|
}
|
|
6781
6851
|
|
|
6782
|
-
oCreatedContext = that.getContext("/" + sKey, sDeepPath, pCreate);
|
|
6852
|
+
oCreatedContext = that.getContext("/" + sKey, sDeepPath, pCreate, bInactive);
|
|
6783
6853
|
|
|
6784
6854
|
oRequest.key = sKey;
|
|
6785
6855
|
oRequest.created = true;
|
|
@@ -6789,11 +6859,14 @@ sap.ui.define([
|
|
|
6789
6859
|
mRequests = that.mDeferredRequests;
|
|
6790
6860
|
}
|
|
6791
6861
|
|
|
6792
|
-
that.oMetadata.loaded().then(function() {
|
|
6793
|
-
|
|
6794
|
-
|
|
6795
|
-
|
|
6862
|
+
that.oMetadata.loaded().then(function () {
|
|
6863
|
+
oCreatedContext.fetchActivated().then(function () {
|
|
6864
|
+
that._pushToRequestQueue(mRequests, sGroupId, sChangeSetId, oRequest, fnSuccess,
|
|
6865
|
+
fnError, oRequestHandle, bRefreshAfterChange);
|
|
6866
|
+
that._processRequestQueueAsync(that.mRequests);
|
|
6867
|
+
});
|
|
6796
6868
|
});
|
|
6869
|
+
|
|
6797
6870
|
return oCreatedContext;
|
|
6798
6871
|
}
|
|
6799
6872
|
|
|
@@ -6805,8 +6878,11 @@ sap.ui.define([
|
|
|
6805
6878
|
} else if (this.oMetadata.isLoaded()) {
|
|
6806
6879
|
return create();
|
|
6807
6880
|
} else {
|
|
6808
|
-
Log.error("Tried to use createEntry without created-callback, before metadata is
|
|
6881
|
+
Log.error("Tried to use createEntry without created-callback, before metadata is "
|
|
6882
|
+
+ "available!");
|
|
6809
6883
|
}
|
|
6884
|
+
|
|
6885
|
+
return undefined;
|
|
6810
6886
|
};
|
|
6811
6887
|
|
|
6812
6888
|
/**
|
|
@@ -6860,7 +6936,7 @@ sap.ui.define([
|
|
|
6860
6936
|
*
|
|
6861
6937
|
* @param {string} sPath The binding path
|
|
6862
6938
|
* @param {sap.ui.model.Context} [oContext] The binding context
|
|
6863
|
-
* @param {boolean} Whether the binding path should be resolved canonical or not
|
|
6939
|
+
* @param {boolean} bCanonical Whether the binding path should be resolved canonical or not
|
|
6864
6940
|
* @returns {string} The resolved path
|
|
6865
6941
|
* @private
|
|
6866
6942
|
*/
|
|
@@ -7207,9 +7283,15 @@ sap.ui.define([
|
|
|
7207
7283
|
/**
|
|
7208
7284
|
* Gives the back-end response to the <code>MessageParser</code> in case there is one attached.
|
|
7209
7285
|
*
|
|
7286
|
+
* @param {object} oResponse The response
|
|
7287
|
+
* @param {object} oRequest The request
|
|
7288
|
+
* @param {object} mGetEntities New entities from the response
|
|
7289
|
+
* @param {object} mChangeEntities Changed entities from the response
|
|
7290
|
+
*
|
|
7210
7291
|
* @private
|
|
7211
7292
|
*/
|
|
7212
|
-
ODataModel.prototype._parseResponse = function(oResponse, oRequest, mGetEntities,
|
|
7293
|
+
ODataModel.prototype._parseResponse = function(oResponse, oRequest, mGetEntities,
|
|
7294
|
+
mChangeEntities) {
|
|
7213
7295
|
try {
|
|
7214
7296
|
if (!this.oMessageParser) {
|
|
7215
7297
|
this.oMessageParser = new ODataMessageParser(this.sServiceUrl, this.oMetadata,
|
|
@@ -7217,7 +7299,8 @@ sap.ui.define([
|
|
|
7217
7299
|
this.oMessageParser.setProcessor(this);
|
|
7218
7300
|
}
|
|
7219
7301
|
// Parse response and delegate messages to the set message parser
|
|
7220
|
-
this.oMessageParser.parse(oResponse, oRequest, mGetEntities, mChangeEntities,
|
|
7302
|
+
this.oMessageParser.parse(oResponse, oRequest, mGetEntities, mChangeEntities,
|
|
7303
|
+
this.bIsMessageScopeSupported);
|
|
7221
7304
|
} catch (ex) {
|
|
7222
7305
|
Log.error("Error parsing OData messages: " + ex);
|
|
7223
7306
|
}
|
|
@@ -7294,7 +7377,9 @@ sap.ui.define([
|
|
|
7294
7377
|
* @return {object} The nearest entity object or <code>null</code> if no entity can be resolved
|
|
7295
7378
|
*/
|
|
7296
7379
|
ODataModel.prototype.getEntityByPath = function(sPath, oContext, oEntityInfo) {
|
|
7297
|
-
var
|
|
7380
|
+
var sKey,
|
|
7381
|
+
sResolvedPath = Model.prototype.resolve.call(this,sPath, oContext);
|
|
7382
|
+
|
|
7298
7383
|
if (!sResolvedPath) {
|
|
7299
7384
|
return null;
|
|
7300
7385
|
}
|
|
@@ -7305,7 +7390,7 @@ sap.ui.define([
|
|
|
7305
7390
|
var sEntryPath = aParts.join("/"),
|
|
7306
7391
|
oObject = this._getObject(sEntryPath);
|
|
7307
7392
|
if (isPlainObject(oObject)) {
|
|
7308
|
-
|
|
7393
|
+
sKey = this._getKey(oObject);
|
|
7309
7394
|
if (sKey) {
|
|
7310
7395
|
oEntity = oObject;
|
|
7311
7396
|
break;
|
|
@@ -7484,12 +7569,10 @@ sap.ui.define([
|
|
|
7484
7569
|
sTargetPath = sPath + "/" + n;
|
|
7485
7570
|
if (isPlainObject(oObject)) {
|
|
7486
7571
|
this.decreaseLaundering(sTargetPath, oObject);
|
|
7487
|
-
} else {
|
|
7488
|
-
|
|
7489
|
-
|
|
7490
|
-
|
|
7491
|
-
delete this.mLaunderingState[sTargetPath];
|
|
7492
|
-
}
|
|
7572
|
+
} else if (sTargetPath in this.mLaunderingState) {
|
|
7573
|
+
this.mLaunderingState[sTargetPath]--;
|
|
7574
|
+
if (this.mLaunderingState[sTargetPath] === 0) {
|
|
7575
|
+
delete this.mLaunderingState[sTargetPath];
|
|
7493
7576
|
}
|
|
7494
7577
|
}
|
|
7495
7578
|
}
|
|
@@ -7500,14 +7583,23 @@ sap.ui.define([
|
|
|
7500
7583
|
};
|
|
7501
7584
|
|
|
7502
7585
|
/**
|
|
7503
|
-
* Returns bRefreshAfterChange value for a change operation based on
|
|
7586
|
+
* Returns bRefreshAfterChange value for a change operation based on
|
|
7587
|
+
* <code>refreshAfterChange</code> parameter and global <code>bRefreshAfterChange</code> flag
|
|
7588
|
+
* state.
|
|
7589
|
+
*
|
|
7590
|
+
* @param {boolean} bRefreshAfterChange
|
|
7591
|
+
* Value of the <code>refreshAfterChange</code> parameter of any change operation (for example
|
|
7592
|
+
* {@link #update})
|
|
7593
|
+
* @param {string} sGroupId
|
|
7594
|
+
* ID of the request group
|
|
7595
|
+
* @returns {boolean}
|
|
7596
|
+
* Whether to refresh after change
|
|
7504
7597
|
*
|
|
7505
|
-
* @param {boolean} bRefreshAfterChange Value of the <code>refreshAfterChange</code> parameter of any change operation (for example {@link #update})
|
|
7506
|
-
* @param {string} sGroupId ID of the request group
|
|
7507
7598
|
* @private
|
|
7508
7599
|
*/
|
|
7509
7600
|
ODataModel.prototype._getRefreshAfterChange = function(bRefreshAfterChange, sGroupId) {
|
|
7510
|
-
// If no bRefreshAfterChange parameter is given given and the request group is not deferred,
|
|
7601
|
+
// If no bRefreshAfterChange parameter is given given and the request group is not deferred,
|
|
7602
|
+
// use the global flag
|
|
7511
7603
|
if (bRefreshAfterChange === undefined && !(sGroupId in this.mDeferredGroups)) {
|
|
7512
7604
|
return this.bRefreshAfterChange;
|
|
7513
7605
|
}
|
|
@@ -7518,8 +7610,8 @@ sap.ui.define([
|
|
|
7518
7610
|
* Get all messages for an entity path.
|
|
7519
7611
|
*
|
|
7520
7612
|
* @param {string} sEntity The entity path or key
|
|
7521
|
-
* @param {boolean} bExcludePersistent
|
|
7522
|
-
*
|
|
7613
|
+
* @param {boolean} bExcludePersistent Whether persistent messages should be exluded
|
|
7614
|
+
* @returns {object[]|undefined} The messages for the entity
|
|
7523
7615
|
* @private
|
|
7524
7616
|
*/
|
|
7525
7617
|
ODataModel.prototype.getMessagesByEntity = function(sEntity, bExcludePersistent) {
|
|
@@ -7552,8 +7644,11 @@ sap.ui.define([
|
|
|
7552
7644
|
};
|
|
7553
7645
|
|
|
7554
7646
|
/**
|
|
7555
|
-
* Check if Caching is supported. All
|
|
7556
|
-
* or a valid cache buster token segment.
|
|
7647
|
+
* Check if Caching is supported. All URLs must at least provide a 'sap-context-token' query
|
|
7648
|
+
* parameter or a valid cache buster token segment.
|
|
7649
|
+
*
|
|
7650
|
+
* @param {string} sMetadataUrl The metadata URL
|
|
7651
|
+
* @returns {boolean} Whether caching is supported
|
|
7557
7652
|
*
|
|
7558
7653
|
* @private
|
|
7559
7654
|
*/
|
|
@@ -7580,7 +7675,10 @@ sap.ui.define([
|
|
|
7580
7675
|
};
|
|
7581
7676
|
|
|
7582
7677
|
/**
|
|
7583
|
-
*
|
|
7678
|
+
* Create cache key for annotations.
|
|
7679
|
+
*
|
|
7680
|
+
* @param {string} sMetadataUrl The metadata URL
|
|
7681
|
+
* @returns {string} The cache key
|
|
7584
7682
|
*
|
|
7585
7683
|
* @private
|
|
7586
7684
|
*/
|
|
@@ -7620,7 +7718,7 @@ sap.ui.define([
|
|
|
7620
7718
|
/**
|
|
7621
7719
|
* Decreases the internal deferred request counter, if the request is/was deferred.
|
|
7622
7720
|
*
|
|
7623
|
-
* @param {
|
|
7721
|
+
* @param {object} oRequest The completed request
|
|
7624
7722
|
*/
|
|
7625
7723
|
ODataModel.prototype._decreaseDeferredRequestCount = function(oRequest){
|
|
7626
7724
|
if (oRequest.deferred){
|
|
@@ -7693,9 +7791,9 @@ sap.ui.define([
|
|
|
7693
7791
|
};
|
|
7694
7792
|
|
|
7695
7793
|
/**
|
|
7696
|
-
*
|
|
7697
|
-
*
|
|
7698
|
-
*
|
|
7794
|
+
* Gets or creates the OData V2 context for the given path; the returned context is cached by
|
|
7795
|
+
* this path. Enriches the context with the given deep path. In case the context is created, the
|
|
7796
|
+
* parameters <code>oCreatePromise</code> and <code>bInactive</code> are used for the creation.
|
|
7699
7797
|
*
|
|
7700
7798
|
* @param {string} sPath
|
|
7701
7799
|
* The absolute path
|
|
@@ -7703,15 +7801,18 @@ sap.ui.define([
|
|
|
7703
7801
|
* The absolute deep path representing the same data as the given <code>sPath</code>
|
|
7704
7802
|
* @param {sap.ui.base.SyncPromise} [oCreatePromise]
|
|
7705
7803
|
* A created promise as specified in the constructor of {@link sap.ui.model.odata.v2.Context}
|
|
7804
|
+
* @param {boolean} [bInactive]
|
|
7805
|
+
* Whether the created context is inactive
|
|
7706
7806
|
* @returns {sap.ui.model.odata.v2.Context}
|
|
7707
7807
|
* The ODate V2 context for the given path
|
|
7708
7808
|
* @private
|
|
7709
7809
|
*/
|
|
7710
|
-
ODataModel.prototype.getContext = function (sPath, sDeepPath, oCreatePromise) {
|
|
7810
|
+
ODataModel.prototype.getContext = function (sPath, sDeepPath, oCreatePromise, bInactive) {
|
|
7711
7811
|
var oContext = this.mContexts[sPath];
|
|
7712
7812
|
|
|
7713
7813
|
if (!oContext) {
|
|
7714
|
-
oContext = this.mContexts[sPath]
|
|
7814
|
+
oContext = this.mContexts[sPath]
|
|
7815
|
+
= new Context(this, sPath, sDeepPath, oCreatePromise, bInactive);
|
|
7715
7816
|
} else {
|
|
7716
7817
|
oContext.setDeepPath(sDeepPath || oContext.getDeepPath() || sPath);
|
|
7717
7818
|
}
|
|
@@ -7762,7 +7863,10 @@ sap.ui.define([
|
|
|
7762
7863
|
|
|
7763
7864
|
/**
|
|
7764
7865
|
* Checks whether canonical requests are necessary.
|
|
7765
|
-
* @param {boolean} [bCanonicalRequest]
|
|
7866
|
+
* @param {boolean} [bCanonicalRequest]
|
|
7867
|
+
* Is regarded with priority when checking whether canonical requests are required
|
|
7868
|
+
*
|
|
7869
|
+
* @returns {boolean} Whether canonical requests are necessary
|
|
7766
7870
|
*/
|
|
7767
7871
|
ODataModel.prototype._isCanonicalRequestNeeded = function(bCanonicalRequest){
|
|
7768
7872
|
if (bCanonicalRequest !== undefined){
|
|
@@ -7777,7 +7881,7 @@ sap.ui.define([
|
|
|
7777
7881
|
* path prefix. Use <code>fullTarget</code> to determine whether a message matches the resolved
|
|
7778
7882
|
* binding path prefix.
|
|
7779
7883
|
*
|
|
7780
|
-
* @param {string}
|
|
7884
|
+
* @param {string} sMessagePath
|
|
7781
7885
|
* The messages target used as key in <code>this.mMessages</code>
|
|
7782
7886
|
* @param {string} sPathPrefix
|
|
7783
7887
|
* The resolved binding path prefix
|