@openui5/sap.ui.core 1.97.1 → 1.99.1
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 +92 -2
- package/.reuse/dep5 +25 -30
- package/THIRDPARTY.txt +14 -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 +1 -1
- 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 +80 -168
- package/src/sap/ui/Global.js +4 -4
- 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 +48 -27
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/Metadata.js +1 -1
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +2 -2
- 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 +3 -3
- 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 -14
- package/src/sap/ui/core/Control.js +3 -2
- package/src/sap/ui/core/Core.js +3 -6
- 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 +5 -7
- 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 +1 -1
- 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 +37 -2
- 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 +1 -1
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/ScrollBarRenderer.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +2 -2
- package/src/sap/ui/core/UIArea.js +1 -1
- 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/_IconRegistry.js +10 -1
- package/src/sap/ui/core/date/Japanese.js +1 -1
- package/src/sap/ui/core/date/UniversalDateUtils.js +175 -5
- 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 +190 -56
- 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 +45 -8
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageMixin.js +2 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/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 +2 -0
- 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 +2 -0
- 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/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/Model.support.js +95 -8
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +1 -1
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -5
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- package/src/sap/ui/core/themes/base/parameterClasses.less +21 -21
- package/src/sap/ui/core/theming/Parameters.js +22 -142
- package/src/sap/ui/core/theming/ThemeHelper.js +26 -37
- 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 +156 -57
- 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/BaseTreeModifier.js +4 -0
- package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +26 -16
- 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/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.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 +2 -2
- package/src/sap/ui/model/MetaModel.js +2 -3
- package/src/sap/ui/model/Model.js +2 -2
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +40 -30
- 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 +1 -1
- package/src/sap/ui/model/json/JSONPropertyBinding.js +1 -1
- package/src/sap/ui/model/message/MessageListBinding.js +1 -1
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/message/MessagePropertyBinding.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +3 -3
- package/src/sap/ui/model/odata/ODataModel.js +2 -2
- package/src/sap/ui/model/odata/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +1 -1
- package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
- package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +338 -0
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/type/UnitMixin.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +57 -4
- 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 +216 -87
- package/src/sap/ui/model/odata/v2/ODataModel.js +89 -50
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +6 -4
- package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +65 -5
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +21 -22
- package/src/sap/ui/model/odata/v4/Context.js +208 -83
- package/src/sap/ui/model/odata/v4/ODataBinding.js +53 -27
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +252 -218
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +395 -233
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +131 -100
- package/src/sap/ui/model/odata/v4/ODataModel.js +341 -259
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +85 -85
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +85 -79
- 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 +183 -103
- package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +22 -18
- 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 +54 -43
- 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 +1 -1
- package/src/sap/ui/model/xml/XMLPropertyBinding.js +1 -1
- 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 +4 -2
- package/src/sap/ui/test/actions/Press.js +51 -2
- package/src/sap/ui/test/autowaiter/_XHRWaiter.js +1 -1
- package/src/sap/ui/test/starter/createSuite.js +3 -3
- package/src/sap/ui/thirdparty/IPv6.js +1 -1
- package/src/sap/ui/thirdparty/SecondLevelDomains.js +1 -1
- package/src/sap/ui/thirdparty/URI.js +7 -3
- package/src/sap/ui/thirdparty/URITemplate.js +1 -1
- 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/thirdparty/jszip.js +18 -7
- package/src/sap/ui/thirdparty/mobify-carousel.js +1 -1
- package/src/sap/ui/util/Mobile.js +17 -0
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/sap/ui/util/XMLHelper.js +53 -30
- package/src/ui5loader.js +4 -4
|
@@ -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
|
}))
|
|
@@ -321,6 +323,8 @@ sap.ui.define([
|
|
|
321
323
|
* pending changes are ignored if all parameters are unchanged. Since 1.97.0, pending changes
|
|
322
324
|
* are ignored if they relate to a
|
|
323
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.
|
|
324
328
|
*
|
|
325
329
|
* @public
|
|
326
330
|
* @since 1.45.0
|
|
@@ -413,7 +417,7 @@ sap.ui.define([
|
|
|
413
417
|
*
|
|
414
418
|
* @returns {sap.ui.base.SyncPromise}
|
|
415
419
|
* A promise resolving without a defined result when the check is finished, or rejecting in
|
|
416
|
-
* case of an error
|
|
420
|
+
* case of an error
|
|
417
421
|
* @throws {Error} If called with parameters
|
|
418
422
|
*
|
|
419
423
|
* @private
|
|
@@ -460,6 +464,9 @@ sap.ui.define([
|
|
|
460
464
|
* A (temporary) key predicate for the transient entity: "($uid=...)"
|
|
461
465
|
* @param {object} [oInitialData={}]
|
|
462
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
|
|
463
470
|
* @param {function} fnErrorCallback
|
|
464
471
|
* A function which is called with an error object each time a POST request for the create
|
|
465
472
|
* fails
|
|
@@ -472,7 +479,8 @@ sap.ui.define([
|
|
|
472
479
|
* @private
|
|
473
480
|
*/
|
|
474
481
|
ODataParentBinding.prototype.createInCache = function (oUpdateGroupLock, vCreatePath,
|
|
475
|
-
sCollectionPath, sTransientPredicate, oInitialData, fnErrorCallback,
|
|
482
|
+
sCollectionPath, sTransientPredicate, oInitialData, bAtEndOfCreated, fnErrorCallback,
|
|
483
|
+
fnSubmitCallback) {
|
|
476
484
|
var that = this;
|
|
477
485
|
|
|
478
486
|
return this.oCachePromise.then(function (oCache) {
|
|
@@ -481,7 +489,8 @@ sap.ui.define([
|
|
|
481
489
|
if (oCache) {
|
|
482
490
|
sPathInCache = _Helper.getRelativePath(sCollectionPath, that.getResolvedPath());
|
|
483
491
|
return oCache.create(oUpdateGroupLock, vCreatePath, sPathInCache,
|
|
484
|
-
sTransientPredicate, oInitialData, fnErrorCallback,
|
|
492
|
+
sTransientPredicate, oInitialData, bAtEndOfCreated, fnErrorCallback,
|
|
493
|
+
fnSubmitCallback
|
|
485
494
|
).then(function (oCreatedEntity) {
|
|
486
495
|
if (that.mCacheByResourcePath) {
|
|
487
496
|
// Ensure that cache containing non-transient created entity is recreated
|
|
@@ -492,8 +501,8 @@ sap.ui.define([
|
|
|
492
501
|
});
|
|
493
502
|
}
|
|
494
503
|
return that.oContext.getBinding().createInCache(oUpdateGroupLock, vCreatePath,
|
|
495
|
-
sCollectionPath, sTransientPredicate, oInitialData,
|
|
496
|
-
fnSubmitCallback);
|
|
504
|
+
sCollectionPath, sTransientPredicate, oInitialData, bAtEndOfCreated,
|
|
505
|
+
fnErrorCallback, fnSubmitCallback);
|
|
497
506
|
});
|
|
498
507
|
};
|
|
499
508
|
|
|
@@ -565,52 +574,41 @@ sap.ui.define([
|
|
|
565
574
|
* Deletes the entity in the cache. If the binding doesn't have a cache, it forwards to the
|
|
566
575
|
* parent binding adjusting the path.
|
|
567
576
|
*
|
|
568
|
-
* @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
|
|
569
|
-
* A lock for the group ID to be used for the DELETE request;
|
|
570
|
-
*
|
|
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)!
|
|
571
580
|
* @param {string} sEditUrl
|
|
572
|
-
* 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.
|
|
573
583
|
* @param {string} sPath
|
|
574
584
|
* The path of the entity relative to this binding
|
|
575
585
|
* @param {object} [oETagEntity]
|
|
576
586
|
* An entity with the ETag of the binding for which the deletion was requested. This is
|
|
577
587
|
* provided if the deletion is delegated from a context binding with empty path to a list
|
|
578
|
-
* binding.
|
|
588
|
+
* binding. W/o a lock, this is ignored.
|
|
579
589
|
* @param {boolean} [bDoNotRequestCount]
|
|
580
590
|
* Whether not to request the new count from the server; useful in case of
|
|
581
591
|
* {@link sap.ui.model.odata.v4.Context#replaceWith} where it is known that the count remains
|
|
582
|
-
* unchanged
|
|
592
|
+
* unchanged; w/o a lock this should be true
|
|
583
593
|
* @param {function} fnCallback
|
|
584
|
-
* A function which is called after
|
|
585
|
-
*
|
|
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
|
|
586
597
|
* @returns {sap.ui.base.SyncPromise}
|
|
587
598
|
* A promise which is resolved without a result in case of success, or rejected with an
|
|
588
|
-
* 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
|
|
589
601
|
* @throws {Error}
|
|
590
|
-
* If the
|
|
591
|
-
* for this binding is not yet fulfilled
|
|
602
|
+
* If the cache is shared
|
|
592
603
|
*
|
|
593
604
|
* @private
|
|
594
605
|
*/
|
|
595
606
|
ODataParentBinding.prototype.deleteFromCache = function (oGroupLock, sEditUrl, sPath,
|
|
596
607
|
oETagEntity, bDoNotRequestCount, fnCallback) {
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
if (this.oCache === undefined) {
|
|
600
|
-
throw new Error("DELETE request not allowed");
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
if (this.oCache) {
|
|
604
|
-
sGroupId = oGroupLock.getGroupId();
|
|
605
|
-
if (!this.oModel.isAutoGroup(sGroupId) && !this.oModel.isDirectGroup(sGroupId)) {
|
|
606
|
-
throw new Error("Illegal update group ID: " + sGroupId);
|
|
607
|
-
}
|
|
608
|
-
return this.oCache._delete(oGroupLock, sEditUrl, sPath, oETagEntity, bDoNotRequestCount,
|
|
608
|
+
return this.withCache(function (oCache, sCachePath) {
|
|
609
|
+
return oCache._delete(oGroupLock, sEditUrl, sCachePath, oETagEntity, bDoNotRequestCount,
|
|
609
610
|
fnCallback);
|
|
610
|
-
}
|
|
611
|
-
return this.oContext.getBinding().deleteFromCache(oGroupLock, sEditUrl,
|
|
612
|
-
_Helper.buildPath(this.oContext.iIndex, this.sPath, sPath), oETagEntity,
|
|
613
|
-
bDoNotRequestCount, fnCallback);
|
|
611
|
+
}, sPath, /*bSync*/true);
|
|
614
612
|
};
|
|
615
613
|
|
|
616
614
|
/**
|
|
@@ -620,7 +618,7 @@ sap.ui.define([
|
|
|
620
618
|
* @since 1.61
|
|
621
619
|
*/
|
|
622
620
|
ODataParentBinding.prototype.destroy = function () {
|
|
623
|
-
//
|
|
621
|
+
// this.mAggregatedQueryOptions = undefined;
|
|
624
622
|
this.aChildCanUseCachePromises = [];
|
|
625
623
|
this.removeReadGroupLock();
|
|
626
624
|
this.oResumePromise = undefined;
|
|
@@ -649,15 +647,18 @@ sap.ui.define([
|
|
|
649
647
|
* The child binding's binding path relative to <code>oContext</code>
|
|
650
648
|
* @param {object|sap.ui.base.SyncPromise} vChildQueryOptions
|
|
651
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
|
|
652
652
|
* @returns {sap.ui.base.SyncPromise}
|
|
653
653
|
* A promise resolved with the reduced path for the child binding if the child binding can use
|
|
654
|
-
* 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.
|
|
655
656
|
*
|
|
656
657
|
* @private
|
|
657
658
|
* @see sap.ui.model.odata.v4.ODataMetaModel#getReducedPath
|
|
658
659
|
*/
|
|
659
660
|
ODataParentBinding.prototype.fetchIfChildCanUseCache = function (oContext, sChildPath,
|
|
660
|
-
vChildQueryOptions) {
|
|
661
|
+
vChildQueryOptions, bIsProperty) {
|
|
661
662
|
// getBaseForPathReduction must be called early, because the (virtual) parent context may be
|
|
662
663
|
// lost again when the path is needed
|
|
663
664
|
var sBaseForPathReduction = this.getBaseForPathReduction(),
|
|
@@ -767,9 +768,9 @@ sap.ui.define([
|
|
|
767
768
|
that.bAggregatedQueryOptionsInitial = false;
|
|
768
769
|
}
|
|
769
770
|
if (bIsAdvertisement) {
|
|
770
|
-
mWrappedChildQueryOptions = {
|
|
771
|
+
mWrappedChildQueryOptions = {$select : [sReducedChildMetaPath.slice(1)]};
|
|
771
772
|
return that.aggregateQueryOptions(mWrappedChildQueryOptions, sBaseMetaPath,
|
|
772
|
-
bCacheImmutable)
|
|
773
|
+
bCacheImmutable, bIsProperty)
|
|
773
774
|
? sReducedPath
|
|
774
775
|
: undefined;
|
|
775
776
|
}
|
|
@@ -781,7 +782,7 @@ sap.ui.define([
|
|
|
781
782
|
that.oModel.oInterface.fetchMetadata);
|
|
782
783
|
if (mWrappedChildQueryOptions) {
|
|
783
784
|
return that.aggregateQueryOptions(mWrappedChildQueryOptions, sBaseMetaPath,
|
|
784
|
-
bCacheImmutable)
|
|
785
|
+
bCacheImmutable, bIsProperty)
|
|
785
786
|
? sReducedPath
|
|
786
787
|
: undefined;
|
|
787
788
|
}
|
|
@@ -789,7 +790,7 @@ sap.ui.define([
|
|
|
789
790
|
}
|
|
790
791
|
if (sReducedChildMetaPath === "value") { // symbolic name for operation result
|
|
791
792
|
return that.aggregateQueryOptions(mChildQueryOptions, sBaseMetaPath,
|
|
792
|
-
bCacheImmutable)
|
|
793
|
+
bCacheImmutable, bIsProperty)
|
|
793
794
|
? sReducedPath
|
|
794
795
|
: undefined;
|
|
795
796
|
}
|
|
@@ -833,7 +834,7 @@ sap.ui.define([
|
|
|
833
834
|
// catch the error, but keep the rejected promise
|
|
834
835
|
this.oCachePromise.catch(function (oError) {
|
|
835
836
|
that.oModel.reportError(that + ": Failed to enhance query options for "
|
|
836
|
-
+ "auto-$expand/$select for child " + sChildPath,
|
|
837
|
+
+ "auto-$expand/$select for child " + sChildPath, sClassName, oError);
|
|
837
838
|
});
|
|
838
839
|
return oCanUseCachePromise;
|
|
839
840
|
};
|
|
@@ -866,9 +867,13 @@ sap.ui.define([
|
|
|
866
867
|
sMetaPath = _Helper.getMetaPath(oModel.resolve(this.sPath, oContext));
|
|
867
868
|
mConvertedQueryOptions = Object.assign({}, mQueryOptions, {$select : []});
|
|
868
869
|
return SyncPromise.all(mQueryOptions.$select.map(function (sSelectPath) {
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
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 () {
|
|
872
877
|
var mWrappedQueryOptions = _Helper.wrapChildQueryOptions(
|
|
873
878
|
sMetaPath, sSelectPath, {}, fnFetchMetadata);
|
|
874
879
|
|
|
@@ -900,8 +905,7 @@ sap.ui.define([
|
|
|
900
905
|
oParentBinding = this.oContext.getBinding();
|
|
901
906
|
sParentUpdateGroupId = oParentBinding.getUpdateGroupId();
|
|
902
907
|
if (sParentUpdateGroupId === this.getUpdateGroupId()
|
|
903
|
-
|| this.oModel.
|
|
904
|
-
!== SubmitMode.API) {
|
|
908
|
+
|| !this.oModel.isApiGroup(sParentUpdateGroupId)) {
|
|
905
909
|
return oParentBinding.getBaseForPathReduction();
|
|
906
910
|
}
|
|
907
911
|
}
|
|
@@ -1000,17 +1004,24 @@ sap.ui.define([
|
|
|
1000
1004
|
* @override
|
|
1001
1005
|
* @see sap.ui.model.odata.v4.ODataBinding#hasPendingChangesInDependents
|
|
1002
1006
|
*/
|
|
1003
|
-
ODataParentBinding.prototype.hasPendingChangesInDependents = function (
|
|
1007
|
+
ODataParentBinding.prototype.hasPendingChangesInDependents = function (bIgnoreKeptAlive0) {
|
|
1004
1008
|
return this.getDependentBindings().some(function (oDependent) {
|
|
1005
1009
|
var oCache = oDependent.oCache,
|
|
1006
|
-
bHasPendingChanges
|
|
1010
|
+
bHasPendingChanges,
|
|
1011
|
+
bIgnoreKeptAlive = bIgnoreKeptAlive0; // new copy for this dependent only
|
|
1007
1012
|
|
|
1008
|
-
if (bIgnoreKeptAlive
|
|
1009
|
-
|
|
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
|
+
}
|
|
1010
1020
|
}
|
|
1011
1021
|
if (oCache !== undefined) {
|
|
1012
1022
|
// Pending changes for this cache are only possible when there is a cache already
|
|
1013
|
-
if (oCache && oCache.hasPendingChangesForPath(""
|
|
1023
|
+
if (oCache && oCache.hasPendingChangesForPath("", false,
|
|
1024
|
+
bIgnoreKeptAlive && oDependent.mParameters.$$ownRequest)) {
|
|
1014
1025
|
return true;
|
|
1015
1026
|
}
|
|
1016
1027
|
} else if (oDependent.hasPendingChangesForPath("")) {
|
|
@@ -1029,7 +1040,7 @@ sap.ui.define([
|
|
|
1029
1040
|
}
|
|
1030
1041
|
}
|
|
1031
1042
|
// Ask dependents, they might have no cache, but pending changes in mCacheByResourcePath
|
|
1032
|
-
return oDependent.hasPendingChangesInDependents();
|
|
1043
|
+
return oDependent.hasPendingChangesInDependents(bIgnoreKeptAlive);
|
|
1033
1044
|
})
|
|
1034
1045
|
|| this.oModel.withUnresolvedBindings("hasPendingChangesInCaches",
|
|
1035
1046
|
this.getResolvedPath().slice(1));
|
|
@@ -1072,9 +1083,11 @@ sap.ui.define([
|
|
|
1072
1083
|
* @param {boolean} [bKeepCacheOnError]
|
|
1073
1084
|
* If <code>true</code>, the binding data remains unchanged if the refresh fails
|
|
1074
1085
|
* @returns {sap.ui.base.SyncPromise}
|
|
1075
|
-
* A promise resolving when all dependent bindings are refreshed; it is rejected
|
|
1076
|
-
*
|
|
1077
|
-
*
|
|
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
|
|
1078
1091
|
*
|
|
1079
1092
|
* @private
|
|
1080
1093
|
*/
|
|
@@ -1090,7 +1103,11 @@ sap.ui.define([
|
|
|
1090
1103
|
* Recursively refreshes all dependent list bindings that have no own cache.
|
|
1091
1104
|
*
|
|
1092
1105
|
* @returns {sap.ui.base.SyncPromise}
|
|
1093
|
-
* 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
|
|
1094
1111
|
*
|
|
1095
1112
|
* @private
|
|
1096
1113
|
*/
|
|
@@ -1118,24 +1135,6 @@ sap.ui.define([
|
|
|
1118
1135
|
}
|
|
1119
1136
|
};
|
|
1120
1137
|
|
|
1121
|
-
/**
|
|
1122
|
-
* Refreshes the binding; expects it to be suspended.
|
|
1123
|
-
*
|
|
1124
|
-
* @param {string} sGroupId
|
|
1125
|
-
* The group ID to be used for the refresh
|
|
1126
|
-
* @throws {Error}
|
|
1127
|
-
* If a group ID different from the binding's group ID is given
|
|
1128
|
-
|
|
1129
|
-
* @private
|
|
1130
|
-
*/
|
|
1131
|
-
ODataParentBinding.prototype.refreshSuspended = function (sGroupId) {
|
|
1132
|
-
if (sGroupId && sGroupId !== this.getGroupId()) {
|
|
1133
|
-
throw new Error(this + ": Cannot refresh a suspended binding with group ID '"
|
|
1134
|
-
+ sGroupId + "' (own group ID is '" + this.getGroupId() + "')");
|
|
1135
|
-
}
|
|
1136
|
-
this.setResumeChangeReason(ChangeReason.Refresh);
|
|
1137
|
-
};
|
|
1138
|
-
|
|
1139
1138
|
/**
|
|
1140
1139
|
* Loads side effects for the given context of this binding.
|
|
1141
1140
|
*
|
|
@@ -1337,7 +1336,8 @@ sap.ui.define([
|
|
|
1337
1336
|
* data service requests. Call {@link #resume} to resume the binding. Before 1.53.0, this method
|
|
1338
1337
|
* was not supported and threw an error. Since 1.97.0, pending changes are ignored if they
|
|
1339
1338
|
* relate to a {@link sap.ui.model.odata.v4.Context#setKeepAlive kept-alive} context of this
|
|
1340
|
-
* binding.
|
|
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.
|
|
1341
1341
|
*
|
|
1342
1342
|
* @throws {Error}
|
|
1343
1343
|
* If this binding
|
|
@@ -29,7 +29,38 @@ sap.ui.define([
|
|
|
29
29
|
dataRequested : true,
|
|
30
30
|
DataStateChange : true
|
|
31
31
|
},
|
|
32
|
-
sVirtualPath = "/" + Context.VIRTUAL
|
|
32
|
+
sVirtualPath = "/" + Context.VIRTUAL, // a snippet indicating a virtual path
|
|
33
|
+
/**
|
|
34
|
+
* @alias sap.ui.model.odata.v4.ODataPropertyBinding
|
|
35
|
+
* @author SAP SE
|
|
36
|
+
* @class Property binding for an OData V4 model.
|
|
37
|
+
* An event handler can only be attached to this binding for the following events:
|
|
38
|
+
* 'AggregatedDataStateChange', 'change', 'dataReceived', 'dataRequested' and
|
|
39
|
+
* 'DataStateChange'. For unsupported events, an error is thrown.
|
|
40
|
+
* @extends sap.ui.model.PropertyBinding
|
|
41
|
+
* @hideconstructor
|
|
42
|
+
* @mixes sap.ui.model.odata.v4.ODataBinding
|
|
43
|
+
* @public
|
|
44
|
+
* @since 1.37.0
|
|
45
|
+
* @version 1.99.1
|
|
46
|
+
* @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
|
|
47
|
+
* @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
|
|
48
|
+
* @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
|
|
49
|
+
* @borrows sap.ui.model.odata.v4.ODataBinding#hasPendingChanges as #hasPendingChanges
|
|
50
|
+
* @borrows sap.ui.model.odata.v4.ODataBinding#isInitial as #isInitial
|
|
51
|
+
* @borrows sap.ui.model.odata.v4.ODataBinding#refresh as #refresh
|
|
52
|
+
* @borrows sap.ui.model.odata.v4.ODataBinding#requestRefresh as #requestRefresh
|
|
53
|
+
* @borrows sap.ui.model.odata.v4.ODataBinding#resetChanges as #resetChanges
|
|
54
|
+
* @borrows sap.ui.model.odata.v4.ODataBinding#toString as #toString
|
|
55
|
+
*/
|
|
56
|
+
ODataPropertyBinding
|
|
57
|
+
= PropertyBinding.extend("sap.ui.model.odata.v4.ODataPropertyBinding", {
|
|
58
|
+
constructor : constructor
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
//*********************************************************************************************
|
|
62
|
+
// ODataPropertyBinding
|
|
63
|
+
//*********************************************************************************************
|
|
33
64
|
|
|
34
65
|
/**
|
|
35
66
|
* Do <strong>NOT</strong> call this private constructor, but rather use
|
|
@@ -45,66 +76,37 @@ sap.ui.define([
|
|
|
45
76
|
* Map of binding parameters
|
|
46
77
|
* @throws {Error}
|
|
47
78
|
* If disallowed binding parameters are provided
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
=
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (sPath.endsWith("/")) {
|
|
80
|
-
throw new Error("Invalid path: " + sPath);
|
|
81
|
-
}
|
|
82
|
-
if (mParameters) {
|
|
83
|
-
this.checkBindingParameters(mParameters,
|
|
84
|
-
["$$groupId", "$$ignoreMessages", "$$noPatch"]);
|
|
85
|
-
this.sGroupId = mParameters.$$groupId;
|
|
86
|
-
this.bNoPatch = mParameters.$$noPatch;
|
|
87
|
-
this.setIgnoreMessages(mParameters.$$ignoreMessages);
|
|
88
|
-
} else {
|
|
89
|
-
this.sGroupId = undefined;
|
|
90
|
-
this.bNoPatch = false;
|
|
91
|
-
}
|
|
92
|
-
this.oCheckUpdateCallToken = undefined;
|
|
93
|
-
this.oContext = oContext;
|
|
94
|
-
this.bHasDeclaredType = undefined; // whether the binding info declares a type
|
|
95
|
-
this.bInitial = true;
|
|
96
|
-
// Note: system query options supported at property binding only for ".../$count"
|
|
97
|
-
this.mQueryOptions = this.oModel.buildQueryOptions(_Helper.clone(mParameters),
|
|
98
|
-
/*bSystemQueryOptionsAllowed*/sPath.endsWith("$count"));
|
|
99
|
-
this.vValue = undefined;
|
|
100
|
-
// BEWARE: #doFetchQueryOptions uses #isRoot which relies on this.oContext!
|
|
101
|
-
this.fetchCache(oContext);
|
|
102
|
-
oModel.bindingCreated(this);
|
|
103
|
-
},
|
|
104
|
-
metadata : {
|
|
105
|
-
publicMethods : []
|
|
106
|
-
}
|
|
107
|
-
});
|
|
79
|
+
*/
|
|
80
|
+
function constructor(oModel, sPath, oContext, mParameters) {
|
|
81
|
+
PropertyBinding.call(this, oModel, sPath);
|
|
82
|
+
// initialize mixin members
|
|
83
|
+
asODataBinding.call(this);
|
|
84
|
+
|
|
85
|
+
if (sPath.endsWith("/")) {
|
|
86
|
+
throw new Error("Invalid path: " + sPath);
|
|
87
|
+
}
|
|
88
|
+
if (mParameters) {
|
|
89
|
+
this.checkBindingParameters(mParameters,
|
|
90
|
+
["$$groupId", "$$ignoreMessages", "$$noPatch"]);
|
|
91
|
+
this.sGroupId = mParameters.$$groupId;
|
|
92
|
+
this.bNoPatch = mParameters.$$noPatch;
|
|
93
|
+
this.setIgnoreMessages(mParameters.$$ignoreMessages);
|
|
94
|
+
} else {
|
|
95
|
+
this.sGroupId = undefined;
|
|
96
|
+
this.bNoPatch = false;
|
|
97
|
+
}
|
|
98
|
+
this.oCheckUpdateCallToken = undefined;
|
|
99
|
+
this.oContext = oContext;
|
|
100
|
+
this.bHasDeclaredType = undefined; // whether the binding info declares a type
|
|
101
|
+
this.bInitial = true;
|
|
102
|
+
// Note: system query options supported at property binding only for ".../$count"
|
|
103
|
+
this.mQueryOptions = this.oModel.buildQueryOptions(_Helper.clone(mParameters),
|
|
104
|
+
/*bSystemQueryOptionsAllowed*/sPath.endsWith("$count"));
|
|
105
|
+
this.vValue = undefined;
|
|
106
|
+
// BEWARE: #doFetchQueryOptions uses #isRoot which relies on this.oContext!
|
|
107
|
+
this.fetchCache(oContext);
|
|
108
|
+
oModel.bindingCreated(this);
|
|
109
|
+
}
|
|
108
110
|
|
|
109
111
|
asODataBinding(ODataPropertyBinding.prototype);
|
|
110
112
|
|
|
@@ -230,9 +232,9 @@ sap.ui.define([
|
|
|
230
232
|
* The new value obtained from the cache, see {@link #onChange}
|
|
231
233
|
* @returns {sap.ui.base.SyncPromise}
|
|
232
234
|
* A promise resolving without a defined result when the check is finished, or rejecting in
|
|
233
|
-
* case of an error
|
|
234
|
-
*
|
|
235
|
-
*
|
|
235
|
+
* case of an error. If the cache is no longer the active cache when the response arrives,
|
|
236
|
+
* that response is ignored almost silently (that is, with a canceled error) and the value
|
|
237
|
+
* remains unchanged.
|
|
236
238
|
*
|
|
237
239
|
* @private
|
|
238
240
|
* @see sap.ui.model.PropertyBinding#checkDataState
|
|
@@ -310,20 +312,19 @@ sap.ui.define([
|
|
|
310
312
|
|| (that.sPath[that.sPath.lastIndexOf("/") + 1] === "#" && !bIsMeta))) {
|
|
311
313
|
if (bIsMeta) {
|
|
312
314
|
return vValue;
|
|
313
|
-
} else if (that.bRelative){
|
|
315
|
+
} else if (that.bRelative) {
|
|
314
316
|
return _Helper.publicClone(vValue);
|
|
315
317
|
}
|
|
316
318
|
}
|
|
317
319
|
Log.error("Accessed value is not primitive", sResolvedPath, sClassName);
|
|
318
320
|
}, function (oError) {
|
|
319
|
-
// do not rethrow, ManagedObject doesn't react on this either
|
|
320
|
-
// throwing an error would cause "Uncaught (in promise)" in Chrome
|
|
321
321
|
that.oModel.reportError("Failed to read path " + sResolvedPath, sClassName, oError);
|
|
322
322
|
if (oError.canceled) { // canceled -> value remains unchanged
|
|
323
323
|
oCallToken.forceUpdate = false;
|
|
324
324
|
return that.vValue;
|
|
325
325
|
}
|
|
326
326
|
mParametersForDataReceived = {error : oError};
|
|
327
|
+
// oError is re-thrown below
|
|
327
328
|
});
|
|
328
329
|
if (bForceUpdate && vValue.isFulfilled()) {
|
|
329
330
|
if (vType && vType.isFulfilled && vType.isFulfilled()) {
|
|
@@ -352,6 +353,9 @@ sap.ui.define([
|
|
|
352
353
|
if (bDataRequested) {
|
|
353
354
|
that.fireDataReceived(mParametersForDataReceived);
|
|
354
355
|
}
|
|
356
|
+
if (mParametersForDataReceived.error) {
|
|
357
|
+
throw mParametersForDataReceived.error;
|
|
358
|
+
}
|
|
355
359
|
});
|
|
356
360
|
};
|
|
357
361
|
|
|
@@ -493,7 +497,8 @@ sap.ui.define([
|
|
|
493
497
|
* @private
|
|
494
498
|
*/
|
|
495
499
|
ODataPropertyBinding.prototype.onChange = function (vValue) {
|
|
496
|
-
this.checkUpdateInternal(undefined, undefined, undefined, vValue)
|
|
500
|
+
this.checkUpdateInternal(undefined, undefined, undefined, vValue)
|
|
501
|
+
.catch(this.oModel.getReporter());
|
|
497
502
|
};
|
|
498
503
|
|
|
499
504
|
/**
|
|
@@ -505,7 +510,7 @@ sap.ui.define([
|
|
|
505
510
|
var that = this;
|
|
506
511
|
|
|
507
512
|
if (this.isRootBindingSuspended()) {
|
|
508
|
-
this.
|
|
513
|
+
this.refreshSuspended(sGroupId);
|
|
509
514
|
return SyncPromise.resolve();
|
|
510
515
|
}
|
|
511
516
|
return this.oCachePromise.then(function () {
|
|
@@ -522,7 +527,7 @@ sap.ui.define([
|
|
|
522
527
|
*
|
|
523
528
|
* @returns {Promise}
|
|
524
529
|
* A promise resolving with the resulting value or <code>undefined</code> if it could not be
|
|
525
|
-
* determined
|
|
530
|
+
* determined, or rejecting in case of an error
|
|
526
531
|
*
|
|
527
532
|
* @public
|
|
528
533
|
* @since 1.69
|
|
@@ -633,7 +638,8 @@ sap.ui.define([
|
|
|
633
638
|
|
|
634
639
|
this.fetchCache(this.oContext);
|
|
635
640
|
if (bCheckUpdate) {
|
|
636
|
-
this.checkUpdateInternal(bParentHasChanges ? undefined : false, sResumeChangeReason)
|
|
641
|
+
this.checkUpdateInternal(bParentHasChanges ? undefined : false, sResumeChangeReason)
|
|
642
|
+
.catch(this.oModel.getReporter());
|
|
637
643
|
}
|
|
638
644
|
};
|
|
639
645
|
|
|
@@ -660,7 +666,8 @@ sap.ui.define([
|
|
|
660
666
|
this.sResumeChangeReason = undefined;
|
|
661
667
|
if (this.bRelative) {
|
|
662
668
|
this.fetchCache(this.oContext);
|
|
663
|
-
this.checkUpdateInternal(this.bInitial || undefined, ChangeReason.Context)
|
|
669
|
+
this.checkUpdateInternal(this.bInitial || undefined, ChangeReason.Context)
|
|
670
|
+
.catch(this.oModel.getReporter());
|
|
664
671
|
}
|
|
665
672
|
}
|
|
666
673
|
};
|
|
@@ -705,15 +712,14 @@ sap.ui.define([
|
|
|
705
712
|
* this binding (or its relevant parent binding) is used, see {@link #getUpdateGroupId}.
|
|
706
713
|
* Valid values are <code>undefined</code>, '$auto', '$auto.*', '$direct' or application group
|
|
707
714
|
* IDs as specified in {@link sap.ui.model.odata.v4.ODataModel}.
|
|
708
|
-
* @throws {Error}
|
|
709
|
-
* If one of the following situations occurs:
|
|
715
|
+
* @throws {Error} If
|
|
710
716
|
* <ul>
|
|
711
|
-
* <li>
|
|
712
|
-
* <li>
|
|
713
|
-
* <li>
|
|
717
|
+
* <li> the binding's root binding is suspended.
|
|
718
|
+
* <li> the new value is not primitive.
|
|
719
|
+
* <li> no value has been read before and the binding does not have the parameter
|
|
714
720
|
* <code>$$noPatch</code>.
|
|
715
|
-
* <li>
|
|
716
|
-
* <li>
|
|
721
|
+
* <li> the binding is not relative to a {@link sap.ui.model.odata.v4.Context}.
|
|
722
|
+
* <li> the binding has the parameter <code>$$noPatch</code> and a group ID has been given.
|
|
717
723
|
* </ul>
|
|
718
724
|
*
|
|
719
725
|
* @public
|
|
@@ -116,13 +116,13 @@ sap.ui.define([
|
|
|
116
116
|
* </ul>
|
|
117
117
|
* If the specified <code>sResponseBody</code> contains responses for change sets,
|
|
118
118
|
* then the corresponding response objects will be returned in a nested array.
|
|
119
|
-
* @throws {Error}
|
|
119
|
+
* @throws {Error} If
|
|
120
120
|
* <ul>
|
|
121
|
-
* <li>
|
|
121
|
+
* <li> the <code>sContentType</code> parameter does not represent a
|
|
122
122
|
* "multipart/mixed" media type with "boundary" parameter
|
|
123
|
-
* <li>
|
|
123
|
+
* <li> the "charset" parameter of the "Content-Type" header of a nested response
|
|
124
124
|
* has a value other than "UTF-8"
|
|
125
|
-
* <li>
|
|
125
|
+
* <li> there is no "Content-ID" header for a change set response or its value is
|
|
126
126
|
* not a number
|
|
127
127
|
* </ul>
|
|
128
128
|
*
|
|
@@ -241,7 +241,7 @@ sap.ui.define([
|
|
|
241
241
|
// "round" to millis: "HH:mm:ss.SSS"
|
|
242
242
|
sTimeOfDay = sTimeOfDay.slice(0, 12);
|
|
243
243
|
}
|
|
244
|
-
oTimeOfDay =
|
|
244
|
+
oTimeOfDay = oTimeFormatter.parse(sTimeOfDay);
|
|
245
245
|
}
|
|
246
246
|
if (!oTimeOfDay) {
|
|
247
247
|
throw new Error("Not a valid Edm.TimeOfDay value: " + sTimeOfDay);
|