@sapui5/sap.suite.ui.generic.template 1.132.0 → 1.134.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.
Files changed (181) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/generic/template/.library +1 -1
  3. package/src/sap/suite/ui/generic/template/AnalyticalListPage/Component.js +0 -4
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/control/visualfilterbar/FilterItemMicroBar.js +3 -1
  5. package/src/sap/suite/ui/generic/template/AnalyticalListPage/control/visualfilterbar/FilterItemMicroChart.js +7 -2
  6. package/src/sap/suite/ui/generic/template/AnalyticalListPage/control/visualfilterbar/FilterItemMicroDonut.js +3 -1
  7. package/src/sap/suite/ui/generic/template/AnalyticalListPage/control/visualfilterbar/FilterItemMicroLine.js +3 -1
  8. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/KpiTagController.js +3 -4
  9. package/src/sap/suite/ui/generic/template/AnalyticalListPage/extensionAPI/ExtensionAPI.js +2 -2
  10. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n.properties +7 -7
  11. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
  12. package/src/sap/suite/ui/generic/template/AnalyticalListPage/util/AnnotationHelper.js +3 -0
  13. package/src/sap/suite/ui/generic/template/Canvas/extensionAPI/ExtensionAPI.js +11 -3
  14. package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
  15. package/src/sap/suite/ui/generic/template/ListReport/AnnotationHelperSmartList.js +2 -2
  16. package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +2 -0
  17. package/src/sap/suite/ui/generic/template/ListReport/extensionAPI/ExtensionAPI.js +13 -11
  18. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n.properties +3 -3
  19. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
  20. package/src/sap/suite/ui/generic/template/ListReport/view/ListReport.view.xml +1 -1
  21. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartFilterBar.fragment.xml +1 -1
  22. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartTable.fragment.xml +1 -1
  23. package/src/sap/suite/ui/generic/template/ObjectPage/Component.js +13 -5
  24. package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +11 -8
  25. package/src/sap/suite/ui/generic/template/ObjectPage/controller/MessageSortingHandler.js +82 -12
  26. package/src/sap/suite/ui/generic/template/ObjectPage/controllerFrameworkExtensions.js +1 -0
  27. package/src/sap/suite/ui/generic/template/ObjectPage/extensionAPI/DraftTransactionController.js +8 -10
  28. package/src/sap/suite/ui/generic/template/ObjectPage/extensionAPI/ExtensionAPI.js +36 -16
  29. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n.properties +59 -10
  30. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ar.properties +25 -5
  31. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_bg.properties +25 -5
  32. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ca.properties +25 -5
  33. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cnr.properties +25 -5
  34. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cs.properties +26 -6
  35. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cy.properties +25 -5
  36. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_da.properties +25 -5
  37. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_de.properties +25 -5
  38. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_el.properties +25 -5
  39. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en.properties +25 -5
  40. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en_GB.properties +25 -5
  41. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en_US_saprigi.properties +25 -5
  42. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es.properties +25 -5
  43. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es_MX.properties +25 -5
  44. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_et.properties +25 -5
  45. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_fi.properties +25 -5
  46. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_fr.properties +25 -5
  47. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_fr_CA.properties +25 -5
  48. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_hi.properties +25 -5
  49. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_hr.properties +25 -5
  50. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_hu.properties +25 -5
  51. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_id.properties +25 -5
  52. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_it.properties +25 -5
  53. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_iw.properties +25 -5
  54. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ja.properties +25 -5
  55. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_kk.properties +25 -5
  56. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ko.properties +25 -5
  57. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_lt.properties +25 -5
  58. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_lv.properties +25 -5
  59. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_mk.properties +25 -5
  60. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ms.properties +25 -5
  61. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_nl.properties +25 -5
  62. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_no.properties +25 -5
  63. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pl.properties +25 -5
  64. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pt.properties +25 -5
  65. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pt_PT.properties +25 -5
  66. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ro.properties +26 -6
  67. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ru.properties +25 -5
  68. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sh.properties +25 -5
  69. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sk.properties +25 -5
  70. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sl.properties +25 -5
  71. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sr.properties +25 -5
  72. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sv.properties +25 -5
  73. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_th.properties +25 -5
  74. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_tr.properties +25 -5
  75. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_uk.properties +27 -7
  76. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_vi.properties +25 -5
  77. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_zh_CN.properties +25 -5
  78. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_zh_TW.properties +25 -5
  79. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  80. package/src/sap/suite/ui/generic/template/ObjectPage/templateSpecificPreparationHelper.js +233 -125
  81. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/Facet.fragment.xml +32 -27
  82. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTable.fragment.xml +8 -12
  83. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  84. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  85. package/src/sap/suite/ui/generic/template/designtime/controls/DynamicPage.designtime.js +74 -17
  86. package/src/sap/suite/ui/generic/template/designtime/controls/ObjectPageLayout.designtime.js +44 -16
  87. package/src/sap/suite/ui/generic/template/designtime/controls/SmartFilterBar.designtime.js +142 -38
  88. package/src/sap/suite/ui/generic/template/designtime/controls/SmartTable.designtime.js +71 -46
  89. package/src/sap/suite/ui/generic/template/designtime/floorplans/AnalyticalListPage.designtime.js +21 -19
  90. package/src/sap/suite/ui/generic/template/designtime/floorplans/ListReport.designtime.js +22 -17
  91. package/src/sap/suite/ui/generic/template/designtime/floorplans/ObjectPage.designtime.js +14 -8
  92. package/src/sap/suite/ui/generic/template/designtime/utils/designtimeHelper.js +32 -44
  93. package/src/sap/suite/ui/generic/template/designtime/utils/designtimeUtils.js +47 -2
  94. package/src/sap/suite/ui/generic/template/detailTemplates/DiscardEditHandler.js +13 -0
  95. package/src/sap/suite/ui/generic/template/fragments/DeterminingButton.fragment.xml +18 -20
  96. package/src/sap/suite/ui/generic/template/fragments/DraftAdminDataPopover.fragment.xml +1 -0
  97. package/src/sap/suite/ui/generic/template/fragments/GridTableCells.fragment.xml +4 -4
  98. package/src/sap/suite/ui/generic/template/fragments/HeaderDataPointContent.fragment.xml +1 -1
  99. package/src/sap/suite/ui/generic/template/fragments/HeaderFormDataField.fragment.xml +2 -2
  100. package/src/sap/suite/ui/generic/template/fragments/MessagePopover.fragment.xml +4 -3
  101. package/src/sap/suite/ui/generic/template/fragments/SmartControlContextMenu.fragment.xml +1 -1
  102. package/src/sap/suite/ui/generic/template/fragments/TableCell.fragment.xml +2 -2
  103. package/src/sap/suite/ui/generic/template/fragments/TreeTableColumns.fragment.xml +1 -1
  104. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +4 -2
  105. package/src/sap/suite/ui/generic/template/genericUtilities/filterHelper.js +3 -1
  106. package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +78 -25
  107. package/src/sap/suite/ui/generic/template/js/AnnotationHelperStreamSupport.js +4 -1
  108. package/src/sap/suite/ui/generic/template/js/QuickTemplates/QuickTemplateComponentFactory.js +2 -3
  109. package/src/sap/suite/ui/generic/template/js/RuntimeFormatters.js +78 -22
  110. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -2
  111. package/src/sap/suite/ui/generic/template/lib/Application.js +2 -0
  112. package/src/sap/suite/ui/generic/template/lib/CRUDActionHandler.js +12 -3
  113. package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +13 -1
  114. package/src/sap/suite/ui/generic/template/lib/CommonUtils.js +41 -36
  115. package/src/sap/suite/ui/generic/template/lib/ComponentUtils.js +13 -2
  116. package/src/sap/suite/ui/generic/template/lib/ContextBookkeeping.js +1 -0
  117. package/src/sap/suite/ui/generic/template/lib/ContextMenuHandler.js +124 -2
  118. package/src/sap/suite/ui/generic/template/lib/MessageButtonHelper.js +6 -0
  119. package/src/sap/suite/ui/generic/template/lib/MessageStripHelper.js +1 -1
  120. package/src/sap/suite/ui/generic/template/lib/RetryAfterHandler.js +2 -3
  121. package/src/sap/suite/ui/generic/template/lib/SideEffectUtil.js +39 -2
  122. package/src/sap/suite/ui/generic/template/lib/TemplateComponent.js +3 -4
  123. package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +20 -11
  124. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +4 -0
  125. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +6 -2
  126. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +6 -2
  127. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +5 -1
  128. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +5 -1
  129. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +4 -0
  130. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +5 -1
  131. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +9 -5
  132. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +6 -2
  133. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +6 -2
  134. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +6 -2
  135. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_sappsd.properties +11 -0
  136. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +6 -2
  137. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saptrc.properties +9 -0
  138. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +8 -4
  139. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +4 -0
  140. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +6 -2
  141. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +5 -1
  142. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +6 -2
  143. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +6 -2
  144. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +4 -0
  145. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +5 -1
  146. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +6 -2
  147. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +5 -1
  148. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +6 -2
  149. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +4 -0
  150. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +5 -1
  151. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +5 -1
  152. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +5 -1
  153. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +6 -2
  154. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +7 -3
  155. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +6 -2
  156. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +5 -1
  157. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +7 -3
  158. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +6 -2
  159. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +4 -0
  160. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +6 -2
  161. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +6 -2
  162. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +6 -2
  163. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +6 -2
  164. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +5 -1
  165. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +4 -0
  166. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +6 -2
  167. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +5 -1
  168. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +6 -2
  169. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +5 -1
  170. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +5 -1
  171. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +6 -2
  172. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +7 -3
  173. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +5 -1
  174. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +6 -2
  175. package/src/sap/suite/ui/generic/template/lib/insights/InsightsCardHelper.js +27 -11
  176. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +32 -20
  177. package/src/sap/suite/ui/generic/template/lib/presentationControl/SmartTableHandler.js +92 -1
  178. package/src/sap/suite/ui/generic/template/library.js +1 -1
  179. package/src/sap/suite/ui/generic/template/listTemplates/fragments/DetailSmartTable.fragment.xml +1 -1
  180. package/src/sap/suite/ui/generic/template/manifestMerger/ChangePageConfiguration.js +3 -0
  181. package/src/sap/suite/ui/generic/template/manifestMerger/MergerUtil.js +27 -1
@@ -1,12 +1,11 @@
1
- <core:FragmentDefinition xmlns:core="sap.ui.core" xmlns:layout="sap.ui.layout"
2
- xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
1
+ <core:FragmentDefinition xmlns:core="sap.ui.core" xmlns:layout="sap.ui.layout" xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
3
2
  template:require="{AH: 'sap/suite/ui/generic/template/js/AnnotationHelper', AHModel: 'sap/ui/model/odata/AnnotationHelper', StableIdHelper: 'sap/suite/ui/generic/template/js/StableIdHelper'}">
4
3
 
5
4
  <!-- @classdesc @name: Name: sap.suite.ui.generic.template.ObjectPage.view.fragments.Facet.fragment.xml
6
5
  @param {UI.Facet} [facet] @param {edm.EntitySet} [entitySet] @param {edm.EntityType}
7
6
  [entityType] -->
8
7
  <template:with path="parameter>/variables" helper="AH.getNewVariable" var="objectPageTableSettings">
9
- <template:if test="{:= ${objectPageTableSettings>}.set(${block>tableSettings})}"/>
8
+ <template:if test="{:= ${objectPageTableSettings>}.set(${block>tableSettings})}" />
10
9
  <template:if test="{= ${objectPageTableSettings>value/type} !== 'TreeTable' || !${device>/system/phone}}">
11
10
  <layout:Grid defaultSpan="XL12 L12 M12 S12" hSpacing="0" vSpacing="0" class="sapSmartTemplatesObjectPageSubSectionGrid">
12
11
  <!--
@@ -16,42 +15,48 @@
16
15
  -->
17
16
  <template:if test="{path: 'facet>Target', formatter: 'AHModel.isMultiple'}">
18
17
  <template:then>
19
- <template:if test="{=${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.LineItem') > -1}">
20
- <template:then>
21
- <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartTable" type="XML"/>
22
- </template:then>
23
- <template:elseif test="{=${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.Communication.v1.Contact') > -1}">
24
- <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.Contacts" type="XML"/>
25
- </template:elseif>
26
- <template:elseif test="{=${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.Chart') > -1}">
27
- <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartChart" type="XML" />
28
- </template:elseif>
29
- </template:if>
18
+ <template:with path="facet>Target" helper="AHModel.gotoEntitySet" var="listEntitySet">
19
+ <template:with path="listEntitySet>entityType" helper="AHModel.gotoEntityType" var="listEntityType">
20
+ <template:if test="{parts:[{path: 'facet>Target/AnnotationPath'}, {path: 'listEntityType>'}], formatter: 'AH.checkFacetHasLineItemAnnotations'}">
21
+ <template:then>
22
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartTable" type="XML" />
23
+ </template:then>
24
+ <template:elseif test="{=${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.Communication.v1.Contact') > -1}">
25
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.Contacts" type="XML" />
26
+ </template:elseif>
27
+ <template:elseif test="{=${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.Chart') > -1}">
28
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartChart" type="XML" />
29
+ </template:elseif>
30
+ </template:if>
31
+ </template:with>
32
+ </template:with>
30
33
  </template:then>
31
- <template:elseif test="{= ${facet>RecordType}.indexOf('com.sap.vocabularies.UI.v1.CollectionFacet') > -1 ||
32
- (${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.FieldGroup') > -1
33
- || ${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.Identification') > -1) }">
34
- <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartForm" type="XML"/>
34
+ <template:elseif test="{= ${facet>RecordType}.indexOf('com.sap.vocabularies.UI.v1.CollectionFacet') > -1
35
+ || (${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.FieldGroup') > -1
36
+ || ${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.Identification') > -1) }">
37
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartForm" type="XML" />
35
38
  </template:elseif>
36
39
  <template:elseif test="{= ${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.UI.v1.DataPoint') > -1 }">
37
40
  <template:with path="facet>Target" helper="AHModel.resolvePath" var="dataPoint">
38
- <template:if test="{= ${dataPoint>Visualization/EnumMember}.indexOf('com.sap.vocabularies.UI.v1.VisualizationType/Rating') = -1 }">
41
+ <template:if test="{= ${dataPoint>Visualization/EnumMember}.indexOf('com.sap.vocabularies.UI.v1.VisualizationType/Rating') === -1 }">
39
42
  <template:then>
40
- <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartForm" type="XML"/>
43
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartForm" type="XML" />
41
44
  </template:then>
42
45
  </template:if>
43
46
  </template:with>
44
47
  </template:elseif>
45
48
  <template:elseif test="{= ${facet>Target/AnnotationPath}.indexOf('com.sap.vocabularies.Communication.v1.Address') > -1 }">
46
49
  <!-- Be aware: variable facet is not always provided (in case of SmartForm it is not meaningful, as the SmartForm actually shows multiple facets).
47
- Thus, it does not make sense to create facetId globally (for this fragment). In fact, doing this would lead to console errors for not provided mandatory parameter
48
- sRecordType when trying to build the id.
50
+ Thus, it does not make sense to create facetId globally (for this fragment). In fact, doing this would lead to console errors for not provided mandatory
51
+ parameter
52
+ sRecordType when trying to build the id.
49
53
  AddressFacet is the only case, where facetId is used, so we create it only here. In this case, facet obviously is provided.
50
54
  -->
51
55
  <template:with path="parameter>/" helper="StableIdHelper.preparePathForStableId" var="facetId">
52
- <template:if test="{= ${facetId>}.buildStableId({ type:'ObjectPage', subType:'StandardFacet', sRecordType: ${facet>RecordType}, sAnnotationPath: ${facet>Target/AnnotationPath} , sAnnotationId: ${facet>ID/String} }) }"/>
56
+ <template:if
57
+ test="{= ${facetId>}.buildStableId({ type:'ObjectPage', subType:'StandardFacet', sRecordType: ${facet>RecordType}, sAnnotationPath: ${facet>Target/AnnotationPath} , sAnnotationId: ${facet>ID/String} }) }" />
53
58
  <template:with path="facet>Target" helper="AHModel.resolvePath" var="address">
54
- <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.AddressFacet" type="XML"/>
59
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.AddressFacet" type="XML" />
55
60
  </template:with>
56
61
  </template:with>
57
62
  </template:elseif>
@@ -59,12 +64,12 @@
59
64
  <!-- better: check for <template:elseif test="{= ${block>additionalData/type} === 'SmartForm'}">
60
65
  but currently this is not (yet) supplied in case of mixed reference facets on 3rd level -->
61
66
  <template:else>
62
- <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartForm" type="XML"/>
63
- <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.StreamSupport" type="XML"/>
67
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.SmartForm" type="XML" />
68
+ <core:Fragment fragmentName="sap.suite.ui.generic.template.ObjectPage.view.fragments.StreamSupport" type="XML" />
64
69
  </template:else>
65
70
  </template:if>
66
71
 
67
72
  </layout:Grid>
68
73
  </template:if>
69
74
  </template:with>
70
- </core:FragmentDefinition>
75
+ </core:FragmentDefinition>
@@ -8,7 +8,7 @@
8
8
  <template:with path="facet>Target" var="target">
9
9
  <template:with path="target>" helper="AHModel.gotoEntitySet" var="listEntitySet">
10
10
  <template:with path="listEntitySet>entityType" helper="AHModel.gotoEntityType" var="listEntityType">
11
- <template:with path="target>" helper="AHModel.resolvePath" var="collection">
11
+ <template:with path="target>" helper="AH.getListItemCollection" var="collection">
12
12
  <template:with path="listEntityType>com.sap.vocabularies.UI.v1.HeaderInfo" var="header">
13
13
  <template:with path="parameter>/" helper="StableIdHelper.preparePathForStableId" var="smartControlId">
14
14
  <template:with path="parameter>/" helper="StableIdHelper.preparePathForStableId" var="facetId">
@@ -62,18 +62,14 @@
62
62
  <core:CustomData key="dateFormatSettings"
63
63
  value='\{"UTC":true,"style":"medium"\}' />
64
64
  <core:CustomData key="useUTCDateTime" value="true" />
65
- <template:if test="{= ${facet>Target/AnnotationPath}.split('#')[1]}">
65
+ <template:if test="{= ${objectPageTableSettings>value/lineItemQualifier}}">
66
66
  <core:CustomData key="lineItemQualifier"
67
- value="{= ${facet>Target/AnnotationPath}.split('#')[1]}" />
67
+ value="{= ${objectPageTableSettings>value/lineItemQualifier}}" />
68
+ </template:if>
69
+ <template:if test="{= ${objectPageTableSettings>value/lineItemSortOrder}}">
70
+ <core:CustomData key="TemplateSortOrder"
71
+ value="{= ${objectPageTableSettings>value/lineItemSortOrder}}" />
68
72
  </template:if>
69
- <template:with
70
- path="listEntityType>com.sap.vocabularies.UI.v1.PresentationVariant"
71
- var="variant">
72
- <template:if test="{= ${variant>SortOrder}}">
73
- <core:CustomData key="TemplateSortOrder"
74
- value="{path: 'variant>SortOrder', formatter: 'AH.getSortOrder'}" />
75
- </template:if>
76
- </template:with>
77
73
  </st:customData>
78
74
  <st:semanticObjectController>
79
75
  <!-- Fragment SemanticObjectControllerForDataField uses variable 'entitySet to address the entoty set. Currently entitySet points to the entity set of whole OP. Reset pointer to the entity set of the table.-->
@@ -198,7 +194,7 @@
198
194
  delete="._templateEventHandlers.deleteEntry"
199
195
  itemPress="._templateEventHandlers.onListNavigate"
200
196
  updateFinished="._templateEventHandlers.checkUpdateFinished"
201
- sticky="ColumnHeaders,HeaderToolbar,InfoToolbar"
197
+ sticky="ColumnHeaders,HeaderToolbar,InfoToolbar,GroupHeaders"
202
198
  rememberSelections="false"
203
199
  multiSelectMode="{= (${objectPageTableSettings>value/multiSelect} &amp;&amp; ${objectPageTableSettings>value/selectAll}) ? 'SelectAll' : 'ClearAll'}">
204
200
  <template:with path="objectPageTableSettings>value" var="tableSettings">
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.132.0"
9
+ "version": "1.134.1"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.132.0"
9
+ "version": "1.134.1"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -13,6 +13,9 @@ sap.ui.define([
13
13
  function (deepClone, designtimeUtils, ObjectPath, testableHelper) {
14
14
  "use strict";
15
15
 
16
+ const LIST_REPORT_COMPONENT_NAME = "sap.suite.ui.generic.template.ListReport";
17
+ const ALP_COMPONENT_NAME = "sap.suite.ui.generic.template.AnalyticalListPage";
18
+
16
19
  /**
17
20
  * @typedef {Object} DesigntimeSetting
18
21
  * @property {string} id - The ID of the designtime setting.
@@ -27,7 +30,7 @@ sap.ui.define([
27
30
  * @property {Partial<DesigntimeSetting>[]} [writeObject] - An array of DesigntimeSetting objects.
28
31
  * @property {string} [writeObjectFor] - The value for which the writeObject should be applied.
29
32
  * @property {boolean} [skipChange] - Indicates if the change should be skipped.
30
-
33
+ * @property {boolean} keyUser - Indicates if the setting is allowed for key user.
31
34
  ===============================================
32
35
  * @typedef {Object} ChangeParameters - Descriptor change parameters.
33
36
  * @property {string} [sScope] - The scope of the manifest setting.
@@ -66,7 +69,7 @@ sap.ui.define([
66
69
  name: "Variant Management",
67
70
  description: "Enable Smart Variant Management",
68
71
  type: "booleanOrString",
69
- value: "true",
72
+ value: true,
70
73
  enums: [
71
74
  {
72
75
  id: "true",
@@ -77,7 +80,8 @@ sap.ui.define([
77
80
  name: "Per Control"
78
81
  }
79
82
  ],
80
- getPath: () => getSettingsPath("smartVariantManagement")
83
+ getPath: () => getSettingsPath("smartVariantManagement"),
84
+ keyUser: true
81
85
 
82
86
  };
83
87
 
@@ -90,7 +94,9 @@ sap.ui.define([
90
94
  description: "Hide Variant Management",
91
95
  type: "boolean",
92
96
  value: false,
93
- getPath: () => getSettingsPath("variantManagementHidden")
97
+ getPath: () => getSettingsPath("variantManagementHidden"),
98
+ restrictedTo: [LIST_REPORT_COMPONENT_NAME],
99
+ keyUser: true
94
100
  };
95
101
 
96
102
  /**
@@ -102,7 +108,8 @@ sap.ui.define([
102
108
  description: "Enable Table Filter in Page Variant",
103
109
  type: "boolean",
104
110
  value: false,
105
- getPath: () => getSettingsPath("enableTableFilterInPageVariant")
111
+ getPath: () => getSettingsPath("enableTableFilterInPageVariant"),
112
+ keyUser: false
106
113
  };
107
114
 
108
115
 
@@ -130,7 +137,8 @@ sap.ui.define([
130
137
  name: "Disabled"
131
138
  }
132
139
  ],
133
- getPath: () => "component/settings/dataLoadSettings/loadDataOnAppLaunch"
140
+ getPath: () => "component/settings/dataLoadSettings/loadDataOnAppLaunch",
141
+ keyUser: true
134
142
  };
135
143
 
136
144
  /**
@@ -147,17 +155,48 @@ sap.ui.define([
147
155
  { id: "direct", name: "true" },
148
156
  { id: "display", name: "false" }
149
157
 
150
- ]
158
+ ],
159
+ restrictedTo: [LIST_REPORT_COMPONENT_NAME],
160
+ keyUser: true
151
161
  };
152
162
 
163
+ /**
164
+ * @type {DesigntimeSetting}
165
+ */
166
+
167
+ const defaultContentView = {
168
+ id: "defaultContentView",
169
+ name: "Default Content View",
170
+ description: "Default Content View",
171
+ type: "string",
172
+ value: "chart",
173
+ enums: [
174
+ {
175
+ id: "charttable",
176
+ name: "Hybrid"
177
+ },
178
+ {
179
+ id: "chart",
180
+ name: "Chart"
181
+ },
182
+ {
183
+ id: "table",
184
+ name: "Table"
185
+ }
153
186
 
187
+ ],
188
+ getPath: () => getSettingsPath("defaultContentView"),
189
+ restrictedTo:[ALP_COMPONENT_NAME],
190
+ keyUser: true
191
+ };
154
192
 
155
193
  return [
156
194
  smartVariantManagement,
157
195
  hideVariantManagement,
158
196
  enableTableFilterInPageVariant,
159
197
  initialLoad,
160
- openInEditMode
198
+ openInEditMode,
199
+ defaultContentView
161
200
  ];
162
201
 
163
202
  }
@@ -183,19 +222,22 @@ sap.ui.define([
183
222
  const sProperty = oSetting.id;
184
223
  switch (sProperty) {
185
224
  case "smartVariantManagement":
186
- mPropertyValues[sProperty] = mLrOrALPSettings.smartVariantManagement || oSetting.value;
225
+ mPropertyValues[sProperty] = mLrOrALPSettings.smartVariantManagement ?? oSetting.value;
187
226
  break;
188
227
  case "variantManagementHidden":
189
- mPropertyValues[sProperty] = mLrOrALPSettings.variantManagementHidden || oSetting.value;
228
+ mPropertyValues[sProperty] = mLrOrALPSettings.variantManagementHidden ?? oSetting.value;
190
229
  break;
191
230
  case "enableTableFilterInPageVariant":
192
- mPropertyValues[sProperty] = mLrOrALPSettings.enableTableFilterInPageVariant || oSetting.value;
231
+ mPropertyValues[sProperty] = mLrOrALPSettings.enableTableFilterInPageVariant ?? oSetting.value;
193
232
  break;
194
233
  case "loadDataOnAppLaunch":
195
- mPropertyValues[sProperty] = ObjectPath.get("dataLoadSettings.loadDataOnAppLaunch", mLrOrALPSettings) || oSetting.value;
234
+ mPropertyValues[sProperty] = ObjectPath.get("dataLoadSettings.loadDataOnAppLaunch", mLrOrALPSettings) ?? oSetting.value;
196
235
  break;
197
236
  case "editFlow":
198
- mPropertyValues[sProperty] = mLrOrALPSettings.editFlow || oSetting.value;
237
+ mPropertyValues[sProperty] = mLrOrALPSettings.editFlow ?? oSetting.value;
238
+ break;
239
+ case "defaultContentView":
240
+ mPropertyValues[sProperty] = mLrOrALPSettings.defaultContentView ?? oSetting.value;
199
241
  break;
200
242
  default:
201
243
  break;
@@ -216,8 +258,21 @@ sap.ui.define([
216
258
  async function fnOpenTableConfigurationDialog(oControl, mPropertyBag) {
217
259
  const oResourceModel = oControl.getModel("i18n");
218
260
  const oComponent = designtimeUtils.getOwnerComponentFor(oControl);
261
+ const sComponentName = oComponent.getMetadata().getComponentName();
219
262
  const mLrOrALPSettings = oComponent.mProperties;
220
- const aAllowedDesigntimeSettings = getAllDesigntimeSettings(oControl);
263
+
264
+ // Get all the designtime settings
265
+ const aAllDesigntimeSettings = getAllDesigntimeSettings(oControl);
266
+ // Get the allowed designtime settings based on the floorplan
267
+
268
+ /**
269
+ * @type {DesigntimeSetting[]}
270
+ */
271
+ let aAllowedDesigntimeSettings = designtimeUtils.filterDesigntimeSettingsByFloorPlan(oControl, aAllDesigntimeSettings);
272
+
273
+ // Get the allowed designtime settings based on the adaptation mode (key user or Designtime)
274
+ aAllowedDesigntimeSettings = designtimeUtils.getAllowedDesigntimeSettingsBasedOnAdaptationMode(aAllowedDesigntimeSettings, oComponent);
275
+
221
276
 
222
277
  // Get the current values of the properties
223
278
  const mRuntimeAdaptationPropertyValues = getRuntimeAdapationProperties(aAllowedDesigntimeSettings, mLrOrALPSettings);
@@ -226,9 +281,11 @@ sap.ui.define([
226
281
  // Get the settings of the dialog from the designtime settings using which the dialog will be created
227
282
  const aItems = designtimeUtils.getSettings(mRuntimeAdaptationPropertyValues, aAllowedDesigntimeSettings);
228
283
 
229
- // disable the scope control if there is only one option
230
-
231
- const mPropertyValuesEntered = await designtimeUtils.openAdaptionDialog([...aItems], mRuntimeAdaptationPropertyValues, mUnchangedData, "{i18n>RTA_CONFIGURATION_TITLE_LIST_REPORT}", { width: "650px", height: "800px" }, oResourceModel);
284
+ let sDialogTitle = "{i18n>RTA_CONFIGURATION_TITLE_LIST_REPORT}";
285
+ if (sComponentName === "sap.suite.ui.generic.template.AnalyticalListPage") {
286
+ sDialogTitle = "{i18n>RTA_CONFIGURATION_TITLE_ANALYTICAL_LIST_PAGE}";
287
+ }
288
+ const mPropertyValuesEntered = await designtimeUtils.openAdaptionDialog([...aItems], mRuntimeAdaptationPropertyValues, mUnchangedData, sDialogTitle, { width: "650px", height: "800px" }, oResourceModel);
232
289
 
233
290
 
234
291
  /**
@@ -27,6 +27,7 @@ sap.ui.define([
27
27
  * @property {Partial<DesigntimeSetting>[]} [writeObject] - An array of DesigntimeSetting objects.
28
28
  * @property {string} [writeObjectFor] - The value for which the writeObject should be applied.
29
29
  * @property {boolean} [skipChange] - Indicates if the change should be skipped.
30
+ * @property {boolean} keyUser - Indicates if the setting is allowed for key user.
30
31
 
31
32
  ===============================================
32
33
  * @typedef {Object} ChangeParameters - Descriptor change parameters.
@@ -56,20 +57,23 @@ sap.ui.define([
56
57
  * @param {Object} mSettings - The global manifest settings object.
57
58
  * @returns {Object} - The object containing the runtime adaptation properties.
58
59
  */
59
- function getRuntimeAdapationProperties(aAllowedDesigntimeSettings, mSettings) {
60
+ function getRuntimeAdaptationProperties(aAllowedDesigntimeSettings, mSettings) {
60
61
  const mPropertyValues = {};
61
62
 
62
63
  aAllowedDesigntimeSettings.forEach(oSetting => {
63
64
  const sProperty = oSetting.id;
64
65
  switch (sProperty) {
65
66
  case "editableHeaderContent":
66
- mPropertyValues[sProperty] = mSettings[sProperty] || oSetting.value;
67
+ mPropertyValues[sProperty] = mSettings[sProperty] ?? oSetting.value;
67
68
  break;
68
69
  case "tableVariantManagement":
69
- mPropertyValues[sProperty] = mSettings[sProperty] || oSetting.value;
70
+ mPropertyValues[sProperty] = mSettings[sProperty] ?? oSetting.value;
71
+ break;
72
+ case "chartVariantManagement":
73
+ mPropertyValues[sProperty] = mSettings[sProperty] ?? oSetting.value;
70
74
  break;
71
75
  case "showRelatedApps":
72
- mPropertyValues[sProperty] = mSettings[sProperty] || oSetting.value;
76
+ mPropertyValues[sProperty] = mSettings[sProperty] ?? oSetting.value;
73
77
  break;
74
78
  default:
75
79
  break;
@@ -94,18 +98,32 @@ sap.ui.define([
94
98
  description: "Decide whether the header content is editable",
95
99
  value: false,
96
100
  getPath: () => 'component/settings/editableHeaderContent',
97
- type: "boolean"
101
+ type: "boolean",
102
+ keyUser: true
98
103
  };
99
104
  /**
100
105
  * @type {DesigntimeSetting}
101
106
  */
102
107
  const tableVariantManagement = {
103
- id: "variantManagement",
108
+ id: "tableVariantManagement",
104
109
  name: "Table Variant Management",
105
- description: "Decide whether Variant Management is used",
106
- value: false,
110
+ description: "Decide whether the variant management is enabled for tables",
111
+ value: true, // The default value is true
107
112
  getPath: () => 'component/settings/tableSettings/variantManagement',
108
- type: "boolean"
113
+ type: "boolean",
114
+ keyUser: true
115
+ };
116
+ /**
117
+ * @type {DesigntimeSetting}
118
+ */
119
+ const chartVariantManagement = {
120
+ id: "chartVariantManagement",
121
+ name: "Chart Variant Management",
122
+ description: "Decide whether the variant management is enabled for charts",
123
+ value: true, // The default value is true
124
+ getPath: () => 'component/settings/chartSettings/variantManagement',
125
+ type: "boolean",
126
+ keyUser: true
109
127
  };
110
128
 
111
129
  /**
@@ -117,12 +135,14 @@ sap.ui.define([
117
135
  description: "Decide whether Related Apps are shown",
118
136
  value: false,
119
137
  getPath: () => 'component/settings/showRelatedApps',
120
- type: "boolean"
138
+ type: "boolean",
139
+ keyUser: true
121
140
  };
122
141
 
123
142
  return [
124
143
  editableHeaderContent,
125
144
  tableVariantManagement,
145
+ chartVariantManagement,
126
146
  showRelatedApps
127
147
  ];
128
148
 
@@ -133,7 +153,8 @@ sap.ui.define([
133
153
  function getObjectPageSettings(oComponent) {
134
154
  return {
135
155
  editableHeaderContent: JSON.parse(oComponent.getEditableHeaderContent()),
136
- tableVariantManagement: !!(ObjectPath.get(["tableVariantManagement"], oComponent.getTableSettings())),
156
+ tableVariantManagement: ObjectPath.get(["variantManagement"], oComponent.getTableSettings()),
157
+ chartVariantManagement: ObjectPath.get(["variantManagement"], oComponent.getChartSettings()),
137
158
  showRelatedApps: JSON.parse(oComponent.getShowRelatedApps())
138
159
  };
139
160
  }
@@ -147,7 +168,7 @@ sap.ui.define([
147
168
  * @param {object} mPropertyBag - The property bag.
148
169
  * @returns {Promise<ControlChangeParams[]>} - The changes.
149
170
  */
150
- async function fnOpenTableConfigurationDialog(oControl, mPropertyBag) {
171
+ async function fnOpenObjectPageConfigurationDialog(oControl, mPropertyBag) {
151
172
  const oResourceModel = oControl.getModel("i18n");
152
173
  const oComponent = designtimeUtils.getOwnerComponentFor(oControl);
153
174
 
@@ -156,10 +177,17 @@ sap.ui.define([
156
177
  // Get all the designtime settings
157
178
  const aAllDesigntimeSettings = getAllDesigntimeSettings(oControl);
158
179
  // Get the allowed designtime settings based on the floorplan
159
- const aAllowedDesigntimeSettings = designtimeUtils.getAllowedDesigntimeSettings(oControl, aAllDesigntimeSettings);
180
+ /**
181
+ * @type {DesigntimeSetting[]}
182
+ */
183
+ let aAllowedDesigntimeSettings = designtimeUtils.filterDesigntimeSettingsByFloorPlan(oControl, aAllDesigntimeSettings);
184
+
185
+ // Get the allowed designtime settings based on the adaptation mode (key user or Designtime)
186
+ aAllowedDesigntimeSettings = designtimeUtils.getAllowedDesigntimeSettingsBasedOnAdaptationMode(aAllowedDesigntimeSettings, oComponent);
187
+
160
188
 
161
189
  // Get the current values of the properties
162
- const mRuntimeAdaptationPropertyValues = getRuntimeAdapationProperties(aAllowedDesigntimeSettings, mObjectPageSettings);
190
+ const mRuntimeAdaptationPropertyValues = getRuntimeAdaptationProperties(aAllowedDesigntimeSettings, mObjectPageSettings);
163
191
  // Save the unchanged data to compare later
164
192
  const mUnchangedData = deepClone(mRuntimeAdaptationPropertyValues);
165
193
  // Get the settings of the dialog from the designtime settings using which the dialog will be created
@@ -181,7 +209,7 @@ sap.ui.define([
181
209
  }
182
210
 
183
211
  // Expose the functions for QUnit tests
184
- testableHelper.testableStatic(fnOpenTableConfigurationDialog, "fnOpenTableConfigurationDialog");
212
+ testableHelper.testableStatic(fnOpenObjectPageConfigurationDialog, "fnOpenObjectPageConfigurationDialog");
185
213
 
186
214
 
187
215
  const oHelper = {
@@ -192,7 +220,7 @@ sap.ui.define([
192
220
  fe: {
193
221
  name: "Configuration",
194
222
  icon: "sap-icon://developer-settings",
195
- handler: fnOpenTableConfigurationDialog
223
+ handler: fnOpenObjectPageConfigurationDialog
196
224
  }
197
225
  }
198
226
  }