@openui5/sap.ui.core 1.119.1 → 1.120.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/THIRDPARTY.txt +6 -6
- package/package.json +1 -1
- package/src/jquery.sap.global.js +40 -111
- package/src/jquery.sap.properties.js +7 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +5 -3
- package/src/jquery.sap.storage.js +6 -3
- package/src/sap/base/Event.js +32 -78
- package/src/sap/base/Eventing.js +114 -271
- package/src/sap/base/Log.js +21 -1
- package/src/sap/base/config.js +14 -9
- package/src/sap/base/i18n/Formatting.js +400 -256
- package/src/sap/base/i18n/LanguageTag.js +64 -66
- package/src/sap/base/i18n/Localization.js +125 -87
- package/src/sap/base/i18n/ResourceBundle.js +1 -1
- package/src/sap/base/i18n/date/CalendarType.js +2 -2
- package/src/sap/base/i18n/date/CalendarWeekNumbering.js +2 -2
- package/src/sap/base/i18n/date/TimezoneUtils.js +43 -6
- package/src/sap/base/util/LoaderExtensions.js +8 -2
- package/src/sap/base/util/mixedFetch.js +1 -0
- package/src/sap/base/util/resolveReference.js +31 -13
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +1 -1
- package/src/sap/base/util/restricted/_compact.js +1 -1
- package/src/sap/base/util/restricted/_curry.js +1 -1
- package/src/sap/base/util/restricted/_debounce.js +1 -1
- package/src/sap/base/util/restricted/_difference.js +1 -1
- package/src/sap/base/util/restricted/_differenceBy.js +1 -1
- package/src/sap/base/util/restricted/_differenceWith.js +1 -1
- package/src/sap/base/util/restricted/_flatMap.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
- package/src/sap/base/util/restricted/_flatten.js +1 -1
- package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
- package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
- package/src/sap/base/util/restricted/_intersection.js +1 -1
- package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
- package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
- package/src/sap/base/util/restricted/_isEqual.js +1 -1
- package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
- package/src/sap/base/util/restricted/_isNil.js +1 -1
- package/src/sap/base/util/restricted/_max.js +1 -1
- package/src/sap/base/util/restricted/_merge.js +1 -1
- package/src/sap/base/util/restricted/_mergeWith.js +1 -1
- package/src/sap/base/util/restricted/_min.js +1 -1
- package/src/sap/base/util/restricted/_omit.js +1 -1
- package/src/sap/base/util/restricted/_pick.js +1 -1
- package/src/sap/base/util/restricted/_pickBy.js +1 -1
- package/src/sap/base/util/restricted/_throttle.js +1 -1
- package/src/sap/base/util/restricted/_toArray.js +1 -1
- package/src/sap/base/util/restricted/_union.js +1 -1
- package/src/sap/base/util/restricted/_unionBy.js +1 -1
- package/src/sap/base/util/restricted/_unionWith.js +1 -1
- package/src/sap/base/util/restricted/_uniq.js +1 -1
- package/src/sap/base/util/restricted/_uniqBy.js +1 -1
- package/src/sap/base/util/restricted/_uniqWith.js +1 -1
- package/src/sap/base/util/restricted/_without.js +1 -1
- package/src/sap/base/util/restricted/_xor.js +1 -1
- package/src/sap/base/util/restricted/_xorBy.js +1 -1
- package/src/sap/base/util/restricted/_xorWith.js +1 -1
- package/src/sap/base/util/restricted/_zipObject.js +1 -1
- package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
- package/src/sap/base/util/syncFetch.js +1 -0
- package/src/sap/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +6 -7
- package/src/sap/ui/base/BindingInfo.js +3 -3
- package/src/sap/ui/base/BindingParser.js +5 -2
- package/src/sap/ui/base/DataType.js +57 -1
- package/src/sap/ui/base/DesignTime.js +69 -0
- package/src/sap/ui/base/Event.js +2 -2
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/ExpressionParser.js +25 -4
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +102 -85
- package/src/sap/ui/base/ManagedObjectMetadata.js +53 -31
- package/src/sap/ui/base/ManagedObjectObserver.js +1 -0
- package/src/sap/ui/base/Metadata.js +3 -3
- package/src/sap/ui/base/Object.js +19 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +3 -3
- package/src/sap/ui/core/AnimationMode.js +2 -2
- package/src/sap/ui/core/AppCacheBuster.js +30 -18
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/CalendarType.js +6 -0
- package/src/sap/ui/core/Component.js +175 -86
- package/src/sap/ui/core/ComponentContainer.js +6 -5
- package/src/sap/ui/core/ComponentMetadata.js +3 -4
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +395 -709
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/ControlBehavior.js +37 -28
- package/src/sap/ui/core/Core.js +338 -216
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +3 -1
- package/src/sap/ui/core/Element.js +24 -10
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +3 -2
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/Fragment.js +3 -3
- 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 +13 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +2 -3
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +17 -1
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +8 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/Lib.js +253 -57
- 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 +118 -32
- package/src/sap/ui/core/Manifest.js +4 -2
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Placeholder.js +18 -0
- package/src/sap/ui/core/Popup.js +5 -0
- package/src/sap/ui/core/RenderManager.js +21 -17
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/Rendering.js +51 -47
- 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/Shortcut.js +5 -3
- package/src/sap/ui/core/Supportability.js +146 -0
- package/src/sap/ui/core/Theming.js +130 -88
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +4 -3
- package/src/sap/ui/core/UIArea.js +5 -4
- package/src/sap/ui/core/UIComponent.js +38 -12
- 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/XMLTemplateProcessor.js +3 -3
- package/src/sap/ui/core/_IconRegistry.js +13 -6
- package/src/sap/ui/core/cldr/ar.json +143 -137
- package/src/sap/ui/core/cldr/ar_EG.json +143 -137
- package/src/sap/ui/core/cldr/ar_SA.json +143 -137
- package/src/sap/ui/core/cldr/bg.json +423 -423
- package/src/sap/ui/core/cldr/ca.json +541 -494
- package/src/sap/ui/core/cldr/cs.json +475 -364
- package/src/sap/ui/core/cldr/cy.json +656 -477
- package/src/sap/ui/core/cldr/da.json +334 -275
- package/src/sap/ui/core/cldr/de.json +388 -291
- package/src/sap/ui/core/cldr/de_AT.json +388 -291
- package/src/sap/ui/core/cldr/de_CH.json +394 -297
- package/src/sap/ui/core/cldr/el.json +169 -166
- package/src/sap/ui/core/cldr/el_CY.json +169 -166
- package/src/sap/ui/core/cldr/en.json +558 -521
- package/src/sap/ui/core/cldr/en_AU.json +558 -520
- package/src/sap/ui/core/cldr/en_GB.json +476 -439
- package/src/sap/ui/core/cldr/en_HK.json +520 -482
- package/src/sap/ui/core/cldr/en_IE.json +486 -448
- package/src/sap/ui/core/cldr/en_IN.json +466 -428
- package/src/sap/ui/core/cldr/en_NZ.json +506 -468
- package/src/sap/ui/core/cldr/en_PG.json +506 -468
- package/src/sap/ui/core/cldr/en_SG.json +506 -468
- package/src/sap/ui/core/cldr/en_ZA.json +486 -448
- package/src/sap/ui/core/cldr/es.json +473 -468
- package/src/sap/ui/core/cldr/es_AR.json +445 -440
- package/src/sap/ui/core/cldr/es_BO.json +479 -474
- package/src/sap/ui/core/cldr/es_CL.json +469 -464
- package/src/sap/ui/core/cldr/es_CO.json +387 -381
- package/src/sap/ui/core/cldr/es_MX.json +502 -497
- package/src/sap/ui/core/cldr/es_PE.json +455 -450
- package/src/sap/ui/core/cldr/es_UY.json +479 -474
- package/src/sap/ui/core/cldr/es_VE.json +499 -494
- package/src/sap/ui/core/cldr/et.json +378 -320
- package/src/sap/ui/core/cldr/fa.json +104 -104
- package/src/sap/ui/core/cldr/fi.json +401 -315
- package/src/sap/ui/core/cldr/fr.json +391 -385
- package/src/sap/ui/core/cldr/fr_BE.json +391 -385
- package/src/sap/ui/core/cldr/fr_CA.json +499 -493
- package/src/sap/ui/core/cldr/fr_CH.json +334 -328
- package/src/sap/ui/core/cldr/fr_LU.json +391 -385
- package/src/sap/ui/core/cldr/he.json +291 -159
- package/src/sap/ui/core/cldr/hi.json +157 -128
- package/src/sap/ui/core/cldr/hr.json +514 -461
- package/src/sap/ui/core/cldr/hu.json +287 -257
- package/src/sap/ui/core/cldr/id.json +463 -416
- package/src/sap/ui/core/cldr/it.json +468 -413
- package/src/sap/ui/core/cldr/it_CH.json +468 -413
- package/src/sap/ui/core/cldr/ja.json +98 -61
- package/src/sap/ui/core/cldr/kk.json +631 -571
- package/src/sap/ui/core/cldr/ko.json +79 -71
- package/src/sap/ui/core/cldr/lt.json +361 -270
- package/src/sap/ui/core/cldr/lv.json +234 -242
- package/src/sap/ui/core/cldr/ms.json +463 -408
- package/src/sap/ui/core/cldr/nb.json +176 -143
- package/src/sap/ui/core/cldr/nl.json +463 -393
- package/src/sap/ui/core/cldr/nl_BE.json +463 -393
- package/src/sap/ui/core/cldr/pl.json +633 -344
- package/src/sap/ui/core/cldr/pt.json +447 -336
- package/src/sap/ui/core/cldr/pt_PT.json +488 -449
- package/src/sap/ui/core/cldr/ro.json +477 -383
- package/src/sap/ui/core/cldr/ru.json +367 -332
- package/src/sap/ui/core/cldr/ru_UA.json +361 -326
- package/src/sap/ui/core/cldr/sk.json +502 -537
- package/src/sap/ui/core/cldr/sl.json +168 -161
- package/src/sap/ui/core/cldr/sr.json +276 -225
- package/src/sap/ui/core/cldr/sr_Latn.json +972 -907
- package/src/sap/ui/core/cldr/sv.json +420 -346
- package/src/sap/ui/core/cldr/th.json +117 -94
- package/src/sap/ui/core/cldr/tr.json +413 -359
- package/src/sap/ui/core/cldr/uk.json +395 -368
- package/src/sap/ui/core/cldr/vi.json +392 -379
- package/src/sap/ui/core/cldr/zh_CN.json +91 -33
- package/src/sap/ui/core/cldr/zh_HK.json +90 -32
- package/src/sap/ui/core/cldr/zh_SG.json +90 -32
- package/src/sap/ui/core/cldr/zh_TW.json +75 -51
- package/src/sap/ui/core/date/CalendarWeekNumbering.js +6 -0
- package/src/sap/ui/core/date/Islamic.js +4 -4
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- package/src/sap/ui/core/date/_Calendars.js +5 -2
- 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 +3 -2
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- package/src/sap/ui/core/dnd/DragInfo.js +1 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/format/DateFormat.js +33 -21
- package/src/sap/ui/core/format/NumberFormat.js +3 -2
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/getCompatibilityVersion.js +2 -2
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +128 -8
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +2 -2
- 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/message/MessageType.js +2 -1
- package/src/sap/ui/core/messagebundle.properties +24 -0
- package/src/sap/ui/core/messagebundle_ar.properties +15 -3
- package/src/sap/ui/core/messagebundle_bg.properties +14 -2
- package/src/sap/ui/core/messagebundle_ca.properties +13 -1
- package/src/sap/ui/core/messagebundle_cs.properties +15 -3
- package/src/sap/ui/core/messagebundle_cy.properties +16 -4
- package/src/sap/ui/core/messagebundle_da.properties +15 -3
- package/src/sap/ui/core/messagebundle_de.properties +15 -3
- package/src/sap/ui/core/messagebundle_el.properties +16 -4
- package/src/sap/ui/core/messagebundle_en.properties +12 -0
- package/src/sap/ui/core/messagebundle_en_GB.properties +16 -4
- package/src/sap/ui/core/messagebundle_es.properties +15 -3
- package/src/sap/ui/core/messagebundle_es_MX.properties +15 -3
- package/src/sap/ui/core/messagebundle_et.properties +15 -3
- package/src/sap/ui/core/messagebundle_fi.properties +15 -3
- package/src/sap/ui/core/messagebundle_fr.properties +15 -3
- package/src/sap/ui/core/messagebundle_fr_CA.properties +14 -2
- package/src/sap/ui/core/messagebundle_hi.properties +16 -4
- package/src/sap/ui/core/messagebundle_hr.properties +14 -2
- package/src/sap/ui/core/messagebundle_hu.properties +16 -4
- package/src/sap/ui/core/messagebundle_id.properties +15 -3
- package/src/sap/ui/core/messagebundle_it.properties +17 -5
- package/src/sap/ui/core/messagebundle_iw.properties +15 -3
- package/src/sap/ui/core/messagebundle_ja.properties +25 -13
- package/src/sap/ui/core/messagebundle_kk.properties +15 -3
- package/src/sap/ui/core/messagebundle_ko.properties +14 -2
- package/src/sap/ui/core/messagebundle_lt.properties +15 -3
- package/src/sap/ui/core/messagebundle_lv.properties +15 -3
- package/src/sap/ui/core/messagebundle_mk.properties +352 -0
- package/src/sap/ui/core/messagebundle_ms.properties +15 -3
- package/src/sap/ui/core/messagebundle_nl.properties +15 -3
- package/src/sap/ui/core/messagebundle_no.properties +14 -2
- package/src/sap/ui/core/messagebundle_pl.properties +15 -3
- package/src/sap/ui/core/messagebundle_pt.properties +15 -3
- package/src/sap/ui/core/messagebundle_pt_PT.properties +14 -2
- package/src/sap/ui/core/messagebundle_ro.properties +15 -3
- package/src/sap/ui/core/messagebundle_ru.properties +15 -3
- package/src/sap/ui/core/messagebundle_sh.properties +43 -31
- package/src/sap/ui/core/messagebundle_sk.properties +16 -4
- package/src/sap/ui/core/messagebundle_sl.properties +15 -3
- package/src/sap/ui/core/messagebundle_sv.properties +22 -10
- package/src/sap/ui/core/messagebundle_th.properties +15 -3
- package/src/sap/ui/core/messagebundle_tr.properties +15 -3
- package/src/sap/ui/core/messagebundle_uk.properties +18 -6
- package/src/sap/ui/core/messagebundle_vi.properties +18 -6
- package/src/sap/ui/core/messagebundle_zh_CN.properties +15 -3
- package/src/sap/ui/core/messagebundle_zh_TW.properties +15 -3
- package/src/sap/ui/core/mvc/Controller.js +22 -16
- package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +1 -1
- package/src/sap/ui/core/mvc/EventHandlerResolver.js +5 -15
- package/src/sap/ui/core/mvc/HTMLView.js +2 -2
- package/src/sap/ui/core/mvc/JSONView.js +4 -1
- package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -0
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/OverrideExecution.js +4 -4
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +25 -15
- package/src/sap/ui/core/mvc/ViewType.js +2 -0
- package/src/sap/ui/core/mvc/XMLView.js +1 -1
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +2 -1
- package/src/sap/ui/core/plugin/LessSupport.js +3 -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 +2 -4
- package/src/sap/ui/core/routing/Target.js +1 -3
- package/src/sap/ui/core/routing/Targets.js +2 -3
- package/src/sap/ui/core/routing/Views.js +2 -3
- package/src/sap/ui/core/routing/async/Target.js +1 -1
- package/src/sap/ui/core/rules/Config.support.js +11 -17
- package/src/sap/ui/core/search/OpenSearchProvider.js +2 -1
- package/src/sap/ui/core/search/SearchProvider.js +2 -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/Hotkeys.js +5 -3
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/RuleEngineOpaExtension.js +1 -3
- package/src/sap/ui/core/support/Support.js +3 -5
- package/src/sap/ui/core/support/ToolsAPI.js +15 -11
- package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
- package/src/sap/ui/core/support/plugins/Interaction.js +4 -4
- 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 +7 -5
- 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/support/techinfo/TechnicalInfo.js +3 -1
- package/src/sap/ui/core/syncStyleClass.js +2 -2
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- package/src/sap/ui/core/themes/base/global.less +9 -9
- package/src/sap/ui/core/theming/Parameters.js +18 -19
- package/src/sap/ui/core/theming/ThemeManager.js +23 -4
- 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 +3 -0
- package/src/sap/ui/core/util/_LocalizationHelper.js +122 -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 +4 -4
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/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 +29 -7
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/model/ClientListBinding.js +9 -4
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +9 -4
- 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 +2 -2
- package/src/sap/ui/model/Filter.js +39 -1
- package/src/sap/ui/model/FilterProcessor.js +15 -5
- package/src/sap/ui/model/ListBinding.js +5 -0
- package/src/sap/ui/model/ManagedObjectBindingSupport.js +4 -4
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +14 -8
- 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/TreeBinding.js +3 -0
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +3 -1
- package/src/sap/ui/model/json/JSONListBinding.js +3 -1
- package/src/sap/ui/model/json/JSONModel.js +1 -1
- package/src/sap/ui/model/json/JSONTreeBinding.js +3 -2
- package/src/sap/ui/model/message/MessageListBinding.js +3 -0
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/AnnotationHelper.js +9 -3
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataListBinding.js +8 -2
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
- package/src/sap/ui/model/odata/ODataModel.js +9 -5
- package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -2
- package/src/sap/ui/model/odata/ODataTreeBinding.js +2 -0
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +9 -14
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +40 -15
- package/src/sap/ui/model/odata/v2/ODataModel.js +26 -62
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +38 -4
- package/src/sap/ui/model/odata/v4/Context.js +81 -7
- package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -0
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +217 -75
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +2 -2
- package/src/sap/ui/model/odata/v4/ODataModel.js +6 -6
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +406 -199
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +12 -7
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +53 -30
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +6 -4
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +6 -6
- package/src/sap/ui/model/resource/ResourceModel.js +5 -6
- 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/XMLListBinding.js +3 -0
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/model/xml/XMLTreeBinding.js +3 -0
- package/src/sap/ui/performance/BeaconRequest.js +2 -2
- package/src/sap/ui/performance/trace/Interaction.js +20 -16
- package/src/sap/ui/qunit/QUnitUtils.js +64 -45
- package/src/sap/ui/qunit/qunit-coverage.js +6 -0
- package/src/sap/ui/qunit/utils/ControlIterator.js +31 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/security/Security.js +128 -0
- package/src/sap/ui/test/BlanketReporter.js +2 -3
- package/src/sap/ui/test/BlanketReporterUI.view.xml +1 -1
- package/src/sap/ui/test/BranchTracking.js +2 -3
- package/src/sap/ui/test/ModuleTracking.js +48 -20
- package/src/sap/ui/test/OpaExtension.js +3 -3
- package/src/sap/ui/test/OpaPlugin.js +16 -6
- package/src/sap/ui/test/TestUtils.js +7 -4
- package/src/sap/ui/test/_BrowserLogCollector.js +1 -0
- package/src/sap/ui/test/_ControlFinder.js +3 -2
- package/src/sap/ui/test/_LogCollector.js +1 -0
- package/src/sap/ui/test/_UsageReport.js +115 -114
- package/src/sap/ui/test/actions/EnterText.js +24 -2
- package/src/sap/ui/test/autowaiter/WaiterBase.js +1 -0
- package/src/sap/ui/test/autowaiter/_moduleWaiter.js +1 -2
- package/src/sap/ui/test/autowaiter/_timeoutWaiter.js +1 -1
- package/src/sap/ui/test/generic/GenericTestCollection.js +5 -0
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/generic/Utils.js +1 -1
- package/src/sap/ui/test/matchers/LabelFor.js +2 -12
- package/src/sap/ui/test/matchers/Matcher.js +1 -1
- package/src/sap/ui/test/pipelines/PipelineFactory.js +1 -0
- package/src/sap/ui/test/selectors/_Selector.js +1 -1
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader-autoconfig.js +84 -11
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/manifest.json +3 -10
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/localService/mockserver.js +3 -4
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/ChartAnnotation.fragment.xml +7 -7
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Component.js +2 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Detail.view.xml +12 -13
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Facets.fragment.xml +4 -4
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Field.fragment.xml +8 -8
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/FormFacet.fragment.xml +3 -5
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/LabeledField.fragment.xml +3 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Table.fragment.xml +10 -10
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/TableFacet.fragment.xml +3 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/extension/HeaderInfo.fragment.xml +1 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Field.fragment.xml +2 -2
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Template.view.xml +19 -21
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/TemplateV4.view.xml +2 -2
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Component.js +2 -3
- package/test/sap/ui/core/demokit/sample/common/SandboxModelHelper.js +2 -3
- package/test/sap/ui/core/demokit/sample/common/ValueHelp.js +2 -3
- package/test/sap/ui/core/demokit/sample/common/pages/Any.js +7 -8
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/Component.js +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +15 -6
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +3 -4
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +39 -16
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +18 -21
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/all.json +509 -395
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/metadata.xml +586 -422
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Facets.fragment.xml +22 -23
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/FormattedText.fragment.xml +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Main.view.xml +7 -7
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +0 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +54 -9
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +34 -9
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +156 -23
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.view.xml +3 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Facets.fragment.xml +22 -23
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/FormattedText.fragment.xml +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Main.view.xml +5 -5
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Main.controller.js +2 -3
- package/test/sap/ui/core/demokit/tutorial/databinding/01/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/01/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/02/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/02/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/03/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/03/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/04/Component.js +9 -26
- package/test/sap/ui/core/demokit/tutorial/databinding/04/manifest.json +21 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/05/Component.js +9 -26
- package/test/sap/ui/core/demokit/tutorial/databinding/05/manifest.json +21 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/06/Component.js +9 -27
- package/test/sap/ui/core/demokit/tutorial/databinding/06/manifest.json +22 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/07/Component.js +9 -28
- package/test/sap/ui/core/demokit/tutorial/databinding/07/manifest.json +23 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/08/Component.js +9 -28
- package/test/sap/ui/core/demokit/tutorial/databinding/08/manifest.json +23 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/09/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/09/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/10/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/10/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/11/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/11/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/12/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/12/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/13/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/13/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/14/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/14/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/15/Component.js +9 -32
- package/test/sap/ui/core/demokit/tutorial/databinding/15/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/01/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/navigation/01/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/02/Component.js +9 -35
- package/test/sap/ui/core/demokit/tutorial/navigation/02/manifest.json +30 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/03/Component.js +9 -37
- package/test/sap/ui/core/demokit/tutorial/navigation/03/manifest.json +32 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/04/Component.js +9 -38
- package/test/sap/ui/core/demokit/tutorial/navigation/04/manifest.json +33 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/05/Component.js +9 -38
- package/test/sap/ui/core/demokit/tutorial/navigation/05/manifest.json +33 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/06/Component.js +9 -40
- package/test/sap/ui/core/demokit/tutorial/navigation/06/manifest.json +35 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/07/Component.js +9 -42
- package/test/sap/ui/core/demokit/tutorial/navigation/07/manifest.json +37 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/08/Component.js +9 -45
- package/test/sap/ui/core/demokit/tutorial/navigation/08/manifest.json +40 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/09/Component.js +9 -45
- package/test/sap/ui/core/demokit/tutorial/navigation/09/manifest.json +40 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/10/Component.js +9 -47
- package/test/sap/ui/core/demokit/tutorial/navigation/10/manifest.json +42 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/11/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/11/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/12/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/12/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/13/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/13/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/14/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/14/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/15/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/15/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/16/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/16/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/17/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/17/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +2 -2
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +2 -3
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +1 -1
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/SandboxModel.js +2 -3
- package/test/sap/ui/core/qunit/ClientModel.qunit.js +28 -28
- package/test/sap/ui/core/qunit/CompositeBinding.qunit.js +18 -0
- package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +4 -3
- package/test/sap/ui/core/qunit/Core.qunit.js +5 -14
- package/test/sap/ui/core/qunit/Core_libraryPreloadFiles.qunit.js +4 -4
- package/test/sap/ui/core/qunit/Core_libraryPreloadFiles_unavoidablyUsingEval.qunit.js +6 -6
- package/test/sap/ui/core/qunit/Core_unavoidablyUsingEval.qunit.js +31 -30
- package/test/sap/ui/core/qunit/DataState.qunit.js +7 -4
- package/test/sap/ui/core/qunit/DuplicateIds.qunit.js +3 -0
- package/test/sap/ui/core/qunit/DuplicateIds_noError.qunit.js +4 -0
- package/test/sap/ui/core/qunit/Element_metadata_renderer.qunit.js +6 -0
- package/test/sap/ui/core/qunit/ExpressionParser.qunit.js +144 -85
- package/test/sap/ui/core/qunit/HTML.qunit.js +87 -84
- package/test/sap/ui/core/qunit/InvisibleText.qunit.js +22 -1
- package/test/sap/ui/core/qunit/LRUPersistentCache.qunit.js +4 -4
- package/test/sap/ui/core/qunit/Lib.qunit.js +64 -1
- package/test/sap/ui/core/qunit/ListBinding.qunit.js +14 -1
- package/test/sap/ui/core/qunit/ManagedObject.qunit.js +90 -4
- package/test/sap/ui/core/qunit/ManagedObjectMetadata.qunit.js +41 -40
- package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +2 -1
- package/test/sap/ui/core/qunit/{ManagedObject_noBoot.qunit.js → ManagedObject_BindingParser.qunit.js} +10 -9
- package/test/sap/ui/core/qunit/Object.qunit.js +36 -0
- package/test/sap/ui/core/qunit/RenderManager.qunit.js +86 -94
- package/test/sap/ui/core/qunit/ShortcutHints.qunit.js +11 -97
- package/test/sap/ui/core/qunit/StaticBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/UIArea.qunit.js +34 -35
- package/test/sap/ui/core/qunit/analytics/AnalyticalTreeBindingAdapter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/analytics/ODataModelAdapter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +3 -0
- package/test/sap/ui/core/qunit/app/DesignMode_controllerDeactivated.qunit.js +5 -6
- package/test/sap/ui/core/qunit/app/DesignMode_suppressedDeactivation.qunit.js +5 -6
- package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/app/_createDesignModeTests_legacyAPIs.qunit.js +8 -10
- package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +2 -2
- package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +49 -30
- package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +123 -10
- package/test/sap/ui/core/qunit/base/util/resolveReference.qunit.js +9 -0
- package/test/sap/ui/core/qunit/base/util/testdata/MyModule.js +5 -0
- package/test/sap/ui/core/qunit/bootstrap/BootstrapCustomBootTaskPreloadCss.beforeBootstrap.qunit.js +4 -2
- package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.html +1 -0
- package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +9 -10
- package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload_legacyAPIs.qunit.js +0 -2
- package/test/sap/ui/core/qunit/bootstrap/BootstrapWithinBody.qunit.html +2 -1
- package/test/sap/ui/core/qunit/bootstrap/BootstrapWithinHead.qunit.html +2 -1
- package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +122 -266
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibConfigured.qunit.html +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibConfigured.qunit.js +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibLoaded.qunit.html +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibLoaded.qunit.js +16 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibNotLoaded.qunit.html +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibNotLoaded.qunit.js +14 -0
- package/test/sap/ui/core/qunit/bootstrap/ControlBehavior.qunit.js +110 -0
- package/test/sap/ui/core/qunit/bootstrap/PreloadCfg.qunit.js +4 -3
- package/test/sap/ui/core/qunit/bootstrap/ResourceRoot_ResourcesURL_Standard.qunit.html +1 -1
- package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.beforeBootstrap.qunit.js +2 -3
- package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted.qunit.js +39 -34
- package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted_legacyAPIs.qunit.js +5 -1
- package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +51 -15
- package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery-compat.qunit.html +23 -0
- package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery-compat.qunit.js +1 -1
- package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery.sap.stubs.qunit.js +16 -20
- package/test/sap/ui/core/qunit/compat_legacyAPIs/testsuite.compat.qunit.js +1 -4
- package/test/sap/ui/core/qunit/component/Component.qunit.js +100 -7
- package/test/sap/ui/core/qunit/component/Models.qunit.js +3 -1
- package/test/sap/ui/core/qunit/component/Preloading.qunit.js +8 -12
- package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +8 -2
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/Component.js +23 -0
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/Main.view.xml +8 -0
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/manifest.json +34 -0
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/Component.js +23 -0
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/Main.view.xml +8 -0
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/manifest.json +28 -0
- package/test/sap/ui/core/qunit/date/_Calendars.qunit.js +52 -0
- package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +18 -0
- package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaksUsingIterator.qunit.js +3 -4
- package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +18 -0
- package/test/sap/ui/core/qunit/generic/legacy/SettersContextReturn.qunit.js +15 -0
- package/test/sap/ui/core/qunit/generic/testsuite.generic.qunit.js +21 -0
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessAmbiguous.js +2 -3
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessDuplicate.js +2 -3
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessFailing.js +2 -3
- package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.html +16 -0
- package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.js +1 -1
- package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.html +16 -0
- package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.js +1 -1
- package/test/sap/ui/core/qunit/gherkin/testsuite.gherkin.qunit.js +3 -2
- package/test/sap/ui/core/qunit/i18n/Buddhist.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/GenericLocaleData.qunit.js +217 -114
- package/test/sap/ui/core/qunit/i18n/Islamic.qunit.js +7 -4
- package/test/sap/ui/core/qunit/i18n/Japanese.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +341 -7
- package/test/sap/ui/core/qunit/i18n/Persian.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/UniversalDate.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/UniversalDateUtils.qunit.js +10 -1
- package/test/sap/ui/core/qunit/i18n/helper/_timezones.js +17 -11
- package/test/sap/ui/core/qunit/i18n/testsuite.i18n.qunit.js +7 -1
- package/test/sap/ui/core/qunit/internal/1Ring.qunit.html +5 -1
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +2 -2
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
- package/test/sap/ui/core/qunit/internal/AnnotationParser.qunit.html +1 -2
- package/test/sap/ui/core/qunit/internal/ODataV4.qunit.html +6 -1
- package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +2 -1
- package/test/sap/ui/core/qunit/jquery.sap.global-config.qunit.html +24 -0
- package/test/sap/ui/core/qunit/jquery.sap.global-config.qunit.js +12 -6
- package/test/sap/ui/core/qunit/jquery.sap.global-config_beforeBootstrap.qunit.js +1 -1
- package/test/sap/ui/core/qunit/json/JSONListBinding.qunit.js +30 -0
- package/test/sap/ui/core/qunit/loader/exposeAsAMDLoader.qunit.html +1 -0
- package/test/sap/ui/core/qunit/model/Binding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/ClientListBinding.qunit.js +5 -2
- package/test/sap/ui/core/qunit/model/ClientPropertyBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/ClientTreeBinding.qunit.js +5 -2
- package/test/sap/ui/core/qunit/model/ClientTreeBindingAdapter.qunit.js +6 -0
- package/test/sap/ui/core/qunit/model/CompositeDataState.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/Context.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/ContextBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/Filter.qunit.js +49 -0
- package/test/sap/ui/core/qunit/model/FilterProcessor.qunit.js +68 -1
- package/test/sap/ui/core/qunit/model/ListBinding.qunit.js +23 -5
- package/test/sap/ui/core/qunit/model/Model.qunit.js +46 -2
- package/test/sap/ui/core/qunit/model/PropertyBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/Sorter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/TreeBinding.qunit.js +43 -3
- package/test/sap/ui/core/qunit/model/TreeBindingAdapter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +107 -93
- package/test/sap/ui/core/qunit/mvc/View.qunit.js +3 -0
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessor.qunit.js +17 -14
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +23 -12
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +29 -82
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML_unavoidablySync.qunit.js +123 -0
- package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions.qunit.js +4 -0
- package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions_legacy.qunit.js +4 -0
- package/test/sap/ui/core/qunit/mvc/testsuite.mvc.qunit.js +16 -0
- package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +408 -419
- package/test/sap/ui/core/qunit/odata/AnnotationHelper.qunit.js +6 -4
- package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +16 -0
- package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +8 -1
- package/test/sap/ui/core/qunit/odata/ODataModel_legacyAPIs.qunit.js +22 -22
- package/test/sap/ui/core/qunit/odata/ODataTreeBindingAdapter.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +5 -1
- package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/type/DateTimeWithTimezone.qunit.js +6 -6
- package/test/sap/ui/core/qunit/odata/type/Time.qunit.js +3 -4
- package/test/sap/ui/core/qunit/odata/type/TimeOfDay.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +52 -29
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +952 -292
- package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +8 -15
- package/test/sap/ui/core/qunit/odata/v2/ODataPropertyBindingNoFakeService.qunit.js +6 -7
- package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +215 -1
- package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +211 -20
- package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +32 -36
- package/test/sap/ui/core/qunit/odata/v2/V2ODataModelDataState.qunit.js +3 -2
- package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +69 -2
- package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +19 -9
- package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +601 -99
- package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +5 -5
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1896 -407
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +7 -5
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +909 -422
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +21 -6
- package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +104 -33
- package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +8 -0
- package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +9 -9
- package/test/sap/ui/core/qunit/odata/v4/lib/_V2MetadataConverter.qunit.js +3 -3
- package/test/sap/ui/core/qunit/odata/v4/lib/_V4MetadataConverter.qunit.js +3 -3
- package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +16 -0
- package/test/sap/ui/core/qunit/opa/_LogCollector.qunit.js +17 -9
- package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +66 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_cssAnimationWaiter.js +3 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_cssTransitionWaiter.js +3 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +3 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_timeoutWaiter.js +11 -0
- package/test/sap/ui/core/qunit/opa/fixture/miniUI5Site.js +14 -8
- package/test/sap/ui/core/qunit/opa/fixture/uncaughtError.js +18 -12
- package/test/sap/ui/core/qunit/performance/BeaconRequest.qunit.js +18 -2
- package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +11 -2
- package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +4 -7
- package/test/sap/ui/core/qunit/resource/ResourceBinding.qunit.js +1 -0
- package/test/sap/ui/core/qunit/resource/ResourceModel.qunit.js +5 -4
- package/test/sap/ui/core/qunit/routing/async/Target.qunit.js +20 -18
- package/test/sap/ui/core/qunit/routing/async/Targets.qunit.js +1 -4
- package/test/sap/ui/core/qunit/routing/fixture/routingConfig/Component.js +2 -25
- package/test/sap/ui/core/qunit/routing/fixture/routingConfig/manifest.json +28 -0
- package/test/sap/ui/core/qunit/rule/misc/silentEventBus.qunit.js +1 -2
- package/test/sap/ui/core/qunit/testdata/libraries/scenario11/lib1/library.js +11 -0
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib1/library-preload.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib1/library.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib2/library-preload.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib2/library.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib3/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib3/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib5/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib5/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib6/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib6/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib8/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib8/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/terminologies/integration/lib/library-preload.js +1 -1
- package/test/sap/ui/core/qunit/testdata/shortcutHints/Component.js +9 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/RootView.controller.js +8 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/RootView.view.xml +16 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/lib/MyControl.js +27 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/manifest.json +26 -0
- package/test/sap/ui/core/qunit/testdata/uilib-custom-theme-fallback/library.js +4 -5
- package/test/sap/ui/core/qunit/testdata/uilib-failing-css-import/library.js +5 -6
- package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_expression.controller.js +2 -1
- package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_expression.view.xml +18 -1
- package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +3 -0
- package/test/sap/ui/core/qunit/testsuites/testsuite.control.framework.qunit.js +0 -4
- package/test/sap/ui/core/qunit/testsuites/testsuite.foundation.enablement.qunit.js +6 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.managed.object.qunit.js +4 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.modular.core.qunit.js +1 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.security.qunit.js +3 -9
- package/test/sap/ui/core/qunit/types/DataType.qunit.js +14 -3
- package/test/sap/ui/core/qunit/types/Date.qunit.js +3 -0
- package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +391 -147
- package/test/sap/ui/core/qunit/types/DateFormatTimezones.qunit.js +32 -29
- package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +7 -4
- package/test/sap/ui/core/qunit/types/FileSizeFormat.qunit.js +5 -1
- package/test/sap/ui/core/qunit/types/ListFormat.qunit.js +3 -0
- package/test/sap/ui/core/qunit/types/NumberFormat.qunit.js +4 -3
- package/test/sap/ui/core/qunit/types/NumberFormatCurrencies.qunit.js +5 -4
- package/test/sap/ui/core/qunit/types/NumberFormatCurrenciesTrailing.qunit.js +4 -3
- package/test/sap/ui/core/qunit/types/SimpleType.qunit.js +3 -0
- package/test/sap/ui/core/qunit/types/TimezoneUtil.qunit.js +23 -0
- package/test/sap/ui/core/qunit/types/Types.qunit.js +44 -10
- package/test/sap/ui/core/qunit/types/testsuite.types.qunit.js +3 -0
- package/test/sap/ui/core/qunit/util/InvisibleMessage.qunit.js +4 -4
- package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +592 -83
- package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-allowlist.js +7 -0
- package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-frameOptions.js +7 -0
- package/test/sap/ui/core/qunit/{bootstrap/CfgFromGlobalObject.qunit.html → util/jQuery.sap.FrameOptions-meta-tag-override-mode.qunit.html} +7 -11
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-mode.qunit.js +3 -4
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-service.qunit.html +26 -0
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-service.qunit.js +3 -4
- package/test/sap/ui/core/qunit/{bootstrap/CfgDefaults.qunit.html → util/jQuery.sap.FrameOptions-meta-tag.qunit.html} +5 -8
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag.qunit.js +3 -4
- package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +10 -10
- package/test/sap/ui/core/qunit/util/jquery.sap.logger.qunit.html +18 -0
- package/test/sap/ui/core/qunit/util/jquery.sap.resources.qunit.js +1 -1
- package/test/sap/ui/core/qunit/util/testsuite.util.qunit.js +1 -3
- package/test/sap/ui/core/qunit/xml/XMLListBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/xml/XMLModel.qunit.js +3 -0
- package/test/sap/ui/core/qunit/xml/XMLPropertyBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/xml/XMLTreeBinding.qunit.js +3 -0
- package/test/sap/ui/core/relnotes/changes-1.119.json +1 -12
- package/test/sap/ui/core/relnotes/changes-1.120.json +442 -0
- package/test/sap/ui/core/terminologies/App.controller.js +2 -3
- package/test/sap/ui/core/terminologies/main.js +2 -3
- package/test/sap/ui/test/qunit/TestUtils.qunit.js +3 -3
- package/src/sap/ui/core/ConfigTest.js +0 -17
- package/src/sap/ui/core/_ConfigurationProvider.js +0 -187
- package/test/sap/ui/core/ComponentExtensibility_CustomizingDisabled.html +0 -57
- package/test/sap/ui/core/qunit/bootstrap/CfgDefaults.qunit.js +0 -71
- package/test/sap/ui/core/qunit/bootstrap/CfgFromConfigAttribute.qunit.html +0 -29
- package/test/sap/ui/core/qunit/bootstrap/CfgFromConfigAttribute.qunit.js +0 -40
- package/test/sap/ui/core/qunit/bootstrap/CfgFromGlobalObject.beforeBootstrap.qunit.js +0 -20
- package/test/sap/ui/core/qunit/bootstrap/CfgFromGlobalObject.qunit.js +0 -40
- package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.html +0 -42
- package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.js +0 -49
- package/test/sap/ui/core/qunit/util/BusyIndicatorNoCore.qunit.js +0 -96
- package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-meta-tag.js +0 -10
- package/test/sap/ui/core/samples/mvc/JSONView.html +0 -65
|
@@ -131,70 +131,70 @@ sap.ui.define([
|
|
|
131
131
|
* The entity's edit URL to be used for the DELETE request
|
|
132
132
|
* @param {string} sIndex
|
|
133
133
|
* The entity's index
|
|
134
|
-
* @param {object} [
|
|
135
|
-
* An entity with the ETag of the binding for which the deletion was requested.
|
|
136
|
-
*
|
|
137
|
-
* binding
|
|
134
|
+
* @param {object} [_oETagEntity]
|
|
135
|
+
* An entity with the ETag of the binding for which the deletion was requested. Not used and
|
|
136
|
+
* should always be undefined
|
|
138
137
|
* @param {function(number,number):void} fnCallback
|
|
139
138
|
* A function which is called immediately when an entity has been deleted from the cache, or
|
|
140
139
|
* when it was re-inserted; the index of the entity and an offset (-1 for deletion, 1 for
|
|
141
140
|
* re-insertion) are passed as parameter
|
|
142
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
141
|
+
* @returns {sap.ui.base.SyncPromise<void>}
|
|
143
142
|
* A promise which is resolved without a result in case of success, or rejected with an
|
|
144
143
|
* instance of <code>Error</code> in case of failure
|
|
145
|
-
* @throws {Error} If the cache is shared, <code>
|
|
146
|
-
*
|
|
144
|
+
* @throws {Error} If the cache is shared, <code>sIndex</code> is not a number, or the node
|
|
145
|
+
* at the given index is expanded.
|
|
147
146
|
*
|
|
148
147
|
* @public
|
|
149
148
|
*/
|
|
150
149
|
// @override sap.ui.model.odata.v4.lib._Cache#_delete
|
|
151
|
-
_AggregationCache.prototype._delete = function (oGroupLock, sEditUrl, sIndex,
|
|
150
|
+
_AggregationCache.prototype._delete = function (oGroupLock, sEditUrl, sIndex, _oETagEntity,
|
|
152
151
|
fnCallback) {
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
let iIndex = parseInt(sIndex);
|
|
153
|
+
if (isNaN(iIndex)) {
|
|
154
|
+
throw new Error(`Unsupported kept-alive entity: ${this.sResourcePath}${sIndex}`);
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
const oElement = this.aElements[iIndex];
|
|
158
|
+
const sPredicate = _Helper.getPrivateAnnotation(oElement, "predicate");
|
|
159
|
+
if (oElement["@$ui5.node.isExpanded"]) {
|
|
160
|
+
throw new Error(`Unsupported expanded node: ${this.sResourcePath}${sPredicate}`);
|
|
160
161
|
}
|
|
161
162
|
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
});
|
|
163
|
+
const oParentCache = _Helper.getPrivateAnnotation(oElement, "parent");
|
|
164
|
+
if (oElement["@$ui5.context.isTransient"]) {
|
|
165
|
+
// cancel the create (no callback function necessary)
|
|
166
|
+
return oParentCache._delete(oGroupLock, sEditUrl,
|
|
167
|
+
_Helper.getPrivateAnnotation(oElement, "transientPredicate"));
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return SyncPromise.resolve(
|
|
171
|
+
this.oRequestor.request("DELETE", sEditUrl, oGroupLock, {"If-Match" : oElement})
|
|
172
|
+
).then(() => {
|
|
173
|
+
// the element might have moved due to parallel insert/delete
|
|
174
|
+
iIndex = _Cache.getElementIndex(this.aElements, sPredicate, iIndex);
|
|
175
|
+
// remove in parent cache
|
|
176
|
+
const iIndexInParentCache = oParentCache.removeElement(
|
|
177
|
+
_Helper.getPrivateAnnotation(oElement, "index", 0), sPredicate);
|
|
178
|
+
// remove the descendants in the parent cache (if any)
|
|
179
|
+
const iDescendants = _Helper.getPrivateAnnotation(oElement, "descendants", 0);
|
|
180
|
+
for (let i = 0; i < iDescendants; i += 1) {
|
|
181
|
+
oParentCache.removeElement(iIndexInParentCache);
|
|
182
|
+
}
|
|
183
|
+
const iOffset = iDescendants + 1;
|
|
184
|
+
if (oParentCache === this.oFirstLevel) {
|
|
185
|
+
this.adjustDescendantCount(oElement, iIndex, -iOffset);
|
|
186
|
+
} else if (!oParentCache.getValue("$count")) {
|
|
187
|
+
// make parent a leaf (the direct predecessor)
|
|
188
|
+
this.makeLeaf(this.aElements[iIndex - 1]);
|
|
189
|
+
}
|
|
190
|
+
if (!("@$ui5.context.isTransient" in oElement)) {
|
|
191
|
+
this.shiftIndex(iIndex, -iOffset);
|
|
192
|
+
}
|
|
193
|
+
// remove in this cache
|
|
194
|
+
this.removeElement(iIndex, sPredicate);
|
|
195
|
+
// notify caller
|
|
196
|
+
fnCallback(iIndex, -1);
|
|
197
|
+
});
|
|
198
198
|
};
|
|
199
199
|
|
|
200
200
|
/**
|
|
@@ -208,8 +208,8 @@ sap.ui.define([
|
|
|
208
208
|
* The group level cache which the given elements have been read from; omit it only for grand
|
|
209
209
|
* totals or separate subtotals
|
|
210
210
|
* @param {number} [iStart]
|
|
211
|
-
* The index of the first element within the cache's collection; omit it only if
|
|
212
|
-
* level cache is given
|
|
211
|
+
* The $skip index of the first given element within the cache's collection; omit it only if
|
|
212
|
+
* no group level cache is given or for a single created element (where it is always unknown)
|
|
213
213
|
* @throws {Error}
|
|
214
214
|
* In case an unexpected element or placeholder would be overwritten, if the given offset is
|
|
215
215
|
* negative, if a resulting array index is out of bounds, in case of a duplicate predicate, or
|
|
@@ -226,15 +226,15 @@ sap.ui.define([
|
|
|
226
226
|
function addElement(oElement, i) {
|
|
227
227
|
var oOldElement = aElements[iOffset + i],
|
|
228
228
|
oKeptElement,
|
|
229
|
-
sPredicate = _Helper.getPrivateAnnotation(oElement, "
|
|
230
|
-
|
|
229
|
+
sPredicate = _Helper.getPrivateAnnotation(oElement, "predicate"),
|
|
230
|
+
sTransientPredicate = _Helper.getPrivateAnnotation(oElement, "transientPredicate");
|
|
231
231
|
|
|
232
232
|
if (oOldElement) { // check before overwriting
|
|
233
233
|
if (oOldElement === oElement) {
|
|
234
234
|
return;
|
|
235
235
|
}
|
|
236
236
|
_AggregationHelper.beforeOverwritePlaceholder(oOldElement, oElement, oCache,
|
|
237
|
-
iStart + i, sNodeProperty);
|
|
237
|
+
iStart === undefined ? undefined : iStart + i, sNodeProperty);
|
|
238
238
|
} else if (iOffset + i >= aElements.length) {
|
|
239
239
|
throw new Error("Array index out of bounds: " + (iOffset + i));
|
|
240
240
|
}
|
|
@@ -254,13 +254,24 @@ sap.ui.define([
|
|
|
254
254
|
} // else: ETag changed, ignore kept element!
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
|
|
257
|
+
if (sPredicate) {
|
|
258
|
+
aElements.$byPredicate[sPredicate] = oElement;
|
|
259
|
+
}
|
|
260
|
+
if (sTransientPredicate) {
|
|
261
|
+
aElements.$byPredicate[sTransientPredicate] = oElement;
|
|
262
|
+
}
|
|
263
|
+
aElements[iOffset + i] = oElement;
|
|
258
264
|
|
|
265
|
+
// remember index & parent for #requestSideEffects
|
|
259
266
|
if (oCache) {
|
|
260
|
-
// remember index & parent for #requestSideEffects
|
|
261
|
-
_Helper.setPrivateAnnotation(oElement, "index", iStart + i);
|
|
262
267
|
_Helper.setPrivateAnnotation(oElement, "parent", oCache);
|
|
263
268
|
}
|
|
269
|
+
|
|
270
|
+
if (sTransientPredicate) { // created
|
|
271
|
+
iStart -= 1; // "shift" index of non-created elements behind this one
|
|
272
|
+
} else {
|
|
273
|
+
_Helper.setPrivateAnnotation(oElement, "index", iStart + i);
|
|
274
|
+
}
|
|
264
275
|
}
|
|
265
276
|
|
|
266
277
|
if (iOffset < 0) {
|
|
@@ -273,6 +284,47 @@ sap.ui.define([
|
|
|
273
284
|
}
|
|
274
285
|
};
|
|
275
286
|
|
|
287
|
+
/**
|
|
288
|
+
* Adjusts the (limited) descendant count at all ancestors of the given element which must be
|
|
289
|
+
* part of <code>this.oFirstLevel</code>, handles placeholders. Makes the parent a leaf if its
|
|
290
|
+
* descendant count becomes 0.
|
|
291
|
+
*
|
|
292
|
+
* @param {object} oElement - The element
|
|
293
|
+
* @param {number} iIndex - Its index
|
|
294
|
+
* @param {number} iOffset - The offset
|
|
295
|
+
*
|
|
296
|
+
* @private
|
|
297
|
+
*/
|
|
298
|
+
_AggregationCache.prototype.adjustDescendantCount = function (oElement, iIndex, iOffset) {
|
|
299
|
+
let iLevel = oElement["@$ui5.node.level"];
|
|
300
|
+
let bInitialPlaceholderFound = false;
|
|
301
|
+
|
|
302
|
+
for (let iCandidateIndex = iIndex - 1; iCandidateIndex >= 0 && iLevel > 1;
|
|
303
|
+
iCandidateIndex -= 1) {
|
|
304
|
+
const oCandidate = this.aElements[iCandidateIndex];
|
|
305
|
+
const iCandidateLevel = oCandidate["@$ui5.node.level"];
|
|
306
|
+
if (iCandidateLevel === 0) {
|
|
307
|
+
// Note: level 0 means "don't know" for initial *placeholders* of 1st level cache!
|
|
308
|
+
bInitialPlaceholderFound = true;
|
|
309
|
+
} else if (iCandidateLevel < iLevel) {
|
|
310
|
+
if (!bInitialPlaceholderFound || this.isAncestorOf(iCandidateIndex, iIndex)) {
|
|
311
|
+
const iCount
|
|
312
|
+
= _Helper.getPrivateAnnotation(oCandidate, "descendants") + iOffset;
|
|
313
|
+
_Helper.setPrivateAnnotation(oCandidate, "descendants", iCount);
|
|
314
|
+
if (iCount === 0) {
|
|
315
|
+
this.makeLeaf(oCandidate);
|
|
316
|
+
}
|
|
317
|
+
// the next candidate must be an ancestor of this node
|
|
318
|
+
iIndex = iCandidateIndex;
|
|
319
|
+
bInitialPlaceholderFound = false;
|
|
320
|
+
}
|
|
321
|
+
// we have a node or placeholder at this level => there can only be ancestors at
|
|
322
|
+
// lower levels
|
|
323
|
+
iLevel = iCandidateLevel;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
|
|
276
328
|
/**
|
|
277
329
|
* Deletes the "$apply" system query option before side effects are requested and adds the
|
|
278
330
|
* NodeProperty path to the "$select" system query option (if not already present).
|
|
@@ -322,32 +374,58 @@ sap.ui.define([
|
|
|
322
374
|
* @see #expand
|
|
323
375
|
*/
|
|
324
376
|
_AggregationCache.prototype.collapse = function (sGroupNodePath) {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
377
|
+
const oGroupNode = this.getValue(sGroupNodePath);
|
|
378
|
+
const oCollapsed = _AggregationHelper.getCollapsedObject(oGroupNode);
|
|
379
|
+
_Helper.updateAll(this.mChangeListeners, sGroupNodePath, oGroupNode, oCollapsed);
|
|
380
|
+
|
|
381
|
+
const aElements = this.aElements;
|
|
382
|
+
const iIndex = aElements.indexOf(oGroupNode);
|
|
383
|
+
let iCount = this.countDescendants(oGroupNode, iIndex);
|
|
384
|
+
if (this.oAggregation.subtotalsAtBottomOnly !== undefined
|
|
385
|
+
// Note: there is at least one key for "@$ui5.node.isExpanded"; there are more keys
|
|
386
|
+
// if and only if subtotals are actually being requested and (also) shown at the
|
|
387
|
+
// bottom
|
|
388
|
+
&& Object.keys(oCollapsed).length > 1) {
|
|
389
|
+
iCount += 1; // collapse subtotals at bottom
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
for (let i = iIndex + 1; i < iIndex + 1 + iCount; i += 1) {
|
|
393
|
+
delete aElements.$byPredicate[_Helper.getPrivateAnnotation(aElements[i], "predicate")];
|
|
336
394
|
delete aElements.$byPredicate[
|
|
337
|
-
_Helper.getPrivateAnnotation(aElements[
|
|
338
|
-
iCount += 1;
|
|
395
|
+
_Helper.getPrivateAnnotation(aElements[i], "transientPredicate")];
|
|
339
396
|
}
|
|
397
|
+
const aSpliced = aElements.splice(iIndex + 1, iCount);
|
|
398
|
+
aSpliced.$index = _Helper.getPrivateAnnotation(oGroupNode, "index");
|
|
399
|
+
_Helper.setPrivateAnnotation(oGroupNode, "spliced", aSpliced);
|
|
400
|
+
aElements.$count -= iCount;
|
|
340
401
|
|
|
341
|
-
|
|
342
|
-
|
|
402
|
+
return iCount;
|
|
403
|
+
};
|
|
343
404
|
|
|
344
|
-
|
|
405
|
+
/**
|
|
406
|
+
* Virtually collapses the given group node at the given index, counting the number of
|
|
407
|
+
* descendant nodes that would be affected.
|
|
408
|
+
*
|
|
409
|
+
* @param {object} oGroupNode - An expanded(!) group node
|
|
410
|
+
* @param {number} iIndex - Its index
|
|
411
|
+
* @returns {number} The number of descendant nodes that would be affected
|
|
412
|
+
*
|
|
413
|
+
* @private
|
|
414
|
+
* @see #collapse
|
|
415
|
+
* @see #isAncestorOf
|
|
416
|
+
*/
|
|
417
|
+
_AggregationCache.prototype.countDescendants = function (oGroupNode, iIndex) {
|
|
418
|
+
var i;
|
|
419
|
+
|
|
420
|
+
let iGroupNodeLevel = oGroupNode["@$ui5.node.level"];
|
|
421
|
+
let iDescendants = _Helper.getPrivateAnnotation(oGroupNode, "descendants");
|
|
345
422
|
if (iDescendants) { // => this.oAggregation.expandTo > 1
|
|
346
423
|
// Note: "descendants" refers to LimitedDescendantCountProperty and counts descendants
|
|
347
424
|
// within "top pyramid" only!
|
|
348
425
|
iGroupNodeLevel = this.oAggregation.expandTo;
|
|
349
426
|
}
|
|
350
|
-
|
|
427
|
+
const aElements = this.aElements;
|
|
428
|
+
for (i = iIndex + 1; i < aElements.length; i += 1) {
|
|
351
429
|
if (aElements[i]["@$ui5.node.level"] <= iGroupNodeLevel) {
|
|
352
430
|
// Note: level 0 or 1 is used for initial placeholders of 1st level cache!
|
|
353
431
|
if (!iDescendants) {
|
|
@@ -356,23 +434,12 @@ sap.ui.define([
|
|
|
356
434
|
iDescendants -= 1;
|
|
357
435
|
if (aElements[i]["@$ui5.node.isExpanded"] === false) {
|
|
358
436
|
// skip descendants of manually collapsed node
|
|
359
|
-
iDescendants -= _Helper.getPrivateAnnotation(aElements[i], "descendants"
|
|
437
|
+
iDescendants -= _Helper.getPrivateAnnotation(aElements[i], "descendants", 0);
|
|
360
438
|
}
|
|
361
439
|
}
|
|
362
|
-
collapse(i);
|
|
363
|
-
i += 1;
|
|
364
440
|
}
|
|
365
|
-
if (this.oAggregation.subtotalsAtBottomOnly !== undefined
|
|
366
|
-
// Note: there is at least one key for "@$ui5.node.isExpanded"; there are more keys
|
|
367
|
-
// if and only if subtotals are actually being requested and (also) shown at the
|
|
368
|
-
// bottom
|
|
369
|
-
&& Object.keys(oCollapsed).length > 1) {
|
|
370
|
-
collapse(i); // collapse subtotals at bottom
|
|
371
|
-
}
|
|
372
|
-
_Helper.setPrivateAnnotation(oGroupNode, "spliced", aElements.splice(iIndex + 1, iCount));
|
|
373
|
-
aElements.$count -= iCount;
|
|
374
441
|
|
|
375
|
-
return
|
|
442
|
+
return i - (iIndex + 1);
|
|
376
443
|
};
|
|
377
444
|
|
|
378
445
|
/**
|
|
@@ -390,7 +457,8 @@ sap.ui.define([
|
|
|
390
457
|
* A (temporary) key predicate for the transient entity: "($uid=...)"
|
|
391
458
|
* @param {object} oEntityData
|
|
392
459
|
* The initial entity data, already cloned and cleaned of client-side annotations (except
|
|
393
|
-
* "@$ui5.node.parent" which contains the OData ID string needed for
|
|
460
|
+
* "@$ui5.node.parent" which contains the optional OData ID string needed for
|
|
461
|
+
* "...@odata.bind")
|
|
394
462
|
* @param {boolean} bAtEndOfCreated
|
|
395
463
|
* Whether the newly created entity should be inserted after previously created entities or at
|
|
396
464
|
* the front of the list.
|
|
@@ -403,31 +471,32 @@ sap.ui.define([
|
|
|
403
471
|
* A promise which is resolved with the created entity when the POST request has been
|
|
404
472
|
* successfully sent and the entity has been marked as non-transient
|
|
405
473
|
* @throws {Error}
|
|
406
|
-
* If <code>
|
|
407
|
-
* parent is collapsed
|
|
474
|
+
* If <code>bAtEndOfCreated</code> is set or the parent is collapsed
|
|
408
475
|
*
|
|
409
476
|
* @public
|
|
410
477
|
*/
|
|
411
478
|
// @override sap.ui.model.odata.v4.lib._Cache#create
|
|
412
479
|
_AggregationCache.prototype.create = function (oGroupLock, oPostPathPromise, sPath,
|
|
413
480
|
sTransientPredicate, oEntityData, bAtEndOfCreated, fnErrorCallback, fnSubmitCallback) {
|
|
414
|
-
if (this.oAggregation.expandTo > 1) {
|
|
415
|
-
throw new Error("Unsupported expandTo: " + this.oAggregation.expandTo);
|
|
416
|
-
}
|
|
417
481
|
if (bAtEndOfCreated) {
|
|
418
482
|
throw new Error("Unsupported bAtEndOfCreated");
|
|
419
483
|
}
|
|
420
484
|
|
|
421
|
-
const aElements = this.aElements;
|
|
422
485
|
const sParentPath = oEntityData["@$ui5.node.parent"];
|
|
423
|
-
|
|
486
|
+
delete oEntityData["@$ui5.node.parent"];
|
|
487
|
+
const sParentPredicate = sParentPath?.slice(sParentPath.indexOf("("));
|
|
488
|
+
const aElements = this.aElements;
|
|
424
489
|
const oParentNode = aElements.$byPredicate[sParentPredicate];
|
|
425
|
-
if (oParentNode["@$ui5.node.isExpanded"] === false) {
|
|
490
|
+
if (oParentNode?.["@$ui5.node.isExpanded"] === false) {
|
|
426
491
|
throw new Error("Unsupported collapsed parent: " + sParentPath);
|
|
427
492
|
}
|
|
428
|
-
const iIndex = aElements.indexOf(oParentNode) + 1;
|
|
429
493
|
|
|
430
|
-
|
|
494
|
+
const iLevel = oParentNode
|
|
495
|
+
? oParentNode["@$ui5.node.level"] + 1
|
|
496
|
+
: 1;
|
|
497
|
+
let oCache = iLevel > (this.oAggregation.expandTo || 1)
|
|
498
|
+
? _Helper.getPrivateAnnotation(oParentNode, "cache")
|
|
499
|
+
: this.oFirstLevel;
|
|
431
500
|
if (!oCache) {
|
|
432
501
|
oCache = this.createGroupLevelCache(oParentNode);
|
|
433
502
|
oCache.setEmpty();
|
|
@@ -436,32 +505,37 @@ sap.ui.define([
|
|
|
436
505
|
{"@$ui5.node.isExpanded" : true}); // not a leaf anymore
|
|
437
506
|
}
|
|
438
507
|
|
|
439
|
-
|
|
440
|
-
const
|
|
441
|
-
oEntityData, bAtEndOfCreated, fnErrorCallback, fnSubmitCallback,
|
|
442
|
-
this.
|
|
508
|
+
const iIndex = aElements.indexOf(oParentNode) + 1; // 0 w/o oParentNode :-)
|
|
509
|
+
const oPromise = oCache.create(oGroupLock, oPostPathPromise, sPath, sTransientPredicate,
|
|
510
|
+
oEntityData, bAtEndOfCreated, fnErrorCallback, fnSubmitCallback, /*onCancel*/() => {
|
|
511
|
+
if (oCache === this.oFirstLevel) {
|
|
512
|
+
this.adjustDescendantCount(oEntityData, iIndex, -1);
|
|
513
|
+
}
|
|
443
514
|
aElements.$count -= 1;
|
|
444
515
|
delete aElements.$byPredicate[
|
|
445
516
|
_Helper.getPrivateAnnotation(oEntityData, "transientPredicate")];
|
|
446
|
-
aElements.splice(
|
|
447
|
-
}
|
|
517
|
+
aElements.splice(iIndex, 1);
|
|
518
|
+
});
|
|
448
519
|
|
|
449
|
-
// add @odata.bind to POST body only
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
520
|
+
if (sParentPath) { // add @odata.bind to POST body only
|
|
521
|
+
_Helper.getPrivateAnnotation(oEntityData, "postBody")
|
|
522
|
+
[this.oAggregation.$ParentNavigationProperty + "@odata.bind"]
|
|
523
|
+
= _Helper.makeRelativeUrl("/" + sParentPath, "/" + this.sResourcePath);
|
|
524
|
+
}
|
|
525
|
+
oEntityData["@$ui5.node.level"] = iLevel; // do not send via POST!
|
|
454
526
|
|
|
455
527
|
aElements.splice(iIndex, 0, null); // create a gap
|
|
456
|
-
this.addElements(oEntityData, iIndex, oCache
|
|
528
|
+
this.addElements(oEntityData, iIndex, oCache); // $skip index is undefined!
|
|
457
529
|
aElements.$count += 1;
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
530
|
+
if (oCache === this.oFirstLevel) {
|
|
531
|
+
this.adjustDescendantCount(oEntityData, iIndex, +1);
|
|
532
|
+
}
|
|
461
533
|
|
|
462
|
-
return
|
|
534
|
+
return oPromise.then(function () {
|
|
463
535
|
aElements.$byPredicate[_Helper.getPrivateAnnotation(oEntityData, "predicate")]
|
|
464
536
|
= oEntityData;
|
|
537
|
+
// Note: #calculateKeyPredicateRH doesn't know better :-(
|
|
538
|
+
oEntityData["@$ui5.node.level"] = iLevel;
|
|
465
539
|
|
|
466
540
|
return oEntityData;
|
|
467
541
|
});
|
|
@@ -564,16 +638,28 @@ sap.ui.define([
|
|
|
564
638
|
this.aElements.$byPredicate = aOldElements.$byPredicate;
|
|
565
639
|
iCount = aSpliced.length;
|
|
566
640
|
this.aElements.$count = aOldElements.$count + iCount;
|
|
567
|
-
const
|
|
641
|
+
const iLevelDiff = oGroupNode["@$ui5.node.level"] + 1 - aSpliced[0]["@$ui5.node.level"];
|
|
642
|
+
const iIndexDiff = _Helper.getPrivateAnnotation(oGroupNode, "index") - aSpliced.$index;
|
|
568
643
|
aSpliced.forEach(function (oElement) {
|
|
569
644
|
var sPredicate = _Helper.getPrivateAnnotation(oElement, "predicate");
|
|
570
645
|
|
|
571
|
-
oElement["@$ui5.node.level"] +=
|
|
646
|
+
oElement["@$ui5.node.level"] += iLevelDiff;
|
|
647
|
+
if (_Helper.getPrivateAnnotation(oElement, "parent") === that.oFirstLevel) {
|
|
648
|
+
const iIndex = _Helper.getPrivateAnnotation(oElement, "index");
|
|
649
|
+
if (iIndex !== undefined) {
|
|
650
|
+
_Helper.setPrivateAnnotation(oElement, "index", iIndex + iIndexDiff);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
572
653
|
if (!_Helper.hasPrivateAnnotation(oElement, "placeholder")) {
|
|
573
654
|
if (aSpliced.$stale) {
|
|
574
655
|
that.turnIntoPlaceholder(oElement, sPredicate);
|
|
575
656
|
} else {
|
|
576
657
|
that.aElements.$byPredicate[sPredicate] = oElement;
|
|
658
|
+
const sTransientPredicate
|
|
659
|
+
= _Helper.getPrivateAnnotation(oElement, "transientPredicate");
|
|
660
|
+
if (sTransientPredicate) {
|
|
661
|
+
that.aElements.$byPredicate[sTransientPredicate] = oElement;
|
|
662
|
+
}
|
|
577
663
|
if (_Helper.hasPrivateAnnotation(oElement, "expanding")) {
|
|
578
664
|
_Helper.deletePrivateAnnotation(oElement, "expanding");
|
|
579
665
|
iCount += that.expand(_GroupLock.$cached, oElement).getResult();
|
|
@@ -778,6 +864,36 @@ sap.ui.define([
|
|
|
778
864
|
return this.sDownloadUrl;
|
|
779
865
|
};
|
|
780
866
|
|
|
867
|
+
/**
|
|
868
|
+
* Returns the index of a parent node
|
|
869
|
+
*
|
|
870
|
+
* @param {number} iIndex
|
|
871
|
+
* The index of the child node
|
|
872
|
+
* @returns {number|null}
|
|
873
|
+
* The parent node's index, or -1 if the given node is a root node and thus has
|
|
874
|
+
* no parent
|
|
875
|
+
* @throws {Error}
|
|
876
|
+
* If the index of a parent cannot be found
|
|
877
|
+
*
|
|
878
|
+
*
|
|
879
|
+
* @public
|
|
880
|
+
*/
|
|
881
|
+
_AggregationCache.prototype.getParentIndex = function (iIndex) {
|
|
882
|
+
const iLevel = this.aElements[iIndex]["@$ui5.node.level"];
|
|
883
|
+
|
|
884
|
+
if (iLevel <= 1) {
|
|
885
|
+
return -1; // a root has no parent
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
for (; iIndex >= 0; iIndex -= 1) {
|
|
889
|
+
if (this.aElements[iIndex]["@$ui5.node.level"] < iLevel) {
|
|
890
|
+
return iIndex;
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
throw new Error("Unexpected error");
|
|
895
|
+
};
|
|
896
|
+
|
|
781
897
|
/**
|
|
782
898
|
* @override
|
|
783
899
|
* @see sap.ui.model.odata.v4.lib._Cache#getValue
|
|
@@ -792,6 +908,31 @@ sap.ui.define([
|
|
|
792
908
|
oSyncPromise.caught();
|
|
793
909
|
};
|
|
794
910
|
|
|
911
|
+
/**
|
|
912
|
+
* Tells whether the first given node is an ancestor of (or the same as) the second given node
|
|
913
|
+
* (in case of a recursive hierarchy).
|
|
914
|
+
*
|
|
915
|
+
* @param {number} iAncestor - Index of some node which may be an ancestor
|
|
916
|
+
* @param {number} iDescendant - Index of some node which may be a descendant
|
|
917
|
+
* @returns {boolean} Whether the assumed ancestor relation holds
|
|
918
|
+
*
|
|
919
|
+
* @public
|
|
920
|
+
*/
|
|
921
|
+
_AggregationCache.prototype.isAncestorOf = function (iAncestor, iDescendant) {
|
|
922
|
+
if (iDescendant === iAncestor) { // "or the same as"
|
|
923
|
+
return true;
|
|
924
|
+
}
|
|
925
|
+
if (iDescendant < iAncestor
|
|
926
|
+
|| !this.aElements[iAncestor]["@$ui5.node.isExpanded"]
|
|
927
|
+
|| this.aElements[iAncestor]["@$ui5.node.level"]
|
|
928
|
+
>= this.aElements[iDescendant]["@$ui5.node.level"]) { // impossible
|
|
929
|
+
return false;
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
return iDescendant
|
|
933
|
+
<= iAncestor + this.countDescendants(this.aElements[iAncestor], iAncestor);
|
|
934
|
+
};
|
|
935
|
+
|
|
795
936
|
/**
|
|
796
937
|
* @override
|
|
797
938
|
* @see sap.ui.model.odata.v4.lib._Cache#isDeletingInOtherGroup
|
|
@@ -802,7 +943,7 @@ sap.ui.define([
|
|
|
802
943
|
|
|
803
944
|
/**
|
|
804
945
|
* Determines the list of elements determined by the given predicates. All other elements are
|
|
805
|
-
* turned into placeholders (lazily).
|
|
946
|
+
* turned into placeholders (lazily), except transient ones.
|
|
806
947
|
*
|
|
807
948
|
* @param {string[]} aPredicates
|
|
808
949
|
* The key predicates of the elements to request side effects for
|
|
@@ -824,6 +965,10 @@ sap.ui.define([
|
|
|
824
965
|
return this.aElements.filter(function (oElement) {
|
|
825
966
|
var sPredicate = _Helper.getPrivateAnnotation(oElement, "predicate");
|
|
826
967
|
|
|
968
|
+
if (!sPredicate) {
|
|
969
|
+
return; // keep transient elements "as is"
|
|
970
|
+
}
|
|
971
|
+
|
|
827
972
|
if (mPredicates[sPredicate]) {
|
|
828
973
|
_AggregationHelper.markSplicedStale(oElement);
|
|
829
974
|
return true; // keep and request
|
|
@@ -833,9 +978,25 @@ sap.ui.define([
|
|
|
833
978
|
});
|
|
834
979
|
};
|
|
835
980
|
|
|
981
|
+
/**
|
|
982
|
+
* Makes the given element a leaf.
|
|
983
|
+
*
|
|
984
|
+
* @param {object} oElement - The element
|
|
985
|
+
*
|
|
986
|
+
* @private
|
|
987
|
+
*/
|
|
988
|
+
_AggregationCache.prototype.makeLeaf = function (oElement) {
|
|
989
|
+
_Helper.updateAll(this.mChangeListeners,
|
|
990
|
+
_Helper.getPrivateAnnotation(oElement, "predicate"), oElement,
|
|
991
|
+
{"@$ui5.node.isExpanded" : undefined});
|
|
992
|
+
// _Helper.updateAll only sets it to undefined
|
|
993
|
+
delete oElement["@$ui5.node.isExpanded"];
|
|
994
|
+
};
|
|
995
|
+
|
|
836
996
|
/**
|
|
837
997
|
* Moves the (child) node with the given path to the parent node with the given path by sending
|
|
838
|
-
* a PATCH request for "<parent navigation>@odata.bind".
|
|
998
|
+
* a PATCH request for "<parent navigation>@odata.bind". The (child) node may be a leaf or a
|
|
999
|
+
* collapsed node, but not expanded!
|
|
839
1000
|
*
|
|
840
1001
|
* @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
|
|
841
1002
|
* A lock for the group to associate the requests with
|
|
@@ -843,58 +1004,79 @@ sap.ui.define([
|
|
|
843
1004
|
* The (child) node's path relative to the cache
|
|
844
1005
|
* @param {string} sParentPath
|
|
845
1006
|
* The parent node's path relative to the cache
|
|
846
|
-
* @returns {sap.ui.base.SyncPromise<
|
|
847
|
-
* A promise which is resolved
|
|
848
|
-
*
|
|
1007
|
+
* @returns {sap.ui.base.SyncPromise<number>}
|
|
1008
|
+
* A promise which is resolved with the number of child nodes added (normally one, but maybe
|
|
1009
|
+
* more in case parent node was collapsed before) when the move is finished, or rejected in
|
|
1010
|
+
* case of an error
|
|
849
1011
|
*
|
|
850
1012
|
* @public
|
|
851
1013
|
*/
|
|
852
1014
|
_AggregationCache.prototype.move = function (oGroupLock, sChildPath, sParentPath) {
|
|
1015
|
+
const sTransientPredicate = "($uid=" + _Helper.uid() + ")";
|
|
1016
|
+
|
|
853
1017
|
const sChildPredicate = sChildPath.slice(sChildPath.indexOf("("));
|
|
854
1018
|
const oChildNode = this.aElements.$byPredicate[sChildPredicate];
|
|
1019
|
+
const sParentPredicate = sParentPath.slice(sParentPath.indexOf("("));
|
|
1020
|
+
const oParentNode = this.aElements.$byPredicate[sParentPredicate];
|
|
855
1021
|
|
|
856
|
-
|
|
1022
|
+
let oReadPromise;
|
|
1023
|
+
let oCache = _Helper.getPrivateAnnotation(oParentNode, "cache");
|
|
1024
|
+
if (!oCache && oParentNode["@$ui5.node.isExpanded"] === false) {
|
|
1025
|
+
oCache = this.createGroupLevelCache(oParentNode);
|
|
1026
|
+
// @see #getExclusiveFilter
|
|
1027
|
+
oCache.restoreElement(undefined, 0, oChildNode, "", undefined, sTransientPredicate);
|
|
1028
|
+
// prefetch from the group level cache
|
|
1029
|
+
oReadPromise = oCache.read(0, this.iReadLength, 0, oGroupLock.getUnlockedCopy());
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
return SyncPromise.all([
|
|
1033
|
+
this.oRequestor.request("PATCH", sChildPath, oGroupLock, {
|
|
857
1034
|
"If-Match" : oChildNode,
|
|
858
1035
|
Prefer : "return=minimal"
|
|
859
1036
|
}, {[this.oAggregation.$ParentNavigationProperty + "@odata.bind"] : sParentPath},
|
|
860
|
-
/*fnSubmit*/null, function fnCancel() { /*nothing to do*/ })
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
// remove original element from its cache's collection
|
|
871
|
-
const oOldParentCache = _Helper.getPrivateAnnotation(oChildNode, "parent");
|
|
872
|
-
oOldParentCache.removeElement(undefined,
|
|
873
|
-
_Helper.getPrivateAnnotation(oChildNode, "index"), sChildPredicate, "");
|
|
874
|
-
if (oOldParentCache.getValue("$count") === 0) { // last child has gone
|
|
875
|
-
const oOldParent = this.aElements[iOldIndex - 1];
|
|
876
|
-
_Helper.updateAll(this.mChangeListeners,
|
|
877
|
-
_Helper.getPrivateAnnotation(oOldParent, "predicate"),
|
|
878
|
-
oOldParent, {"@$ui5.node.isExpanded" : undefined}); // a leaf now
|
|
879
|
-
// _Helper.updateAll only sets it to undefined
|
|
880
|
-
delete oOldParent["@$ui5.node.isExpanded"];
|
|
881
|
-
_Helper.deletePrivateAnnotation(oOldParent, "cache");
|
|
882
|
-
oOldParentCache.setActive(false);
|
|
883
|
-
}
|
|
1037
|
+
/*fnSubmit*/null, function fnCancel() { /*nothing to do*/ }),
|
|
1038
|
+
oReadPromise
|
|
1039
|
+
]).then(([oPatchResult, _oReadResult]) => {
|
|
1040
|
+
const iOldIndex = this.aElements.indexOf(oChildNode);
|
|
1041
|
+
// update the cache with the PATCH response (Note: "@odata.etag" is optional!)
|
|
1042
|
+
_Helper.updateExisting(this.mChangeListeners, sChildPredicate, oChildNode, {
|
|
1043
|
+
"@odata.etag" : oPatchResult["@odata.etag"],
|
|
1044
|
+
"@$ui5.node.level" : oParentNode["@$ui5.node.level"] + 1
|
|
1045
|
+
});
|
|
884
1046
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
1047
|
+
// remove original element from its cache's collection
|
|
1048
|
+
const oOldParentCache = _Helper.getPrivateAnnotation(oChildNode, "parent");
|
|
1049
|
+
oOldParentCache.removeElement(_Helper.getPrivateAnnotation(oChildNode, "index", 0),
|
|
1050
|
+
sChildPredicate);
|
|
1051
|
+
if (oOldParentCache.getValue("$count") === 0) { // last child has gone
|
|
1052
|
+
const oOldParent = this.aElements[iOldIndex - 1];
|
|
1053
|
+
this.makeLeaf(oOldParent);
|
|
1054
|
+
_Helper.deletePrivateAnnotation(oOldParent, "cache");
|
|
1055
|
+
oOldParentCache.setActive(false);
|
|
1056
|
+
}
|
|
894
1057
|
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
1058
|
+
// once oChildNode has moved, it should look 'created' because of its new position
|
|
1059
|
+
_Helper.deletePrivateAnnotation(oChildNode, "index");
|
|
1060
|
+
if (!_Helper.hasPrivateAnnotation(oChildNode, "transientPredicate")) {
|
|
1061
|
+
_Helper.setPrivateAnnotation(oChildNode, "transientPredicate",
|
|
1062
|
+
sTransientPredicate);
|
|
1063
|
+
this.aElements.$byPredicate[sTransientPredicate] = oChildNode;
|
|
1064
|
+
_Helper.updateAll(this.mChangeListeners, sChildPredicate, oChildNode,
|
|
1065
|
+
{"@$ui5.context.isTransient" : false});
|
|
1066
|
+
this.shiftIndex(iOldIndex, -1); // only shift indices after non-created ones
|
|
1067
|
+
}
|
|
1068
|
+
this.aElements.splice(iOldIndex, 1);
|
|
1069
|
+
|
|
1070
|
+
let iResult = 1;
|
|
1071
|
+
if (oReadPromise) {
|
|
1072
|
+
_Helper.setPrivateAnnotation(oChildNode, "parent", oCache);
|
|
1073
|
+
_Helper.setPrivateAnnotation(oParentNode, "cache", oCache);
|
|
1074
|
+
// Note: "@$ui5.node.level" will be created by #expand for oChildNode's siblings
|
|
1075
|
+
// Note: oChildNode already belongs to oCache!
|
|
1076
|
+
this.aElements.$count -= 1; // #expand adjusts $count incl. oChildNode!
|
|
1077
|
+
iResult = this.expand(_GroupLock.$cached, sParentPredicate).unwrap();
|
|
1078
|
+
// Note: "index" created OK by #expand for oChildNode's siblings
|
|
1079
|
+
} else {
|
|
898
1080
|
if (!oCache) {
|
|
899
1081
|
oCache = this.createGroupLevelCache(oParentNode);
|
|
900
1082
|
oCache.setEmpty();
|
|
@@ -902,16 +1084,24 @@ sap.ui.define([
|
|
|
902
1084
|
_Helper.updateAll(this.mChangeListeners, sParentPredicate, oParentNode,
|
|
903
1085
|
{"@$ui5.node.isExpanded" : true}); // not a leaf anymore
|
|
904
1086
|
}
|
|
905
|
-
oCache.restoreElement(undefined, 0, oChildNode, "");
|
|
906
|
-
_Helper.setPrivateAnnotation(oChildNode, "index", 0);
|
|
907
1087
|
_Helper.setPrivateAnnotation(oChildNode, "parent", oCache);
|
|
1088
|
+
oCache.restoreElement(undefined, 0, oChildNode, "");
|
|
908
1089
|
|
|
909
|
-
_Helper.updateAll(this.mChangeListeners, sChildPredicate, oChildNode,
|
|
910
|
-
{"@$ui5.node.level" : oParentNode["@$ui5.node.level"] + 1});
|
|
911
1090
|
const iNewIndex = this.aElements.indexOf(oParentNode) + 1;
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
1091
|
+
const aSpliced = _Helper.getPrivateAnnotation(oParentNode, "spliced");
|
|
1092
|
+
if (aSpliced) {
|
|
1093
|
+
// Note: "@$ui5.node.level" will be adjusted by #expand for aSpliced!
|
|
1094
|
+
oChildNode["@$ui5.node.level"] = aSpliced[0]["@$ui5.node.level"];
|
|
1095
|
+
aSpliced.unshift(oChildNode);
|
|
1096
|
+
this.aElements.$count -= 1; // #expand adjusts $count incl. oChildNode!
|
|
1097
|
+
iResult = this.expand(_GroupLock.$cached, sParentPredicate).unwrap();
|
|
1098
|
+
} else {
|
|
1099
|
+
this.aElements.splice(iNewIndex, 0, oChildNode);
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
return iResult;
|
|
1104
|
+
});
|
|
915
1105
|
};
|
|
916
1106
|
|
|
917
1107
|
/**
|
|
@@ -1014,6 +1204,7 @@ sap.ui.define([
|
|
|
1014
1204
|
&& _Helper.getPrivateAnnotation(oElement, "index")
|
|
1015
1205
|
!== _Helper.getPrivateAnnotation(this.aElements[i - 1], "index") + 1) {
|
|
1016
1206
|
// Note: w/ side effect, indices might not be consecutive => split gap
|
|
1207
|
+
// Note: an undefined "index" causes a split gap, which is important!
|
|
1017
1208
|
readGap(iGapStart, i);
|
|
1018
1209
|
iGapStart = i;
|
|
1019
1210
|
}
|
|
@@ -1156,7 +1347,8 @@ sap.ui.define([
|
|
|
1156
1347
|
};
|
|
1157
1348
|
|
|
1158
1349
|
/**
|
|
1159
|
-
* Reads the given gap from the given cache and replaces the gap with the read's result.
|
|
1350
|
+
* Reads the given gap from the given cache and replaces the gap with the read's result. This
|
|
1351
|
+
* method may be used for single created persisted elements in order to refresh them.
|
|
1160
1352
|
*
|
|
1161
1353
|
* @param {sap.ui.model.odata.v4.lib._CollectionCache} oCache
|
|
1162
1354
|
* The collection cache to read data from
|
|
@@ -1172,40 +1364,51 @@ sap.ui.define([
|
|
|
1172
1364
|
* @returns {sap.ui.base.SyncPromise}
|
|
1173
1365
|
* A promise which is resolved without a defined result when the read is finished, or
|
|
1174
1366
|
* rejected in case of an error
|
|
1175
|
-
* @throws {Error} If index of placeholder at start of gap is less than 0,
|
|
1176
|
-
* before start
|
|
1367
|
+
* @throws {Error} If index of placeholder at start of gap is less than 0, if end of gap is
|
|
1368
|
+
* before start, or if more than a single created persisted element is read
|
|
1177
1369
|
*
|
|
1178
1370
|
* @private
|
|
1179
1371
|
*/
|
|
1180
1372
|
_AggregationCache.prototype.readGap = function (oCache, iStart, iEnd, oGroupLock,
|
|
1181
1373
|
fnDataRequested) {
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1374
|
+
const oStartElement = this.aElements[iStart];
|
|
1375
|
+
const iIndex = _Helper.getPrivateAnnotation(oStartElement, "index");
|
|
1376
|
+
if (iIndex === undefined) {
|
|
1377
|
+
if (iEnd - iStart !== 1) {
|
|
1378
|
+
throw new Error("Not just a single created persisted");
|
|
1379
|
+
}
|
|
1380
|
+
const sPredicate = _Helper.getPrivateAnnotation(oStartElement, "predicate");
|
|
1381
|
+
const oPromise = oCache.refreshSingle(oGroupLock, "", -1, sPredicate,
|
|
1382
|
+
/*bKeepAlive*/true, false, fnDataRequested)
|
|
1383
|
+
.then((oElement) => {
|
|
1384
|
+
// make sure that ODLB reuses the same context instance
|
|
1385
|
+
_Helper.copyPrivateAnnotation(oStartElement, "context", oElement);
|
|
1386
|
+
this.addElements(oElement, iStart, oCache); // $skip index is undefined!
|
|
1387
|
+
});
|
|
1388
|
+
this.aElements.$byPredicate[sPredicate] = oPromise;
|
|
1389
|
+
return oPromise;
|
|
1390
|
+
}
|
|
1189
1391
|
|
|
1392
|
+
const mQueryOptions = oCache.getQueryOptions();
|
|
1190
1393
|
if (mQueryOptions.$count) { // $count not needed anymore, 1st read was done by #expand
|
|
1191
1394
|
delete mQueryOptions.$count;
|
|
1192
1395
|
oCache.setQueryOptions(mQueryOptions, true);
|
|
1193
1396
|
}
|
|
1194
1397
|
|
|
1195
|
-
oPromise = oCache.read(iIndex, iEnd - iStart, 0, oGroupLock, fnDataRequested)
|
|
1196
|
-
.then(
|
|
1398
|
+
const oPromise = oCache.read(iIndex, iEnd - iStart, 0, oGroupLock, fnDataRequested, true)
|
|
1399
|
+
.then((oResult) => {
|
|
1197
1400
|
// Note: this code must be idempotent, it might well run twice!
|
|
1198
1401
|
var bGapHasMoved = false,
|
|
1199
1402
|
oError;
|
|
1200
1403
|
|
|
1201
1404
|
// Note: aElements[iGapStart] may have changed by a parallel operation
|
|
1202
|
-
if (oStartElement !==
|
|
1203
|
-
&& oResult.value[0] !==
|
|
1405
|
+
if (oStartElement !== this.aElements[iStart]
|
|
1406
|
+
&& oResult.value[0] !== this.aElements[iStart]) {
|
|
1204
1407
|
// start of the gap has moved meanwhile
|
|
1205
1408
|
bGapHasMoved = true;
|
|
1206
|
-
iStart =
|
|
1409
|
+
iStart = this.aElements.indexOf(oStartElement);
|
|
1207
1410
|
if (iStart < 0) {
|
|
1208
|
-
iStart =
|
|
1411
|
+
iStart = this.aElements.indexOf(oResult.value[0]);
|
|
1209
1412
|
if (iStart < 0) {
|
|
1210
1413
|
oError = new Error("Collapse before read has finished");
|
|
1211
1414
|
oError.canceled = true;
|
|
@@ -1214,7 +1417,7 @@ sap.ui.define([
|
|
|
1214
1417
|
}
|
|
1215
1418
|
}
|
|
1216
1419
|
|
|
1217
|
-
|
|
1420
|
+
this.addElements(oResult.value, iStart, oCache, iIndex);
|
|
1218
1421
|
|
|
1219
1422
|
if (bGapHasMoved) {
|
|
1220
1423
|
oError = new Error("Collapse or expand before read has finished");
|
|
@@ -1223,8 +1426,8 @@ sap.ui.define([
|
|
|
1223
1426
|
}
|
|
1224
1427
|
});
|
|
1225
1428
|
if (oPromise.isPending()) {
|
|
1226
|
-
for (i = iStart; i < iEnd; i += 1) {
|
|
1227
|
-
sPredicate = _Helper.getPrivateAnnotation(this.aElements[i], "predicate");
|
|
1429
|
+
for (let i = iStart; i < iEnd; i += 1) {
|
|
1430
|
+
const sPredicate = _Helper.getPrivateAnnotation(this.aElements[i], "predicate");
|
|
1228
1431
|
|
|
1229
1432
|
if (sPredicate) {
|
|
1230
1433
|
this.aElements.$byPredicate[sPredicate] = oPromise;
|
|
@@ -1309,13 +1512,14 @@ sap.ui.define([
|
|
|
1309
1512
|
};
|
|
1310
1513
|
|
|
1311
1514
|
/**
|
|
1312
|
-
* Shifts the "index" of all siblings (nodes or placeholders) after the node at the given
|
|
1313
|
-
* by the given offset
|
|
1515
|
+
* Shifts the $skip "index" of all siblings (nodes or placeholders) after the node at the given
|
|
1516
|
+
* index by the given offset, except for created elements (where it is always
|
|
1517
|
+
* <code>undefined</code>).
|
|
1314
1518
|
*
|
|
1315
1519
|
* @param {number} iIndex
|
|
1316
|
-
* Index in <code>this.aElements</code> of a node
|
|
1520
|
+
* Index in <code>this.aElements</code> of a node
|
|
1317
1521
|
* @param {number} iOffset
|
|
1318
|
-
* Offset
|
|
1522
|
+
* Offset to add to "index"
|
|
1319
1523
|
*
|
|
1320
1524
|
* @private
|
|
1321
1525
|
*/
|
|
@@ -1326,14 +1530,15 @@ sap.ui.define([
|
|
|
1326
1530
|
for (let i = iIndex + 1; i < aElements.length; i += 1) {
|
|
1327
1531
|
const oSibling = aElements[i];
|
|
1328
1532
|
if (_Helper.getPrivateAnnotation(oSibling, "parent") === oCache) {
|
|
1329
|
-
_Helper.
|
|
1330
|
-
|
|
1533
|
+
const iIndex = _Helper.getPrivateAnnotation(oSibling, "index");
|
|
1534
|
+
if (iIndex !== undefined) {
|
|
1535
|
+
_Helper.setPrivateAnnotation(oSibling, "index", iIndex + iOffset);
|
|
1536
|
+
}
|
|
1331
1537
|
}
|
|
1332
|
-
if (
|
|
1333
|
-
&&
|
|
1334
|
-
// Note: level 0
|
|
1335
|
-
//
|
|
1336
|
-
break;
|
|
1538
|
+
if (oCache !== this.oFirstLevel
|
|
1539
|
+
&& oSibling["@$ui5.node.level"] < oNode["@$ui5.node.level"]) {
|
|
1540
|
+
// Note: placeholders with level 0 only exist in 1st level cache!
|
|
1541
|
+
break; // no use in searching further
|
|
1337
1542
|
}
|
|
1338
1543
|
}
|
|
1339
1544
|
};
|
|
@@ -1354,8 +1559,8 @@ sap.ui.define([
|
|
|
1354
1559
|
/**
|
|
1355
1560
|
* Turns the given element, which has the given predicate, into a placeholder which keeps all
|
|
1356
1561
|
* private annotations plus the hierarchy node value. The original element is removed from its
|
|
1357
|
-
* corresponding cache and must not be used any longer. Created persisted elements
|
|
1358
|
-
* special treatment!
|
|
1562
|
+
* corresponding cache and must not be used any longer. Created persisted elements do not lose
|
|
1563
|
+
* their special treatment!
|
|
1359
1564
|
*
|
|
1360
1565
|
* @param {object} oElement - An element
|
|
1361
1566
|
* @param {string} sPredicate - Its predicate
|
|
@@ -1371,8 +1576,10 @@ sap.ui.define([
|
|
|
1371
1576
|
_AggregationHelper.markSplicedStale(oElement);
|
|
1372
1577
|
delete this.aElements.$byPredicate[sPredicate];
|
|
1373
1578
|
// drop original element from its cache's collection
|
|
1374
|
-
_Helper.getPrivateAnnotation(oElement, "
|
|
1375
|
-
|
|
1579
|
+
const iIndex = _Helper.getPrivateAnnotation(oElement, "index");
|
|
1580
|
+
if (iIndex !== undefined) {
|
|
1581
|
+
_Helper.getPrivateAnnotation(oElement, "parent").drop(iIndex, sPredicate, true);
|
|
1582
|
+
} // else: special handling inside #readGap
|
|
1376
1583
|
};
|
|
1377
1584
|
|
|
1378
1585
|
//*********************************************************************************************
|