@openui5/sap.ui.core 1.105.1 → 1.107.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/.reuse/dep5 +20 -17
- package/THIRDPARTY.txt +31 -21
- package/package.json +1 -1
- package/src/jquery.sap.dom.js +10 -10
- package/src/jquery.sap.global.js +24 -216
- package/src/jquery.sap.history.js +1 -1
- package/src/jquery.sap.properties.js +2 -2
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +4 -4
- package/src/jquery.sap.ui.js +5 -7
- package/src/sap/base/i18n/ResourceBundle.js +7 -11
- package/src/sap/base/util/LoaderExtensions.js +6 -6
- package/src/sap/base/util/ObjectPath.js +1 -1
- package/src/sap/base/util/Properties.js +1 -1
- package/src/sap/base/util/fetch.js +8 -10
- package/src/sap/base/util/mixedFetch.js +1 -1
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +1 -1
- package/src/sap/base/util/restricted/_compact.js +1 -1
- package/src/sap/base/util/restricted/_curry.js +1 -1
- package/src/sap/base/util/restricted/_debounce.js +1 -1
- package/src/sap/base/util/restricted/_difference.js +1 -1
- package/src/sap/base/util/restricted/_differenceBy.js +1 -1
- package/src/sap/base/util/restricted/_differenceWith.js +1 -1
- package/src/sap/base/util/restricted/_flatMap.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
- package/src/sap/base/util/restricted/_flatten.js +1 -1
- package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
- package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
- package/src/sap/base/util/restricted/_intersection.js +1 -1
- package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
- package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
- package/src/sap/base/util/restricted/_isEqual.js +1 -1
- package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
- package/src/sap/base/util/restricted/_isNil.js +1 -1
- package/src/sap/base/util/restricted/_max.js +1 -1
- package/src/sap/base/util/restricted/_merge.js +1 -1
- package/src/sap/base/util/restricted/_mergeWith.js +1 -1
- package/src/sap/base/util/restricted/_min.js +1 -1
- package/src/sap/base/util/restricted/_omit.js +1 -1
- package/src/sap/base/util/restricted/_pick.js +1 -1
- package/src/sap/base/util/restricted/_pickBy.js +1 -1
- package/src/sap/base/util/restricted/_throttle.js +1 -1
- package/src/sap/base/util/restricted/_toArray.js +1 -1
- package/src/sap/base/util/restricted/_union.js +1 -1
- package/src/sap/base/util/restricted/_unionBy.js +1 -1
- package/src/sap/base/util/restricted/_unionWith.js +1 -1
- package/src/sap/base/util/restricted/_uniq.js +1 -1
- package/src/sap/base/util/restricted/_uniqBy.js +1 -1
- package/src/sap/base/util/restricted/_uniqWith.js +1 -1
- package/src/sap/base/util/restricted/_without.js +1 -1
- package/src/sap/base/util/restricted/_xor.js +1 -1
- package/src/sap/base/util/restricted/_xorBy.js +1 -1
- package/src/sap/base/util/restricted/_xorWith.js +1 -1
- package/src/sap/base/util/restricted/_zipObject.js +1 -1
- package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
- package/src/sap/base/util/syncFetch.js +9 -16
- package/src/sap/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +7 -14
- package/src/sap/ui/VersionInfo.js +57 -54
- package/src/sap/ui/base/BindingInfo.js +198 -0
- package/src/sap/ui/base/DataType.js +5 -5
- package/src/sap/ui/base/Event.js +2 -2
- package/src/sap/ui/base/EventProvider.js +2 -2
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +209 -979
- package/src/sap/ui/base/ManagedObjectMetadata.js +6 -6
- package/src/sap/ui/base/ManagedObjectRegistry.js +4 -3
- 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 +13 -9
- package/src/sap/ui/core/AppCacheBuster.js +3 -4
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/BusyIndicatorUtils.js +5 -6
- package/src/sap/ui/core/CalendarType.js +0 -1
- package/src/sap/ui/core/Component.js +16 -14
- package/src/sap/ui/core/ComponentContainer.js +6 -5
- package/src/sap/ui/core/ComponentMetadata.js +5 -12
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +525 -336
- package/src/sap/ui/core/Control.js +7 -7
- package/src/sap/ui/core/Core.js +102 -422
- 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 +65 -9
- 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/FocusHandler.js +79 -9
- package/src/sap/ui/core/Fragment.js +1 -1
- package/src/sap/ui/core/HTML.js +1 -2
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +1 -2
- package/src/sap/ui/core/IconPool.js +8 -8
- package/src/sap/ui/core/IndicationColorSupport.js +2 -2
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +1 -2
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +5 -5
- package/src/sap/ui/core/Item.js +1 -2
- package/src/sap/ui/core/LabelEnablement.js +1 -1
- package/src/sap/ui/core/LayoutData.js +1 -2
- package/src/sap/ui/core/ListItem.js +1 -2
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -2
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +15 -13
- package/src/sap/ui/core/Manifest.js +8 -6
- package/src/sap/ui/core/Message.js +4 -6
- package/src/sap/ui/core/Popup.js +63 -6
- package/src/sap/ui/core/RenderManager.js +13 -5
- package/src/sap/ui/core/Renderer.js +5 -4
- package/src/sap/ui/core/Rendering.js +251 -0
- package/src/sap/ui/core/ResizeHandler.js +7 -7
- package/src/sap/ui/core/ScrollBar.js +6 -9
- package/src/sap/ui/core/ScrollBarRenderer.js +3 -3
- package/src/sap/ui/core/SeparatorItem.js +1 -2
- package/src/sap/ui/core/Title.js +1 -2
- package/src/sap/ui/core/TooltipBase.js +12 -14
- package/src/sap/ui/core/UIArea.js +396 -129
- package/src/sap/ui/core/UIComponent.js +3 -4
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +2 -2
- package/src/sap/ui/core/VariantLayoutData.js +1 -2
- package/src/sap/ui/core/XMLComposite.js +2 -2
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +12 -10
- package/src/sap/ui/core/_ConfigurationProvider.js +187 -0
- package/src/sap/ui/core/cache/CacheManager.js +9 -8
- package/src/sap/ui/core/cache/LRUPersistentCache.js +4 -4
- package/src/sap/ui/core/cldr/es_BO.json +3 -3
- package/src/sap/ui/core/cldr/es_CL.json +3 -3
- package/src/sap/ui/core/cldr/es_MX.json +3 -3
- package/src/sap/ui/core/cldr/es_PE.json +3 -3
- package/src/sap/ui/core/cldr/es_UY.json +3 -3
- package/src/sap/ui/core/cldr/es_VE.json +2 -2
- package/src/sap/ui/core/date/Islamic.js +4 -4
- package/src/sap/ui/core/date/UniversalDate.js +8 -8
- package/src/sap/ui/core/date/UniversalDateUtils.js +3 -3
- package/src/sap/ui/core/delegate/ItemNavigation.js +5 -5
- package/src/sap/ui/core/delegate/ScrollEnablement.js +7 -6
- package/src/sap/ui/core/dnd/DragAndDrop.js +14 -9
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -2
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -2
- package/src/sap/ui/core/dnd/DragInfo.js +1 -2
- package/src/sap/ui/core/dnd/DropInfo.js +1 -2
- package/src/sap/ui/core/format/DateFormat.js +14 -7
- package/src/sap/ui/core/format/DateFormatTimezoneDisplay.js +0 -1
- package/src/sap/ui/core/format/FileSizeFormat.js +4 -3
- package/src/sap/ui/core/format/ListFormat.js +4 -3
- package/src/sap/ui/core/format/NumberFormat.js +7 -6
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +7 -6
- package/src/sap/ui/core/library.js +3 -55
- 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 +13 -23
- 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_fr.properties +1 -1
- package/src/sap/ui/core/mvc/Controller.js +8 -3
- package/src/sap/ui/core/mvc/EventHandlerResolver.js +5 -3
- package/src/sap/ui/core/mvc/HTMLView.js +1 -2
- package/src/sap/ui/core/mvc/JSONView.js +1 -2
- package/src/sap/ui/core/mvc/JSView.js +2 -3
- package/src/sap/ui/core/mvc/TemplateView.js +1 -2
- package/src/sap/ui/core/mvc/View.js +21 -20
- package/src/sap/ui/core/mvc/ViewType.js +0 -1
- package/src/sap/ui/core/mvc/XMLView.js +18 -18
- 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/Router.js +1 -1
- package/src/sap/ui/core/routing/async/Target.js +4 -3
- package/src/sap/ui/core/rules/App.support.js +11 -13
- package/src/sap/ui/core/rules/Config.support.js +19 -17
- package/src/sap/ui/core/rules/CoreHelper.support.js +4 -4
- package/src/sap/ui/core/rules/Model.support.js +8 -8
- package/src/sap/ui/core/rules/Rendering.support.js +1 -1
- package/src/sap/ui/core/rules/Theming.support.js +8 -8
- package/src/sap/ui/core/rules/View.support.js +9 -9
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -2
- package/src/sap/ui/core/search/SearchProvider.js +1 -3
- 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/Hotkeys.js +2 -3
- 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/ToolsAPI.js +11 -13
- package/src/sap/ui/core/support/plugins/ControlTree.js +4 -4
- package/src/sap/ui/core/support/plugins/Debugging.js +3 -3
- 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 +2 -2
- package/src/sap/ui/core/support/support.html +1 -1
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +10 -8
- package/src/sap/ui/core/theming/Parameters.js +8 -15
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -2
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -4
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +6 -5
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -2
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +48 -72
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/ResponsivePaddingsEnablement.js +4 -3
- package/src/sap/ui/core/util/XMLPreprocessor.js +2 -2
- package/src/sap/ui/core/util/reflection/BaseTreeModifier.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 +4 -4
- 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 +3 -3
- package/src/sap/ui/debug/DebugEnv.js +4 -4
- package/src/sap/ui/debug/PropertyList.css +1 -31
- package/src/sap/ui/debug/PropertyList.js +6 -250
- package/src/sap/ui/dom/getScrollbarSize.js +1 -1
- package/src/sap/ui/dom/jquery/control.js +1 -0
- package/src/sap/ui/events/jquery/EventSimulation.js +4 -4
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +3 -1
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/Context.js +3 -0
- package/src/sap/ui/model/ContextBinding.js +1 -1
- package/src/sap/ui/model/DataState.js +2 -2
- package/src/sap/ui/model/ListBinding.js +2 -2
- package/src/sap/ui/model/ManagedObjectBindingSupport.js +871 -0
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +16 -5
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +2 -2
- package/src/sap/ui/model/Sorter.js +24 -19
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/TreeBindingAdapter.js +3 -7
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +2 -0
- package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +5 -7
- package/src/sap/ui/model/json/JSONModel.js +9 -7
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/AnnotationHelper.js +4 -4
- package/src/sap/ui/model/odata/ODataAnnotations.js +5 -3
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +10 -10
- package/src/sap/ui/model/odata/ODataMetadata.js +5 -4
- package/src/sap/ui/model/odata/ODataModel.js +6 -5
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +0 -1
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +5 -5
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +4 -3
- package/src/sap/ui/model/odata/v2/ODataContextBinding.js +25 -16
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +46 -28
- package/src/sap/ui/model/odata/v2/ODataModel.js +97 -39
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +5 -5
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +3 -3
- package/src/sap/ui/model/odata/v4/Context.js +109 -71
- package/src/sap/ui/model/odata/v4/ODataBinding.js +50 -7
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +88 -68
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +116 -81
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +23 -20
- package/src/sap/ui/model/odata/v4/ODataModel.js +350 -88
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +35 -9
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +15 -9
- package/src/sap/ui/model/odata/v4/ODataUtils.js +8 -5
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +45 -33
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +40 -6
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +135 -81
- package/src/sap/ui/model/odata/v4/lib/_ConcatHelper.js +2 -3
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +179 -36
- package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +2 -3
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +26 -7
- package/src/sap/ui/model/resource/ResourceModel.js +8 -7
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +2 -2
- 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 +2 -2
- 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 +5 -4
- package/src/sap/ui/model/xml/XMLModel.js +8 -6
- package/src/sap/ui/performance/trace/Interaction.js +1 -1
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/Opa.js +7 -5
- package/src/sap/ui/test/Opa5.js +9 -15
- package/src/sap/ui/test/OpaBuilder.js +1 -1
- package/src/sap/ui/test/RecorderHotkeyListener.js +1 -1
- package/src/sap/ui/test/TestUtils.js +83 -1
- package/src/sap/ui/test/autowaiter/_autoWaiter.js +9 -0
- package/src/sap/ui/test/autowaiter/_cssAnimationWaiter.js +114 -0
- package/src/sap/ui/test/autowaiter/_cssTransitionWaiter.js +99 -0
- package/src/sap/ui/test/autowaiter/_jsAnimationWaiter.js +70 -0
- package/src/sap/ui/test/autowaiter/_resourceWaiter.js +3 -12
- package/src/sap/ui/test/autowaiter/_utils.js +13 -1
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/matchers/Ancestor.js +1 -0
- package/src/sap/ui/test/matchers/Descendant.js +1 -0
- package/src/sap/ui/test/matchers/Sibling.js +1 -0
- package/src/sap/ui/util/Storage.js +1 -1
|
@@ -16,11 +16,13 @@ sap.ui.define([
|
|
|
16
16
|
"use strict";
|
|
17
17
|
|
|
18
18
|
var rAmpersand = /&/g,
|
|
19
|
+
rApplicationGroupID = /^\w+$/,
|
|
19
20
|
sClassName = "sap.ui.model.odata.v4.lib._Helper",
|
|
20
21
|
rEquals = /\=/g,
|
|
21
22
|
rEscapedCloseBracket = /%29/g,
|
|
22
23
|
rEscapedOpenBracket = /%28/g,
|
|
23
24
|
rEscapedTick = /%27/g,
|
|
25
|
+
rGroupID = /^(\$auto(\.\w+)?|\$direct|\w+)$/,
|
|
24
26
|
rHash = /#/g,
|
|
25
27
|
// matches the rest of a segment after '(' and any segment that consists only of a number
|
|
26
28
|
rNotMetaContext = /\([^/]*|\/-?\d+/g,
|
|
@@ -282,18 +284,23 @@ sap.ui.define([
|
|
|
282
284
|
* value <code>true</code>, unless a (complex) parent property is also selected.
|
|
283
285
|
*
|
|
284
286
|
* @param {string[]} aSelect - The list of selected paths
|
|
285
|
-
* @returns {object} - An object marking the selected properties
|
|
287
|
+
* @returns {object|boolean} - An object marking the selected properties or
|
|
288
|
+
* <code>true</code> if all properties are selected ("*")
|
|
286
289
|
*/
|
|
287
290
|
buildSelect : function (aSelect) {
|
|
288
291
|
var oSelect = {};
|
|
289
292
|
|
|
293
|
+
if (!aSelect || aSelect.includes("*")) {
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
|
|
290
297
|
aSelect.forEach(function (sPath) {
|
|
291
298
|
var aSegments = sPath.split("/"),
|
|
292
299
|
iLast = aSegments.length - 1,
|
|
293
300
|
oSubSelect = oSelect;
|
|
294
301
|
|
|
295
302
|
aSegments.some(function (sSegment, i) {
|
|
296
|
-
if (i === iLast) {
|
|
303
|
+
if (i === iLast || aSegments[i + 1] === "*") {
|
|
297
304
|
oSubSelect[sSegment] = true;
|
|
298
305
|
return true;
|
|
299
306
|
}
|
|
@@ -307,6 +314,31 @@ sap.ui.define([
|
|
|
307
314
|
return oSelect;
|
|
308
315
|
},
|
|
309
316
|
|
|
317
|
+
/**
|
|
318
|
+
* Checks whether the given group ID is valid, which means it is either undefined, '$auto',
|
|
319
|
+
* '$auto.*', '$direct' or an application group ID as specified in
|
|
320
|
+
* {@link sap.ui.model.odata.v4.ODataModel}.
|
|
321
|
+
*
|
|
322
|
+
* @param {string} sGroupId
|
|
323
|
+
* The group ID
|
|
324
|
+
* @param {boolean} [bApplicationGroup]
|
|
325
|
+
* Whether only an application group ID is considered valid
|
|
326
|
+
* @param {string} [sErrorMessage]
|
|
327
|
+
* The error message to be used if group ID is not valid; the group ID will be appended
|
|
328
|
+
* @throws {Error}
|
|
329
|
+
* For invalid group IDs
|
|
330
|
+
*
|
|
331
|
+
* @private
|
|
332
|
+
*/
|
|
333
|
+
checkGroupId : function (sGroupId, bApplicationGroup, sErrorMessage) {
|
|
334
|
+
if (!bApplicationGroup && sGroupId === undefined
|
|
335
|
+
|| typeof sGroupId === "string"
|
|
336
|
+
&& (bApplicationGroup ? rApplicationGroupID : rGroupID).test(sGroupId)) {
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
throw new Error((sErrorMessage || "Invalid group ID: ") + sGroupId);
|
|
340
|
+
},
|
|
341
|
+
|
|
310
342
|
/**
|
|
311
343
|
* Returns a clone of the given value, according to the rules of
|
|
312
344
|
* <code>JSON.stringify</code>.
|
|
@@ -366,7 +398,7 @@ sap.ui.define([
|
|
|
366
398
|
* <li> <code>statusText</code>: (optional) HTTP status text
|
|
367
399
|
* </ul>
|
|
368
400
|
* @see <a href=
|
|
369
|
-
* "http://docs.oasis-open.org/odata/odata-json-format/v4.0/os/odata-json-format-v4.0-os.html"
|
|
401
|
+
* "http://docs.oasis-open.org/odata/odata-json-format/v4.0/os/odata-json-format-v4.0-os.html#_Representing_Errors_in"
|
|
370
402
|
* >"19 Error Response"</a>
|
|
371
403
|
*/
|
|
372
404
|
createError : function (jqXHR, sMessage, sRequestUrl, sResourcePath) {
|
|
@@ -598,6 +630,8 @@ sap.ui.define([
|
|
|
598
630
|
|
|
599
631
|
if (!isRelevant(oClone.error, sTopLevelContentID)) {
|
|
600
632
|
oClone.error.$ignoreTopLevel = true;
|
|
633
|
+
} else {
|
|
634
|
+
oClone.strictHandlingFailed = oError.strictHandlingFailed;
|
|
601
635
|
}
|
|
602
636
|
if (oClone.error.details) {
|
|
603
637
|
oClone.error.details = oClone.error.details.filter(function (oDetail, i) {
|
|
@@ -631,6 +665,33 @@ sap.ui.define([
|
|
|
631
665
|
}
|
|
632
666
|
},
|
|
633
667
|
|
|
668
|
+
/**
|
|
669
|
+
* Deletes within the given entity and property path the property annotation
|
|
670
|
+
* "@$ui5.updating".
|
|
671
|
+
*
|
|
672
|
+
* @param {string} sPropertyPath
|
|
673
|
+
* The path of the property in the entity which might be annotated with "@$ui5.updating"
|
|
674
|
+
* @param {object} oEntity
|
|
675
|
+
* The entity
|
|
676
|
+
*
|
|
677
|
+
*/
|
|
678
|
+
deleteUpdating : function (sPropertyPath, oEntity) {
|
|
679
|
+
var oData = oEntity;
|
|
680
|
+
|
|
681
|
+
sPropertyPath.split("/").some(function (sSegment) {
|
|
682
|
+
var vValue = oData[sSegment];
|
|
683
|
+
|
|
684
|
+
if (vValue === null || Array.isArray(vValue)) {
|
|
685
|
+
return true;
|
|
686
|
+
}
|
|
687
|
+
if (typeof vValue === "object") {
|
|
688
|
+
oData = vValue;
|
|
689
|
+
return false;
|
|
690
|
+
}
|
|
691
|
+
delete oData[sSegment + "@$ui5.updating"];
|
|
692
|
+
});
|
|
693
|
+
},
|
|
694
|
+
|
|
634
695
|
/**
|
|
635
696
|
* Drills down into the given object according to the given path.
|
|
636
697
|
*
|
|
@@ -844,14 +905,15 @@ sap.ui.define([
|
|
|
844
905
|
* @param {object} mChangeListeners A map of change listeners by path
|
|
845
906
|
* @param {string} sPropertyPath The path
|
|
846
907
|
* @param {any} vValue The value to report to the listeners
|
|
908
|
+
* @param {boolean} bForceUpdate Whether a listener should force an update
|
|
847
909
|
*/
|
|
848
|
-
fireChange : function (mChangeListeners, sPropertyPath, vValue) {
|
|
910
|
+
fireChange : function (mChangeListeners, sPropertyPath, vValue, bForceUpdate) {
|
|
849
911
|
var aListeners = mChangeListeners[sPropertyPath],
|
|
850
912
|
i;
|
|
851
913
|
|
|
852
914
|
if (aListeners) {
|
|
853
915
|
for (i = 0; i < aListeners.length; i += 1) {
|
|
854
|
-
aListeners[i].onChange(vValue);
|
|
916
|
+
aListeners[i].onChange(vValue, bForceUpdate);
|
|
855
917
|
}
|
|
856
918
|
}
|
|
857
919
|
},
|
|
@@ -1242,6 +1304,27 @@ sap.ui.define([
|
|
|
1242
1304
|
return sPath.replace(rNotMetaContext, "").slice(1);
|
|
1243
1305
|
},
|
|
1244
1306
|
|
|
1307
|
+
/**
|
|
1308
|
+
* Returns the index of the key predicate in the last segment of the given path.
|
|
1309
|
+
*
|
|
1310
|
+
* @param {string} sPath - The path
|
|
1311
|
+
* @returns {number} The index of the key predicate
|
|
1312
|
+
* @throws {Error} If no path is given or the last segment contains no key predicate
|
|
1313
|
+
*
|
|
1314
|
+
* @private
|
|
1315
|
+
*/
|
|
1316
|
+
getPredicateIndex : function (sPath) {
|
|
1317
|
+
var iPredicateIndex = sPath
|
|
1318
|
+
? sPath.indexOf("(", sPath.lastIndexOf("/"))
|
|
1319
|
+
: -1;
|
|
1320
|
+
|
|
1321
|
+
if (iPredicateIndex < 0 || !sPath.endsWith(")")) {
|
|
1322
|
+
throw new Error("Not a list context path to an entity: " + sPath);
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
return iPredicateIndex;
|
|
1326
|
+
},
|
|
1327
|
+
|
|
1245
1328
|
/**
|
|
1246
1329
|
* Returns the value of the private client-side instance annotation with the given
|
|
1247
1330
|
* unqualified name at the given object.
|
|
@@ -1854,6 +1937,41 @@ sap.ui.define([
|
|
|
1854
1937
|
return mHeaders;
|
|
1855
1938
|
},
|
|
1856
1939
|
|
|
1940
|
+
/**
|
|
1941
|
+
* Searches all properties in oOld annotated with "@$ui5.updating" and restores the property
|
|
1942
|
+
* value in oNew.
|
|
1943
|
+
*
|
|
1944
|
+
* @param {object} oOld
|
|
1945
|
+
* The old element
|
|
1946
|
+
* @param {object} oNew
|
|
1947
|
+
* The new element
|
|
1948
|
+
* @returns {object}
|
|
1949
|
+
* The new element with the restored properties
|
|
1950
|
+
*
|
|
1951
|
+
*/
|
|
1952
|
+
restoreUpdatingProperties : function (oOld, oNew) {
|
|
1953
|
+
var oTempNew = oNew || {};
|
|
1954
|
+
|
|
1955
|
+
Object.keys(oOld || {}).forEach(function (sProperty) {
|
|
1956
|
+
if (sProperty.startsWith("@")) {
|
|
1957
|
+
return; // skip annotations
|
|
1958
|
+
}
|
|
1959
|
+
if (Array.isArray(oOld[sProperty])) {
|
|
1960
|
+
return; // skip arrays
|
|
1961
|
+
}
|
|
1962
|
+
if (typeof oOld[sProperty] === "object") {
|
|
1963
|
+
oTempNew[sProperty]
|
|
1964
|
+
= _Helper.restoreUpdatingProperties(oOld[sProperty], oTempNew[sProperty]);
|
|
1965
|
+
}
|
|
1966
|
+
if (oOld[sProperty + "@$ui5.updating"]) {
|
|
1967
|
+
oTempNew[sProperty] = oOld[sProperty];
|
|
1968
|
+
oTempNew[sProperty + "@$ui5.updating"] = oOld[sProperty + "@$ui5.updating"];
|
|
1969
|
+
oNew = oTempNew;
|
|
1970
|
+
}
|
|
1971
|
+
});
|
|
1972
|
+
return oNew;
|
|
1973
|
+
},
|
|
1974
|
+
|
|
1857
1975
|
/**
|
|
1858
1976
|
* Adds the key properties of the given entity type to $select of the given query options.
|
|
1859
1977
|
*
|
|
@@ -1889,6 +2007,23 @@ sap.ui.define([
|
|
|
1889
2007
|
}
|
|
1890
2008
|
},
|
|
1891
2009
|
|
|
2010
|
+
/**
|
|
2011
|
+
* Adds the given language as "sap-language" URL parameter to the given URL, unless such a
|
|
2012
|
+
* parameter is already present, and returns the resulting (or unchanged) URL.
|
|
2013
|
+
*
|
|
2014
|
+
* @param {string} sUrl - A URL w/o a fragment part
|
|
2015
|
+
* @param {string} [sLanguage] - An optional value for "sap-language"
|
|
2016
|
+
* @returns {string} The resulting (or unchanged) URL as described above
|
|
2017
|
+
*/
|
|
2018
|
+
setLanguage : function (sUrl, sLanguage) {
|
|
2019
|
+
if (sLanguage && !sUrl.includes("?sap-language=") && !sUrl.includes("&sap-language=")) {
|
|
2020
|
+
sUrl += (sUrl.includes("?") ? "&" : "?") + "sap-language="
|
|
2021
|
+
+ _Helper.encode(sLanguage);
|
|
2022
|
+
}
|
|
2023
|
+
|
|
2024
|
+
return sUrl;
|
|
2025
|
+
},
|
|
2026
|
+
|
|
1892
2027
|
/**
|
|
1893
2028
|
* Sets the new value of the private client-side instance annotation with the given
|
|
1894
2029
|
* unqualified name at the given object.
|
|
@@ -1978,38 +2113,25 @@ sap.ui.define([
|
|
|
1978
2113
|
* @param {string} sPath The path of the old object in mChangeListeners
|
|
1979
2114
|
* @param {object} oTarget The target object
|
|
1980
2115
|
* @param {object} oSource The source object
|
|
1981
|
-
* @param {function} [fnCheckKeyPredicate] Callback function which tells whether the key
|
|
1982
|
-
* predicate for the given path is checked for equality instead of just being copied
|
|
1983
|
-
* from source to target
|
|
1984
2116
|
* @returns {object} The target object
|
|
1985
2117
|
* @throws {Error} If a key predicate check fails
|
|
1986
2118
|
*/
|
|
1987
|
-
updateAll : function (mChangeListeners, sPath, oTarget, oSource
|
|
2119
|
+
updateAll : function (mChangeListeners, sPath, oTarget, oSource) {
|
|
1988
2120
|
Object.keys(oSource).forEach(function (sProperty) {
|
|
1989
2121
|
var sPropertyPath = _Helper.buildPath(sPath, sProperty),
|
|
1990
|
-
sSourcePredicate,
|
|
1991
2122
|
vSourceProperty = oSource[sProperty],
|
|
1992
|
-
sTargetPredicate,
|
|
1993
2123
|
vTargetProperty = oTarget[sProperty];
|
|
1994
2124
|
|
|
1995
2125
|
if (sProperty === "@$ui5._") {
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
sTargetPredicate = _Helper.getPrivateAnnotation(oTarget, "predicate");
|
|
1999
|
-
if (sSourcePredicate !== sTargetPredicate) {
|
|
2000
|
-
throw new Error("Key predicate of '" + sPath + "' changed from "
|
|
2001
|
-
+ sTargetPredicate + " to " + sSourcePredicate);
|
|
2002
|
-
}
|
|
2003
|
-
} else {
|
|
2004
|
-
_Helper.setPrivateAnnotation(oTarget, "predicate", sSourcePredicate);
|
|
2005
|
-
}
|
|
2126
|
+
_Helper.setPrivateAnnotation(oTarget, "predicate",
|
|
2127
|
+
_Helper.getPrivateAnnotation(oSource, "predicate"));
|
|
2006
2128
|
} else if (Array.isArray(vSourceProperty)) {
|
|
2007
2129
|
// copy complete collection w/o firing change events
|
|
2008
2130
|
oTarget[sProperty] = vSourceProperty;
|
|
2009
2131
|
} else if (vSourceProperty && typeof vSourceProperty === "object") {
|
|
2010
2132
|
oTarget[sProperty]
|
|
2011
2133
|
= _Helper.updateAll(mChangeListeners, sPropertyPath, vTargetProperty || {},
|
|
2012
|
-
vSourceProperty
|
|
2134
|
+
vSourceProperty);
|
|
2013
2135
|
} else if (vTargetProperty !== vSourceProperty) {
|
|
2014
2136
|
oTarget[sProperty] = vSourceProperty;
|
|
2015
2137
|
if (vTargetProperty && typeof vTargetProperty === "object") {
|
|
@@ -2156,8 +2278,14 @@ sap.ui.define([
|
|
|
2156
2278
|
* @param {string[]} [aSelect]
|
|
2157
2279
|
* The relative paths to properties to be updated in oOldValue; default is all properties
|
|
2158
2280
|
* from oNewValue
|
|
2159
|
-
|
|
2160
|
-
|
|
2281
|
+
* @param {function} [fnCheckKeyPredicate]
|
|
2282
|
+
* Callback function which tells whether the key predicate for the given path is checked
|
|
2283
|
+
* for equality instead of just being copied from source to target
|
|
2284
|
+
* @param {boolean} [bOkIfMissing]
|
|
2285
|
+
* Whether this should not check for selected properties missing in the response
|
|
2286
|
+
*/
|
|
2287
|
+
updateSelected : function (mChangeListeners, sBasePath, oOldValue, oNewValue, aSelect,
|
|
2288
|
+
fnCheckKeyPredicate, bOkIfMissing) {
|
|
2161
2289
|
/*
|
|
2162
2290
|
* Gets the property's value in vSelect. Instance annotations are always selected,
|
|
2163
2291
|
* property annotations only if the property is selected.
|
|
@@ -2197,7 +2325,9 @@ sap.ui.define([
|
|
|
2197
2325
|
// annotations
|
|
2198
2326
|
Object.keys(oTarget).forEach(function (sProperty) {
|
|
2199
2327
|
if (!(sProperty in oSource) && sProperty.includes("@")
|
|
2200
|
-
&& !sProperty.startsWith("@$ui5.") && getSelect(vSelect, sProperty)
|
|
2328
|
+
&& !sProperty.startsWith("@$ui5.") && getSelect(vSelect, sProperty)
|
|
2329
|
+
&& !sProperty.endsWith("@$ui5.updating")
|
|
2330
|
+
) {
|
|
2201
2331
|
delete oTarget[sProperty];
|
|
2202
2332
|
_Helper.fireChange(mChangeListeners, _Helper.buildPath(sPath, sProperty),
|
|
2203
2333
|
undefined);
|
|
@@ -2208,17 +2338,25 @@ sap.ui.define([
|
|
|
2208
2338
|
Object.keys(oSource).forEach(function (sProperty) {
|
|
2209
2339
|
var sPropertyPath = _Helper.buildPath(sPath, sProperty),
|
|
2210
2340
|
vSelected = getSelect(vSelect, sProperty),
|
|
2341
|
+
sSourcePredicate,
|
|
2211
2342
|
vSourceProperty = oSource[sProperty],
|
|
2343
|
+
sTargetPredicate,
|
|
2212
2344
|
vTargetProperty = oTarget[sProperty];
|
|
2213
2345
|
|
|
2214
2346
|
if (!vSelected) {
|
|
2215
2347
|
return;
|
|
2216
2348
|
}
|
|
2217
2349
|
if (sProperty === "@$ui5._") {
|
|
2218
|
-
_Helper.
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2350
|
+
sSourcePredicate = _Helper.getPrivateAnnotation(oSource, "predicate");
|
|
2351
|
+
if (fnCheckKeyPredicate && fnCheckKeyPredicate(sPath)) {
|
|
2352
|
+
sTargetPredicate = _Helper.getPrivateAnnotation(oTarget, "predicate");
|
|
2353
|
+
if (sSourcePredicate !== sTargetPredicate) {
|
|
2354
|
+
throw new Error("Key predicate of '" + sPath + "' changed from "
|
|
2355
|
+
+ sTargetPredicate + " to " + sSourcePredicate);
|
|
2356
|
+
}
|
|
2357
|
+
} else {
|
|
2358
|
+
_Helper.setPrivateAnnotation(oTarget, "predicate", sSourcePredicate);
|
|
2359
|
+
}
|
|
2222
2360
|
} else if (Array.isArray(vSourceProperty)) {
|
|
2223
2361
|
// copy complete collection; no change events as long as collection-valued
|
|
2224
2362
|
// properties are not supported
|
|
@@ -2227,7 +2365,8 @@ sap.ui.define([
|
|
|
2227
2365
|
&& !sProperty.includes("@")) {
|
|
2228
2366
|
oTarget[sProperty] = update(sPropertyPath, vSelected, vTargetProperty || {},
|
|
2229
2367
|
vSourceProperty);
|
|
2230
|
-
} else if (vTargetProperty !== vSourceProperty
|
|
2368
|
+
} else if (vTargetProperty !== vSourceProperty
|
|
2369
|
+
&& !oTarget[sProperty + "@$ui5.updating"]) {
|
|
2231
2370
|
oTarget[sProperty] = vSourceProperty;
|
|
2232
2371
|
if (vTargetProperty && typeof vTargetProperty === "object") {
|
|
2233
2372
|
// a complex property is replaced by null
|
|
@@ -2239,21 +2378,25 @@ sap.ui.define([
|
|
|
2239
2378
|
}
|
|
2240
2379
|
});
|
|
2241
2380
|
|
|
2381
|
+
if (bOkIfMissing) {
|
|
2382
|
+
return oTarget;
|
|
2383
|
+
}
|
|
2384
|
+
|
|
2242
2385
|
// Create annotations for a property which was selected but no data was received
|
|
2243
2386
|
Object.keys(vSelect).forEach(function (sProperty) {
|
|
2244
|
-
if (!(sProperty in oTarget)) {
|
|
2387
|
+
if (!(sProperty in oTarget) && sProperty !== "*") {
|
|
2245
2388
|
oTarget[sProperty + "@$ui5.noData"] = true;
|
|
2389
|
+
// Fire change event (useful for Edm.Stream in case of the URL stays the
|
|
2390
|
+
// same, but the content was changed)
|
|
2391
|
+
_Helper.fireChange(mChangeListeners, _Helper.buildPath(sPath, sProperty),
|
|
2392
|
+
undefined, true);
|
|
2246
2393
|
}
|
|
2247
2394
|
});
|
|
2248
2395
|
|
|
2249
2396
|
return oTarget;
|
|
2250
2397
|
}
|
|
2251
2398
|
|
|
2252
|
-
|
|
2253
|
-
update(sBasePath, _Helper.buildSelect(aSelect), oOldValue, oNewValue);
|
|
2254
|
-
} else { // no individual properties selected, fetch all properties of the new value
|
|
2255
|
-
_Helper.updateAll(mChangeListeners, sBasePath, oOldValue, oNewValue);
|
|
2256
|
-
}
|
|
2399
|
+
update(sBasePath, _Helper.buildSelect(aSelect), oOldValue, oNewValue);
|
|
2257
2400
|
},
|
|
2258
2401
|
|
|
2259
2402
|
/**
|
|
@@ -21,9 +21,8 @@ sap.ui.define([
|
|
|
21
21
|
* @param {string} sResourcePath
|
|
22
22
|
* A resource path relative to the service URL
|
|
23
23
|
* @param {object} oAggregation
|
|
24
|
-
* An object holding the information needed for data aggregation; see also
|
|
25
|
-
*
|
|
26
|
-
* Extension for Data Aggregation Version 4.0</a>; must already be normalized by
|
|
24
|
+
* An object holding the information needed for data aggregation; see also "OData
|
|
25
|
+
* Extension for Data Aggregation Version 4.0"; must already be normalized by
|
|
27
26
|
* {@link _AggregationHelper.buildApply}
|
|
28
27
|
* @param {object} mQueryOptions
|
|
29
28
|
* A map of key-value pairs representing the query string
|
|
@@ -13,8 +13,10 @@ sap.ui.define([
|
|
|
13
13
|
"sap/base/Log",
|
|
14
14
|
"sap/ui/base/SyncPromise",
|
|
15
15
|
"sap/ui/core/cache/CacheManager",
|
|
16
|
+
"sap/ui/core/Configuration",
|
|
16
17
|
"sap/ui/thirdparty/jquery"
|
|
17
|
-
], function (_Batch, _GroupLock, _Helper, asV2Requestor, Log, SyncPromise, CacheManager,
|
|
18
|
+
], function (_Batch, _GroupLock, _Helper, asV2Requestor, Log, SyncPromise, CacheManager,
|
|
19
|
+
Configuration, jQuery) {
|
|
18
20
|
"use strict";
|
|
19
21
|
|
|
20
22
|
var mBatchHeaders = { // headers for the $batch request
|
|
@@ -531,6 +533,13 @@ sap.ui.define([
|
|
|
531
533
|
*/
|
|
532
534
|
function addToChangeSet(oChange) {
|
|
533
535
|
if (!mergePatch(oChange)) {
|
|
536
|
+
if (oChange.method === "DELETE" && oChange.headers["If-Match"]
|
|
537
|
+
&& oChange.headers["If-Match"]["@odata.etag"]
|
|
538
|
+
&& aChangeSet.find(function (oCandidate) {
|
|
539
|
+
return oCandidate.headers["If-Match"] === oChange.headers["If-Match"];
|
|
540
|
+
})) {
|
|
541
|
+
oChange.headers["If-Match"] = {"@odata.etag" : "*"};
|
|
542
|
+
}
|
|
534
543
|
aChangeSet.push(oChange);
|
|
535
544
|
}
|
|
536
545
|
}
|
|
@@ -1465,7 +1474,7 @@ sap.ui.define([
|
|
|
1465
1474
|
|
|
1466
1475
|
this.oSecurityTokenPromise = null;
|
|
1467
1476
|
|
|
1468
|
-
|
|
1477
|
+
Configuration.getSecurityTokenHandlers().some(function (fnHandler) {
|
|
1469
1478
|
var oSecurityTokenPromise = fnHandler(that.sServiceUrl);
|
|
1470
1479
|
|
|
1471
1480
|
if (oSecurityTokenPromise !== undefined) {
|
|
@@ -2143,24 +2152,34 @@ sap.ui.define([
|
|
|
2143
2152
|
* An interface allowing to call back to the owning model
|
|
2144
2153
|
* @param {function} oModelInterface.fetchEntityContainer
|
|
2145
2154
|
* A promise which is resolved with the $metadata "JSON" object as soon as the entity
|
|
2146
|
-
* container is fully available, or rejected with an error
|
|
2155
|
+
* container is fully available, or rejected with an error
|
|
2147
2156
|
* @param {function} oModelInterface.fetchMetadata
|
|
2148
2157
|
* A function that returns a SyncPromise which resolves with the metadata instance for a
|
|
2149
2158
|
* given meta path
|
|
2159
|
+
* @param {function} oModelInterface.fireMessageChange
|
|
2160
|
+
* A function that fires the 'messageChange' event for the given messages
|
|
2161
|
+
* @param {function} oModelInterface.fireDataReceived
|
|
2162
|
+
* A function that fires the 'dataReceived' event at the model with an optional parameter
|
|
2163
|
+
* <code>oError</code>
|
|
2164
|
+
* @param {function} oModelInterface.fireDataRequested
|
|
2165
|
+
* A function that fires the 'dataRequested' event at the model
|
|
2150
2166
|
* @param {function} oModelInterface.fireSessionTimeout
|
|
2151
2167
|
* A function that fires the 'sessionTimeout' event (when the server has created a session for
|
|
2152
|
-
* the model and this session ran into a timeout due to inactivity)
|
|
2168
|
+
* the model and this session ran into a timeout due to inactivity)
|
|
2153
2169
|
* @param {function} oModelInterface.getGroupProperty
|
|
2154
2170
|
* A function called with parameters <code>sGroupId</code> and <code>sPropertyName</code>
|
|
2155
2171
|
* returning the property value in question. Only 'submit' is supported for <code>
|
|
2156
|
-
* sPropertyName</code>. Supported property values are: 'API', 'Auto' and 'Direct'
|
|
2172
|
+
* sPropertyName</code>. Supported property values are: 'API', 'Auto' and 'Direct'
|
|
2173
|
+
* @param {function} oModelInterface.getMessagesByPath
|
|
2174
|
+
* A function returning model messages for which the target matches the given resolved binding
|
|
2175
|
+
* path
|
|
2157
2176
|
* @param {function} oModelInterface.getOptimisticBatchEnabler
|
|
2158
2177
|
* A function that returns a callback function which controls the optimistic batch handling,
|
|
2159
|
-
* see also {@link sap.ui.model.odata.v4.ODataModel#setOptimisticBatchEnabler}
|
|
2178
|
+
* see also {@link sap.ui.model.odata.v4.ODataModel#setOptimisticBatchEnabler}
|
|
2160
2179
|
* @param {function} oModelInterface.getReporter
|
|
2161
2180
|
* A catch handler function expecting an <code>Error</code> instance. This function will call
|
|
2162
2181
|
* {@link sap.ui.model.odata.v4.ODataModel#reportError} if the error has not been reported
|
|
2163
|
-
* yet
|
|
2182
|
+
* yet
|
|
2164
2183
|
* @param {function} oModelInterface.onCreateGroup
|
|
2165
2184
|
* A callback function that is called with the group name as parameter when the first
|
|
2166
2185
|
* request is added to a group
|
|
@@ -14,13 +14,14 @@
|
|
|
14
14
|
|
|
15
15
|
// Provides the resource bundle based model implementation
|
|
16
16
|
sap.ui.define([
|
|
17
|
+
'sap/base/Log',
|
|
18
|
+
'sap/base/i18n/ResourceBundle',
|
|
19
|
+
'sap/ui/core/Configuration',
|
|
17
20
|
'sap/ui/model/BindingMode',
|
|
18
21
|
'sap/ui/model/Model',
|
|
19
|
-
'./ResourcePropertyBinding'
|
|
20
|
-
"sap/base/i18n/ResourceBundle",
|
|
21
|
-
"sap/base/Log"
|
|
22
|
+
'./ResourcePropertyBinding'
|
|
22
23
|
],
|
|
23
|
-
function (
|
|
24
|
+
function (Log, ResourceBundle, Configuration, BindingMode, Model, ResourcePropertyBinding) {
|
|
24
25
|
"use strict";
|
|
25
26
|
|
|
26
27
|
/**
|
|
@@ -228,7 +229,7 @@ sap.ui.define([
|
|
|
228
229
|
*
|
|
229
230
|
* @extends sap.ui.model.Model
|
|
230
231
|
* @public
|
|
231
|
-
* @version 1.
|
|
232
|
+
* @version 1.107.0
|
|
232
233
|
*/
|
|
233
234
|
var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
|
|
234
235
|
|
|
@@ -377,7 +378,7 @@ sap.ui.define([
|
|
|
377
378
|
* @ui5-restricted sap.ui.core.Component
|
|
378
379
|
*/
|
|
379
380
|
ResourceModel.loadResourceBundle = function (oData, bAsync) {
|
|
380
|
-
var oConfiguration =
|
|
381
|
+
var oConfiguration = Configuration,
|
|
381
382
|
sLocale = oData.bundleLocale,
|
|
382
383
|
mParams;
|
|
383
384
|
|
|
@@ -501,7 +502,7 @@ sap.ui.define([
|
|
|
501
502
|
*
|
|
502
503
|
* @param {string} sPath
|
|
503
504
|
* The path to the property
|
|
504
|
-
* @returns {string}
|
|
505
|
+
* @returns {string|null}
|
|
505
506
|
* The value of the property in the resource bundle or <code>null</code> if resource bundle is
|
|
506
507
|
* not available
|
|
507
508
|
*
|
|
@@ -32,7 +32,7 @@ sap.ui.define([
|
|
|
32
32
|
* @extends sap.ui.model.CompositeType
|
|
33
33
|
*
|
|
34
34
|
* @author SAP SE
|
|
35
|
-
* @version 1.
|
|
35
|
+
* @version 1.107.0
|
|
36
36
|
*
|
|
37
37
|
* @public
|
|
38
38
|
* @param {object} [oFormatOptions]
|
|
@@ -84,7 +84,7 @@ sap.ui.define([
|
|
|
84
84
|
* @param {string} sTargetType
|
|
85
85
|
* The target type; must be "string", or a type with "string" as its
|
|
86
86
|
* {@link sap.ui.base.DataType#getPrimitiveType primitive type}
|
|
87
|
-
* @returns {string}
|
|
87
|
+
* @returns {string|null}
|
|
88
88
|
* The formatted output value; the values <code>undefined</code> or <code>null</code> or
|
|
89
89
|
* an amount <code>undefined</code> or <code>null</code> are formatted to <code>null</code>
|
|
90
90
|
* @throws {sap.ui.model.FormatException}
|
|
@@ -26,7 +26,7 @@ sap.ui.define([
|
|
|
26
26
|
* @extends sap.ui.model.SimpleType
|
|
27
27
|
*
|
|
28
28
|
* @author SAP SE
|
|
29
|
-
* @version 1.
|
|
29
|
+
* @version 1.107.0
|
|
30
30
|
*
|
|
31
31
|
* @public
|
|
32
32
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
|
|
@@ -33,7 +33,7 @@ sap.ui.define([
|
|
|
33
33
|
* @extends sap.ui.model.CompositeType
|
|
34
34
|
*
|
|
35
35
|
* @author SAP SE
|
|
36
|
-
* @version 1.
|
|
36
|
+
* @version 1.107.0
|
|
37
37
|
*
|
|
38
38
|
* @public
|
|
39
39
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.Date
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.107.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.DateInterval
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.107.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
|
|
@@ -24,7 +24,7 @@ sap.ui.define([
|
|
|
24
24
|
* @extends sap.ui.model.SimpleType
|
|
25
25
|
*
|
|
26
26
|
* @author SAP SE
|
|
27
|
-
* @version 1.
|
|
27
|
+
* @version 1.107.0
|
|
28
28
|
*
|
|
29
29
|
* @public
|
|
30
30
|
* @param {object} [oFormatOptions] formatting options. Supports the same options as {@link sap.ui.core.format.FileSizeFormat.getInstance FileSizeFormat.getInstance}
|
|
@@ -26,7 +26,7 @@ sap.ui.define([
|
|
|
26
26
|
* @extends sap.ui.model.SimpleType
|
|
27
27
|
*
|
|
28
28
|
* @author SAP SE
|
|
29
|
-
* @version 1.
|
|
29
|
+
* @version 1.107.0
|
|
30
30
|
*
|
|
31
31
|
* @public
|
|
32
32
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.NumberFormat NumberFormat}.
|
|
@@ -26,7 +26,7 @@ sap.ui.define([
|
|
|
26
26
|
* @extends sap.ui.model.SimpleType
|
|
27
27
|
*
|
|
28
28
|
* @author SAP SE
|
|
29
|
-
* @version 1.
|
|
29
|
+
* @version 1.107.0
|
|
30
30
|
*
|
|
31
31
|
* @public
|
|
32
32
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.NumberFormat NumberFormat}.
|
|
@@ -24,7 +24,7 @@ sap.ui.define([
|
|
|
24
24
|
* @extends sap.ui.model.SimpleType
|
|
25
25
|
*
|
|
26
26
|
* @author SAP SE
|
|
27
|
-
* @version 1.
|
|
27
|
+
* @version 1.107.0
|
|
28
28
|
*
|
|
29
29
|
* @alias sap.ui.model.type.String
|
|
30
30
|
* @param {object} [oFormatOptions]
|
|
@@ -73,7 +73,7 @@ sap.ui.define([
|
|
|
73
73
|
* The target type; may be "any", "boolean", "float", "int" or "string", or a type with "any",
|
|
74
74
|
* "boolean", "float", "int" or "string" as its
|
|
75
75
|
* {@link sap.ui.base.DataType#getPrimitiveType primitive type}
|
|
76
|
-
* @returns {string|number|boolean}
|
|
76
|
+
* @returns {string|number|boolean|null}
|
|
77
77
|
* The formatted output value in the target type; <code>undefined</code> and <code>null</code>
|
|
78
78
|
* are always formatted to <code>null</code>
|
|
79
79
|
* @throws {sap.ui.model.FormatException}
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.Date
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.107.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.DateInterval
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.107.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
|