@openui5/sap.ui.core 1.130.0 → 1.131.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/THIRDPARTY.txt +1 -1
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -1
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/Event.js +1 -1
- package/src/sap/base/Eventing.js +3 -2
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/i18n/LanguageTag.js +1 -1
- package/src/sap/base/i18n/date/CalendarType.js +3 -1
- package/src/sap/base/i18n/date/CalendarWeekNumbering.js +3 -1
- package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
- package/src/sap/base/i18n/date/_EnumHelper.js +43 -0
- package/src/sap/base/util/clamp.js +26 -0
- 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 +11 -8
- package/src/sap/ui/Global.js +3 -3
- package/src/sap/ui/base/BindingInfo.js +4 -2
- package/src/sap/ui/base/DataType.js +7 -2
- 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 +1 -1
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/Metadata.js +1 -1
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +3 -3
- package/src/sap/ui/core/BlockLayerUtils.js +17 -29
- package/src/sap/ui/core/BusyIndicator.js +2 -15
- package/src/sap/ui/core/BusyIndicatorUtils.js +34 -3
- package/src/sap/ui/core/Component.js +1 -1
- package/src/sap/ui/core/ComponentContainer.js +1 -1
- package/src/sap/ui/core/ComponentMetadata.js +1 -1
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +1 -1
- package/src/sap/ui/core/ContextMenuSupport.js +2 -1
- package/src/sap/ui/core/Control.js +46 -10
- package/src/sap/ui/core/ControlBehavior.js +14 -18
- package/src/sap/ui/core/Core.js +2 -2
- 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 +230 -32
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +4 -4
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/FocusMode.js +28 -0
- package/src/sap/ui/core/Fragment.js +1 -1
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +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 +1 -1
- 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/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +3 -3
- package/src/sap/ui/core/Manifest.js +2 -2
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Popup.js +12 -0
- package/src/sap/ui/core/RenderManager.js +4 -1
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +1 -1
- package/src/sap/ui/core/UIArea.js +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 +1 -0
- package/src/sap/ui/core/cldr/ca.json +1 -1
- package/src/sap/ui/core/cldr/cs.json +1 -1
- package/src/sap/ui/core/cldr/es.json +2 -2
- package/src/sap/ui/core/cldr/es_AR.json +2 -2
- package/src/sap/ui/core/cldr/es_BO.json +2 -2
- package/src/sap/ui/core/cldr/es_CL.json +2 -2
- package/src/sap/ui/core/cldr/es_CO.json +2 -2
- package/src/sap/ui/core/cldr/es_PE.json +2 -2
- package/src/sap/ui/core/cldr/es_UY.json +2 -2
- package/src/sap/ui/core/cldr/es_VE.json +2 -2
- package/src/sap/ui/core/cldr/fi.json +1 -1
- package/src/sap/ui/core/cldr/hu.json +1 -1
- package/src/sap/ui/core/cldr/id.json +2 -2
- package/src/sap/ui/core/cldr/mk.json +2 -2
- package/src/sap/ui/core/cldr/tr.json +1 -1
- package/src/sap/ui/core/cldr/vi.json +2 -2
- package/src/sap/ui/core/date/CalendarWeekNumbering.js +1 -1
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- 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/fieldhelp/FieldHelpCustomData.js +5 -1
- package/src/sap/ui/core/format/FormatUtils.js +1 -1
- package/src/sap/ui/core/format/NumberFormat.js +38 -17
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +23 -19
- 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 +5 -2
- 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_no.properties +1 -1
- package/src/sap/ui/core/mvc/HTMLView.js +1 -1
- package/src/sap/ui/core/mvc/JSONView.js +1 -1
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +1 -1
- package/src/sap/ui/core/mvc/XMLView.js +1 -1
- 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/Target.js +5 -5
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/bootstrapFallback.js +1 -0
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +1 -1
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +1 -0
- package/src/sap/ui/core/themes/base/base.less +1353 -247
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- package/src/sap/ui/core/themes/base/global.less +32 -0
- package/src/sap/ui/core/themes/base/skeleton.less +93 -3
- package/src/sap/ui/core/theming/ThemeManager.js +2 -2
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -1
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/webc/WebComponent.js +1 -1
- package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
- package/src/sap/ui/core/ws/ReadyState.js +1 -1
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
- package/src/sap/ui/core/ws/WebSocket.js +1 -1
- package/src/sap/ui/debug/ControlTree.js +1 -1
- package/src/sap/ui/debug/DebugEnv.js +1 -1
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +32 -19
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/DataState.js +1 -1
- package/src/sap/ui/model/Filter.js +2 -1
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +1 -1
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/Sorter.js +61 -31
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/TreeBinding.js +21 -17
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +13 -7
- package/src/sap/ui/model/base/ManagedObjectModel.js +1 -1
- package/src/sap/ui/model/json/JSONModel.js +1 -1
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +16 -6
- package/src/sap/ui/model/odata/ODataModel.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 +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +7 -4
- package/src/sap/ui/model/odata/v2/ODataModel.js +14 -10
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataBinding.js +1 -0
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -1
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +74 -11
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +93 -19
- package/src/sap/ui/model/odata/v4/ODataModel.js +49 -8
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +3 -1
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +2 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +12 -1
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +51 -30
- package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +49 -31
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +8 -26
- package/src/sap/ui/model/resource/ResourceModel.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/XMLModel.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/OpaBuilder.js +1 -1
- package/src/sap/ui/test/autowaiter/_promiseWaiter.js +21 -0
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/starter/_utils.js +8 -1
- package/src/sap/ui/test/starter/createSuite.js +1 -1
- package/src/sap/ui/thirdparty/less.js +23 -72
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader.js +9 -4
- package/test/sap/ui/qunit/TestRunner.js +2 -0
|
@@ -3240,6 +3240,9 @@ sap.ui.define([
|
|
|
3240
3240
|
* If no back-end request is needed, the function is not called.
|
|
3241
3241
|
* @param {boolean} [bIndexIsSkip]
|
|
3242
3242
|
* Whether <code>iIndex</code> is a raw $skip index
|
|
3243
|
+
* @param {function} [fnSeparateReceived]
|
|
3244
|
+
* The function is called for each completed separate property request; may be omitted only if
|
|
3245
|
+
* there are no separate properties
|
|
3243
3246
|
* @returns {sap.ui.base.SyncPromise}
|
|
3244
3247
|
* A promise to be resolved with the requested range given as an OData response object (with
|
|
3245
3248
|
* "@odata.context" and the rows as an array in the property <code>value</code>, enhanced
|
|
@@ -3254,7 +3257,7 @@ sap.ui.define([
|
|
|
3254
3257
|
* @see sap.ui.model.odata.v4.lib._Requestor#request
|
|
3255
3258
|
*/
|
|
3256
3259
|
_CollectionCache.prototype.read = function (iIndex, iLength, iPrefetchLength, oGroupLock,
|
|
3257
|
-
fnDataRequested, bIndexIsSkip) {
|
|
3260
|
+
fnDataRequested, bIndexIsSkip, fnSeparateReceived) {
|
|
3258
3261
|
var iCreatedPersisted = 0,
|
|
3259
3262
|
oElement,
|
|
3260
3263
|
aElementsRange,
|
|
@@ -3275,7 +3278,7 @@ sap.ui.define([
|
|
|
3275
3278
|
if (oPromise) {
|
|
3276
3279
|
return oPromise.then(function () {
|
|
3277
3280
|
return that.read(iIndex, iLength, iPrefetchLength, oGroupLock, fnDataRequested,
|
|
3278
|
-
bIndexIsSkip);
|
|
3281
|
+
bIndexIsSkip, fnSeparateReceived);
|
|
3279
3282
|
});
|
|
3280
3283
|
}
|
|
3281
3284
|
|
|
@@ -3316,7 +3319,7 @@ sap.ui.define([
|
|
|
3316
3319
|
|
|
3317
3320
|
aReadIntervals.forEach(function (oInterval) {
|
|
3318
3321
|
that.requestElements(oInterval.start, oInterval.end, oGroupLock.getUnlockedCopy(),
|
|
3319
|
-
iTransientElements, fnDataRequested);
|
|
3322
|
+
iTransientElements, fnDataRequested, fnSeparateReceived);
|
|
3320
3323
|
fnDataRequested = undefined;
|
|
3321
3324
|
});
|
|
3322
3325
|
|
|
@@ -3484,6 +3487,9 @@ sap.ui.define([
|
|
|
3484
3487
|
* The number of transient elements within the given group
|
|
3485
3488
|
* @param {function} [fnDataRequested]
|
|
3486
3489
|
* The function is called when the back-end requests have been sent.
|
|
3490
|
+
* @param {function} [fnSeparateReceived]
|
|
3491
|
+
* The function is called for each completed separate property request; may be omitted only if
|
|
3492
|
+
* there are no separate properties
|
|
3487
3493
|
* @returns {sap.ui.base.SyncPromise}
|
|
3488
3494
|
* A promise which is resolved without a defined result when the request is finished and
|
|
3489
3495
|
* rejected in case of error; if the request has been obsoleted by a {@link #reset} the error
|
|
@@ -3494,7 +3500,7 @@ sap.ui.define([
|
|
|
3494
3500
|
* @private
|
|
3495
3501
|
*/
|
|
3496
3502
|
_CollectionCache.prototype.requestElements = function (iStart, iEnd, oGroupLock,
|
|
3497
|
-
iTransientElements, fnDataRequested) {
|
|
3503
|
+
iTransientElements, fnDataRequested, fnSeparateReceived) {
|
|
3498
3504
|
var oPromise,
|
|
3499
3505
|
oReadRequest = {
|
|
3500
3506
|
iEnd : iEnd,
|
|
@@ -3544,7 +3550,7 @@ sap.ui.define([
|
|
|
3544
3550
|
that.aReadRequests.splice(that.aReadRequests.indexOf(oReadRequest), 1);
|
|
3545
3551
|
});
|
|
3546
3552
|
|
|
3547
|
-
this.requestSeparateProperties(iStart, iEnd, oPromise);
|
|
3553
|
+
this.requestSeparateProperties(iStart, iEnd, oPromise, fnSeparateReceived);
|
|
3548
3554
|
|
|
3549
3555
|
// Note: oPromise MUST be a SyncPromise for performance reasons, see SyncPromise#all
|
|
3550
3556
|
this.fill(oPromise, iStart, iEnd);
|
|
@@ -3560,46 +3566,61 @@ sap.ui.define([
|
|
|
3560
3566
|
* @param {number} iEnd
|
|
3561
3567
|
* The index after the last element
|
|
3562
3568
|
* @param {sap.ui.base.SyncPromise} oMainPromise
|
|
3563
|
-
* A promise which is resolved when the main request is finished
|
|
3569
|
+
* A promise which is resolved when the main request is finished; the caller must take care of
|
|
3570
|
+
* error handling
|
|
3571
|
+
* @param {function} [fnSeparateReceived]
|
|
3572
|
+
* The function is called for each completed separate property request; may be omitted only if
|
|
3573
|
+
* there are no separate properties
|
|
3564
3574
|
* @returns {Promise<void>}
|
|
3565
3575
|
* A promise which is resolved without a defined result at no defined point in time
|
|
3566
3576
|
*
|
|
3567
3577
|
* @private
|
|
3568
3578
|
*/
|
|
3569
3579
|
_CollectionCache.prototype.requestSeparateProperties = async function (iStart, iEnd,
|
|
3570
|
-
oMainPromise) {
|
|
3580
|
+
oMainPromise, fnSeparateReceived) {
|
|
3571
3581
|
if (!this.aSeparateProperties.length) {
|
|
3572
3582
|
return;
|
|
3573
3583
|
}
|
|
3574
3584
|
|
|
3575
3585
|
// types are needed for selecting the key properties, see #getQueryString called by
|
|
3576
3586
|
// #getResourcePathWithQuery
|
|
3577
|
-
const
|
|
3587
|
+
const mTypeForMetaPath = await this.fetchTypes();
|
|
3578
3588
|
const oReadRange = {start : iStart, end : iEnd};
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
this.
|
|
3583
|
-
|
|
3584
|
-
|
|
3589
|
+
this.aSeparateProperties.forEach(async (sProperty) => {
|
|
3590
|
+
try {
|
|
3591
|
+
this.mSeparateProperty2ReadRequest[sProperty].push(oReadRange);
|
|
3592
|
+
const oResult = await this.oRequestor.request("GET",
|
|
3593
|
+
this.getResourcePathWithQuery(iStart, iEnd, sProperty),
|
|
3594
|
+
this.oRequestor.lockGroup("$single", this));
|
|
3595
|
+
|
|
3596
|
+
let bMainFailed;
|
|
3597
|
+
await oMainPromise.catch(() => { /* handled by caller */
|
|
3598
|
+
bMainFailed = true;
|
|
3599
|
+
});
|
|
3585
3600
|
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3597
|
-
const
|
|
3598
|
-
|
|
3599
|
-
|
|
3600
|
-
|
|
3601
|
-
|
|
3601
|
+
const iIndex = this.mSeparateProperty2ReadRequest[sProperty].indexOf(oReadRange);
|
|
3602
|
+
if (iIndex < 0) { // stop import after #reset
|
|
3603
|
+
return;
|
|
3604
|
+
}
|
|
3605
|
+
|
|
3606
|
+
this.mSeparateProperty2ReadRequest[sProperty].splice(iIndex, 1);
|
|
3607
|
+
if (bMainFailed) {
|
|
3608
|
+
return;
|
|
3609
|
+
}
|
|
3610
|
+
|
|
3611
|
+
this.visitResponse(oResult, mTypeForMetaPath, undefined, undefined, iStart);
|
|
3612
|
+
for (const oSeparateData of oResult.value) {
|
|
3613
|
+
const sPredicate = _Helper.getPrivateAnnotation(oSeparateData, "predicate");
|
|
3614
|
+
const oElement = this.aElements.$byPredicate[sPredicate];
|
|
3615
|
+
if (oElement) {
|
|
3616
|
+
_Helper.updateSelected(this.mChangeListeners, sPredicate, oElement,
|
|
3617
|
+
oSeparateData, [sProperty]);
|
|
3618
|
+
}
|
|
3602
3619
|
}
|
|
3620
|
+
fnSeparateReceived(sProperty, iStart, iEnd);
|
|
3621
|
+
} catch (oError) {
|
|
3622
|
+
// do not clean up mSeparateProperty2ReadRequest to avoid late property requests
|
|
3623
|
+
fnSeparateReceived(sProperty, iStart, iEnd, oError);
|
|
3603
3624
|
}
|
|
3604
3625
|
});
|
|
3605
3626
|
};
|
|
@@ -30,17 +30,20 @@ sap.ui.define([
|
|
|
30
30
|
* is deleted(!) after the first <code>read</code> for a metadata document.
|
|
31
31
|
* @param {boolean} [bWithCredentials]
|
|
32
32
|
* Whether the XHR should be called with <code>withCredentials</code>
|
|
33
|
+
* @param {function} fnGetOrCreateRetryAfterPromise
|
|
34
|
+
* A function that returns or creates the "Retry-After" promise
|
|
33
35
|
* @returns {object}
|
|
34
36
|
* A new MetadataRequestor object
|
|
35
37
|
*/
|
|
36
38
|
create : function (mHeaders, sODataVersion, bIgnoreAnnotationsFromMetadata, mQueryParams,
|
|
37
|
-
|
|
39
|
+
bWithCredentials, fnGetOrCreateRetryAfterPromise) {
|
|
38
40
|
var mUrl2Promise = {},
|
|
39
41
|
sQuery = _Helper.buildQuery(mQueryParams);
|
|
40
42
|
|
|
41
43
|
return {
|
|
42
44
|
/**
|
|
43
|
-
* Reads a metadata document from the given URL.
|
|
45
|
+
* Reads a metadata document from the given URL, taking care of "Retry-After".
|
|
46
|
+
*
|
|
44
47
|
* @param {string} sUrl
|
|
45
48
|
* The URL of a metadata document, it must not contain a query string or a
|
|
46
49
|
* fragment part
|
|
@@ -86,38 +89,53 @@ sap.ui.define([
|
|
|
86
89
|
delete mUrl2Promise[sUrl];
|
|
87
90
|
} else {
|
|
88
91
|
oPromise = new Promise(function (fnResolve, fnReject) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
function send() {
|
|
93
|
+
const oAjaxSettings = {
|
|
94
|
+
method : "GET",
|
|
95
|
+
headers : mHeaders
|
|
96
|
+
};
|
|
97
|
+
if (bWithCredentials) {
|
|
98
|
+
oAjaxSettings.xhrFields = {withCredentials : true};
|
|
99
|
+
}
|
|
100
|
+
jQuery.ajax(bAnnotations ? sUrl : sUrl + sQuery, oAjaxSettings)
|
|
101
|
+
.then(function (oData, _sTextStatus, jqXHR) {
|
|
102
|
+
var sDate = jqXHR.getResponseHeader("Date"),
|
|
103
|
+
sETag = jqXHR.getResponseHeader("ETag"),
|
|
104
|
+
oJSON = {$XML : oData},
|
|
105
|
+
sLastModified = jqXHR.getResponseHeader("Last-Modified");
|
|
96
106
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
107
|
+
if (sDate) {
|
|
108
|
+
oJSON.$Date = sDate;
|
|
109
|
+
}
|
|
110
|
+
if (sETag) {
|
|
111
|
+
oJSON.$ETag = sETag;
|
|
112
|
+
}
|
|
113
|
+
if (sLastModified) {
|
|
114
|
+
oJSON.$LastModified = sLastModified;
|
|
115
|
+
}
|
|
116
|
+
fnResolve(oJSON);
|
|
117
|
+
}, function (jqXHR) {
|
|
118
|
+
var oError
|
|
119
|
+
= _Helper.createError(jqXHR, "Could not load metadata");
|
|
103
120
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
var oError = _Helper.createError(jqXHR, "Could not load metadata");
|
|
121
|
+
if (jqXHR.status === 503
|
|
122
|
+
&& jqXHR.getResponseHeader("Retry-After")
|
|
123
|
+
&& fnGetOrCreateRetryAfterPromise(oError)) {
|
|
124
|
+
fnGetOrCreateRetryAfterPromise().then(send, fnReject);
|
|
125
|
+
} else {
|
|
126
|
+
Log.error("GET " + sUrl, oError.message,
|
|
127
|
+
"sap.ui.model.odata.v4.lib._MetadataRequestor");
|
|
128
|
+
fnReject(oError);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
116
132
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
fnReject
|
|
120
|
-
}
|
|
133
|
+
const oRetryAfterPromise = fnGetOrCreateRetryAfterPromise();
|
|
134
|
+
if (oRetryAfterPromise) {
|
|
135
|
+
oRetryAfterPromise.then(send, fnReject);
|
|
136
|
+
} else {
|
|
137
|
+
send();
|
|
138
|
+
}
|
|
121
139
|
if (!bAnnotations
|
|
122
140
|
&& mQueryParams && "sap-context-token" in mQueryParams) {
|
|
123
141
|
delete mQueryParams["sap-context-token"];
|
|
@@ -91,7 +91,6 @@ sap.ui.define([
|
|
|
91
91
|
this.oModelInterface = oModelInterface;
|
|
92
92
|
this.oOptimisticBatch = null; // optimistic batch processing off
|
|
93
93
|
this.sQueryParams = _Helper.buildQuery(mQueryParams); // Used for $batch and CSRF token only
|
|
94
|
-
this.oRetryAfterPromise = null;
|
|
95
94
|
this.mRunningChangeRequests = {}; // map from group ID to a SyncPromise[]
|
|
96
95
|
this.iSessionTimer = 0;
|
|
97
96
|
this.iSerialNumber = 0;
|
|
@@ -2082,26 +2081,9 @@ sap.ui.define([
|
|
|
2082
2081
|
send(true);
|
|
2083
2082
|
}, fnReject);
|
|
2084
2083
|
} else if (jqXHR.status === 503 && jqXHR.getResponseHeader("Retry-After")
|
|
2085
|
-
&&
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
const oRetryAfterError = _Helper.createError(jqXHR, "");
|
|
2089
|
-
that.oRetryAfterPromise = that.oModelInterface.getRetryAfterHandler()(
|
|
2090
|
-
oRetryAfterError);
|
|
2091
|
-
that.oRetryAfterPromise.finally(() => {
|
|
2092
|
-
that.oRetryAfterPromise = null;
|
|
2093
|
-
}).catch(() => { /* catch is only needed due to finally */ });
|
|
2094
|
-
that.oRetryAfterPromise.catch((oError) => {
|
|
2095
|
-
// own error reason is not reported to the message model
|
|
2096
|
-
if (oError === oRetryAfterError) {
|
|
2097
|
-
that.oModelInterface
|
|
2098
|
-
.reportError(oError.message, sClassName, oError);
|
|
2099
|
-
} else {
|
|
2100
|
-
oError.$reported = true;
|
|
2101
|
-
}
|
|
2102
|
-
});
|
|
2103
|
-
}
|
|
2104
|
-
that.oRetryAfterPromise.then(send, fnReject);
|
|
2084
|
+
&& that.oModelInterface.getOrCreateRetryAfterPromise(
|
|
2085
|
+
_Helper.createError(jqXHR, ""))) {
|
|
2086
|
+
that.oModelInterface.getOrCreateRetryAfterPromise().then(send, fnReject);
|
|
2105
2087
|
} else {
|
|
2106
2088
|
sMessage = "Communication error";
|
|
2107
2089
|
if (sContextId) {
|
|
@@ -2121,8 +2103,9 @@ sap.ui.define([
|
|
|
2121
2103
|
});
|
|
2122
2104
|
}
|
|
2123
2105
|
|
|
2124
|
-
|
|
2125
|
-
|
|
2106
|
+
const oRetryAfterPromise = that.oModelInterface.getOrCreateRetryAfterPromise();
|
|
2107
|
+
if (oRetryAfterPromise) {
|
|
2108
|
+
oRetryAfterPromise.then(send, fnReject);
|
|
2126
2109
|
} else if (that.oSecurityTokenPromise && sMethod !== "GET") {
|
|
2127
2110
|
that.oSecurityTokenPromise.then(send);
|
|
2128
2111
|
} else {
|
|
@@ -2337,13 +2320,12 @@ sap.ui.define([
|
|
|
2337
2320
|
* @param {function} oModelInterface.getOptimisticBatchEnabler
|
|
2338
2321
|
* A function that returns a callback function which controls the optimistic batch handling,
|
|
2339
2322
|
* see also {@link sap.ui.model.odata.v4.ODataModel#setOptimisticBatchEnabler}
|
|
2323
|
+
* @param {function} oModelInterface.getOrCreateRetryAfterPromise
|
|
2324
|
+
* A function that returns or creates the "Retry-After" promise
|
|
2340
2325
|
* @param {function} oModelInterface.getReporter
|
|
2341
2326
|
* A catch handler function expecting an <code>Error</code> instance. This function will call
|
|
2342
2327
|
* {@link sap.ui.model.odata.v4.ODataModel#reportError} if the error has not been reported
|
|
2343
2328
|
* yet
|
|
2344
|
-
* @param {function} oModelInterface.getRetryAfterHandler
|
|
2345
|
-
* A function that returns the "Retry-After" handler,
|
|
2346
|
-
* see also {@link sap.ui.model.odata.v4.ODataModel#setRetryAfterHandler}
|
|
2347
2329
|
* @param {function():boolean} oModelInterface.isIgnoreETag
|
|
2348
2330
|
* Tells whether an entity's ETag should be actively ignored (If-Match:*) for PATCH requests.
|
|
2349
2331
|
* @param {function} oModelInterface.onCreateGroup
|
|
@@ -227,7 +227,7 @@ sap.ui.define([
|
|
|
227
227
|
*
|
|
228
228
|
* @extends sap.ui.model.Model
|
|
229
229
|
* @public
|
|
230
|
-
* @version 1.
|
|
230
|
+
* @version 1.131.0
|
|
231
231
|
*/
|
|
232
232
|
var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
|
|
233
233
|
|
|
@@ -27,7 +27,7 @@ sap.ui.define([
|
|
|
27
27
|
* @extends sap.ui.model.SimpleType
|
|
28
28
|
*
|
|
29
29
|
* @author SAP SE
|
|
30
|
-
* @version 1.
|
|
30
|
+
* @version 1.131.0
|
|
31
31
|
*
|
|
32
32
|
* @public
|
|
33
33
|
* @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.131.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.131.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(['./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.131.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.131.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}.
|
|
@@ -785,7 +785,7 @@ sap.ui.define(
|
|
|
785
785
|
* Executes the definition on the given or previously defined Opa5 instance.
|
|
786
786
|
*
|
|
787
787
|
* @param {sap.ui.test.Opa5} [oOpaInstance] the Opa5 instance to call {@link sap.ui.test.Opa5#waitFor} on
|
|
788
|
-
* @returns {sap.ui.test.Opa5
|
|
788
|
+
* @returns {sap.ui.test.Opa5} an object extending a jQuery promise, corresponding to the result of {@link sap.ui.test.Opa5#waitFor}
|
|
789
789
|
* @public
|
|
790
790
|
*/
|
|
791
791
|
OpaBuilder.prototype.execute = function (oOpaInstance) {
|
|
@@ -193,6 +193,27 @@ sap.ui.define([
|
|
|
193
193
|
}
|
|
194
194
|
});
|
|
195
195
|
|
|
196
|
+
const fnOriginalWithResolvers = OriginalPromise.withResolvers;
|
|
197
|
+
WrappedPromise.withResolvers = function () {
|
|
198
|
+
const { promise, resolve, reject, ...rest } = fnOriginalWithResolvers.apply(this, arguments);
|
|
199
|
+
const mPendingPromise = _trackPromise(""); // withResolvers API does not take any arguments
|
|
200
|
+
const fnWrappedResolve = function wrappedResolve () {
|
|
201
|
+
_untrackPromise(mPendingPromise);
|
|
202
|
+
resolve.apply(this, arguments);
|
|
203
|
+
};
|
|
204
|
+
const fnWrappedReject = function wrappedReject() {
|
|
205
|
+
_untrackPromise(mPendingPromise);
|
|
206
|
+
reject.apply(this, arguments);
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
return {
|
|
210
|
+
promise,
|
|
211
|
+
resolve: fnWrappedResolve,
|
|
212
|
+
reject: fnWrappedReject,
|
|
213
|
+
...rest
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
|
|
196
217
|
// overwrite the global Promise object
|
|
197
218
|
window.Promise = WrappedPromise;
|
|
198
219
|
|
|
@@ -32,7 +32,14 @@ sap.ui.define([
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
function getDefaultSuiteName() {
|
|
35
|
-
var sName = sap.ui.loader._.guessResourceName(location.href);
|
|
35
|
+
var sName = sap.ui.loader._.guessResourceName(window.location.href);
|
|
36
|
+
|
|
37
|
+
// special handling for karma runner: paths starting with /base/test/ should be /base/test-resources/
|
|
38
|
+
if ( sName == null && window.location.pathname.startsWith("/base/test/") ) {
|
|
39
|
+
const altPath = window.location.origin + window.location.pathname.replace("/base/test/", "/base/test-resources/");
|
|
40
|
+
sName = sap.ui.loader._.guessResourceName(altPath);
|
|
41
|
+
}
|
|
42
|
+
|
|
36
43
|
return sName ? sName.replace(/\.html$/, "") : null;
|
|
37
44
|
}
|
|
38
45
|
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
|
|
135
135
|
render(sLinkHTML).then(function() {
|
|
136
136
|
// Note: we use a 0.1 second timer resolution so that the blocking div disappears quickly
|
|
137
|
-
var count = 10 * (parseInt(utils.getAttribute("data-sap-ui-delay")) ||
|
|
137
|
+
var count = 10 * (parseInt(utils.getAttribute("data-sap-ui-delay")) || -1) + 9;
|
|
138
138
|
|
|
139
139
|
function countDown() {
|
|
140
140
|
if ( count === 6 ) {
|