@openui5/sap.ui.core 1.93.1 → 1.96.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (426) hide show
  1. package/.eslintrc.json +13 -2
  2. package/.reuse/dep5 +11 -11
  3. package/THIRDPARTY.txt +20 -17
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +5 -2
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/jquery.sap.stubs.js +2 -1
  11. package/src/jquery.sap.trace.js +2 -1
  12. package/src/sap/base/i18n/ResourceBundle.js +6 -2
  13. package/src/sap/base/strings/whitespaceReplacer.js +52 -0
  14. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  15. package/src/sap/base/util/restricted/_castArray.js +1 -1
  16. package/src/sap/base/util/restricted/_compact.js +1 -1
  17. package/src/sap/base/util/restricted/_curry.js +1 -1
  18. package/src/sap/base/util/restricted/_debounce.js +1 -1
  19. package/src/sap/base/util/restricted/_difference.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_flatten.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_intersection.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isNil.js +1 -1
  34. package/src/sap/base/util/restricted/_max.js +1 -1
  35. package/src/sap/base/util/restricted/_merge.js +1 -1
  36. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  37. package/src/sap/base/util/restricted/_min.js +1 -1
  38. package/src/sap/base/util/restricted/_omit.js +1 -1
  39. package/src/sap/base/util/restricted/_pick.js +1 -1
  40. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  41. package/src/sap/base/util/restricted/_throttle.js +1 -1
  42. package/src/sap/base/util/restricted/_toArray.js +1 -1
  43. package/src/sap/base/util/restricted/_union.js +1 -1
  44. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  45. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  46. package/src/sap/base/util/restricted/_uniq.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  49. package/src/sap/base/util/restricted/_without.js +1 -1
  50. package/src/sap/base/util/restricted/_xor.js +1 -1
  51. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  52. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  55. package/src/sap/ui/Device.js +37 -42
  56. package/src/sap/ui/Global.js +8 -7
  57. package/src/sap/ui/base/DataType.js +14 -8
  58. package/src/sap/ui/base/Event.js +1 -1
  59. package/src/sap/ui/base/EventProvider.js +1 -1
  60. package/src/sap/ui/base/ExpressionParser.js +9 -6
  61. package/src/sap/ui/base/Interface.js +3 -49
  62. package/src/sap/ui/base/ManagedObject.js +12 -7
  63. package/src/sap/ui/base/ManagedObjectMetadata.js +2 -2
  64. package/src/sap/ui/base/Metadata.js +1 -1
  65. package/src/sap/ui/base/Object.js +49 -4
  66. package/src/sap/ui/base/ObjectPool.js +1 -1
  67. package/src/sap/ui/base/syncXHRFix.js +2 -1
  68. package/src/sap/ui/core/.library +6 -6
  69. package/src/sap/ui/core/AppCacheBuster.js +4 -4
  70. package/src/sap/ui/core/BusyIndicator.js +1 -11
  71. package/src/sap/ui/core/Component.js +300 -140
  72. package/src/sap/ui/core/ComponentContainer.js +24 -8
  73. package/src/sap/ui/core/ComponentMetadata.js +14 -3
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +67 -31
  76. package/src/sap/ui/core/Control.js +1 -1
  77. package/src/sap/ui/core/Core.js +103 -25
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/CustomizingConfiguration.js +35 -260
  80. package/src/sap/ui/core/DeclarativeSupport.js +3 -2
  81. package/src/sap/ui/core/Element.js +1 -1
  82. package/src/sap/ui/core/ElementMetadata.js +4 -2
  83. package/src/sap/ui/core/EnabledPropagator.js +91 -73
  84. package/src/sap/ui/core/EventBus.js +1 -1
  85. package/src/sap/ui/core/ExtensionPoint.js +7 -14
  86. package/src/sap/ui/core/Fragment.js +30 -32
  87. package/src/sap/ui/core/HTML.js +1 -1
  88. package/src/sap/ui/core/History.js +1 -1
  89. package/src/sap/ui/core/Icon.js +7 -8
  90. package/src/sap/ui/core/IconPool.js +26 -1097
  91. package/src/sap/ui/core/IconRenderer.js +6 -6
  92. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  93. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  94. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  95. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  96. package/src/sap/ui/core/InvisibleText.js +1 -1
  97. package/src/sap/ui/core/Item.js +1 -1
  98. package/src/sap/ui/core/LabelEnablement.js +1 -1
  99. package/src/sap/ui/core/LayoutData.js +1 -1
  100. package/src/sap/ui/core/ListItem.js +1 -1
  101. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  102. package/src/sap/ui/core/Locale.js +26 -4
  103. package/src/sap/ui/core/LocaleData.js +1 -1
  104. package/src/sap/ui/core/Manifest.js +4 -61
  105. package/src/sap/ui/core/Message.js +1 -1
  106. package/src/sap/ui/core/Patcher.js +27 -3
  107. package/src/sap/ui/core/Placeholder.js +28 -15
  108. package/src/sap/ui/core/RenderManager.js +36 -6
  109. package/src/sap/ui/core/Renderer.js +13 -3
  110. package/src/sap/ui/core/ResizeHandler.js +1 -1
  111. package/src/sap/ui/core/ScrollBar.js +2 -2
  112. package/src/sap/ui/core/SeparatorItem.js +1 -1
  113. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  114. package/src/sap/ui/core/Title.js +1 -1
  115. package/src/sap/ui/core/TooltipBase.js +1 -1
  116. package/src/sap/ui/core/UIArea.js +1 -1
  117. package/src/sap/ui/core/UIComponent.js +42 -16
  118. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  119. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  120. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  121. package/src/sap/ui/core/XMLComposite.js +2 -2
  122. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  123. package/src/sap/ui/core/XMLTemplateProcessor.js +97 -41
  124. package/src/sap/ui/core/_IconRegistry.js +1148 -0
  125. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  126. package/src/sap/ui/core/delegate/ScrollEnablement.js +6 -3
  127. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  128. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  129. package/src/sap/ui/core/dnd/DragInfo.js +2 -2
  130. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  131. package/src/sap/ui/core/format/NumberFormat.js +16 -1
  132. package/src/sap/ui/core/hyphenation/Hyphenation.js +73 -221
  133. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +11 -10
  134. package/src/sap/ui/core/library.js +3 -3
  135. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  136. package/src/sap/ui/core/message/Message.js +1 -1
  137. package/src/sap/ui/core/message/MessageManager.js +13 -15
  138. package/src/sap/ui/core/message/MessageParser.js +1 -1
  139. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  140. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  141. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  142. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  143. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  144. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  145. package/src/sap/ui/core/mvc/Controller.js +38 -19
  146. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  147. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  148. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  149. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  150. package/src/sap/ui/core/mvc/JSView.js +2 -2
  151. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  152. package/src/sap/ui/core/mvc/View.js +58 -85
  153. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  154. package/src/sap/ui/core/mvc/XMLViewRenderer.js +17 -20
  155. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  156. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  157. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  158. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  159. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  160. package/src/sap/ui/core/routing/History.js +10 -2
  161. package/src/sap/ui/core/routing/Router.js +8 -1
  162. package/src/sap/ui/core/routing/Target.js +13 -0
  163. package/src/sap/ui/core/routing/Targets.js +13 -2
  164. package/src/sap/ui/core/routing/async/Route.js +1 -1
  165. package/src/sap/ui/core/routing/async/Target.js +353 -259
  166. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  167. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  168. package/src/sap/ui/core/service/Service.js +1 -1
  169. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  170. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  171. package/src/sap/ui/core/support/BootSupportTool.js +11 -0
  172. package/src/sap/ui/core/support/InteractionTree.css +4 -0
  173. package/src/sap/ui/core/support/Plugin.js +1 -1
  174. package/src/sap/ui/core/support/Support.js +1 -1
  175. package/src/sap/ui/core/support/ViewInfo.css +599 -0
  176. package/src/sap/ui/core/support/controls/InteractionTree.js +352 -222
  177. package/src/sap/ui/core/support/controls/ObjectViewer.js +3 -41
  178. package/src/sap/ui/core/support/controls/TimelineOverview.js +49 -24
  179. package/src/sap/ui/core/support/controls/TreeViewer.js +12 -58
  180. package/src/sap/ui/core/support/plugins/ControlTree.js +59 -68
  181. package/src/sap/ui/core/support/plugins/Debugging.js +9 -11
  182. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  183. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  184. package/src/sap/ui/core/support/plugins/Performance.js +147 -75
  185. package/src/sap/ui/core/support/plugins/Selector.js +19 -24
  186. package/src/sap/ui/core/support/plugins/TechInfo.js +5 -5
  187. package/src/sap/ui/core/support/plugins/Trace.js +95 -32
  188. package/src/sap/ui/core/support/plugins/ViewInfo.js +9 -73
  189. package/src/sap/ui/core/support/support.css +109 -14
  190. package/src/sap/ui/core/support/support.html +6 -2
  191. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  192. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +149 -72
  193. package/src/sap/ui/core/themes/base/Icon.less +9 -0
  194. package/src/sap/ui/core/themes/base/SAP-icons.css +2 -0
  195. package/src/sap/ui/core/themes/base/SAP-icons.less +10 -0
  196. package/src/sap/ui/core/themes/base/base.less +543 -390
  197. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  198. package/src/sap/ui/core/themes/base/global.less +38 -0
  199. package/src/sap/ui/core/themes/base/library.source.less +1 -2
  200. package/src/sap/ui/core/themes/sap_hcb/global.less +34 -0
  201. package/src/sap/ui/core/theming/Parameters.js +6 -4
  202. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  203. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  204. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  205. package/src/sap/ui/core/tmpl/Template.js +10 -28
  206. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -4
  207. package/src/sap/ui/core/tmpl/_parsePath.js +35 -0
  208. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  209. package/src/sap/ui/core/util/DraftEnabledMockServer.js +9 -4
  210. package/src/sap/ui/core/util/Export.js +1 -1
  211. package/src/sap/ui/core/util/ExportCell.js +1 -1
  212. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  213. package/src/sap/ui/core/util/ExportRow.js +1 -1
  214. package/src/sap/ui/core/util/ExportType.js +1 -1
  215. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  216. package/src/sap/ui/core/util/File.js +1 -1
  217. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  218. package/src/sap/ui/core/util/MockServer.js +5 -5
  219. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +3 -2
  220. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  221. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  222. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +136 -63
  223. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +170 -153
  224. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +424 -293
  225. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  226. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  227. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  228. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  229. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  230. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  231. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  232. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  233. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  234. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  235. package/src/sap/ui/debug/ControlTree.js +10 -4
  236. package/src/sap/ui/debug/DebugEnv.js +3 -4
  237. package/src/sap/ui/debug/Highlighter.js +8 -2
  238. package/src/sap/ui/debug/PropertyList.css +55 -0
  239. package/src/sap/ui/debug/PropertyList.js +111 -182
  240. package/src/sap/ui/model/Binding.js +174 -118
  241. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  242. package/src/sap/ui/model/ClientListBinding.js +1 -3
  243. package/src/sap/ui/model/ClientModel.js +4 -4
  244. package/src/sap/ui/model/ClientPropertyBinding.js +4 -2
  245. package/src/sap/ui/model/ClientTreeBinding.js +15 -9
  246. package/src/sap/ui/model/ClientTreeBindingAdapter.js +28 -23
  247. package/src/sap/ui/model/CompositeBinding.js +98 -77
  248. package/src/sap/ui/model/CompositeDataState.js +2 -2
  249. package/src/sap/ui/model/CompositeType.js +2 -2
  250. package/src/sap/ui/model/Context.js +4 -2
  251. package/src/sap/ui/model/ContextBinding.js +6 -14
  252. package/src/sap/ui/model/DataState.js +2 -2
  253. package/src/sap/ui/model/Filter.js +255 -53
  254. package/src/sap/ui/model/FilterOperator.js +1 -1
  255. package/src/sap/ui/model/FilterProcessor.js +27 -17
  256. package/src/sap/ui/model/FilterType.js +1 -1
  257. package/src/sap/ui/model/ListBinding.js +180 -117
  258. package/src/sap/ui/model/MetaModel.js +4 -9
  259. package/src/sap/ui/model/Model.js +345 -294
  260. package/src/sap/ui/model/PropertyBinding.js +92 -58
  261. package/src/sap/ui/model/SelectionModel.js +2 -2
  262. package/src/sap/ui/model/SimpleType.js +2 -2
  263. package/src/sap/ui/model/Sorter.js +1 -1
  264. package/src/sap/ui/model/SorterProcessor.js +1 -1
  265. package/src/sap/ui/model/StaticBinding.js +1 -1
  266. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  267. package/src/sap/ui/model/TreeBinding.js +1 -1
  268. package/src/sap/ui/model/TreeBindingAdapter.js +251 -100
  269. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +16 -9
  270. package/src/sap/ui/model/TreeBindingUtils.js +1 -0
  271. package/src/sap/ui/model/Type.js +1 -1
  272. package/src/sap/ui/model/analytics/AnalyticalBinding.js +8 -4
  273. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +1 -1
  274. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  275. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  276. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  277. package/src/sap/ui/model/analytics/odata4analytics.js +34 -25
  278. package/src/sap/ui/model/base/ManagedObjectModel.js +4 -0
  279. package/src/sap/ui/model/json/JSONListBinding.js +8 -5
  280. package/src/sap/ui/model/json/JSONModel.js +24 -15
  281. package/src/sap/ui/model/json/JSONPropertyBinding.js +4 -3
  282. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  283. package/src/sap/ui/model/message/MessageListBinding.js +6 -3
  284. package/src/sap/ui/model/message/MessageModel.js +23 -15
  285. package/src/sap/ui/model/message/MessagePropertyBinding.js +2 -2
  286. package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
  287. package/src/sap/ui/model/odata/AnnotationParser.js +1 -1
  288. package/src/sap/ui/model/odata/CountMode.js +1 -1
  289. package/src/sap/ui/model/odata/Filter.js +1 -1
  290. package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
  291. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  292. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  293. package/src/sap/ui/model/odata/ODataMessageParser.js +2 -2
  294. package/src/sap/ui/model/odata/ODataMetaModel.js +5 -3
  295. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  296. package/src/sap/ui/model/odata/ODataModel.js +8 -7
  297. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -1
  298. package/src/sap/ui/model/odata/ODataTreeBinding.js +65 -33
  299. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +1 -1
  300. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +2 -2
  301. package/src/sap/ui/model/odata/ODataUtils.js +13 -11
  302. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  303. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  304. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  305. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  306. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  307. package/src/sap/ui/model/odata/type/Date.js +1 -1
  308. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  309. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  310. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  311. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  312. package/src/sap/ui/model/odata/type/Double.js +1 -1
  313. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  314. package/src/sap/ui/model/odata/type/Int.js +1 -1
  315. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  316. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  317. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  318. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  319. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  320. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  321. package/src/sap/ui/model/odata/type/Single.js +1 -1
  322. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  323. package/src/sap/ui/model/odata/type/String.js +1 -1
  324. package/src/sap/ui/model/odata/type/Time.js +1 -1
  325. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  326. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  327. package/src/sap/ui/model/odata/v2/Context.js +81 -9
  328. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +3 -3
  329. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +39 -49
  330. package/src/sap/ui/model/odata/v2/ODataListBinding.js +236 -73
  331. package/src/sap/ui/model/odata/v2/ODataModel.js +314 -164
  332. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +110 -97
  333. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +129 -0
  334. package/src/sap/ui/model/odata/v4/Context.js +6 -3
  335. package/src/sap/ui/model/odata/v4/ODataBinding.js +5 -6
  336. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +117 -40
  337. package/src/sap/ui/model/odata/v4/ODataListBinding.js +95 -15
  338. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +44 -31
  339. package/src/sap/ui/model/odata/v4/ODataModel.js +86 -78
  340. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +47 -28
  341. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +11 -7
  342. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +10 -3
  343. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +8 -1
  344. package/src/sap/ui/model/odata/v4/lib/_Cache.js +24 -16
  345. package/src/sap/ui/model/odata/v4/lib/_Helper.js +32 -30
  346. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +52 -17
  347. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
  348. package/src/sap/ui/model/resource/ResourceModel.js +6 -2
  349. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  350. package/src/sap/ui/model/type/Boolean.js +2 -2
  351. package/src/sap/ui/model/type/Currency.js +2 -2
  352. package/src/sap/ui/model/type/Date.js +9 -3
  353. package/src/sap/ui/model/type/DateInterval.js +4 -2
  354. package/src/sap/ui/model/type/DateTime.js +2 -2
  355. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  356. package/src/sap/ui/model/type/FileSize.js +4 -2
  357. package/src/sap/ui/model/type/Float.js +4 -2
  358. package/src/sap/ui/model/type/Integer.js +4 -2
  359. package/src/sap/ui/model/type/String.js +2 -2
  360. package/src/sap/ui/model/type/Time.js +2 -2
  361. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  362. package/src/sap/ui/model/type/Unit.js +14 -7
  363. package/src/sap/ui/model/xml/XMLListBinding.js +15 -9
  364. package/src/sap/ui/model/xml/XMLModel.js +70 -41
  365. package/src/sap/ui/model/xml/XMLPropertyBinding.js +4 -4
  366. package/src/sap/ui/model/xml/XMLTreeBinding.js +5 -4
  367. package/src/sap/ui/performance/trace/Interaction.js +30 -15
  368. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  369. package/src/sap/ui/qunit/QUnitUtils.js +3 -2
  370. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  371. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +9 -11
  372. package/src/sap/ui/test/TestUtils.js +11 -4
  373. package/src/sap/ui/test/actions/Drag.js +6 -2
  374. package/src/sap/ui/test/actions/Drop.js +6 -2
  375. package/src/sap/ui/test/actions/EnterText.js +6 -0
  376. package/src/sap/ui/test/actions/Press.js +6 -0
  377. package/src/sap/ui/test/actions/Scroll.js +6 -0
  378. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +4 -4
  379. package/src/sap/ui/test/launchers/componentLauncher.js +0 -4
  380. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  381. package/src/sap/ui/test/opaQunit.js +5 -0
  382. package/src/sap/ui/thirdparty/IPv6.js +2 -2
  383. package/src/sap/ui/thirdparty/SecondLevelDomains.js +2 -2
  384. package/src/sap/ui/thirdparty/URI.js +14 -5
  385. package/src/sap/ui/thirdparty/URITemplate.js +2 -2
  386. package/src/sap/ui/thirdparty/crossroads.js +6 -4
  387. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  388. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  389. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  390. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  391. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  392. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  393. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  394. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  395. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  396. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  397. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  398. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  399. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  400. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  401. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  402. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  403. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  404. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  405. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  406. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  407. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  408. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  409. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  410. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  411. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  412. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  413. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  414. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  415. package/src/sap/ui/thirdparty/jquery.js +9 -1
  416. package/src/sap/ui/thirdparty/qunit-2.js +1 -1
  417. package/src/sap/ui/thirdparty/qunit.js +1 -1
  418. package/src/sap/ui/util/Mobile.js +2 -20
  419. package/src/sap/ui/util/Storage.js +1 -1
  420. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  421. package/src/sap-ui-core-nojQuery.js +1 -1
  422. package/src/sap-ui-core.js +1 -1
  423. package/src/sap-ui-debug.js +3 -17
  424. package/ui5.yaml +5 -2
  425. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  426. package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
@@ -7,6 +7,7 @@
7
7
  sap.ui.define([
8
8
  'sap/ui/base/ManagedObject',
9
9
  'sap/ui/core/IconPool',
10
+ 'sap/ui/core/Core',
10
11
  'sap/m/library',
11
12
  'sap/m/Popover',
12
13
  'sap/m/Text',
@@ -21,6 +22,7 @@ sap.ui.define([
21
22
  function(
22
23
  ManagedObject,
23
24
  IconPool,
25
+ Core,
24
26
  mobileLibrary,
25
27
  Popover,
26
28
  Text,
@@ -48,7 +50,6 @@ sap.ui.define([
48
50
 
49
51
  InteractionTree.expandIcon = 'sap-icon://navigation-right-arrow';
50
52
  InteractionTree.collapseIcon = 'sap-icon://navigation-down-arrow';
51
- InteractionTree.headerIcon = '<img class="sapUiInteractionSvgImage" src="HeaderIcon.svg">';
52
53
 
53
54
  InteractionTree.prototype.setInteractions = function (interactions) {
54
55
 
@@ -100,9 +101,9 @@ sap.ui.define([
100
101
  InteractionTree.prototype.renderAt = function (parent) {
101
102
  this.parent = parent;
102
103
 
103
- var rm = sap.ui.getCore().createRenderManager();
104
+ var rm = Core.createRenderManager();
104
105
  this.render(rm);
105
- rm.flush(parent);
106
+ rm.flush(parent, true);
106
107
  rm.destroy();
107
108
 
108
109
  this.attachEvents();
@@ -111,18 +112,19 @@ sap.ui.define([
111
112
  };
112
113
 
113
114
  InteractionTree.prototype.render = function (rm) {
115
+ rm.openStart("div", this.getId())
116
+ .class("sapUiInteractionTreeContainer")
117
+ .class("sapUiSizeCompact")
118
+ .openEnd();
114
119
 
115
- rm.write('<div id="' + this.getId() + '" class="sapUiInteractionTreeContainer sapUiSizeCompact">');
120
+ rm.openStart("div")
121
+ .class("sapUiInteractionGridLinesContainer")
122
+ .openEnd()
123
+ .close("div");
116
124
 
117
- rm.write('<div class="sapUiInteractionGridLinesContainer"></div>');
118
-
119
- rm.write('<ul');
120
-
121
- rm.addClass("sapUiInteractionTree");
122
-
123
- rm.writeClasses();
124
-
125
- rm.write(">");
125
+ rm.openStart("ul")
126
+ .class("sapUiInteractionTree")
127
+ .openEnd();
126
128
 
127
129
  this.renderHeaders(rm);
128
130
 
@@ -139,9 +141,8 @@ sap.ui.define([
139
141
  this.renderInteraction(rm, interaction, i);
140
142
  }
141
143
 
142
- rm.write("</ul>");
143
-
144
- rm.write("</div>");
144
+ rm.close("ul");
145
+ rm.close("div");
145
146
  };
146
147
 
147
148
  InteractionTree.prototype.attachEvents = function () {
@@ -173,32 +174,51 @@ sap.ui.define([
173
174
 
174
175
  InteractionTree.prototype.updateGridLines = function () {
175
176
 
176
- var gridContainer = this.gridContainer,
177
- range = this.timeRange,
178
- width = this.gridContainer.width();
177
+ var gridContainer = this.gridContainer,
178
+ range = this.timeRange,
179
+ width = this.gridContainer.width(),
180
+ rm = Core.createRenderManager();
179
181
 
180
- if (this.gridContainerWidth == width) {
181
- return;
182
- }
182
+ if (this.gridContainerWidth === width) {
183
+ return;
184
+ }
183
185
 
184
- gridContainer.empty();
185
186
 
186
- gridContainer.append('<div style="left:' + (this.getPosition(width, range, 0) + 6) + 'px" class="sapUiInteractionGridLineIntervalText">' + this.formatGridLineDuration(0) + '</div>');
187
+ rm.openStart("div")
188
+ .style("left", this.getPosition(width, range, 0) + 6 + "px")
189
+ .class("sapUiInteractionGridLineIntervalText")
190
+ .openEnd()
191
+ .text(this.formatGridLineDuration(0))
192
+ .close("div");
187
193
 
188
- var interval = this.calculateInterval(width, range);
194
+ var interval = this.calculateInterval(width, range);
189
195
 
190
- for (var i = interval; i < range; i += interval) {
196
+ for (var i = interval; i < range; i += interval) {
191
197
 
192
- var position = this.getPosition(width, range, i);
198
+ var position = this.getPosition(width, range, i);
193
199
 
194
- if (i + interval < range) {
195
- gridContainer.append('<div style="left:' + (position + 6) + 'px" class="sapUiInteractionGridLineIntervalText">' + this.formatGridLineDuration(i) + '</div>');
196
- }
200
+ if (i + interval < range) {
197
201
 
198
- gridContainer.append('<div style="left:' + position + 'px" class="sapUiInteractionGridLine"></div>');
199
- }
202
+ rm.openStart("div")
203
+ .style("left", position + 6 + "px")
204
+ .class("sapUiInteractionGridLineIntervalText")
205
+ .openEnd()
206
+ .text(this.formatGridLineDuration(i))
207
+ .close("div");
208
+ }
200
209
 
201
- this.gridContainerWidth = width;
210
+ rm.openStart("div")
211
+ .style("left", position + "px")
212
+ .class("sapUiInteractionGridLine")
213
+ .openEnd()
214
+ .close("div");
215
+ }
216
+
217
+ gridContainer.empty();
218
+ rm.flush(gridContainer[0], true);
219
+ rm.destroy();
220
+
221
+ this.gridContainerWidth = width;
202
222
  };
203
223
 
204
224
  InteractionTree.prototype.calculateInterval = function (width, range) {
@@ -243,8 +263,11 @@ sap.ui.define([
243
263
  var $parent = $icon.parent();
244
264
  $icon.remove();
245
265
 
246
- var iconHTML = this.getIconHTML(!expanded);
247
- $parent.children().eq(0).after(iconHTML);
266
+ var rm = Core.createRenderManager();
267
+ this.renderIcon(rm, !expanded);
268
+
269
+ rm.flush($parent[0], false, true);
270
+ rm.destroy();
248
271
 
249
272
  var $li = $parent.parent().parent();
250
273
  $li.toggleClass('sapUiInteractionItemExpanded');
@@ -262,46 +285,49 @@ sap.ui.define([
262
285
  };
263
286
 
264
287
  InteractionTree.prototype.renderHeaders = function (rm) {
265
- rm.write('<li>');
266
-
267
- rm.write('<div');
268
-
269
- rm.addClass("sapUiInteractionTreeItem");
270
- rm.addClass("sapUiInteractionItemDiv");
271
- rm.addClass("sapUiInteractionHeader");
272
-
273
- rm.writeClasses();
274
-
275
- rm.write(">");
288
+ rm.openStart("li")
289
+ .openEnd();
276
290
 
277
- rm.write('<div class="sapUiInteractionTreeItemLeft">');
291
+ rm.openStart("div")
292
+ .class("sapUiInteractionTreeItem")
293
+ .class("sapUiInteractionItemDiv")
294
+ .class("sapUiInteractionHeader")
295
+ .openEnd();
278
296
 
279
- rm.write("<div>");
280
297
 
281
- rm.write('<span class="sapUiInteractionItemComponentText">');
282
- rm.writeEscaped('Component');
283
- rm.write('</span>');
298
+ rm.openStart("div")
299
+ .class("sapUiInteractionTreeItemLeft")
300
+ .openEnd();
284
301
 
302
+ rm.openStart("div")
303
+ .openEnd();
285
304
 
286
- rm.write("<br>");
305
+ rm.openStart("span")
306
+ .class("sapUiInteractionItemComponentText")
307
+ .openEnd()
308
+ .text("Component")
309
+ .close("span");
287
310
 
311
+ rm.voidStart("br")
312
+ .voidEnd();
288
313
 
289
- rm.write('<span class="sapUiInteractionItemTriggerText">');
290
- rm.writeEscaped('Trigger');
291
- rm.write('</span>');
314
+ rm.openStart("span")
315
+ .class("sapUiInteractionItemTriggerText")
316
+ .openEnd()
317
+ .text("Trigger")
318
+ .close("span");
292
319
 
293
- rm.write("</div>");
294
320
 
295
- rm.write('</div>'); // sapUiInteractionTreeItemLeft
321
+ rm.close("div");
322
+ rm.close("div"); // sapUiInteractionTreeItemLeft
296
323
 
324
+ rm.openStart("div")
325
+ .class("sapUiInteractionTreeItemRight")
326
+ .openEnd()
327
+ .close("div");
297
328
 
298
- rm.write('<div class="sapUiInteractionTreeItemRight">');
299
-
300
- rm.write('</div>');
301
- rm.write("</div>");
302
-
303
-
304
- rm.write("</li>");
329
+ rm.close("div");
330
+ rm.close("li");
305
331
  };
306
332
 
307
333
  InteractionTree.prototype.isInteractionVisible = function (interaction) {
@@ -348,27 +374,27 @@ sap.ui.define([
348
374
  return;
349
375
  }
350
376
 
351
- rm.write('<li data-interaction-index="' + index + '"');
377
+ rm.openStart("li")
378
+ .attr("data-interaction-index", index);
379
+
352
380
 
353
381
  if (interaction.isExpanded) {
354
- rm.addClass('sapUiInteractionItemExpanded');
355
- rm.writeClasses();
382
+ rm.class('sapUiInteractionItemExpanded');
356
383
  }
357
384
 
358
- rm.write('>');
385
+ rm.openEnd();
359
386
 
360
387
  this.renderInteractionDiv(rm, interaction);
361
388
 
362
- rm.write("<ul");
389
+ rm.openStart("ul");
363
390
 
364
- rm.addClass("sapUiInteractionItem");
391
+ rm.class("sapUiInteractionItem");
365
392
 
366
393
  if (!interaction.isExpanded) {
367
- rm.addClass("sapUiHiddenUiInteractionItems");
394
+ rm.class("sapUiHiddenUiInteractionItems");
368
395
  }
369
396
 
370
- rm.writeClasses();
371
- rm.write(">");
397
+ rm.openEnd();
372
398
 
373
399
 
374
400
  for (var i = 0; i < requests.length; i++) {
@@ -376,125 +402,168 @@ sap.ui.define([
376
402
  this.renderRequest(rm, interaction, request, i);
377
403
  }
378
404
 
379
- rm.write("</ul>");
380
- rm.write("</li>");
405
+ rm.close("ul");
406
+ rm.close("li");
381
407
  };
382
408
 
383
409
  InteractionTree.prototype.renderInteractionDiv = function (rm, interaction) {
384
- rm.write('<div');
410
+ rm.openStart("div");
385
411
 
386
- rm.addClass("sapUiInteractionTreeItem");
387
- rm.addClass("sapUiInteractionItemDiv");
412
+ rm.class("sapUiInteractionTreeItem");
413
+ rm.class("sapUiInteractionItemDiv");
388
414
 
389
- rm.writeClasses();
415
+ rm.openEnd();
390
416
 
391
- rm.write(">");
417
+ rm.openStart("div")
418
+ .class("sapUiInteractionLeft")
419
+ .class("sapUiInteractionTreeItemLeft")
420
+ .openEnd();
392
421
 
393
- rm.write('<div class="sapUiInteractionLeft sapUiInteractionTreeItemLeft">');
422
+ rm.openStart("div")
423
+ .openEnd();
394
424
 
395
- rm.write("<div>");
425
+ rm.openStart("span")
426
+ .class("sapUiInteractionItemComponentText")
427
+ .openEnd();
396
428
 
397
- rm.write('<span class="sapUiInteractionItemComponentText">');
398
- rm.writeEscaped((interaction.component !== "undetermined") ? interaction.component : 'Initial Loading');
399
- rm.write('</span>');
429
+ rm.text((interaction.component !== "undetermined") ? interaction.component : 'Initial Loading');
430
+ rm.close("span");
400
431
 
401
432
 
402
- rm.write("<br>");
433
+ rm.voidStart("br")
434
+ .voidEnd();
403
435
 
404
436
 
405
- rm.write('<span class="sapUiInteractionItemTriggerText">');
406
- rm.writeEscaped(interaction.trigger + " / " + interaction.event);
407
- rm.write('</span>');
437
+ rm.openStart("span")
438
+ .class("sapUiInteractionItemTriggerText")
439
+ .openEnd()
440
+ .text(interaction.trigger + " / " + interaction.event)
441
+ .close("span");
408
442
 
409
- rm.write("</div>");
443
+ rm.close("div");
410
444
 
411
- if (interaction.requests.length) {
412
- this.renderIcon(rm, interaction.isExpanded);
413
- }
445
+ if (interaction.requests.length) {
446
+ this.renderIcon(rm, interaction.isExpanded);
447
+ }
414
448
 
415
- if (interaction.sapStatistics.length && interaction.requests.length) {
416
- rm.write('<div class="sapUiInteractionHeaderIcon">' + InteractionTree.headerIcon + '</div>');
417
- }
449
+ if (interaction.sapStatistics.length && interaction.requests.length) {
418
450
 
419
- rm.write('</div>'); // sapUiInteractionTreeItemLeft
451
+ rm.openStart("div")
452
+ .class("sapUiInteractionHeaderIcon")
453
+ .openEnd();
420
454
 
421
- rm.write('<div class="sapUiInteractionTreeItemRight">');
455
+ rm.voidStart("img")
456
+ .class("sapUiInteractionSvgImage")
457
+ .attr("src", "HeaderIcon.svg")
458
+ .voidEnd();
422
459
 
423
- var middle = Math.round(interaction.start + interaction.duration);
460
+ rm.close("div");
461
+ }
424
462
 
425
- this.renderInteractionPart(rm, interaction.start, middle, 'sapUiInteractionBlue');
426
- // this.renderInteractionPart(rm, middle, interaction.end, 'sapUiInteractionBlueLight');
463
+ rm.close("div"); // sapUiInteractionTreeItemLeft
427
464
 
428
- rm.write('</div>');
429
- rm.write("</div>");
430
- };
465
+ rm.openStart("div")
466
+ .class("sapUiInteractionTreeItemRight")
467
+ .openEnd();
431
468
 
432
- InteractionTree.prototype.renderInteractionPart = function (rm, start, end, colorClass) {
433
- if (this.actualStartTime > end || this.actualEndTime < start) {
434
- return;
435
- }
436
469
 
437
- end = Math.min(end, this.actualEndTime);
438
- start = Math.max(start, this.actualStartTime);
470
+ var middle = Math.round(interaction.start + interaction.duration);
439
471
 
440
- var left = 100 / this.timeRange * (start - this.actualStartTime);
441
- var right = 100 / this.timeRange * (end - this.actualStartTime);
442
- var width = right - left;
472
+ this.renderInteractionPart(rm, interaction.start, middle, 'sapUiInteractionBlue');
473
+ // this.renderInteractionPart(rm, middle, interaction.end, 'sapUiInteractionBlueLight');
474
+
475
+ rm.close("div");
476
+ rm.close("div");
477
+ };
443
478
 
444
- rm.write('<span style="margin-left: ' + left + '%; width: ' + width + '%" class="sapUiInteractionTimeframe sapUiInteractionTimeInteractionFrame ' + colorClass + '"></span>');
479
+ InteractionTree.prototype.renderInteractionPart = function (rm, start, end, colorClass) {
480
+ if (this.actualStartTime > end || this.actualEndTime < start) {
481
+ return;
482
+ }
483
+
484
+ end = Math.min(end, this.actualEndTime);
485
+ start = Math.max(start, this.actualStartTime);
486
+
487
+ var left = 100 / this.timeRange * (start - this.actualStartTime);
488
+ var right = 100 / this.timeRange * (end - this.actualStartTime);
489
+ var width = right - left;
490
+
491
+ rm.openStart("span")
492
+ .style("margin-left", left + "%")
493
+ .style("width", width + "%")
494
+ .class("sapUiInteractionTimeframe")
495
+ .class("sapUiInteractionTimeInteractionFrame")
496
+ .class(colorClass)
497
+ .openEnd()
498
+ .close("span");
445
499
  };
446
500
 
447
501
  InteractionTree.prototype.renderRequest = function (rm, interaction, request, index) {
448
502
 
449
- var fetchStartOffset = request.fetchStartOffset;
503
+ var fetchStartOffset = request.fetchStartOffset;
450
504
 
451
- var start = fetchStartOffset + request.startTime;
452
- var end = fetchStartOffset + request.startTime + this.getRequestDuration(request);
505
+ var start = fetchStartOffset + request.startTime;
506
+ var end = fetchStartOffset + request.startTime + this.getRequestDuration(request);
453
507
 
454
- if (this.actualStartTime > end || this.actualEndTime < start) {
455
- return;
456
- }
508
+ if (this.actualStartTime > end || this.actualEndTime < start) {
509
+ return;
510
+ }
457
511
 
458
- rm.write('<li data-request-index="' + index + '"');
512
+ rm.openStart("li")
513
+ .attr("data-request-index", index)
514
+ .class("sapUiInteractionTreeItem")
515
+ .class("sapUiInteractionRequest")
516
+ .openEnd();
459
517
 
460
- rm.addClass("sapUiInteractionTreeItem");
461
- rm.addClass("sapUiInteractionRequest");
518
+ rm.openStart("div")
519
+ .class("sapUiInteractionTreeItemLeft")
520
+ .class("sapUiInteractionRequestLeft")
521
+ .openEnd();
462
522
 
463
- rm.writeClasses();
523
+ var requestType = request.initiatorType || request.entryType;
464
524
 
465
- rm.write(">");
525
+ var colorClass = this.getRequestColorClass(requestType);
466
526
 
467
- rm.write('<div class="sapUiInteractionTreeItemLeft sapUiInteractionRequestLeft">');
527
+ rm.openStart("span")
528
+ .class("sapUiInteractionRequestIcon")
529
+ .class(colorClass)
530
+ .openEnd()
531
+ .close("span");
468
532
 
469
- var requestType = request.initiatorType || request.entryType;
533
+ rm.openStart("span")
534
+ .class("sapUiInteractionItemEntryTypeText")
535
+ .openEnd()
536
+ .text(requestType)
537
+ .close("span");
470
538
 
471
- var colorClass = this.getRequestColorClass(requestType);
539
+ if (this.getRequestSapStatistics(interaction, request)) {
540
+ rm.openStart("div")
541
+ .class("sapUiInteractionRequestHeaderIcon")
542
+ .openEnd();
472
543
 
473
- rm.write('<span class="sapUiInteractionRequestIcon ' + colorClass + '"></span>');
544
+ rm.voidStart("img")
545
+ .class("sapUiInteractionSvgImage")
546
+ .attr("src", "HeaderIcon.svg")
547
+ .voidEnd();
474
548
 
475
- rm.write('<span class="sapUiInteractionItemEntryTypeText">');
476
- rm.writeEscaped(requestType);
477
- rm.write('</span>');
549
+ rm.close("div");
550
+ }
478
551
 
479
- if (this.getRequestSapStatistics(interaction, request)) {
480
- rm.write('<div class="sapUiInteractionRequestHeaderIcon">' + InteractionTree.headerIcon + '</div>');
481
- }
482
-
483
- rm.write('</div>');
484
-
485
- rm.write('<div class="sapUiInteractionTreeItemRight"');
486
- rm.write('>');
552
+ rm.close("div");
487
553
 
488
- var requestStart = this.getRequestRequestStart(request) + fetchStartOffset;
489
- var responseStart = this.getRequestResponseStart(request) + fetchStartOffset;
554
+ rm.openStart("div")
555
+ .class("sapUiInteractionTreeItemRight")
556
+ .openEnd();
490
557
 
491
- this.renderRequestPart(rm, start, requestStart, colorClass + '70');
492
- this.renderRequestPart(rm, requestStart, responseStart, colorClass);
493
- this.renderRequestPart(rm, responseStart, end, colorClass + '70');
558
+ var requestStart = this.getRequestRequestStart(request) + fetchStartOffset;
559
+ var responseStart = this.getRequestResponseStart(request) + fetchStartOffset;
494
560
 
495
- rm.write('</div>');
561
+ this.renderRequestPart(rm, start, requestStart, colorClass + '70');
562
+ this.renderRequestPart(rm, requestStart, responseStart, colorClass);
563
+ this.renderRequestPart(rm, responseStart, end, colorClass + '70');
496
564
 
497
- rm.write("</li>");
565
+ rm.close("div");
566
+ rm.close("li");
498
567
  };
499
568
 
500
569
  InteractionTree.prototype.getRequestSapStatistics = function (interaction, request) {
@@ -543,18 +612,19 @@ sap.ui.define([
543
612
 
544
613
  /* eslint-disable no-loop-func */
545
614
  if (requestDivElements.length) {
546
- var oPopover = createEmptyPopOver();
615
+ var oPopover = createEmptyPopOver();
547
616
 
548
- for (var i = 0; i < requestDivElements.length; i++) {
549
- requestDivElements[i].addEventListener('click', function (event) {
550
- initializePopOverClientServerProgressBar.call(this);
551
- initializePopOverRequestData.call(this);
552
- initializePopOverSapStatisticsData.call(this);
617
+ for (var i = 0; i < requestDivElements.length; i++) {
618
+ requestDivElements[i].addEventListener('click', function (event) {
619
+ initializePopOverRequestData.call(this);
620
+ initializePopOverSapStatisticsData.call(this);
553
621
 
554
- var requestBarElement = jQuery(this).children()[0];
555
- oPopover.openBy(requestBarElement);
556
- });
557
- }
622
+ var requestBarElement = jQuery(this).children()[0];
623
+ oPopover.openBy(requestBarElement);
624
+
625
+ initializePopOverClientServerProgressBar.call(this);
626
+ });
627
+ }
558
628
  }
559
629
  /* eslint-enable no-loop-func */
560
630
 
@@ -627,54 +697,106 @@ sap.ui.define([
627
697
 
628
698
  function initializePopOverClientServerProgressBar() {
629
699
 
630
- var request = that.getRequestFromElement(jQuery(this));
700
+ var rm = Core.createRenderManager();
701
+ var request = that.getRequestFromElement(jQuery(this));
631
702
 
632
- var fetchStartOffset = request.fetchStartOffset;
633
- var duration = that.getRequestDuration(request);
703
+ var fetchStartOffset = request.fetchStartOffset;
704
+ var duration = that.getRequestDuration(request);
634
705
 
635
- var start = fetchStartOffset + request.startTime;
636
- var end = start + duration;
706
+ var start = fetchStartOffset + request.startTime;
707
+ var end = start + duration;
708
+
709
+ var requestStart = that.getRequestRequestStart(request) + fetchStartOffset;
710
+ var responseStart = that.getRequestResponseStart(request) + fetchStartOffset;
711
+
712
+ var preprocessingTime = requestStart - start;
713
+ var serverTotalTime = responseStart - requestStart;
714
+
715
+ var clientTotalTime = end - responseStart;
716
+
717
+ var serverTimePercent = Math.floor(100 * serverTotalTime / duration);
718
+ var clientTimePercent = Math.floor(100 * clientTotalTime / duration);
719
+ var preprocessingTimePercent = Math.floor(100 * preprocessingTime / duration);
720
+
721
+ rm.openStart("div")
722
+ .class("sapUiInteractionTitle")
723
+ .openEnd();
724
+
725
+
726
+ [['PREPROCESSING', that.formatDuration(preprocessingTime)],
727
+ ['SERVER', that.formatDuration(serverTotalTime)],
728
+ ['CLIENT', that.formatDuration(clientTotalTime)]].forEach(function (item) {
637
729
 
638
- var requestStart = that.getRequestRequestStart(request) + fetchStartOffset;
639
- var responseStart = that.getRequestResponseStart(request) + fetchStartOffset;
730
+ rm.openStart("span")
731
+ .class("sapUiInteractionTitleSection")
732
+ .openEnd();
640
733
 
641
- var preprocessingTime = requestStart - start;
642
- var serverTotalTime = responseStart - requestStart;
734
+ rm.openStart("div")
735
+ .class("sapUiInteractionTitleText")
736
+ .openEnd()
737
+ .text(item[0])
738
+ .close("div");
643
739
 
644
- var clientTotalTime = end - responseStart;
740
+ rm.openStart("div")
741
+ .class("sapUiInteractionTitleSubText")
742
+ .openEnd()
743
+ .text(item[1])
744
+ .close("div");
645
745
 
646
- var serverTimePercent = Math.floor(100 * serverTotalTime / duration);
647
- var clientTimePercent = Math.floor(100 * clientTotalTime / duration);
648
- var preprocessingTimePercent = Math.floor(100 * preprocessingTime / duration);
746
+ rm.close("span");
747
+ });
649
748
 
650
- var titleTemplate = '<span class="sapUiInteractionTitleSection"><div class="sapUiInteractionTitleText">{Title}</div><div class="sapUiInteractionTitleSubText">{Subtitle}</div></span>';
749
+ rm.close("div");
651
750
 
652
- var clientVsServerHTML = '<div class="sapUiInteractionTitle">';
751
+ rm.flush(jQuery(".sapUiSupportPopoverTitle")[0], true);
752
+ rm.destroy();
653
753
 
654
- clientVsServerHTML += titleTemplate.replace('{Title}', 'PREPROCESSING').replace('{Subtitle}', that.formatDuration(preprocessingTime));
655
- clientVsServerHTML += titleTemplate.replace('{Title}', 'SERVER').replace('{Subtitle}', that.formatDuration(serverTotalTime));
656
- clientVsServerHTML += titleTemplate.replace('{Title}', 'CLIENT').replace('{Subtitle}', that.formatDuration(clientTotalTime));
754
+ var requestType = request.initiatorType || request.entryType;
657
755
 
658
- clientVsServerHTML += '</div>';
756
+ var colorClass = that.getRequestColorClass(requestType);
757
+ var colorClass70 = colorClass + '70';
659
758
 
660
- clientVsServerTitle.setContent(clientVsServerHTML);
759
+ rm = Core.createRenderManager();
661
760
 
662
- var requestType = request.initiatorType || request.entryType;
761
+ rm.openStart("div")
762
+ .class("sapUiSupportIntProgressBarParent")
763
+ .openEnd();
663
764
 
664
- var colorClass = that.getRequestColorClass(requestType);
665
- var colorClass70 = colorClass + '70';
765
+ rm.openStart("span")
766
+ .class("sapUiSupportIntProgressBar")
767
+ .class(colorClass70)
768
+ .style("width", "calc(" + preprocessingTimePercent + "% - 1px)")
769
+ .openEnd()
770
+ .close("span");
666
771
 
667
- var preprocessHTML = "<span class='sapUiSupportIntProgressBar " + colorClass70 + "'' style=\"width:calc(" + preprocessingTimePercent +
668
- "% - 1px)\"></span><span class='sapUiSupportIntProgressBarSeparator'></span>";
772
+ rm.openStart("span")
773
+ .class("sapUiSupportIntProgressBarSeparator")
774
+ .openEnd()
775
+ .close("span");
669
776
 
670
- var serverHTML = "<span class='sapUiSupportIntProgressBar " + colorClass + "' style=\"width:calc(" + serverTimePercent + "% - 1px)\"></span>" +
671
- "<span class='sapUiSupportIntProgressBarSeparator'></span>";
777
+ rm.openStart("span")
778
+ .class("sapUiSupportIntProgressBar")
779
+ .class(colorClass)
780
+ .style("width", "calc(" + serverTimePercent + "% - 1px)")
781
+ .openEnd()
782
+ .close("span");
672
783
 
673
- var clientHTML = "<span class='sapUiSupportIntProgressBar " + colorClass70 + "'' style=\"width:calc(" + clientTimePercent + "% - 1px)\"></span>";
784
+ rm.openStart("span")
785
+ .class("sapUiSupportIntProgressBarSeparator")
786
+ .openEnd()
787
+ .close("span");
674
788
 
675
- var progressBarHTML = "<div class='sapUiSupportIntProgressBarParent'>" + preprocessHTML + serverHTML + clientHTML + "</div>";
789
+ rm.openStart("span")
790
+ .class("sapUiSupportIntProgressBar")
791
+ .class(colorClass70)
792
+ .style("width", "calc(" + clientTimePercent + "% - 1px)")
793
+ .openEnd()
794
+ .close("span");
676
795
 
677
- progressBar.setContent(progressBarHTML);
796
+ rm.close("div");
797
+
798
+ rm.flush(jQuery(".sapUiSupportPopoverProgressBar")[0], true);
799
+ rm.destroy();
678
800
  }
679
801
 
680
802
  function createEmptyPopOver() {
@@ -698,8 +820,14 @@ sap.ui.define([
698
820
  }
699
821
 
700
822
  function createPopOverContent() {
701
- clientVsServerTitle = new HTML();
702
- progressBar = new HTML();
823
+ clientVsServerTitle = new HTML({
824
+ content: '<div class="sapUiSupportPopoverTitle"></div>',
825
+ preferDOM: false
826
+ });
827
+ progressBar = new HTML({
828
+ content: '<div class="sapUiSupportPopoverProgressBar"></div>',
829
+ preferDOM: false
830
+ });
703
831
  closeButton = new Button({
704
832
  icon : IconPool.getIconURI("decline"),
705
833
  type: "Transparent",
@@ -889,19 +1017,25 @@ sap.ui.define([
889
1017
  };
890
1018
 
891
1019
  InteractionTree.prototype.renderRequestPart = function (rm, start, end, colorClass) {
892
- if (this.actualStartTime > end || this.actualEndTime < start) {
893
- return;
894
- }
895
-
896
- end = Math.min(end, this.actualEndTime);
897
- start = Math.max(start, this.actualStartTime);
898
-
899
- var left = 100 / this.timeRange * (start - this.actualStartTime);
900
- var right = 100 / this.timeRange * (end - this.actualStartTime);
901
- var width = right - left;
902
-
903
- rm.write('<span style="margin-left: ' + left + '%; width: ' + width + '%" class="sapUiInteractionTimeframe sapUiInteractionTimeRequestFrame ' + colorClass + '"></span>');
904
-
1020
+ if (this.actualStartTime > end || this.actualEndTime < start) {
1021
+ return;
1022
+ }
1023
+
1024
+ end = Math.min(end, this.actualEndTime);
1025
+ start = Math.max(start, this.actualStartTime);
1026
+
1027
+ var left = 100 / this.timeRange * (start - this.actualStartTime);
1028
+ var right = 100 / this.timeRange * (end - this.actualStartTime);
1029
+ var width = right - left;
1030
+
1031
+ rm.openStart("span")
1032
+ .style("margin-left", left + "%")
1033
+ .style("width", width + "%")
1034
+ .class("sapUiInteractionTimeframe")
1035
+ .class("sapUiInteractionTimeRequestFrame")
1036
+ .class(colorClass)
1037
+ .openEnd()
1038
+ .close("span");
905
1039
  };
906
1040
 
907
1041
  InteractionTree.prototype.getRequestDuration = function(request) {
@@ -961,32 +1095,28 @@ sap.ui.define([
961
1095
  };
962
1096
 
963
1097
  InteractionTree.prototype.renderIcon = function (rm, expanded) {
964
- var html = this.getIconHTML(expanded);
965
- rm.write(html);
966
- };
967
-
968
- InteractionTree.prototype.getIconHTML = function (expanded) {
1098
+ var icon = expanded ? InteractionTree.collapseIcon : InteractionTree.expandIcon;
969
1099
 
970
- var icon = expanded ? InteractionTree.collapseIcon : InteractionTree.expandIcon;
1100
+ rm.openStart("span")
1101
+ .attr("aria-hidden", "true")
1102
+ .attr("expanded", expanded)
1103
+ .class("sapUiIcon")
1104
+ .class("sapUiInteractionTreeIcon");
971
1105
 
972
- var classes = "sapUiIcon sapUiInteractionTreeIcon";
973
1106
 
974
- if (iconInfo && !iconInfo.suppressMirroring) {
975
- classes += " sapUiIconMirrorInRTL";
976
- }
977
-
978
- var html = '<span aria-hidden="true" expanded="' + expanded + '" class="' + classes + '" ';
1107
+ if (iconInfo && !iconInfo.suppressMirroring) {
1108
+ rm.class("sapUiIconMirrorInRTL");
1109
+ }
979
1110
 
980
- var iconInfo = IconPool.getIconInfo(icon);
981
-
982
- if (iconInfo) {
983
- html += 'data-sap-ui-icon-content="' + iconInfo.content + '"';
984
- html += ' style="font-family:\'SAP-icons\'"';
985
- }
1111
+ var iconInfo = IconPool.getIconInfo(icon);
986
1112
 
987
- html += "></span>";
1113
+ if (iconInfo) {
1114
+ rm.attr("data-sap-ui-icon-content", iconInfo.content);
1115
+ rm.style("font-family", "SAP-icons");
1116
+ }
988
1117
 
989
- return html;
1118
+ rm.openEnd()
1119
+ .close("span");
990
1120
  };
991
1121
 
992
1122
  return InteractionTree;