@openui5/sap.ui.core 1.120.3 → 1.120.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/Event.js +1 -1
- package/src/sap/base/Eventing.js +1 -1
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/i18n/LanguageTag.js +1 -1
- package/src/sap/base/i18n/Localization.js +2 -1
- package/src/sap/base/i18n/ResourceBundle.js +16 -19
- package/src/sap/base/i18n/date/TimezoneUtils.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 +2 -2
- 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 +2 -2
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/Core.js +1 -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 +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/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 +2 -2
- 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/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/cldr/ar.json +1 -0
- package/src/sap/ui/core/cldr/ar_EG.json +1 -0
- package/src/sap/ui/core/cldr/ar_SA.json +1 -0
- package/src/sap/ui/core/cldr/bg.json +1 -0
- package/src/sap/ui/core/cldr/ca.json +1 -0
- package/src/sap/ui/core/cldr/cnr.json +6169 -0
- package/src/sap/ui/core/cldr/cs.json +1 -0
- package/src/sap/ui/core/cldr/cy.json +1 -0
- package/src/sap/ui/core/cldr/da.json +1 -0
- package/src/sap/ui/core/cldr/de.json +1 -0
- package/src/sap/ui/core/cldr/de_AT.json +1 -0
- package/src/sap/ui/core/cldr/de_CH.json +1 -0
- package/src/sap/ui/core/cldr/el.json +1 -0
- package/src/sap/ui/core/cldr/el_CY.json +1 -0
- package/src/sap/ui/core/cldr/en.json +1 -0
- package/src/sap/ui/core/cldr/en_AU.json +1 -0
- package/src/sap/ui/core/cldr/en_GB.json +1 -0
- package/src/sap/ui/core/cldr/en_HK.json +1 -0
- package/src/sap/ui/core/cldr/en_IE.json +1 -0
- package/src/sap/ui/core/cldr/en_IN.json +1 -0
- package/src/sap/ui/core/cldr/en_NZ.json +1 -0
- package/src/sap/ui/core/cldr/en_PG.json +1 -0
- package/src/sap/ui/core/cldr/en_SG.json +1 -0
- package/src/sap/ui/core/cldr/en_ZA.json +1 -0
- package/src/sap/ui/core/cldr/es.json +1 -0
- package/src/sap/ui/core/cldr/es_AR.json +1 -0
- package/src/sap/ui/core/cldr/es_BO.json +1 -0
- package/src/sap/ui/core/cldr/es_CL.json +1 -0
- package/src/sap/ui/core/cldr/es_CO.json +1 -0
- package/src/sap/ui/core/cldr/es_MX.json +1 -0
- package/src/sap/ui/core/cldr/es_PE.json +1 -0
- package/src/sap/ui/core/cldr/es_UY.json +1 -0
- package/src/sap/ui/core/cldr/es_VE.json +1 -0
- package/src/sap/ui/core/cldr/et.json +1 -0
- package/src/sap/ui/core/cldr/fa.json +2 -0
- package/src/sap/ui/core/cldr/fi.json +1 -0
- package/src/sap/ui/core/cldr/fr.json +1 -0
- package/src/sap/ui/core/cldr/fr_BE.json +1 -0
- package/src/sap/ui/core/cldr/fr_CA.json +1 -0
- package/src/sap/ui/core/cldr/fr_CH.json +1 -0
- package/src/sap/ui/core/cldr/fr_LU.json +1 -0
- package/src/sap/ui/core/cldr/he.json +2 -0
- package/src/sap/ui/core/cldr/hi.json +1 -0
- package/src/sap/ui/core/cldr/hr.json +1 -0
- package/src/sap/ui/core/cldr/hu.json +1 -0
- package/src/sap/ui/core/cldr/id.json +1 -0
- package/src/sap/ui/core/cldr/it.json +1 -0
- package/src/sap/ui/core/cldr/it_CH.json +1 -0
- package/src/sap/ui/core/cldr/ja.json +1 -0
- package/src/sap/ui/core/cldr/kk.json +1 -0
- package/src/sap/ui/core/cldr/ko.json +1 -0
- package/src/sap/ui/core/cldr/lt.json +1 -0
- package/src/sap/ui/core/cldr/lv.json +1 -0
- package/src/sap/ui/core/cldr/mk.json +6045 -0
- package/src/sap/ui/core/cldr/ms.json +1 -0
- package/src/sap/ui/core/cldr/nb.json +2 -0
- package/src/sap/ui/core/cldr/nl.json +1 -0
- package/src/sap/ui/core/cldr/nl_BE.json +1 -0
- package/src/sap/ui/core/cldr/pl.json +1 -0
- package/src/sap/ui/core/cldr/pt.json +1 -0
- package/src/sap/ui/core/cldr/pt_PT.json +1 -0
- package/src/sap/ui/core/cldr/ro.json +1 -0
- package/src/sap/ui/core/cldr/ru.json +1 -0
- package/src/sap/ui/core/cldr/ru_UA.json +1 -0
- package/src/sap/ui/core/cldr/sk.json +1 -0
- package/src/sap/ui/core/cldr/sl.json +1 -0
- package/src/sap/ui/core/cldr/sr.json +1 -0
- package/src/sap/ui/core/cldr/sr_Latn.json +1 -0
- package/src/sap/ui/core/cldr/sv.json +1 -0
- package/src/sap/ui/core/cldr/th.json +1 -0
- package/src/sap/ui/core/cldr/tr.json +1 -0
- package/src/sap/ui/core/cldr/uk.json +1 -0
- package/src/sap/ui/core/cldr/vi.json +1 -0
- package/src/sap/ui/core/cldr/zh_CN.json +1 -0
- package/src/sap/ui/core/cldr/zh_HK.json +2 -0
- package/src/sap/ui/core/cldr/zh_SG.json +2 -0
- package/src/sap/ui/core/cldr/zh_TW.json +21 -20
- 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/FileSizeFormat.js +1 -1
- 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 +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/messagebundle_it.properties +2 -2
- package/src/sap/ui/core/messagebundle_ja.properties +2 -2
- package/src/sap/ui/core/messagebundle_mk.properties +2 -2
- package/src/sap/ui/core/messagebundle_sh.properties +67 -67
- package/src/sap/ui/core/messagebundle_sk.properties +1 -1
- package/src/sap/ui/core/messagebundle_sr.properties +352 -0
- package/src/sap/ui/core/messagebundle_uk.properties +2 -2
- package/src/sap/ui/core/messagebundle_vi.properties +2 -2
- 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/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/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/analytics/AnalyticalBinding.js +61 -20
- 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 +28 -14
- package/src/sap/ui/model/odata/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/ODataUtils.js +12 -11
- package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +1 -1
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +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 +4 -2
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +31 -10
- package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +15 -3
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +8 -0
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +19 -0
- 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/Storage.js +1 -1
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
- package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +217 -6
- package/test/sap/ui/core/qunit/analytics/o4aMetadata.js +2 -0
- package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +1 -1
- package/test/sap/ui/core/qunit/base/i18n/Localization.qunit.js +34 -1
- package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +51 -4
- package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +42 -116
- package/test/sap/ui/core/qunit/model/FAR_CUSTOMER_LINE_ITEMS.metadata.xml +2 -0
- package/test/sap/ui/core/qunit/odata/ODataMetadataNoFakeService.qunit.js +154 -0
- package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +10 -2
- package/test/sap/ui/core/qunit/odata/_ODataMetaModelUtils.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +265 -0
- package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +26 -2
- package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +50 -15
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +237 -12
- package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +27 -0
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +41 -7
- package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +25 -0
- package/test/sap/ui/core/qunit/types/FileSizeFormat.qunit.js +19 -1
- package/test/sap/ui/core/relnotes/changes-1.120.json +31 -0
|
@@ -8671,6 +8671,168 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
8671
8671
|
});
|
|
8672
8672
|
});
|
|
8673
8673
|
|
|
8674
|
+
//*********************************************************************************************
|
|
8675
|
+
// Scenario: Grouping by a property of type "Edm.Time" is possible with the AnalyticalBinding.
|
|
8676
|
+
// The AnalyticalBinding has to ensure that the generated IDs e.g. multi-unit ID, group ID are
|
|
8677
|
+
// different for different "Edm.Time" values. "Edm.Time" objects are the only ones that do not
|
|
8678
|
+
// provide a useful toString representation.
|
|
8679
|
+
// SNOW: CS20230006325114
|
|
8680
|
+
[{
|
|
8681
|
+
sTitle: "no multi-unit case ([a, b, c,| d, e,| f, g, h, i, j])",
|
|
8682
|
+
aLengths: [551, 551, 551],
|
|
8683
|
+
aKeyIndexForRoot: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
|
8684
|
+
aMultiUnitIndices: [],
|
|
8685
|
+
aMultiUnitKeysForRoot: undefined,
|
|
8686
|
+
aSkip: [5, 3],
|
|
8687
|
+
aTop: [5, 2],
|
|
8688
|
+
aVisibleRow: [7, 2],
|
|
8689
|
+
bWithWarning: false
|
|
8690
|
+
}, {
|
|
8691
|
+
sTitle: "multi-unit at the end of the gap ([a, a, b,| c, d, d, e, f,| f, g, h, ...]); case c) II",
|
|
8692
|
+
aKeyIndexForRoot: ["ZERO", 2, 3, -4, 6, -7, 9, 10, 11, 12, 13, 14, 15],
|
|
8693
|
+
aLengths: [550, 550, 548],
|
|
8694
|
+
aMultiUnitIndices: [[0, 1], [4,5], [7, 8]],
|
|
8695
|
+
aMultiUnitKeysForRoot: [
|
|
8696
|
+
",,,0,*,,,-multiple-units-not-dereferencable",
|
|
8697
|
+
undefined,
|
|
8698
|
+
undefined,
|
|
8699
|
+
",,,4,*,,,-multiple-units-not-dereferencable",
|
|
8700
|
+
undefined,
|
|
8701
|
+
",,,7,*,,,-multiple-units-not-dereferencable"
|
|
8702
|
+
],
|
|
8703
|
+
aSkip: [8, 3],
|
|
8704
|
+
aTop: [8, 5],
|
|
8705
|
+
aVisibleRow: [9, 2],
|
|
8706
|
+
bWithWarning: true
|
|
8707
|
+
}, {
|
|
8708
|
+
sTitle: "multi-unit in block one and at the beginning and the end of last block"
|
|
8709
|
+
+ " ([a, a, b,| b, c, d, e, e,| e, g, h, ...])",
|
|
8710
|
+
aKeyIndexForRoot: ["ZERO", -2, 4, 5, -6, 9, 10, 11, 12, 13, 14, 15],
|
|
8711
|
+
aLengths: [550, 550, 547],
|
|
8712
|
+
aMultiUnitIndices: [[0, 1], [2, 3], [6, 8]],
|
|
8713
|
+
aMultiUnitKeysForRoot: [
|
|
8714
|
+
",,,0,*,,,-multiple-units-not-dereferencable",
|
|
8715
|
+
",,,2,*,,,-multiple-units-not-dereferencable",
|
|
8716
|
+
undefined,
|
|
8717
|
+
undefined,
|
|
8718
|
+
",,,6,*,,,-multiple-units-not-dereferencable"
|
|
8719
|
+
],
|
|
8720
|
+
aSkip: [8, 3],
|
|
8721
|
+
aTop: [8, 5],
|
|
8722
|
+
aVisibleRow: [9, 2],
|
|
8723
|
+
bWithWarning: true
|
|
8724
|
+
}].forEach(function (oFixture) {
|
|
8725
|
+
QUnit.test("AnalyticalBinding: grouping by property of type Edm.Time, " + oFixture.sTitle, function (assert) {
|
|
8726
|
+
var oBinding, oTable,
|
|
8727
|
+
oModel = createModel("/sap/opu/odata/sap/FAR_CUSTOMER_LINE_ITEMS", {
|
|
8728
|
+
tokenHandling : false
|
|
8729
|
+
}),
|
|
8730
|
+
sView = '\
|
|
8731
|
+
<t:AnalyticalTable id="table" rows="{path : \'/Items\', parameters : {useBatchRequests : true}}"\
|
|
8732
|
+
threshold="2" visibleRowCount="2">\
|
|
8733
|
+
<t:AnalyticalColumn grouped="true" leadingProperty="CreationTime">\
|
|
8734
|
+
<Label text="CreationTime"/>\
|
|
8735
|
+
<t:template><Text wrapping="false" text="{CreationTime}"/></t:template>\
|
|
8736
|
+
</t:AnalyticalColumn>\
|
|
8737
|
+
<t:AnalyticalColumn summed="true" leadingProperty="AmountInCompanyCodeCurrency">\
|
|
8738
|
+
<Label text="AmountInCompanyCodeCurrency"/>\
|
|
8739
|
+
<t:template><Text wrapping="false" text="{AmountInCompanyCodeCurrency}"/></t:template>\
|
|
8740
|
+
</t:AnalyticalColumn>\
|
|
8741
|
+
</t:AnalyticalTable>',
|
|
8742
|
+
that = this;
|
|
8743
|
+
|
|
8744
|
+
var aItems = [];
|
|
8745
|
+
for (var i = 0; i < 50; i += 1) {
|
|
8746
|
+
aItems.push({
|
|
8747
|
+
__metadata : {uri : "/sap/opu/odata/sap/FAR_CUSTOMER_LINE_ITEMS/Items(" + i + ")"},
|
|
8748
|
+
CreationTime : {ms: i, __edmType: 'Edm.Time'},
|
|
8749
|
+
AmountInCompanyCodeCurrency : String(i),
|
|
8750
|
+
Currency : "USD"
|
|
8751
|
+
});
|
|
8752
|
+
}
|
|
8753
|
+
// create multi-unit situations by reusing the dimension value of the grouped column (CreationTime) of the first
|
|
8754
|
+
// item of the range for all others in the range; a multi-unit situation requires also a different dimension
|
|
8755
|
+
// value of the measure's dimension, so use different the Currency values.
|
|
8756
|
+
oFixture.aMultiUnitIndices.forEach(function (aMultiUnitRange) {
|
|
8757
|
+
var iFrom = aMultiUnitRange[0],
|
|
8758
|
+
iTo = aMultiUnitRange[1];
|
|
8759
|
+
|
|
8760
|
+
for (var i = iFrom + 1; i <= iTo; i += 1) {
|
|
8761
|
+
aItems[i].CreationTime = aItems[iFrom].CreationTime;
|
|
8762
|
+
aItems[i].Currency = aItems[iFrom].Currency + i;
|
|
8763
|
+
}
|
|
8764
|
+
});
|
|
8765
|
+
|
|
8766
|
+
this.oLogMock.expects("warning")
|
|
8767
|
+
.withExactArgs("Detected a multi-unit case, so sorting is only possible on leaves", "/Items",
|
|
8768
|
+
"sap.ui.model.analytics.AnalyticalBinding", undefined)
|
|
8769
|
+
.exactly(oFixture.bWithWarning ? 1 : 0);
|
|
8770
|
+
|
|
8771
|
+
this.expectRequest({
|
|
8772
|
+
encodeRequestUri : false,
|
|
8773
|
+
requestUri : "Items" // Grand Total Request
|
|
8774
|
+
+ "?$select=AmountInCompanyCodeCurrency,Currency&$top=100"
|
|
8775
|
+
+ "&$inlinecount=allpages"
|
|
8776
|
+
}, {
|
|
8777
|
+
__count : "1",
|
|
8778
|
+
results : [{
|
|
8779
|
+
__metadata : {uri : "/sap/opu/odata/sap/FAR_CUSTOMER_LINE_ITEMS/Items('grandTotal')"},
|
|
8780
|
+
AmountInCompanyCodeCurrency : "42.00",
|
|
8781
|
+
Currency : "USD"
|
|
8782
|
+
}]
|
|
8783
|
+
})
|
|
8784
|
+
.expectRequest({
|
|
8785
|
+
encodeRequestUri : false,
|
|
8786
|
+
requestUri : "Items" // Data and Count Request
|
|
8787
|
+
+ "?$select=CreationTime,AmountInCompanyCodeCurrency,Currency"
|
|
8788
|
+
+ "&$orderby=CreationTime%20asc&$top=3&$inlinecount=allpages"
|
|
8789
|
+
}, {
|
|
8790
|
+
__count : "550",
|
|
8791
|
+
results : aItems.slice(0, 3)
|
|
8792
|
+
});
|
|
8793
|
+
|
|
8794
|
+
function readBlock(i) {
|
|
8795
|
+
assert.strictEqual(oBinding.getLength(), oFixture.aLengths[i]);
|
|
8796
|
+
|
|
8797
|
+
var iSkip = oFixture.aSkip[i];
|
|
8798
|
+
var iTop = oFixture.aTop[i];
|
|
8799
|
+
that.expectRequest({
|
|
8800
|
+
encodeRequestUri : false,
|
|
8801
|
+
requestUri : "Items"
|
|
8802
|
+
+ "?$select=CreationTime,AmountInCompanyCodeCurrency,"
|
|
8803
|
+
+ "Currency&$orderby=CreationTime%20asc&$skip=" + iSkip + "&$top=" + iTop
|
|
8804
|
+
}, {
|
|
8805
|
+
results : aItems.slice(iSkip, iSkip + iTop)
|
|
8806
|
+
});
|
|
8807
|
+
|
|
8808
|
+
// code under test
|
|
8809
|
+
oTable.setFirstVisibleRow(oFixture.aVisibleRow[i]);
|
|
8810
|
+
|
|
8811
|
+
return that.waitForChanges(assert);
|
|
8812
|
+
}
|
|
8813
|
+
|
|
8814
|
+
return this.createView(assert, sView, oModel).then(function () {
|
|
8815
|
+
oTable = that.oView.byId("table");
|
|
8816
|
+
oBinding = oTable.getBinding("rows");
|
|
8817
|
+
|
|
8818
|
+
return readBlock(0);
|
|
8819
|
+
}).then(function () {
|
|
8820
|
+
return readBlock(1);
|
|
8821
|
+
}).then(function () {
|
|
8822
|
+
assert.strictEqual(oBinding.getLength(), oFixture.aLengths[2]);
|
|
8823
|
+
var aMultiUnitKeysForRoot = oBinding.mMultiUnitKey["/"];
|
|
8824
|
+
// strip trailing |<number> to before comparing; number is a global counter of multi-unit situations
|
|
8825
|
+
if (aMultiUnitKeysForRoot) {
|
|
8826
|
+
aMultiUnitKeysForRoot = aMultiUnitKeysForRoot.map(function (sKey) {
|
|
8827
|
+
return sKey.split("|")[0];
|
|
8828
|
+
});
|
|
8829
|
+
}
|
|
8830
|
+
assert.deepEqual(aMultiUnitKeysForRoot, oFixture.aMultiUnitKeysForRoot);
|
|
8831
|
+
assert.deepEqual(oBinding.mKeyIndex["/"], oFixture.aKeyIndexForRoot);
|
|
8832
|
+
});
|
|
8833
|
+
});
|
|
8834
|
+
});
|
|
8835
|
+
|
|
8674
8836
|
//*********************************************************************************************
|
|
8675
8837
|
// Scenario: A user scrolls in an AnalyticalTable. Further data needs to be requested. The first
|
|
8676
8838
|
// entry of a response for a level request belongs to a different node than the watermark node.
|
|
@@ -21716,4 +21878,107 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
21716
21878
|
return this.waitForChanges(assert);
|
|
21717
21879
|
});
|
|
21718
21880
|
});
|
|
21881
|
+
|
|
21882
|
+
//*********************************************************************************************
|
|
21883
|
+
// Scenario: A table is filtered via a property of a complex type which is addressed via a navigation
|
|
21884
|
+
// property. The binding is using the operation mode "Client".
|
|
21885
|
+
// SNOW: CS20230006626867
|
|
21886
|
+
QUnit.test("Filter via a complex type property addressed via navigation property (client)", function (assert) {
|
|
21887
|
+
var oModel = createSalesOrdersModel({defaultOperationMode : "Client"}),
|
|
21888
|
+
sView = '\
|
|
21889
|
+
<t:Table id="Table" rows="{\
|
|
21890
|
+
path: \'/SalesOrderSet\',\
|
|
21891
|
+
parameters: {\
|
|
21892
|
+
expand: \'ToBusinessPartner\',\
|
|
21893
|
+
select: \'SalesOrderID,ToBusinessPartner/BusinessPartnerID,ToBusinessPartner/Address\'\
|
|
21894
|
+
}\
|
|
21895
|
+
}" visibleRowCount="2">\
|
|
21896
|
+
<Text id="SalesOrderID" text="{SalesOrderID}" />\
|
|
21897
|
+
<Text id="City" text="{ToBusinessPartner/Address/City}" />\
|
|
21898
|
+
</t:Table>',
|
|
21899
|
+
that = this;
|
|
21900
|
+
|
|
21901
|
+
this.expectHeadRequest()
|
|
21902
|
+
.expectRequest("SalesOrderSet?$expand=ToBusinessPartner"
|
|
21903
|
+
+ "&$select=SalesOrderID,ToBusinessPartner/BusinessPartnerID,ToBusinessPartner/Address", {
|
|
21904
|
+
results: [{
|
|
21905
|
+
__metadata: {uri: "/SalesOrderSet('1')"},
|
|
21906
|
+
SalesOrderID: "1",
|
|
21907
|
+
ToBusinessPartner: {
|
|
21908
|
+
__metadata: {uri: "/BusinessPartnerSet('42')"},
|
|
21909
|
+
BusinessPartnerID: "42",
|
|
21910
|
+
Address: {City: "Foo"}
|
|
21911
|
+
}
|
|
21912
|
+
}, {
|
|
21913
|
+
__metadata: {uri: "/SalesOrderSet('2')"},
|
|
21914
|
+
SalesOrderID: "2",
|
|
21915
|
+
ToBusinessPartner: {
|
|
21916
|
+
__metadata: {uri: "/BusinessPartnerSet('43')"},
|
|
21917
|
+
BusinessPartnerID: "43",
|
|
21918
|
+
Address: {City: "Bar"}
|
|
21919
|
+
}
|
|
21920
|
+
}]
|
|
21921
|
+
})
|
|
21922
|
+
.expectValue("SalesOrderID", ["1", "2"])
|
|
21923
|
+
.expectValue("City", ["Foo", "Bar"]);
|
|
21924
|
+
|
|
21925
|
+
return this.createView(assert, sView, oModel).then(function () {
|
|
21926
|
+
that.expectValue("SalesOrderID", "", 1)
|
|
21927
|
+
.expectValue("City", "", 1);
|
|
21928
|
+
|
|
21929
|
+
// code under test
|
|
21930
|
+
that.oView.byId("Table").getBinding("rows").filter(
|
|
21931
|
+
new Filter({
|
|
21932
|
+
path: "ToBusinessPartner/Address/City",
|
|
21933
|
+
operator: FilterOperator.EQ,
|
|
21934
|
+
value1: "Foo"
|
|
21935
|
+
})
|
|
21936
|
+
);
|
|
21937
|
+
|
|
21938
|
+
return that.waitForChanges(assert);
|
|
21939
|
+
});
|
|
21940
|
+
});
|
|
21941
|
+
|
|
21942
|
+
//*********************************************************************************************
|
|
21943
|
+
// Scenario: A table is filtered via a property of a complex type which is addressed via a navigation
|
|
21944
|
+
// property. The binding is using the operation mode "Server".
|
|
21945
|
+
// SNOW: CS20230006626867
|
|
21946
|
+
QUnit.test("Filter via a complex type property addressed via navigation property (server)", function (assert) {
|
|
21947
|
+
var oModel = createSalesOrdersModel(),
|
|
21948
|
+
sView = '\
|
|
21949
|
+
<t:Table id="Table" rows="{\
|
|
21950
|
+
path: \'/SalesOrderSet\',\
|
|
21951
|
+
parameters: {\
|
|
21952
|
+
expand: \'ToBusinessPartner\',\
|
|
21953
|
+
select: \'SalesOrderID,ToBusinessPartner/BusinessPartnerID,ToBusinessPartner/Address\'\
|
|
21954
|
+
},\
|
|
21955
|
+
filters : [{path: \'ToBusinessPartner/Address/City\', operator: \'EQ\', value1: \'Foo\'}]\
|
|
21956
|
+
}" visibleRowCount="2">\
|
|
21957
|
+
<Text id="SalesOrderID" text="{SalesOrderID}" />\
|
|
21958
|
+
<Text id="City" text="{ToBusinessPartner/Address/City}" />\
|
|
21959
|
+
</t:Table>';
|
|
21960
|
+
|
|
21961
|
+
this.expectHeadRequest()
|
|
21962
|
+
.expectRequest({
|
|
21963
|
+
encodeRequestUri: false, // the / in the filter is not escaped
|
|
21964
|
+
requestUri: "SalesOrderSet?$skip=0&$top=102"
|
|
21965
|
+
+ "&$filter=ToBusinessPartner/Address/City%20eq%20%27Foo%27"
|
|
21966
|
+
+ "&$expand=ToBusinessPartner"
|
|
21967
|
+
+ "&$select=SalesOrderID%2cToBusinessPartner%2fBusinessPartnerID%2cToBusinessPartner%2fAddress"
|
|
21968
|
+
}, {
|
|
21969
|
+
results: [{
|
|
21970
|
+
__metadata: {uri: "/SalesOrderSet('1')"},
|
|
21971
|
+
SalesOrderID: "1",
|
|
21972
|
+
ToBusinessPartner: {
|
|
21973
|
+
__metadata: {uri: "/BusinessPartnerSet('42')"},
|
|
21974
|
+
BusinessPartnerID: "42",
|
|
21975
|
+
Address: {City: "Foo"}
|
|
21976
|
+
}
|
|
21977
|
+
}]
|
|
21978
|
+
})
|
|
21979
|
+
.expectValue("SalesOrderID", ["1", ""])
|
|
21980
|
+
.expectValue("City", ["Foo", ""]);
|
|
21981
|
+
|
|
21982
|
+
return this.createView(assert, sView, oModel);
|
|
21983
|
+
});
|
|
21719
21984
|
});
|
|
@@ -4463,7 +4463,12 @@ sap.ui.define([
|
|
|
4463
4463
|
});
|
|
4464
4464
|
|
|
4465
4465
|
//*********************************************************************************************
|
|
4466
|
-
|
|
4466
|
+
[
|
|
4467
|
+
"/TEAMS('1')/TEAM_2_EMPLOYEES('2')",
|
|
4468
|
+
"/TEAMS/0/TEAM_2_EMPLOYEES('2')"
|
|
4469
|
+
].forEach(function (sContextPath) {
|
|
4470
|
+
const sTitle = "isEffectivelyKeptAlive: $$ownRequest, context path: " + sContextPath;
|
|
4471
|
+
QUnit.test(sTitle, function (assert) {
|
|
4467
4472
|
var oBinding = {
|
|
4468
4473
|
checkKeepAlive : function () {},
|
|
4469
4474
|
getHeaderContext : function () {},
|
|
@@ -4471,7 +4476,7 @@ sap.ui.define([
|
|
|
4471
4476
|
isRelative : function () { return true; },
|
|
4472
4477
|
mParameters : {$$ownRequest : true}
|
|
4473
4478
|
},
|
|
4474
|
-
oContext = Context.create({/*oModel*/}, oBinding,
|
|
4479
|
+
oContext = Context.create({/*oModel*/}, oBinding, sContextPath);
|
|
4475
4480
|
|
|
4476
4481
|
oContext.setSelected(true);
|
|
4477
4482
|
this.mock(_Helper).expects("isDataAggregation")
|
|
@@ -4480,6 +4485,7 @@ sap.ui.define([
|
|
|
4480
4485
|
// code under test
|
|
4481
4486
|
assert.strictEqual(oContext.isEffectivelyKeptAlive(), true);
|
|
4482
4487
|
});
|
|
4488
|
+
});
|
|
4483
4489
|
|
|
4484
4490
|
//*********************************************************************************************
|
|
4485
4491
|
QUnit.test("isEffectivelyKeptAlive: data aggregation", function (assert) {
|
|
@@ -4499,6 +4505,24 @@ sap.ui.define([
|
|
|
4499
4505
|
assert.strictEqual(oContext.isEffectivelyKeptAlive(), false);
|
|
4500
4506
|
});
|
|
4501
4507
|
|
|
4508
|
+
//*********************************************************************************************
|
|
4509
|
+
QUnit.test("isEffectivelyKeptAlive: no key predicate", function (assert) {
|
|
4510
|
+
const oBinding = {
|
|
4511
|
+
getHeaderContext : function () {},
|
|
4512
|
+
onKeepAliveChanged : function () {},
|
|
4513
|
+
isRelative : function () { return false; },
|
|
4514
|
+
mParameters : {}
|
|
4515
|
+
};
|
|
4516
|
+
const oContext = Context.create({/*oModel*/}, oBinding, "/SalesOrderList('0')/Messages/0");
|
|
4517
|
+
|
|
4518
|
+
oContext.setSelected(true);
|
|
4519
|
+
this.mock(_Helper).expects("isDataAggregation")
|
|
4520
|
+
.withExactArgs(sinon.match.same(oBinding.mParameters)).returns(false);
|
|
4521
|
+
|
|
4522
|
+
// code under test
|
|
4523
|
+
assert.strictEqual(oContext.isEffectivelyKeptAlive(), false);
|
|
4524
|
+
});
|
|
4525
|
+
|
|
4502
4526
|
//*********************************************************************************************
|
|
4503
4527
|
QUnit.test("refreshDependentBindings", function (assert) {
|
|
4504
4528
|
var oModel = {
|
|
@@ -1113,6 +1113,8 @@ sap.ui.define([
|
|
|
1113
1113
|
}
|
|
1114
1114
|
}
|
|
1115
1115
|
|
|
1116
|
+
function mustBeMocked() { throw new Error("Must be mocked"); }
|
|
1117
|
+
|
|
1116
1118
|
//*********************************************************************************************
|
|
1117
1119
|
QUnit.module("sap.ui.model.odata.v4.ODataMetaModel", {
|
|
1118
1120
|
// remember copy to ensure test isolation
|
|
@@ -7298,28 +7300,52 @@ forEach({
|
|
|
7298
7300
|
});
|
|
7299
7301
|
|
|
7300
7302
|
//*********************************************************************************************
|
|
7301
|
-
|
|
7303
|
+
// 0: no addt'l Nav.Prop. // 1: no $Partner // 2: addt'l Nav.Prop. w/ $Partner
|
|
7304
|
+
[0, 1, 2].forEach((i) => {
|
|
7305
|
+
let oOverload;
|
|
7306
|
+
|
|
7307
|
+
function setup(oTestContext, oContext) {
|
|
7308
|
+
oTestContext.mock(oContext).expects("getPath").withExactArgs().returns("~path~");
|
|
7309
|
+
oTestContext.mock(_Helper).expects("getMetaPath").withExactArgs("~path~")
|
|
7310
|
+
.returns(i > 0 ? "/meta" : "/meta/path");
|
|
7311
|
+
oTestContext.oMetaModelMock.expects("getObject").exactly(i > 0 ? 1 : 0)
|
|
7312
|
+
.withExactArgs("/meta/path/$Partner").returns(i > 1 ? "~Partner~" : undefined);
|
|
7313
|
+
if (i > 1) {
|
|
7314
|
+
oOverload = {
|
|
7315
|
+
$IsBound : true,
|
|
7316
|
+
$Parameter : [{$Name : "~Partner~"}]
|
|
7317
|
+
};
|
|
7318
|
+
}
|
|
7319
|
+
}
|
|
7320
|
+
|
|
7321
|
+
//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
7322
|
+
QUnit.test("requestValue4Annotation: no edm:Path #" + i, function (assert) {
|
|
7302
7323
|
var oContext = {
|
|
7303
|
-
getModel : function () { return null; }
|
|
7324
|
+
getModel : function () { return null; },
|
|
7325
|
+
getPath : mustBeMocked
|
|
7304
7326
|
},
|
|
7305
7327
|
oMetaContext = {},
|
|
7306
7328
|
vRawValue = {};
|
|
7307
7329
|
|
|
7308
|
-
this
|
|
7330
|
+
setup(this, oContext);
|
|
7331
|
+
this.oMetaModelMock.expects("createBindingContext").withExactArgs("/meta/path/value")
|
|
7309
7332
|
.returns(oMetaContext);
|
|
7310
7333
|
this.mock(AnnotationHelper).expects("value")
|
|
7311
|
-
.withExactArgs(sinon.match.same(vRawValue), {
|
|
7334
|
+
.withExactArgs(sinon.match.same(vRawValue), {
|
|
7335
|
+
context : sinon.match.same(oMetaContext),
|
|
7336
|
+
overload : oOverload
|
|
7337
|
+
})
|
|
7312
7338
|
.returns("foo");
|
|
7313
7339
|
|
|
7314
7340
|
// code under test
|
|
7315
|
-
return this.oMetaModel.requestValue4Annotation(vRawValue, "/meta/path", oContext)
|
|
7341
|
+
return this.oMetaModel.requestValue4Annotation(vRawValue, "/meta/path/value", oContext)
|
|
7316
7342
|
.then(function (sValue) {
|
|
7317
7343
|
assert.strictEqual(sValue, "foo");
|
|
7318
7344
|
});
|
|
7319
7345
|
});
|
|
7320
7346
|
|
|
7321
|
-
|
|
7322
|
-
QUnit.test("requestValue4Annotation: composite binding", function (assert) {
|
|
7347
|
+
//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
7348
|
+
QUnit.test("requestValue4Annotation: composite binding #" + i, function (assert) {
|
|
7323
7349
|
var oModel = new Model(),
|
|
7324
7350
|
oContext = Context.create(oModel, null, "/Entity(1)"),
|
|
7325
7351
|
oBarBinding = new PropertyBinding(oModel, "bar", oContext),
|
|
@@ -7334,10 +7360,14 @@ forEach({
|
|
|
7334
7360
|
oFooBinding.requestValue = function () {};
|
|
7335
7361
|
oModel.bindProperty = function () {};
|
|
7336
7362
|
|
|
7337
|
-
this
|
|
7363
|
+
setup(this, oContext);
|
|
7364
|
+
this.oMetaModelMock.expects("createBindingContext").withExactArgs("/meta/path/value")
|
|
7338
7365
|
.returns(oMetaContext);
|
|
7339
7366
|
this.mock(AnnotationHelper).expects("value")
|
|
7340
|
-
.withExactArgs(sinon.match.same(vRawValue), {
|
|
7367
|
+
.withExactArgs(sinon.match.same(vRawValue), {
|
|
7368
|
+
context : sinon.match.same(oMetaContext),
|
|
7369
|
+
overload : oOverload
|
|
7370
|
+
})
|
|
7341
7371
|
.returns("{foo} {bar}"); // sync behavior only with a sap.ui.model.CompositeBinding
|
|
7342
7372
|
oModelMock.expects("bindProperty")
|
|
7343
7373
|
.withExactArgs("foo", sinon.match.same(oContext), undefined)
|
|
@@ -7352,14 +7382,14 @@ forEach({
|
|
|
7352
7382
|
this.mock(oBarBinding).expects("requestValue").withExactArgs().resolves();
|
|
7353
7383
|
|
|
7354
7384
|
// code under test
|
|
7355
|
-
return this.oMetaModel.requestValue4Annotation(vRawValue, "/meta/path", oContext)
|
|
7385
|
+
return this.oMetaModel.requestValue4Annotation(vRawValue, "/meta/path/value", oContext)
|
|
7356
7386
|
.then(function (sValue) {
|
|
7357
7387
|
assert.strictEqual(sValue, "foo-value bar-value");
|
|
7358
7388
|
});
|
|
7359
7389
|
});
|
|
7360
7390
|
|
|
7361
|
-
|
|
7362
|
-
QUnit.test("requestValue4Annotation: async", function (assert) {
|
|
7391
|
+
//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
7392
|
+
QUnit.test("requestValue4Annotation: async #" + i, function (assert) {
|
|
7363
7393
|
var oModel = new Model(),
|
|
7364
7394
|
oContext = Context.create(oModel, null, "/Entity(1)"),
|
|
7365
7395
|
oFooBinding = new PropertyBinding(oModel, "foo", oContext),
|
|
@@ -7372,10 +7402,14 @@ forEach({
|
|
|
7372
7402
|
oFooBinding.requestValue = function () {};
|
|
7373
7403
|
oModel.bindProperty = function () {};
|
|
7374
7404
|
|
|
7375
|
-
this
|
|
7405
|
+
setup(this, oContext);
|
|
7406
|
+
this.oMetaModelMock.expects("createBindingContext").withExactArgs("/meta/path/value")
|
|
7376
7407
|
.returns(oMetaContext);
|
|
7377
7408
|
this.mock(AnnotationHelper).expects("value")
|
|
7378
|
-
.withExactArgs(sinon.match.same(vRawValue), {
|
|
7409
|
+
.withExactArgs(sinon.match.same(vRawValue), {
|
|
7410
|
+
context : sinon.match.same(oMetaContext),
|
|
7411
|
+
overload : oOverload
|
|
7412
|
+
})
|
|
7379
7413
|
.returns("{foo}");
|
|
7380
7414
|
oModelMock.expects("bindProperty")
|
|
7381
7415
|
.withExactArgs("foo", sinon.match.same(oContext), undefined)
|
|
@@ -7388,11 +7422,12 @@ forEach({
|
|
|
7388
7422
|
});
|
|
7389
7423
|
|
|
7390
7424
|
// code under test
|
|
7391
|
-
return this.oMetaModel.requestValue4Annotation(vRawValue, "/meta/path", oContext)
|
|
7425
|
+
return this.oMetaModel.requestValue4Annotation(vRawValue, "/meta/path/value", oContext)
|
|
7392
7426
|
.then(function (sValue) {
|
|
7393
7427
|
assert.strictEqual(sValue, "foo-value");
|
|
7394
7428
|
});
|
|
7395
7429
|
});
|
|
7430
|
+
}); // end of forEach
|
|
7396
7431
|
|
|
7397
7432
|
//*********************************************************************************************
|
|
7398
7433
|
QUnit.test("filterValueListRelevantQualifiers", function (assert) {
|