@openui5/sap.ui.core 1.114.2 → 1.114.4
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/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/config.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/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +4 -4
- 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 +1 -1
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- 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 +12 -18
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/Core.js +4 -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 +1 -1
- 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/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/IconPool.js +1 -2
- 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 +1 -1
- package/src/sap/ui/core/Manifest.js +1 -1
- package/src/sap/ui/core/Message.js +1 -1
- 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/SeparatorItem.js +1 -1
- package/src/sap/ui/core/Shortcut.js +11 -9
- 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 +83 -11
- 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/format/DateFormat.js +4 -0
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +3 -3
- 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/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +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/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/themes/base/Icon.less +2 -2
- package/src/sap/ui/core/theming/ThemeHelper.js +103 -0
- package/src/sap/ui/core/theming/ThemeManager.js +2 -1
- 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/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/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/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/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.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 +1 -1
- 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/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +3 -3
- package/src/sap/ui/model/odata/v4/ODataBinding.js +65 -38
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +5 -4
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +7 -6
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +8 -9
- package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +58 -27
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +5 -5
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +11 -7
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +5 -1
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +4 -4
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
- 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/generic/TestBase.js +1 -1
- package/src/sap/ui/util/Mobile.js +10 -6
- package/src/sap/ui/util/Storage.js +1 -1
|
@@ -31,6 +31,7 @@ sap.ui.define([
|
|
|
31
31
|
this.mAggregatedQueryOptions = {};
|
|
32
32
|
// whether the aggregated query options are processed the first time
|
|
33
33
|
this.bAggregatedQueryOptionsInitial = true;
|
|
34
|
+
this.mCanUseCachePromiseByChildPath = {};
|
|
34
35
|
// auto-$expand/$select: promises to wait until child bindings have provided
|
|
35
36
|
// their path and query options
|
|
36
37
|
this.aChildCanUseCachePromises = [];
|
|
@@ -215,7 +216,7 @@ sap.ui.define([
|
|
|
215
216
|
* @param {object} mQueryOptions - The query options to be merged
|
|
216
217
|
* @param {string} sBaseMetaPath - This binding's meta path
|
|
217
218
|
* @param {boolean} bCacheImmutable - Whether the cache of this binding is immutable
|
|
218
|
-
* @param {boolean} bIsProperty - Whether the child is a property binding
|
|
219
|
+
* @param {boolean} [bIsProperty] - Whether the child is a property binding
|
|
219
220
|
* @returns {boolean} Whether the query options can be fulfilled by this binding
|
|
220
221
|
*
|
|
221
222
|
* @private
|
|
@@ -229,14 +230,19 @@ sap.ui.define([
|
|
|
229
230
|
/*
|
|
230
231
|
* Recursively merges the given query options into the given aggregated query options.
|
|
231
232
|
*
|
|
232
|
-
* @param {object} mAggregatedQueryOptions
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
* @param {
|
|
237
|
-
*
|
|
238
|
-
*
|
|
239
|
-
*
|
|
233
|
+
* @param {object} mAggregatedQueryOptions
|
|
234
|
+
* The aggregated query options
|
|
235
|
+
* @param {object} mQueryOptions0
|
|
236
|
+
* The query options to merge into the aggregated query options
|
|
237
|
+
* @param {string} [sMetaPath]
|
|
238
|
+
* The meta path for the current $expand (only used if cache is immutable)
|
|
239
|
+
* @param {boolean} [bInsideExpand]
|
|
240
|
+
* Whether the given query options are inside a $expand
|
|
241
|
+
* @param {boolean} [bAdd]
|
|
242
|
+
* Whether to add the given query options because they are in a $expand that has not been
|
|
243
|
+
* aggregated yet
|
|
244
|
+
* @returns {boolean}
|
|
245
|
+
* Whether the query options can be fulfilled by this binding
|
|
240
246
|
*/
|
|
241
247
|
function merge(mAggregatedQueryOptions, mQueryOptions0, sMetaPath, bInsideExpand, bAdd) {
|
|
242
248
|
/*
|
|
@@ -306,10 +312,13 @@ sap.ui.define([
|
|
|
306
312
|
}
|
|
307
313
|
|
|
308
314
|
if (merge(mAggregatedQueryOptionsClone, mQueryOptions, sBaseMetaPath)) {
|
|
309
|
-
if (
|
|
310
|
-
this.mAggregatedQueryOptions = mAggregatedQueryOptionsClone;
|
|
311
|
-
} else {
|
|
315
|
+
if (bCacheImmutable) {
|
|
312
316
|
this.mLateQueryOptions = mAggregatedQueryOptionsClone;
|
|
317
|
+
} else {
|
|
318
|
+
this.mAggregatedQueryOptions = mAggregatedQueryOptionsClone;
|
|
319
|
+
if (this.mLateQueryOptions) {
|
|
320
|
+
merge(this.mLateQueryOptions, mQueryOptions);
|
|
321
|
+
}
|
|
313
322
|
}
|
|
314
323
|
return true;
|
|
315
324
|
}
|
|
@@ -704,14 +713,14 @@ sap.ui.define([
|
|
|
704
713
|
* @param {sap.ui.model.odata.v4.Context} oContext
|
|
705
714
|
* A context of this binding which is the direct or indirect parent of the child binding.
|
|
706
715
|
* Initially it is the child binding's parent context (See
|
|
707
|
-
* {@link sap.ui.model.odata.v4.ODataBinding#
|
|
708
|
-
* delegates up to its parent binding, it passes its own parent context adjusting
|
|
716
|
+
* {@link sap.ui.model.odata.v4.ODataBinding#fetchOrGetQueryOptionsForOwnCache}). When a
|
|
717
|
+
* binding delegates up to its parent binding, it passes its own parent context adjusting
|
|
709
718
|
* <code>sChildPath</code> accordingly.
|
|
710
719
|
* @param {string} sChildPath
|
|
711
720
|
* The child binding's binding path relative to <code>oContext</code>
|
|
712
|
-
* @param {object|sap.ui.base.SyncPromise} vChildQueryOptions
|
|
713
|
-
* The child binding's (aggregated) query options or a promise resolving with them
|
|
714
|
-
* @param {boolean} bIsProperty
|
|
721
|
+
* @param {object|sap.ui.base.SyncPromise} [vChildQueryOptions={}]
|
|
722
|
+
* The child binding's (aggregated) query options (if any) or a promise resolving with them
|
|
723
|
+
* @param {boolean} [bIsProperty]
|
|
715
724
|
* Whether the child is a property binding
|
|
716
725
|
* @returns {sap.ui.base.SyncPromise}
|
|
717
726
|
* A promise resolved with the reduced path for the child binding if the child binding can use
|
|
@@ -726,7 +735,7 @@ sap.ui.define([
|
|
|
726
735
|
// getBaseForPathReduction must be called early, because the (virtual) parent context may be
|
|
727
736
|
// lost again when the path is needed
|
|
728
737
|
var sBaseForPathReduction = this.getBaseForPathReduction(),
|
|
729
|
-
sBaseMetaPath
|
|
738
|
+
sBaseMetaPath,
|
|
730
739
|
bCacheImmutable,
|
|
731
740
|
oCanUseCachePromise,
|
|
732
741
|
// whether this binding is an operation or depends on one
|
|
@@ -781,6 +790,23 @@ sap.ui.define([
|
|
|
781
790
|
return SyncPromise.resolve(sResolvedChildPath);
|
|
782
791
|
}
|
|
783
792
|
|
|
793
|
+
oCanUseCachePromise = this.mCanUseCachePromiseByChildPath[sChildPath];
|
|
794
|
+
if (oCanUseCachePromise && bIsProperty) {
|
|
795
|
+
return oCanUseCachePromise.then(function (sOldReducedPath) {
|
|
796
|
+
if (!sOldReducedPath) {
|
|
797
|
+
return undefined;
|
|
798
|
+
}
|
|
799
|
+
// Note: sResolvedChildPath could be "/SalesOrderList('42')/SO_2_SOITEM/0/Note"
|
|
800
|
+
// w/ index (thus getMetaPath helps), but getStrippedMetaPath makes no difference
|
|
801
|
+
if (!sChildPath.includes("/")
|
|
802
|
+
|| _Helper.getMetaPath(sOldReducedPath)
|
|
803
|
+
=== _Helper.getMetaPath(sResolvedChildPath)) {
|
|
804
|
+
return sResolvedChildPath;
|
|
805
|
+
}
|
|
806
|
+
return oMetaModel.getReducedPath(sResolvedChildPath, sBaseForPathReduction);
|
|
807
|
+
});
|
|
808
|
+
}
|
|
809
|
+
|
|
784
810
|
// Note: this.oCachePromise exists for all bindings except operation bindings; it might
|
|
785
811
|
// become pending again
|
|
786
812
|
bCacheImmutable = this.oCachePromise.isRejected()
|
|
@@ -788,16 +814,17 @@ sap.ui.define([
|
|
|
788
814
|
|| oContext.isKeepAlive() // kept-alive contexts have no index when not in aContexts
|
|
789
815
|
|| this.oCache === null
|
|
790
816
|
|| this.oCache && this.oCache.hasSentRequest();
|
|
817
|
+
sBaseMetaPath = _Helper.getMetaPath(oContext.getPath());
|
|
791
818
|
aPromises = [
|
|
792
|
-
this.
|
|
819
|
+
this.doFetchOrGetQueryOptions(this.oContext),
|
|
793
820
|
// After access to complete meta path of property, the metadata of all prefix paths
|
|
794
821
|
// is loaded so that synchronous access in wrapChildQueryOptions via getObject is
|
|
795
|
-
// possible
|
|
822
|
+
// possible - as well as #getReducedPath
|
|
796
823
|
fetchPropertyAndType(),
|
|
797
824
|
vChildQueryOptions
|
|
798
825
|
];
|
|
799
826
|
oCanUseCachePromise = SyncPromise.all(aPromises).then(function (aResult) {
|
|
800
|
-
var mChildQueryOptions = aResult[2],
|
|
827
|
+
var mChildQueryOptions = aResult[2] || {},
|
|
801
828
|
mWrappedChildQueryOptions,
|
|
802
829
|
mLocalQueryOptions = aResult[0],
|
|
803
830
|
oProperty = aResult[1],
|
|
@@ -818,7 +845,7 @@ sap.ui.define([
|
|
|
818
845
|
that.bHasPathReductionToParent = true;
|
|
819
846
|
return that.oContext.getBinding().fetchIfChildCanUseCache(that.oContext,
|
|
820
847
|
_Helper.getRelativePath(sResolvedChildPath, that.oContext.getPath()),
|
|
821
|
-
|
|
848
|
+
mChildQueryOptions, bIsProperty);
|
|
822
849
|
}
|
|
823
850
|
|
|
824
851
|
if (bDependsOnOperation || sReducedChildMetaPath === "$count"
|
|
@@ -867,8 +894,8 @@ sap.ui.define([
|
|
|
867
894
|
if (that.oCache) {
|
|
868
895
|
that.oCache.setLateQueryOptions(that.mLateQueryOptions);
|
|
869
896
|
} else if (that.oCache === null) {
|
|
870
|
-
return that.oContext.getBinding()
|
|
871
|
-
that.sPath,
|
|
897
|
+
return that.oContext.getBinding()
|
|
898
|
+
.fetchIfChildCanUseCache(that.oContext, that.sPath, that.mLateQueryOptions)
|
|
872
899
|
.then(function (sPath) {
|
|
873
900
|
return sPath && sReducedPath;
|
|
874
901
|
});
|
|
@@ -876,6 +903,9 @@ sap.ui.define([
|
|
|
876
903
|
}
|
|
877
904
|
return sReducedPath;
|
|
878
905
|
});
|
|
906
|
+
if (bIsProperty && !oContext.getPath().includes("($uid=")) {
|
|
907
|
+
this.mCanUseCachePromiseByChildPath[sChildPath] = oCanUseCachePromise;
|
|
908
|
+
}
|
|
879
909
|
this.aChildCanUseCachePromises.push(oCanUseCachePromise);
|
|
880
910
|
this.oCachePromise = SyncPromise.all([this.oCachePromise, oCanUseCachePromise])
|
|
881
911
|
.then(function (aResult) {
|
|
@@ -901,6 +931,7 @@ sap.ui.define([
|
|
|
901
931
|
that.oModel.reportError(that + ": Failed to enhance query options for "
|
|
902
932
|
+ "auto-$expand/$select for child " + sChildPath, sClassName, oError);
|
|
903
933
|
});
|
|
934
|
+
|
|
904
935
|
return oCanUseCachePromise;
|
|
905
936
|
};
|
|
906
937
|
|
|
@@ -1024,7 +1055,7 @@ sap.ui.define([
|
|
|
1024
1055
|
* @private
|
|
1025
1056
|
*/
|
|
1026
1057
|
ODataParentBinding.prototype.getQueryOptionsForPath = function (sPath, oContext) {
|
|
1027
|
-
if (
|
|
1058
|
+
if (!_Helper.isEmptyObject(this.mParameters)) {
|
|
1028
1059
|
// binding has parameters -> all query options need to be defined at the binding
|
|
1029
1060
|
return _Helper.getQueryOptionsForPath(this.getQueryOptionsFromParameters(), sPath);
|
|
1030
1061
|
}
|
|
@@ -1053,8 +1084,8 @@ sap.ui.define([
|
|
|
1053
1084
|
* @function
|
|
1054
1085
|
* @name sap.ui.model.odata.v4.ODataParentBinding.getQueryOptionsFromParameters
|
|
1055
1086
|
* @private
|
|
1056
|
-
* @see sap.ui.model.odata.v4.ODataBinding#
|
|
1057
|
-
* @see sap.ui.model.odata.v4.ODataBinding#
|
|
1087
|
+
* @see sap.ui.model.odata.v4.ODataBinding#fetchOrGetQueryOptionsForOwnCache
|
|
1088
|
+
* @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
|
|
1058
1089
|
*/
|
|
1059
1090
|
|
|
1060
1091
|
/**
|
|
@@ -42,7 +42,7 @@ sap.ui.define([
|
|
|
42
42
|
* @mixes sap.ui.model.odata.v4.ODataBinding
|
|
43
43
|
* @public
|
|
44
44
|
* @since 1.37.0
|
|
45
|
-
* @version 1.114.
|
|
45
|
+
* @version 1.114.4
|
|
46
46
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
|
|
47
47
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
|
|
48
48
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
|
|
@@ -103,7 +103,7 @@ sap.ui.define([
|
|
|
103
103
|
this.mQueryOptions = this.oModel.buildQueryOptions(_Helper.clone(mParameters),
|
|
104
104
|
/*bSystemQueryOptionsAllowed*/sPath.endsWith("$count"));
|
|
105
105
|
this.vValue = undefined;
|
|
106
|
-
// BEWARE: #
|
|
106
|
+
// BEWARE: #doFetchOrGetQueryOptions uses #isRoot which relies on this.oContext!
|
|
107
107
|
this.fetchCache(oContext);
|
|
108
108
|
oModel.bindingCreated(this);
|
|
109
109
|
}
|
|
@@ -401,10 +401,10 @@ sap.ui.define([
|
|
|
401
401
|
|
|
402
402
|
/**
|
|
403
403
|
* @override
|
|
404
|
-
* @see sap.ui.model.odata.v4.ODataBinding#
|
|
404
|
+
* @see sap.ui.model.odata.v4.ODataBinding#doFetchOrGetQueryOptions
|
|
405
405
|
*/
|
|
406
|
-
ODataPropertyBinding.prototype.
|
|
407
|
-
return this.isRoot() ?
|
|
406
|
+
ODataPropertyBinding.prototype.doFetchOrGetQueryOptions = function () {
|
|
407
|
+
return this.isRoot() ? this.mQueryOptions : undefined;
|
|
408
408
|
};
|
|
409
409
|
|
|
410
410
|
/**
|
|
@@ -10,10 +10,9 @@ sap.ui.define([
|
|
|
10
10
|
"./_Helper",
|
|
11
11
|
"./_Requestor",
|
|
12
12
|
"sap/base/Log",
|
|
13
|
-
"sap/base/util/isEmptyObject",
|
|
14
13
|
"sap/ui/base/SyncPromise",
|
|
15
14
|
"sap/ui/model/odata/ODataUtils"
|
|
16
|
-
], function (_GroupLock, _Helper, _Requestor, Log,
|
|
15
|
+
], function (_GroupLock, _Helper, _Requestor, Log, SyncPromise, ODataUtils) {
|
|
17
16
|
"use strict";
|
|
18
17
|
/*eslint max-nested-callbacks: 0 */
|
|
19
18
|
|
|
@@ -1038,7 +1037,7 @@ sap.ui.define([
|
|
|
1038
1037
|
}
|
|
1039
1038
|
}
|
|
1040
1039
|
|
|
1041
|
-
if (!this.mLateQueryOptions) {
|
|
1040
|
+
if (!(this.mLateQueryOptions || this.mQueryOptions && this.mQueryOptions.$select)) {
|
|
1042
1041
|
return false; // no autoExpandSelect
|
|
1043
1042
|
}
|
|
1044
1043
|
|
|
@@ -1051,10 +1050,15 @@ sap.ui.define([
|
|
|
1051
1050
|
aUpdateProperties = [sRequestedPropertyPath];
|
|
1052
1051
|
|
|
1053
1052
|
sFullResourceMetaPath = _Helper.buildPath(this.sMetaPath, sResourceMetaPath);
|
|
1053
|
+
mQueryOptions = this.mLateQueryOptions
|
|
1054
|
+
|| { // ensure that $select precedes $expand in the resulting query
|
|
1055
|
+
$select : this.mQueryOptions.$select,
|
|
1056
|
+
$expand : this.mQueryOptions.$expand
|
|
1057
|
+
};
|
|
1054
1058
|
// sRequestedPropertyPath is also a metapath because the binding does not accept a path with
|
|
1055
1059
|
// a collection-valued navigation property for a late property
|
|
1056
1060
|
mQueryOptions = _Helper.intersectQueryOptions(
|
|
1057
|
-
_Helper.getQueryOptionsForPath(
|
|
1061
|
+
_Helper.getQueryOptionsForPath(mQueryOptions, sResourcePath),
|
|
1058
1062
|
[sRequestedPropertyPath], this.oRequestor.getModelInterface().fetchMetadata,
|
|
1059
1063
|
sFullResourceMetaPath);
|
|
1060
1064
|
if (!mQueryOptions) {
|
|
@@ -1327,7 +1331,7 @@ sap.ui.define([
|
|
|
1327
1331
|
/**
|
|
1328
1332
|
* Returns this cache's query options.
|
|
1329
1333
|
*
|
|
1330
|
-
* @returns {object} The query options
|
|
1334
|
+
* @returns {object|undefined} The query options, if any
|
|
1331
1335
|
*
|
|
1332
1336
|
* @public
|
|
1333
1337
|
* @see #setQueryOptions
|
|
@@ -1373,7 +1377,7 @@ sap.ui.define([
|
|
|
1373
1377
|
* @see #registerChangeListener
|
|
1374
1378
|
*/
|
|
1375
1379
|
_Cache.prototype.hasChangeListeners = function () {
|
|
1376
|
-
return !isEmptyObject(this.mChangeListeners);
|
|
1380
|
+
return !_Helper.isEmptyObject(this.mChangeListeners);
|
|
1377
1381
|
};
|
|
1378
1382
|
|
|
1379
1383
|
/**
|
|
@@ -4071,7 +4075,7 @@ sap.ui.define([
|
|
|
4071
4075
|
if (oData) {
|
|
4072
4076
|
sHttpMethod = oData["X-HTTP-Method"] || sHttpMethod;
|
|
4073
4077
|
delete oData["X-HTTP-Method"];
|
|
4074
|
-
if (this.oRequestor.isActionBodyOptional() &&
|
|
4078
|
+
if (this.oRequestor.isActionBodyOptional() && _Helper.isEmptyObject(oData)) {
|
|
4075
4079
|
oData = undefined;
|
|
4076
4080
|
}
|
|
4077
4081
|
}
|
|
@@ -1840,6 +1840,10 @@ sap.ui.define([
|
|
|
1840
1840
|
&& !mParameters.$$aggregation.hierarchyQualifier;
|
|
1841
1841
|
},
|
|
1842
1842
|
|
|
1843
|
+
// Trampoline property to allow for mocking function module in unit tests.
|
|
1844
|
+
// @see sap.base.util.isEmptyObject
|
|
1845
|
+
isEmptyObject : isEmptyObject,
|
|
1846
|
+
|
|
1843
1847
|
/**
|
|
1844
1848
|
* Returns whether the given property is missing in vEntityOrCollection. This is the case if
|
|
1845
1849
|
* there is no value for it. It is not missing if a parent has a <code>null</code> value. In
|
|
@@ -2726,7 +2730,7 @@ sap.ui.define([
|
|
|
2726
2730
|
}
|
|
2727
2731
|
}
|
|
2728
2732
|
if (!oProperty || oProperty.$kind === "Property") {
|
|
2729
|
-
if (
|
|
2733
|
+
if (!isEmptyObject(mChildQueryOptions)) {
|
|
2730
2734
|
Log.error("Failed to enhance query options for auto-$expand/$select as the"
|
|
2731
2735
|
+ " child binding has query options, but its path '" + sChildMetaPath
|
|
2732
2736
|
+ "' points to a structural property",
|
|
@@ -486,7 +486,7 @@ sap.ui.define([
|
|
|
486
486
|
_Requestor.prototype.checkForOpenRequests = function () {
|
|
487
487
|
var that = this;
|
|
488
488
|
|
|
489
|
-
if (
|
|
489
|
+
if (!_Helper.isEmptyObject(this.mRunningChangeRequests) // running change requests
|
|
490
490
|
|| Object.keys(this.mBatchQueue).some(function (sGroupId) { // pending requests
|
|
491
491
|
return that.mBatchQueue[sGroupId].some(function (vRequest) {
|
|
492
492
|
return Array.isArray(vRequest) ? vRequest.length : true;
|
|
@@ -611,7 +611,7 @@ sap.ui.define([
|
|
|
611
611
|
sClassName);
|
|
612
612
|
}
|
|
613
613
|
});
|
|
614
|
-
if (aResult.length
|
|
614
|
+
if (aResult.length) {
|
|
615
615
|
oSemantics.type = {EnumMember : aResult.join(" ")};
|
|
616
616
|
}
|
|
617
617
|
}
|
|
@@ -690,19 +690,19 @@ sap.ui.define([
|
|
|
690
690
|
sTarget = sEntityContainerName + "/" + sEntitySetName;
|
|
691
691
|
mAnnotations = _Helper.merge(this.convertedV2Annotations[sTarget] || {},
|
|
692
692
|
this.mEntityType2EntitySetAnnotation[oEntitySet.$Type]);
|
|
693
|
-
if (
|
|
693
|
+
if (!_Helper.isEmptyObject(mAnnotations)) {
|
|
694
694
|
this.convertedV2Annotations[sTarget] = mAnnotations;
|
|
695
695
|
}
|
|
696
696
|
}
|
|
697
697
|
}
|
|
698
698
|
|
|
699
699
|
if (this.bIgnoreAnnotations) {
|
|
700
|
-
if (
|
|
700
|
+
if (!_Helper.isEmptyObject(this.convertedV2Annotations)) {
|
|
701
701
|
this.schema.$Annotations = {};
|
|
702
702
|
}
|
|
703
703
|
} else if (this.schema.$Annotations) {
|
|
704
704
|
this.mergeAnnotations(this.convertedV2Annotations, this.schema.$Annotations);
|
|
705
|
-
} else if (
|
|
705
|
+
} else if (!_Helper.isEmptyObject(this.convertedV2Annotations)) {
|
|
706
706
|
this.schema.$Annotations = this.convertedV2Annotations;
|
|
707
707
|
}
|
|
708
708
|
this.convertedV2Annotations = {}; // reset schema annotations for next schema
|
|
@@ -763,7 +763,7 @@ sap.ui.define([
|
|
|
763
763
|
|
|
764
764
|
// only if all (nested) query options are processed, all selects are known
|
|
765
765
|
aSelects = Object.keys(mSelects);
|
|
766
|
-
if (aSelects.length
|
|
766
|
+
if (aSelects.length) {
|
|
767
767
|
if (!mQueryOptions.$select) {
|
|
768
768
|
aSelects.push("*");
|
|
769
769
|
}
|
|
@@ -229,7 +229,7 @@ sap.ui.define([
|
|
|
229
229
|
*
|
|
230
230
|
* @extends sap.ui.model.Model
|
|
231
231
|
* @public
|
|
232
|
-
* @version 1.114.
|
|
232
|
+
* @version 1.114.4
|
|
233
233
|
*/
|
|
234
234
|
var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
|
|
235
235
|
|
|
@@ -27,7 +27,7 @@ sap.ui.define([
|
|
|
27
27
|
* @extends sap.ui.model.SimpleType
|
|
28
28
|
*
|
|
29
29
|
* @author SAP SE
|
|
30
|
-
* @version 1.114.
|
|
30
|
+
* @version 1.114.4
|
|
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.114.
|
|
22
|
+
* @version 1.114.4
|
|
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.114.
|
|
22
|
+
* @version 1.114.4
|
|
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.114.
|
|
22
|
+
* @version 1.114.4
|
|
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.114.
|
|
22
|
+
* @version 1.114.4
|
|
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}.
|
|
@@ -105,6 +105,8 @@ sap.ui.define(['sap/ui/Device', 'sap/base/Log', 'sap/base/util/extend', 'sap/ui/
|
|
|
105
105
|
mobileWebAppCapable: "default"
|
|
106
106
|
}, options);
|
|
107
107
|
|
|
108
|
+
var bAppleMobileDevice = Device.os.ios || (Device.os.macintosh && Device.browser.mobile);
|
|
109
|
+
|
|
108
110
|
// en-/disable automatic link generation for phone numbers
|
|
109
111
|
if (options.preventPhoneNumberDetection) {
|
|
110
112
|
// iOS specific meta tag
|
|
@@ -126,15 +128,17 @@ sap.ui.define(['sap/ui/Device', 'sap/base/Log', 'sap/base/util/extend', 'sap/ui/
|
|
|
126
128
|
// UI) and auto zoom (browser zooms in the UI automatically under some circumtances, for example when an
|
|
127
129
|
// input gets the focus and the font-size of the input is less than 16px on iOS) functionalities on the
|
|
128
130
|
// mobile platform, but there's some difference between the mobile platforms:
|
|
129
|
-
// *
|
|
130
|
-
//
|
|
131
|
-
//
|
|
131
|
+
// * Apple mobile device: This does not disable manual zoom in Safari and it only disables the auto
|
|
132
|
+
// zoom function. In Chrome browser on iOS, it does disable the manual zoom but since Chrome on iOS
|
|
133
|
+
// isn't in the support matrix, we can ignore this. The "Request Desktop Website" is turned on by
|
|
134
|
+
// default on iPad, therefore we need to check the (macintosh + touch) combination to detect the iPad
|
|
135
|
+
// with "Request Desktop Website" turned on to disable the auto zoom.
|
|
132
136
|
// * other mobile platform: it does disable the manual zoom option but there's no auto zoom function.
|
|
133
|
-
//
|
|
137
|
+
// So we need to remove the maximum-scale=1.0:
|
|
134
138
|
//
|
|
135
139
|
// Therefore we need to add the additional settings (maximum-scale and user-scalable) only for iOS
|
|
136
140
|
// platform
|
|
137
|
-
if (
|
|
141
|
+
if (bAppleMobileDevice) {
|
|
138
142
|
sMeta += ", maximum-scale=1.0, user-scalable=no";
|
|
139
143
|
}
|
|
140
144
|
|
|
@@ -155,7 +159,7 @@ sap.ui.define(['sap/ui/Device', 'sap/base/Log', 'sap/base/util/extend', 'sap/ui/
|
|
|
155
159
|
});
|
|
156
160
|
}
|
|
157
161
|
|
|
158
|
-
if (options.preventScroll &&
|
|
162
|
+
if (options.preventScroll && bAppleMobileDevice) {
|
|
159
163
|
_ready().then(function() {
|
|
160
164
|
document.documentElement.style.position = "fixed";
|
|
161
165
|
document.documentElement.style.overflow = "hidden";
|