@openui5/sap.ui.core 1.110.0 → 1.111.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +1 -0
- 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/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 +2 -2
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +58 -50
- 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 +4 -1
- package/src/sap/ui/core/Control.js +19 -7
- package/src/sap/ui/core/Core.js +2 -1
- 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 +98 -3
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +16 -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 +10 -6
- 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 +12 -11
- 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/Patcher.js +35 -0
- package/src/sap/ui/core/Popup.js +1 -0
- package/src/sap/ui/core/RenderManager.js +286 -156
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +2 -2
- 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 +36 -4
- 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/cache/CacheManager.js +1 -1
- package/src/sap/ui/core/date/UI5Date.js +970 -0
- package/src/sap/ui/core/date/UniversalDate.js +803 -39
- package/src/sap/ui/core/date/UniversalDateUtils.js +170 -14
- 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/DragAndDrop.js +26 -15
- 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 +5 -8
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/format/DateFormat.js +39 -29
- package/src/sap/ui/core/format/FileSizeFormat.js +1 -0
- package/src/sap/ui/core/format/ListFormat.js +1 -0
- package/src/sap/ui/core/format/NumberFormat.js +31 -56
- package/src/sap/ui/core/format/TimezoneUtil.js +9 -7
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +22 -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/routing/Router.js +4 -3
- 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 +14 -20
- 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/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/XMLPreprocessor.js +1 -0
- 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 +2 -1
- package/src/sap/ui/debug/ControlTree.js +1 -1
- package/src/sap/ui/debug/DebugEnv.js +1 -1
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/dom/isBehindOtherElement.js +11 -3
- 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 -11
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +5 -1
- package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +29 -15
- 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 +2 -2
- 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 +57 -21
- package/src/sap/ui/model/odata/type/DateTime.js +32 -3
- package/src/sap/ui/model/odata/type/DateTimeBase.js +62 -25
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +35 -5
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +6 -5
- 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 +37 -2
- package/src/sap/ui/model/odata/type/TimeOfDay.js +39 -4
- 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/ODataContextBinding.js +1 -0
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +11 -1
- package/src/sap/ui/model/odata/v2/ODataModel.js +4 -2
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +98 -23
- package/src/sap/ui/model/odata/v4/ODataBinding.js +39 -9
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +4 -4
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +57 -21
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +3 -4
- package/src/sap/ui/model/odata/v4/ODataModel.js +33 -8
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +15 -12
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +2 -2
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +43 -8
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +92 -28
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +74 -24
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +14 -3
- package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +12 -4
- package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +8 -3
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +22 -14
- package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +8 -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 +190 -155
- 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/qunit/utils/waitForThemeApplied.js +4 -5
- package/src/sap/ui/test/generic/TestBase.js +3 -3
- package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +4 -4
- package/src/sap/ui/thirdparty/jquery-mobile-custom.js +9 -1
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader-autoconfig.js +14 -11
- package/src/ui5loader.js +152 -3
|
@@ -24,8 +24,8 @@ sap.ui.define([
|
|
|
24
24
|
* @author SAP SE
|
|
25
25
|
* @class Implementation of an OData V4 model's context.
|
|
26
26
|
*
|
|
27
|
-
* The context is a pointer to model data as returned by a query from
|
|
28
|
-
* {@link sap.ui.model.odata.v4.ODataContextBinding} or
|
|
27
|
+
* The context is a pointer to model data as returned by a query from an
|
|
28
|
+
* {@link sap.ui.model.odata.v4.ODataContextBinding} or an
|
|
29
29
|
* {@link sap.ui.model.odata.v4.ODataListBinding}. Contexts are always and only
|
|
30
30
|
* created by such bindings. A context for a context binding points to the complete query
|
|
31
31
|
* result. A context for a list binding points to one specific entry in the binding's
|
|
@@ -42,7 +42,7 @@ sap.ui.define([
|
|
|
42
42
|
* @hideconstructor
|
|
43
43
|
* @public
|
|
44
44
|
* @since 1.39.0
|
|
45
|
-
* @version 1.
|
|
45
|
+
* @version 1.111.1
|
|
46
46
|
*/
|
|
47
47
|
Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
|
|
48
48
|
constructor : constructor
|
|
@@ -98,6 +98,7 @@ sap.ui.define([
|
|
|
98
98
|
this.bInactive = bInactive || undefined; // be in sync with the annotation
|
|
99
99
|
this.iIndex = iIndex;
|
|
100
100
|
this.bKeepAlive = false;
|
|
101
|
+
this.bSelected = false;
|
|
101
102
|
this.fnOnBeforeDestroy = undefined;
|
|
102
103
|
}
|
|
103
104
|
|
|
@@ -353,9 +354,11 @@ sap.ui.define([
|
|
|
353
354
|
});
|
|
354
355
|
this.oBinding = undefined;
|
|
355
356
|
this.oCreatedPromise = undefined;
|
|
357
|
+
// keep oDeletePromise so that isDeleted does not unexpectedly become false
|
|
356
358
|
this.oSyncCreatePromise = undefined;
|
|
357
359
|
this.bInactive = undefined;
|
|
358
360
|
this.bKeepAlive = undefined;
|
|
361
|
+
this.bSelected = false;
|
|
359
362
|
// When removing oModel, ManagedObject#getBindingContext does not return the destroyed
|
|
360
363
|
// context although the control still refers to it
|
|
361
364
|
this.oModel = undefined;
|
|
@@ -452,7 +455,7 @@ sap.ui.define([
|
|
|
452
455
|
if (oGroupLock) {
|
|
453
456
|
oGroupLock.unlock();
|
|
454
457
|
}
|
|
455
|
-
throw new Error("
|
|
458
|
+
throw new Error("Must not modify a deleted entity: " + this);
|
|
456
459
|
}
|
|
457
460
|
if (oGroupLock && this.isTransient() && !this.isInactive()) {
|
|
458
461
|
oValue = this.getValue();
|
|
@@ -964,8 +967,8 @@ sap.ui.define([
|
|
|
964
967
|
|| this.getBinding().hasPendingChangesForPath(this.sPath)
|
|
965
968
|
|| this.oModel.getDependentBindings(this).some(function (oDependentBinding) {
|
|
966
969
|
return oDependentBinding.oCache
|
|
967
|
-
? oDependentBinding.
|
|
968
|
-
: oDependentBinding.hasPendingChangesInDependents();
|
|
970
|
+
? oDependentBinding._hasPendingChanges(false, true)
|
|
971
|
+
: oDependentBinding.hasPendingChangesInDependents(false, true);
|
|
969
972
|
})
|
|
970
973
|
|| this.oModel.withUnresolvedBindings("hasPendingChangesInCaches", this.sPath.slice(1));
|
|
971
974
|
};
|
|
@@ -1048,6 +1051,19 @@ sap.ui.define([
|
|
|
1048
1051
|
return this.bKeepAlive;
|
|
1049
1052
|
};
|
|
1050
1053
|
|
|
1054
|
+
/**
|
|
1055
|
+
* Tells whether this context is currently selected.
|
|
1056
|
+
*
|
|
1057
|
+
* @returns {boolean} Whether this context is currently selected
|
|
1058
|
+
*
|
|
1059
|
+
* @experimental As of version 1.111.0
|
|
1060
|
+
* @public
|
|
1061
|
+
* @see #setSelected
|
|
1062
|
+
*/
|
|
1063
|
+
Context.prototype.isSelected = function () {
|
|
1064
|
+
return this.bSelected;
|
|
1065
|
+
};
|
|
1066
|
+
|
|
1051
1067
|
/**
|
|
1052
1068
|
* For a context created using {@link sap.ui.model.odata.v4.ODataListBinding#create}, the
|
|
1053
1069
|
* method returns <code>true</code> if the context is transient, meaning that the promise
|
|
@@ -1394,6 +1410,12 @@ sap.ui.define([
|
|
|
1394
1410
|
* container (example "/com.sap.gateway.default.iwbep.tea_busi.v0001.Container/TEAMS") of the
|
|
1395
1411
|
* service. All (navigation) properties in the complete model matching such an absolute path
|
|
1396
1412
|
* are updated. Since 1.85.0, "14.4.11 Expression edm:String" is accepted as well.
|
|
1413
|
+
*
|
|
1414
|
+
* Since 1.108.8, a property path matching the "com.sap.vocabularies.Common.v1.Messages"
|
|
1415
|
+
* annotation of a list binding's entity type is treated specially for a row context of a list
|
|
1416
|
+
* binding: It is loaded even if it has not yet been requested by that list binding. This way,
|
|
1417
|
+
* exactly the messages for a single row can be updated. Same for a "*" segment or an empty
|
|
1418
|
+
* navigation property path.
|
|
1397
1419
|
* @param {string} [sGroupId]
|
|
1398
1420
|
* The group ID to be used (since 1.69.0); if not specified, the update group ID for the
|
|
1399
1421
|
* context's binding is used, see {@link #getUpdateGroupId}. If a different group ID is
|
|
@@ -1552,7 +1574,7 @@ sap.ui.define([
|
|
|
1552
1574
|
* The absolute paths to request side effects for
|
|
1553
1575
|
* @param {string} sGroupId
|
|
1554
1576
|
* The effective group ID
|
|
1555
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
1577
|
+
* @returns {sap.ui.base.SyncPromise|undefined}
|
|
1556
1578
|
* A promise resolving without a defined result, or rejecting with an error if loading of side
|
|
1557
1579
|
* effects fails, or <code>undefined</code> if there is nothing to do
|
|
1558
1580
|
*
|
|
@@ -1618,27 +1640,31 @@ sap.ui.define([
|
|
|
1618
1640
|
};
|
|
1619
1641
|
|
|
1620
1642
|
/**
|
|
1621
|
-
* Resets all
|
|
1622
|
-
* invalid user input
|
|
1623
|
-
*
|
|
1643
|
+
* Resets all property changes, created entities, and entity deletions of this context. Resets
|
|
1644
|
+
* also invalid user input and inactive contexts which had their activation prevented (see
|
|
1645
|
+
* {@link sap.ui.model.odata.v4.Context#isInactive}). This function does not reset the execution
|
|
1646
|
+
* of OData operations (see {@link sap.ui.model.odata.v4.ODataContextBinding#execute}). For a
|
|
1647
|
+
* context which is currently {@link #delete deleted} on the client, but not yet on the server,
|
|
1648
|
+
* this method cancels the deletion and restores the context.
|
|
1624
1649
|
*
|
|
1625
|
-
* Note: This is an experimental API. Currently only
|
|
1626
|
-
*
|
|
1650
|
+
* Note: This is an experimental API. Currently only row contexts of an
|
|
1651
|
+
* {@link sap.ui.model.odata.v4.ODataListBinding} are supported.
|
|
1627
1652
|
*
|
|
1628
1653
|
* @returns {Promise}
|
|
1629
1654
|
* A promise which is resolved without a defined result as soon as all changes in the context
|
|
1630
|
-
*
|
|
1655
|
+
* and its current dependent bindings are canceled
|
|
1631
1656
|
* @throws {Error} If
|
|
1632
1657
|
* <ul>
|
|
1633
1658
|
* <li> the binding's root binding is suspended,
|
|
1634
1659
|
* <li> a change of this context has already been sent to the server and there is no response
|
|
1635
1660
|
* yet,
|
|
1636
|
-
* <li> this context is transient but not inactive and therefore should rather be reset via
|
|
1661
|
+
* <li> this context is transient, but not inactive and therefore should rather be reset via
|
|
1637
1662
|
* {@link #delete}.
|
|
1638
1663
|
* </ul>
|
|
1639
1664
|
*
|
|
1640
1665
|
* @experimental As of version 1.109.0
|
|
1641
1666
|
* @public
|
|
1667
|
+
* @see #hasPendingChanges
|
|
1642
1668
|
*/
|
|
1643
1669
|
Context.prototype.resetChanges = function () {
|
|
1644
1670
|
var aPromises = this.oDeletePromise
|
|
@@ -1654,6 +1680,8 @@ sap.ui.define([
|
|
|
1654
1680
|
if (this.bInactive === 1) {
|
|
1655
1681
|
this.bInactive = true;
|
|
1656
1682
|
}
|
|
1683
|
+
this.oBinding.resetChangesInDependents(aPromises, true);
|
|
1684
|
+
|
|
1657
1685
|
return Promise.all(aPromises).then(function () {});
|
|
1658
1686
|
};
|
|
1659
1687
|
|
|
@@ -1668,15 +1696,20 @@ sap.ui.define([
|
|
|
1668
1696
|
};
|
|
1669
1697
|
|
|
1670
1698
|
/**
|
|
1671
|
-
* Sets
|
|
1672
|
-
*
|
|
1699
|
+
* Sets the inactive flag to <code>true</code>
|
|
1700
|
+
*
|
|
1701
|
+
* Note: this is a private and internal API. Do not call this!
|
|
1702
|
+
*
|
|
1703
|
+
* @throws {Error} - If this context is not inactive
|
|
1673
1704
|
*
|
|
1674
1705
|
* @private
|
|
1675
|
-
* @see #
|
|
1706
|
+
* @see #isInactive
|
|
1676
1707
|
*/
|
|
1677
|
-
Context.prototype.
|
|
1678
|
-
|
|
1679
|
-
|
|
1708
|
+
Context.prototype.setInactive = function () {
|
|
1709
|
+
if (!this.bInactive) {
|
|
1710
|
+
throw new Error("Not inactive: " + this.bInactive);
|
|
1711
|
+
}
|
|
1712
|
+
this.bInactive = true;
|
|
1680
1713
|
};
|
|
1681
1714
|
|
|
1682
1715
|
/**
|
|
@@ -1755,6 +1788,18 @@ sap.ui.define([
|
|
|
1755
1788
|
this.fnOnBeforeDestroy = bKeepAlive ? fnOnBeforeDestroy : undefined;
|
|
1756
1789
|
};
|
|
1757
1790
|
|
|
1791
|
+
/**
|
|
1792
|
+
* Sets a new unique number for this context's generation, just like
|
|
1793
|
+
* {@link sap.ui.model.odata.v4.Context.createNewContext} does for a new context.
|
|
1794
|
+
*
|
|
1795
|
+
* @private
|
|
1796
|
+
* @see #getGeneration
|
|
1797
|
+
*/
|
|
1798
|
+
Context.prototype.setNewGeneration = function () {
|
|
1799
|
+
iGenerationCounter += 1;
|
|
1800
|
+
this.iGeneration = iGenerationCounter;
|
|
1801
|
+
};
|
|
1802
|
+
|
|
1758
1803
|
/**
|
|
1759
1804
|
* Sets a new value for the property identified by the given path. The path is relative to this
|
|
1760
1805
|
* context and is expected to point to a structural property with primitive type or, since
|
|
@@ -1833,9 +1878,36 @@ sap.ui.define([
|
|
|
1833
1878
|
};
|
|
1834
1879
|
|
|
1835
1880
|
/**
|
|
1836
|
-
*
|
|
1837
|
-
*
|
|
1838
|
-
*
|
|
1881
|
+
* Determines whether this context is currently selected.
|
|
1882
|
+
*
|
|
1883
|
+
* @param {boolean} bSelected - Whether this context is currently selected
|
|
1884
|
+
* @throws {Error}
|
|
1885
|
+
* If this context does not belong to a list binding, or if it is {@link #isDeleted deleted}
|
|
1886
|
+
* and <code>bSelected</code> is <code>true</code>
|
|
1887
|
+
*
|
|
1888
|
+
* @experimental As of version 1.111.0
|
|
1889
|
+
* @public
|
|
1890
|
+
* @see #isSelected
|
|
1891
|
+
*/
|
|
1892
|
+
Context.prototype.setSelected = function (bSelected) {
|
|
1893
|
+
if (!this.oBinding.getHeaderContext) {
|
|
1894
|
+
throw new Error("Unsupported context: " + this);
|
|
1895
|
+
}
|
|
1896
|
+
if (bSelected && this.isDeleted()) {
|
|
1897
|
+
throw new Error("Must not select a deleted entity: " + this);
|
|
1898
|
+
}
|
|
1899
|
+
this.bSelected = bSelected;
|
|
1900
|
+
};
|
|
1901
|
+
|
|
1902
|
+
/**
|
|
1903
|
+
* Returns a string representation of this object including the following information:
|
|
1904
|
+
* <ul>
|
|
1905
|
+
* <li> {@link #getPath Binding path},
|
|
1906
|
+
* <li> {@link #getIndex Index},
|
|
1907
|
+
* <li> State (see also "Context states" of
|
|
1908
|
+
* {@link topic:c9723f8265f644af91c0ed941e114d46 Creating an Entity}), including whether
|
|
1909
|
+
* this context is {@link #isSelected selected}.
|
|
1910
|
+
* </ul>
|
|
1839
1911
|
*
|
|
1840
1912
|
* @returns {string} A string description of this binding
|
|
1841
1913
|
*
|
|
@@ -1869,6 +1941,9 @@ sap.ui.define([
|
|
|
1869
1941
|
// no default
|
|
1870
1942
|
}
|
|
1871
1943
|
}
|
|
1944
|
+
if (this.bSelected) {
|
|
1945
|
+
sSuffix += ";selected";
|
|
1946
|
+
}
|
|
1872
1947
|
sSuffix = "[" + this.iIndex + sSuffix + "]";
|
|
1873
1948
|
}
|
|
1874
1949
|
|
|
@@ -56,6 +56,28 @@ sap.ui.define([
|
|
|
56
56
|
this.sResumeChangeReason = undefined;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Returns <code>true</code> if this binding or its dependent bindings have changes.
|
|
61
|
+
*
|
|
62
|
+
* Note: This private function is needed in order to hide the additional parameter
|
|
63
|
+
* <code>bIgnoreInactiveCaches</code> from the public API {@link #hasPendingChanges}.
|
|
64
|
+
*
|
|
65
|
+
* @param {boolean} [bIgnoreKeptAlive]
|
|
66
|
+
* Whether to ignore changes which will not be lost by certain APIs, see
|
|
67
|
+
* {@link #hasPendingChanges}
|
|
68
|
+
* @param {boolean} [bIgnoreInactiveCaches]
|
|
69
|
+
* Whether to ignore changes in inactive caches
|
|
70
|
+
* @returns {boolean}
|
|
71
|
+
* <code>true</code> if the binding is resolved and has pending changes
|
|
72
|
+
*
|
|
73
|
+
* @private
|
|
74
|
+
*/
|
|
75
|
+
ODataBinding.prototype._hasPendingChanges = function (bIgnoreKeptAlive, bIgnoreInactiveCaches) {
|
|
76
|
+
return this.isResolved()
|
|
77
|
+
&& (this.hasPendingChangesForPath("", bIgnoreKeptAlive)
|
|
78
|
+
|| this.hasPendingChangesInDependents(bIgnoreKeptAlive, bIgnoreInactiveCaches));
|
|
79
|
+
};
|
|
80
|
+
|
|
59
81
|
/**
|
|
60
82
|
* Adjusts the paths of all contexts of this binding by replacing the given transient predicate
|
|
61
83
|
* with the given predicate. Recursively adjusts all child bindings.
|
|
@@ -385,7 +407,9 @@ sap.ui.define([
|
|
|
385
407
|
* @private
|
|
386
408
|
*/
|
|
387
409
|
ODataBinding.prototype.doDeregisterChangeListener = function (sPath, oListener) {
|
|
388
|
-
this.oCache
|
|
410
|
+
if (this.oCache) {
|
|
411
|
+
this.oCache.deregisterChangeListener(sPath, oListener);
|
|
412
|
+
}
|
|
389
413
|
};
|
|
390
414
|
|
|
391
415
|
/**
|
|
@@ -618,9 +642,9 @@ sap.ui.define([
|
|
|
618
642
|
*
|
|
619
643
|
* @param {sap.ui.model.Context|sap.ui.model.odata.v4.Context} [oContext=this.oContext]
|
|
620
644
|
* A context; if omitted, the binding's context is used
|
|
621
|
-
* @returns {SyncPromise} A promise resolving with the resource path or
|
|
622
|
-
* for an unresolved binding. If computation of the canonical path
|
|
623
|
-
* rejected.
|
|
645
|
+
* @returns {sap.ui.base.SyncPromise} A promise resolving with the resource path or
|
|
646
|
+
* <code>undefined</code> for an unresolved binding. If computation of the canonical path
|
|
647
|
+
* fails, the promise is rejected.
|
|
624
648
|
*
|
|
625
649
|
* @private
|
|
626
650
|
*/
|
|
@@ -873,7 +897,11 @@ sap.ui.define([
|
|
|
873
897
|
* created entities, or entity deletions which have not been sent successfully to the server.
|
|
874
898
|
* This function does not take the execution of OData operations
|
|
875
899
|
* (see {@link sap.ui.model.odata.v4.ODataContextBinding#execute}) into account. Since 1.98.0,
|
|
876
|
-
* {@link sap.ui.model.odata.v4.Context#isInactive inactive} contexts are ignored
|
|
900
|
+
* {@link sap.ui.model.odata.v4.Context#isInactive inactive} contexts are ignored, unless
|
|
901
|
+
* (since 1.100.0) their
|
|
902
|
+
* {@link sap.ui.model.odata.v4.ODataListBinding#event:createActivate activation} has been
|
|
903
|
+
* prevented and {@link sap.ui.model.odata.v4.Context#isInactive} therefore returns
|
|
904
|
+
* <code>1</code>.
|
|
877
905
|
*
|
|
878
906
|
* Note: If this binding is relative, its data is cached separately for each parent context
|
|
879
907
|
* path. This method returns <code>true</code> if there are pending changes for the current
|
|
@@ -900,9 +928,7 @@ sap.ui.define([
|
|
|
900
928
|
* @since 1.39.0
|
|
901
929
|
*/
|
|
902
930
|
ODataBinding.prototype.hasPendingChanges = function (bIgnoreKeptAlive) {
|
|
903
|
-
return this.
|
|
904
|
-
&& (this.hasPendingChangesForPath("", bIgnoreKeptAlive)
|
|
905
|
-
|| this.hasPendingChangesInDependents(bIgnoreKeptAlive));
|
|
931
|
+
return this._hasPendingChanges(bIgnoreKeptAlive);
|
|
906
932
|
};
|
|
907
933
|
|
|
908
934
|
/**
|
|
@@ -957,6 +983,8 @@ sap.ui.define([
|
|
|
957
983
|
* @param {boolean} [bIgnoreKeptAlive]
|
|
958
984
|
* Whether to ignore changes which will not be lost by APIs like sort or filter because they
|
|
959
985
|
* relate to a deleted context or a context which is kept alive
|
|
986
|
+
* @param {boolean} [bIgnoreInactiveCaches]
|
|
987
|
+
* Whether to ignore changes in inactive caches
|
|
960
988
|
* @returns {boolean}
|
|
961
989
|
* <code>true</code> if this binding has pending changes
|
|
962
990
|
*
|
|
@@ -1052,7 +1080,7 @@ sap.ui.define([
|
|
|
1052
1080
|
* Refreshes the binding. Prompts the model to retrieve data from the server using the given
|
|
1053
1081
|
* group ID and notifies the control that new data is available.
|
|
1054
1082
|
*
|
|
1055
|
-
* Refresh is supported for bindings which are not relative to
|
|
1083
|
+
* Refresh is supported for bindings which are not relative to an
|
|
1056
1084
|
* {@link sap.ui.model.odata.v4.Context}.
|
|
1057
1085
|
*
|
|
1058
1086
|
* Note: When calling {@link #refresh} multiple times, the result of the request triggered by
|
|
@@ -1301,6 +1329,8 @@ sap.ui.define([
|
|
|
1301
1329
|
*
|
|
1302
1330
|
* @param {sap.ui.base.SyncPromise[]} aPromises
|
|
1303
1331
|
* List of promises which is extended for each call to {@link #resetChangesInDependents}.
|
|
1332
|
+
* @param {boolean} [bIgnoreInactiveCaches]
|
|
1333
|
+
* Whether to ignore changes in inactive caches
|
|
1304
1334
|
* @throws {Error}
|
|
1305
1335
|
* If there is a change of this binding which has been sent to the server and for which there
|
|
1306
1336
|
* is no response yet.
|
|
@@ -74,7 +74,7 @@ sap.ui.define([
|
|
|
74
74
|
* @mixes sap.ui.model.odata.v4.ODataParentBinding
|
|
75
75
|
* @public
|
|
76
76
|
* @since 1.37.0
|
|
77
|
-
* @version 1.
|
|
77
|
+
* @version 1.111.1
|
|
78
78
|
*
|
|
79
79
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
|
|
80
80
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
|
|
@@ -559,7 +559,7 @@ sap.ui.define([
|
|
|
559
559
|
* actions only
|
|
560
560
|
* @param {function} [fnOnStrictHandlingFailed]
|
|
561
561
|
* Callback for strict handling; supported for actions only
|
|
562
|
-
* @returns {SyncPromise}
|
|
562
|
+
* @returns {sap.ui.base.SyncPromise}
|
|
563
563
|
* The request promise
|
|
564
564
|
* @throws {Error} If
|
|
565
565
|
* <ul>
|
|
@@ -916,10 +916,10 @@ sap.ui.define([
|
|
|
916
916
|
* value context at all or the existing context as described above is currently part of the
|
|
917
917
|
* list's collection (that is, has an index).
|
|
918
918
|
* <br>
|
|
919
|
-
* A return value context is
|
|
919
|
+
* A return value context is an {@link sap.ui.model.odata.v4.Context} which represents a bound
|
|
920
920
|
* operation response. It is created only if the operation is bound and has a single entity
|
|
921
921
|
* return value from the same entity set as the operation's binding parameter and has a
|
|
922
|
-
* parent context which is
|
|
922
|
+
* parent context which is an {@link sap.ui.model.odata.v4.Context} and points to an entity
|
|
923
923
|
* from an entity set. It is destroyed the next time this operation binding is executed again!
|
|
924
924
|
* <br>
|
|
925
925
|
* If a return value context is created, it must be used instead of
|
|
@@ -57,7 +57,7 @@ sap.ui.define([
|
|
|
57
57
|
* @mixes sap.ui.model.odata.v4.ODataParentBinding
|
|
58
58
|
* @public
|
|
59
59
|
* @since 1.37.0
|
|
60
|
-
* @version 1.
|
|
60
|
+
* @version 1.111.1
|
|
61
61
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
|
|
62
62
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
|
|
63
63
|
* @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
|
|
@@ -302,7 +302,8 @@ sap.ui.define([
|
|
|
302
302
|
|
|
303
303
|
/**
|
|
304
304
|
* Applies the given map of parameters to this binding's parameters and triggers the
|
|
305
|
-
* creation of a new cache if called with a change reason.
|
|
305
|
+
* creation of a new cache if called with a change reason. Since 1.111.0, the header context is
|
|
306
|
+
* deselected.
|
|
306
307
|
*
|
|
307
308
|
* @param {object} mParameters
|
|
308
309
|
* Map of binding parameters, {@link sap.ui.model.odata.v4.ODataModel#constructor}
|
|
@@ -326,8 +327,9 @@ sap.ui.define([
|
|
|
326
327
|
throw new Error("Cannot combine $$aggregation and $apply");
|
|
327
328
|
}
|
|
328
329
|
if (!sChangeReason) { // called from c'tor or #setAggregation
|
|
329
|
-
_AggregationHelper.
|
|
330
|
-
this.oModel.
|
|
330
|
+
_AggregationHelper.validateAggregationAndSetPath(mParameters.$$aggregation,
|
|
331
|
+
this.oModel.bAutoExpandSelect, this.oModel.oInterface.fetchMetadata,
|
|
332
|
+
this.getResolvedPath());
|
|
331
333
|
}
|
|
332
334
|
sApply = _AggregationHelper.buildApply(mParameters.$$aggregation).$apply;
|
|
333
335
|
}
|
|
@@ -356,6 +358,7 @@ sap.ui.define([
|
|
|
356
358
|
this.fetchCache(this.oContext);
|
|
357
359
|
this.reset(sChangeReason);
|
|
358
360
|
if (this.oHeaderContext) {
|
|
361
|
+
this.oHeaderContext.setSelected(false);
|
|
359
362
|
// Update after the refresh event, otherwise $count is fetched before the request
|
|
360
363
|
this.oHeaderContext.checkUpdate();
|
|
361
364
|
}
|
|
@@ -973,6 +976,10 @@ sap.ui.define([
|
|
|
973
976
|
bReset = false,
|
|
974
977
|
that = this;
|
|
975
978
|
|
|
979
|
+
if (oContext.isDeleted()) {
|
|
980
|
+
return oContext.oDeletePromise; // do not delete twice
|
|
981
|
+
}
|
|
982
|
+
|
|
976
983
|
this.iDeletedContexts += 1;
|
|
977
984
|
|
|
978
985
|
return oContext.doDelete(oGroupLock, sEditUrl, sPath, oETagEntity, this,
|
|
@@ -1712,7 +1719,7 @@ sap.ui.define([
|
|
|
1712
1719
|
|
|
1713
1720
|
/**
|
|
1714
1721
|
* Filters the list with the given filters. Since 1.97.0, if filters are unchanged, no request
|
|
1715
|
-
* is sent, regardless of pending changes.
|
|
1722
|
+
* is sent, regardless of pending changes. Since 1.111.0, the header context is deselected.
|
|
1716
1723
|
*
|
|
1717
1724
|
* If there are pending changes that cannot be ignored, an error is thrown. Use
|
|
1718
1725
|
* {@link #hasPendingChanges} to check if there are such pending changes. If there are, call
|
|
@@ -1807,6 +1814,7 @@ sap.ui.define([
|
|
|
1807
1814
|
this.fetchCache(this.oContext);
|
|
1808
1815
|
this.reset(ChangeReason.Filter);
|
|
1809
1816
|
if (this.oHeaderContext) {
|
|
1817
|
+
this.oHeaderContext.setSelected(false);
|
|
1810
1818
|
// Update after the refresh event, otherwise $count is fetched before the request
|
|
1811
1819
|
this.oHeaderContext.checkUpdate();
|
|
1812
1820
|
}
|
|
@@ -1838,15 +1846,32 @@ sap.ui.define([
|
|
|
1838
1846
|
* Returns the current object holding the information needed for data aggregation, see
|
|
1839
1847
|
* {@link #setAggregation}.
|
|
1840
1848
|
*
|
|
1849
|
+
* @param {boolean} [bVerbose]
|
|
1850
|
+
* Whether to additionally return the "$"-prefixed values described below which obviously
|
|
1851
|
+
* cannot be given back to the setter (@experimental as of version 1.111.0). They are
|
|
1852
|
+
* retrieved from the pair of "Org.OData.Aggregation.V1.RecursiveHierarchy" and
|
|
1853
|
+
* "com.sap.vocabularies.Hierarchy.v1.RecursiveHierarchy" annotations at this binding's
|
|
1854
|
+
* entity type, identified via the <code>hierarchyQualifier</code> given to
|
|
1855
|
+
* {@link #setAggregation}.
|
|
1856
|
+
* <ul>
|
|
1857
|
+
* <li> "$DistanceFromRootProperty" holds the path to the property which provides the raw
|
|
1858
|
+
* value for "@$ui5.node.level" (minus one) and should be used only to interpret the
|
|
1859
|
+
* response retrieved via {@link #getDownloadUrl}.
|
|
1860
|
+
* <li> "$NodeProperty" holds the path to the property which provides the hierarchy node
|
|
1861
|
+
* value. That property is always $select'ed automatically and can be accessed as usual.
|
|
1862
|
+
* </ul>
|
|
1841
1863
|
* @returns {object}
|
|
1842
1864
|
* The current data aggregation object, incl. some default values
|
|
1843
1865
|
*
|
|
1844
1866
|
* @public
|
|
1845
1867
|
* @since 1.109.0
|
|
1846
1868
|
*/
|
|
1847
|
-
ODataListBinding.prototype.getAggregation = function () {
|
|
1869
|
+
ODataListBinding.prototype.getAggregation = function (bVerbose) {
|
|
1848
1870
|
return _Helper.clone(this.mParameters.$$aggregation, function (sKey, vValue) {
|
|
1849
|
-
return sKey[0] === "$"
|
|
1871
|
+
return sKey[0] === "$"
|
|
1872
|
+
&& !(bVerbose && ["$DistanceFromRootProperty", "$NodeProperty"].includes(sKey))
|
|
1873
|
+
? undefined
|
|
1874
|
+
: vValue;
|
|
1850
1875
|
});
|
|
1851
1876
|
};
|
|
1852
1877
|
|
|
@@ -2980,15 +3005,21 @@ sap.ui.define([
|
|
|
2980
3005
|
* A removed context is destroyed unless it is
|
|
2981
3006
|
* {@link sap.ui.model.odata.v4.Context#isKeepAlive kept alive} and still exists on the
|
|
2982
3007
|
* server.
|
|
3008
|
+
* @param {boolean} [bKeepCacheOnError]
|
|
3009
|
+
* If <code>true</code>, the binding data remains unchanged if the refresh fails
|
|
3010
|
+
* @param {boolean} [bWithMessages]
|
|
3011
|
+
* Whether the "@com.sap.vocabularies.Common.v1.Messages" path is treated specially
|
|
2983
3012
|
* @returns {sap.ui.base.SyncPromise}
|
|
2984
3013
|
* A promise which resolves without a defined value when the entity is updated in the cache,
|
|
2985
3014
|
* or rejects if the refresh failed.
|
|
2986
3015
|
* @throws {Error}
|
|
2987
|
-
* If the given context does not represent a single entity (see {@link #getHeaderContext})
|
|
3016
|
+
* If the given context does not represent a single entity (see {@link #getHeaderContext}), or
|
|
3017
|
+
* if <code>bAllowRemoval && bWithMessages</code> are combined
|
|
2988
3018
|
*
|
|
2989
3019
|
* @private
|
|
2990
3020
|
*/
|
|
2991
|
-
ODataListBinding.prototype.refreshSingle = function (oContext, oGroupLock, bAllowRemoval
|
|
3021
|
+
ODataListBinding.prototype.refreshSingle = function (oContext, oGroupLock, bAllowRemoval,
|
|
3022
|
+
bKeepCacheOnError, bWithMessages) {
|
|
2992
3023
|
var sContextPath = oContext.getPath(),
|
|
2993
3024
|
sResourcePathPrefix = sContextPath.slice(1),
|
|
2994
3025
|
that = this;
|
|
@@ -2996,6 +3027,9 @@ sap.ui.define([
|
|
|
2996
3027
|
if (oContext === this.oHeaderContext) {
|
|
2997
3028
|
throw new Error("Unsupported header context: " + oContext);
|
|
2998
3029
|
}
|
|
3030
|
+
if (bAllowRemoval && bWithMessages) {
|
|
3031
|
+
throw new Error("Unsupported: bAllowRemoval && bWithMessages");
|
|
3032
|
+
}
|
|
2999
3033
|
|
|
3000
3034
|
return this.withCache(function (oCache, sPath, oBinding) {
|
|
3001
3035
|
var bDataRequested = false,
|
|
@@ -3064,7 +3098,7 @@ sap.ui.define([
|
|
|
3064
3098
|
? oCache.refreshSingleWithRemove(oGroupLock, sPath, oContext.getModelIndex(),
|
|
3065
3099
|
sPredicate, bKeepAlive, fireDataRequested, onRemove)
|
|
3066
3100
|
: oCache.refreshSingle(oGroupLock, sPath, oContext.getModelIndex(), sPredicate,
|
|
3067
|
-
bKeepAlive, fireDataRequested))
|
|
3101
|
+
bKeepAlive, bWithMessages, fireDataRequested))
|
|
3068
3102
|
.then(function () {
|
|
3069
3103
|
var aUpdatePromises = [];
|
|
3070
3104
|
|
|
@@ -3075,7 +3109,7 @@ sap.ui.define([
|
|
|
3075
3109
|
if (bAllowRemoval) {
|
|
3076
3110
|
aUpdatePromises.push(
|
|
3077
3111
|
oContext.refreshDependentBindings(sResourcePathPrefix,
|
|
3078
|
-
oGroupLock.getGroupId()));
|
|
3112
|
+
oGroupLock.getGroupId(), false, bKeepCacheOnError));
|
|
3079
3113
|
}
|
|
3080
3114
|
}
|
|
3081
3115
|
|
|
@@ -3097,7 +3131,7 @@ sap.ui.define([
|
|
|
3097
3131
|
// call refreshInternal on all dependent bindings to ensure that all resulting data
|
|
3098
3132
|
// requests are in the same batch request
|
|
3099
3133
|
aPromises.push(oContext.refreshDependentBindings(sResourcePathPrefix,
|
|
3100
|
-
oGroupLock.getGroupId()));
|
|
3134
|
+
oGroupLock.getGroupId(), false, bKeepCacheOnError));
|
|
3101
3135
|
}
|
|
3102
3136
|
|
|
3103
3137
|
return SyncPromise.all(aPromises);
|
|
@@ -3215,8 +3249,8 @@ sap.ui.define([
|
|
|
3215
3249
|
ODataListBinding.prototype.requestDownloadUrl = _Helper.createRequestMethod("fetchDownloadUrl");
|
|
3216
3250
|
|
|
3217
3251
|
/**
|
|
3218
|
-
* Requests
|
|
3219
|
-
* entries with model messages. With the filter callback, you can define if a message is
|
|
3252
|
+
* Requests an {@link sap.ui.model.Filter} object which can be used to filter the list binding
|
|
3253
|
+
* by entries with model messages. With the filter callback, you can define if a message is
|
|
3220
3254
|
* considered when creating the filter for entries with messages.
|
|
3221
3255
|
*
|
|
3222
3256
|
* The resulting filter does not consider application or control filters specified for this list
|
|
@@ -3228,7 +3262,7 @@ sap.ui.define([
|
|
|
3228
3262
|
* given {@link sap.ui.core.message.Message} is considered. If no callback function is given,
|
|
3229
3263
|
* all messages are considered.
|
|
3230
3264
|
* @returns {Promise<sap.ui.model.Filter|null>}
|
|
3231
|
-
* A Promise that resolves with
|
|
3265
|
+
* A Promise that resolves with an {@link sap.ui.model.Filter} representing the entries with
|
|
3232
3266
|
* messages; it resolves with <code>null</code> if the binding is not resolved or if there is
|
|
3233
3267
|
* no message for any entry
|
|
3234
3268
|
*
|
|
@@ -3324,7 +3358,7 @@ sap.ui.define([
|
|
|
3324
3358
|
}
|
|
3325
3359
|
|
|
3326
3360
|
if (this.oCache && this.oCache.getPendingRequestsPromise()) {
|
|
3327
|
-
return this.oCache.getPendingRequestsPromise().then(function () {
|
|
3361
|
+
return SyncPromise.resolve(this.oCache.getPendingRequestsPromise()).then(function () {
|
|
3328
3362
|
// Note: This is quite early! Transient predicate not yet replaced inside path,
|
|
3329
3363
|
// #isTransient not yet updated etc. Be careful below!
|
|
3330
3364
|
return that.requestSideEffects(sGroupId, aPaths, oContext);
|
|
@@ -3337,7 +3371,7 @@ sap.ui.define([
|
|
|
3337
3371
|
if (aPredicates) {
|
|
3338
3372
|
aPromises = this.oCache
|
|
3339
3373
|
? [this.oCache.requestSideEffects(this.lockGroup(sGroupId), aPaths, aPredicates,
|
|
3340
|
-
bSingle)]
|
|
3374
|
+
bSingle, /*bWithMessages*/bSingle)]
|
|
3341
3375
|
: []; // can happen if invoked via absolute side effect
|
|
3342
3376
|
this.visitSideEffects(sGroupId, aPaths, bSingle ? oContext : undefined, aPromises);
|
|
3343
3377
|
|
|
@@ -3347,7 +3381,8 @@ sap.ui.define([
|
|
|
3347
3381
|
}
|
|
3348
3382
|
}
|
|
3349
3383
|
if (bSingle) {
|
|
3350
|
-
return this.refreshSingle(oContext, this.lockGroup(sGroupId), false
|
|
3384
|
+
return this.refreshSingle(oContext, this.lockGroup(sGroupId), /*bAllowRemoval*/false,
|
|
3385
|
+
/*bKeepCacheOnError*/true, /*bWithMessages*/true);
|
|
3351
3386
|
}
|
|
3352
3387
|
if (this.iCurrentEnd === 0) {
|
|
3353
3388
|
return SyncPromise.resolve();
|
|
@@ -3730,8 +3765,9 @@ sap.ui.define([
|
|
|
3730
3765
|
if (!this.oHeaderContext) {
|
|
3731
3766
|
this.oHeaderContext = Context.create(this.oModel, this, sResolvedPath);
|
|
3732
3767
|
}
|
|
3733
|
-
if (this.
|
|
3734
|
-
|
|
3768
|
+
if (this.mParameters.$$aggregation) {
|
|
3769
|
+
_AggregationHelper.setPath(this.mParameters.$$aggregation, sResolvedPath);
|
|
3770
|
+
} else if (this.bHasPathReductionToParent && this.oModel.bAutoExpandSelect) {
|
|
3735
3771
|
this.sChangeReason = "AddVirtualContext"; // JIRA: CPOUI5ODATAV4-848
|
|
3736
3772
|
}
|
|
3737
3773
|
if (oContext.getBinding
|
|
@@ -3951,7 +3987,7 @@ sap.ui.define([
|
|
|
3951
3987
|
* @param {object} oEntityType The metadata for the entity type
|
|
3952
3988
|
* @param {sap.ui.model.odata.v4.ODataMetaModel} oMetaModel The meta model
|
|
3953
3989
|
* @param {string} sMetaPath The meta path
|
|
3954
|
-
* @returns {sap.ui.model.Filter}
|
|
3990
|
+
* @returns {sap.ui.model.Filter} an {@link sap.ui.model.Filter} for the given key predicate
|
|
3955
3991
|
*
|
|
3956
3992
|
* @private
|
|
3957
3993
|
*/
|
|
@@ -157,7 +157,7 @@ sap.ui.define([
|
|
|
157
157
|
* @hideconstructor
|
|
158
158
|
* @public
|
|
159
159
|
* @since 1.37.0
|
|
160
|
-
* @version 1.
|
|
160
|
+
* @version 1.111.1
|
|
161
161
|
*/
|
|
162
162
|
ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
|
|
163
163
|
constructor : constructor
|
|
@@ -211,7 +211,7 @@ sap.ui.define([
|
|
|
211
211
|
* A namespace, for example "foo.bar.", of a schema.
|
|
212
212
|
* @param {function} fnLog
|
|
213
213
|
* The log function
|
|
214
|
-
* @returns {object|SyncPromise|undefined}
|
|
214
|
+
* @returns {object|sap.ui.base.SyncPromise|undefined}
|
|
215
215
|
* The schema, or a promise which is resolved without details or rejected with an error, or
|
|
216
216
|
* <code>undefined</code>.
|
|
217
217
|
* @throws {Error}
|
|
@@ -3016,8 +3016,7 @@ sap.ui.define([
|
|
|
3016
3016
|
* @see #getUI5Type
|
|
3017
3017
|
* @since 1.37.0
|
|
3018
3018
|
*/
|
|
3019
|
-
ODataMetaModel.prototype.requestUI5Type
|
|
3020
|
-
= _Helper.createRequestMethod("fetchUI5Type");
|
|
3019
|
+
ODataMetaModel.prototype.requestUI5Type = _Helper.createRequestMethod("fetchUI5Type");
|
|
3021
3020
|
|
|
3022
3021
|
/**
|
|
3023
3022
|
* Request unit customizing based on the code list reference given in the entity container's
|