@sap/ux-specification 1.120.52 → 1.120.54

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 (230) hide show
  1. package/CHANGELOG.md +399 -319
  2. package/dist/documentation/v2/v2-AnalyticalListPage.html +2 -2
  3. package/dist/documentation/v2/v2-ApplicationV2.html +2 -2
  4. package/dist/documentation/v2/v2-ListReport.html +2 -2
  5. package/dist/documentation/v2/v2-ListReportNew.html +2 -2
  6. package/dist/documentation/v2/v2-ObjectPage.html +2 -2
  7. package/dist/documentation/v2/v2-OverviewPage.html +2 -2
  8. package/dist/documentation/v4/v4-ApplicationV4.html +2 -2
  9. package/dist/documentation/v4/v4-BuildingBlocks.html +2 -2
  10. package/dist/documentation/v4/v4-FreestylePage.html +2 -2
  11. package/dist/documentation/v4/v4-ListReport.html +2 -2
  12. package/dist/documentation/v4/v4-ObjectPage.html +2 -2
  13. package/dist/index-min.js +275 -267
  14. package/dist/index-min.js.map +4 -4
  15. package/dist/schemas/v2/AnalyticalListPageConfig.json +3 -3
  16. package/dist/schemas/v2/ListReportConfig.json +5 -5
  17. package/dist/schemas/v2/ListReportNewConfig.json +1 -1
  18. package/dist/schemas/v2/ObjectPageConfig.json +5 -5
  19. package/dist/schemas/v4/ApplicationV4.json +1 -1
  20. package/dist/schemas/v4/BuildingBlocksConfig.json +44 -2
  21. package/dist/schemas/v4/ListReportConfig.json +24 -6
  22. package/dist/schemas/v4/ObjectPageConfig.json +32 -8
  23. package/dist/specification/package.json +14 -12
  24. package/dist/specification/scripts/extractDocu.js +18 -1
  25. package/dist/specification/scripts/extractDocu.js.map +1 -1
  26. package/dist/specification/scripts/generate-validity-report.d.ts +15 -0
  27. package/dist/specification/scripts/generate-validity-report.d.ts.map +1 -0
  28. package/dist/specification/scripts/generate-validity-report.js +367 -0
  29. package/dist/specification/scripts/generate-validity-report.js.map +1 -0
  30. package/dist/specification/scripts/macros/corrections.d.ts +40 -0
  31. package/dist/specification/scripts/macros/corrections.d.ts.map +1 -1
  32. package/dist/specification/scripts/macros/corrections.js +82 -7
  33. package/dist/specification/scripts/macros/corrections.js.map +1 -1
  34. package/dist/specification/scripts/macros/schema.d.ts.map +1 -1
  35. package/dist/specification/scripts/macros/schema.js +14 -1
  36. package/dist/specification/scripts/macros/schema.js.map +1 -1
  37. package/dist/specification/scripts/macros/types.d.ts +1 -0
  38. package/dist/specification/scripts/macros/types.d.ts.map +1 -1
  39. package/dist/specification/src/api.js +1 -1
  40. package/dist/specification/src/i18n/i18n.d.ts.map +1 -1
  41. package/dist/specification/src/i18n/i18n.js +2 -1
  42. package/dist/specification/src/i18n/i18n.js.map +1 -1
  43. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts +501 -0
  44. package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts.map +1 -0
  45. package/dist/specification/src/sync/common/decoration/decorator-paths.js +497 -0
  46. package/dist/specification/src/sync/common/decoration/decorator-paths.js.map +1 -0
  47. package/dist/specification/src/sync/common/decoration/decorators.d.ts +116 -24
  48. package/dist/specification/src/sync/common/decoration/decorators.d.ts.map +1 -1
  49. package/dist/specification/src/sync/common/decoration/decorators.js +308 -78
  50. package/dist/specification/src/sync/common/decoration/decorators.js.map +1 -1
  51. package/dist/specification/src/sync/common/decoration/index.d.ts +1 -0
  52. package/dist/specification/src/sync/common/decoration/index.d.ts.map +1 -1
  53. package/dist/specification/src/sync/common/decoration/index.js +1 -0
  54. package/dist/specification/src/sync/common/decoration/index.js.map +1 -1
  55. package/dist/specification/src/sync/common/dist_tag.json +8 -3
  56. package/dist/specification/src/sync/common/generate/utils.d.ts +2 -1
  57. package/dist/specification/src/sync/common/generate/utils.d.ts.map +1 -1
  58. package/dist/specification/src/sync/common/generate/utils.js +5 -1
  59. package/dist/specification/src/sync/common/generate/utils.js.map +1 -1
  60. package/dist/specification/src/sync/common/i18n.json +2 -1
  61. package/dist/specification/src/sync/common/utils.d.ts +22 -6
  62. package/dist/specification/src/sync/common/utils.d.ts.map +1 -1
  63. package/dist/specification/src/sync/common/utils.js +122 -18
  64. package/dist/specification/src/sync/common/utils.js.map +1 -1
  65. package/dist/specification/src/sync/v2/generate/analyticalListReport.d.ts.map +1 -1
  66. package/dist/specification/src/sync/v2/generate/analyticalListReport.js +9 -7
  67. package/dist/specification/src/sync/v2/generate/analyticalListReport.js.map +1 -1
  68. package/dist/specification/src/sync/v2/generate/listReport.d.ts.map +1 -1
  69. package/dist/specification/src/sync/v2/generate/listReport.js +3 -1
  70. package/dist/specification/src/sync/v2/generate/listReport.js.map +1 -1
  71. package/dist/specification/src/sync/v2/generate/objectPage.d.ts.map +1 -1
  72. package/dist/specification/src/sync/v2/generate/objectPage.js +58 -2
  73. package/dist/specification/src/sync/v2/generate/objectPage.js.map +1 -1
  74. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts +1 -9
  75. package/dist/specification/src/sync/v2/generate/overviewPage.d.ts.map +1 -1
  76. package/dist/specification/src/sync/v2/generate/overviewPage.js +30 -1
  77. package/dist/specification/src/sync/v2/generate/overviewPage.js.map +1 -1
  78. package/dist/specification/src/sync/v2/import/app/appProvider.d.ts.map +1 -1
  79. package/dist/specification/src/sync/v2/import/app/appProvider.js +2 -0
  80. package/dist/specification/src/sync/v2/import/app/appProvider.js.map +1 -1
  81. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts +2 -1
  82. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts.map +1 -1
  83. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js +5 -0
  84. package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
  85. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts +2 -1
  86. package/dist/specification/src/sync/v2/import/pages/listReport.d.ts.map +1 -1
  87. package/dist/specification/src/sync/v2/import/pages/listReport.js +5 -0
  88. package/dist/specification/src/sync/v2/import/pages/listReport.js.map +1 -1
  89. package/dist/specification/src/sync/v2/import/pages/objectPage.d.ts.map +1 -1
  90. package/dist/specification/src/sync/v2/import/pages/objectPage.js +2 -1
  91. package/dist/specification/src/sync/v2/import/pages/objectPage.js.map +1 -1
  92. package/dist/specification/src/sync/v2/import/utils.d.ts +28 -1
  93. package/dist/specification/src/sync/v2/import/utils.d.ts.map +1 -1
  94. package/dist/specification/src/sync/v2/import/utils.js +37 -0
  95. package/dist/specification/src/sync/v2/import/utils.js.map +1 -1
  96. package/dist/specification/src/sync/v2/utils.d.ts +12 -2
  97. package/dist/specification/src/sync/v2/utils.d.ts.map +1 -1
  98. package/dist/specification/src/sync/v2/utils.js +19 -2
  99. package/dist/specification/src/sync/v2/utils.js.map +1 -1
  100. package/dist/specification/src/sync/v4/application.d.ts +31 -2
  101. package/dist/specification/src/sync/v4/application.d.ts.map +1 -1
  102. package/dist/specification/src/sync/v4/application.js +42 -2
  103. package/dist/specification/src/sync/v4/application.js.map +1 -1
  104. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts +2 -1
  105. package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts.map +1 -1
  106. package/dist/specification/src/sync/v4/export/controls/FilterBar.js +2 -1
  107. package/dist/specification/src/sync/v4/export/controls/FilterBar.js.map +1 -1
  108. package/dist/specification/src/sync/v4/export/controls/Header.d.ts +4 -3
  109. package/dist/specification/src/sync/v4/export/controls/Header.d.ts.map +1 -1
  110. package/dist/specification/src/sync/v4/export/controls/Header.js +7 -3
  111. package/dist/specification/src/sync/v4/export/controls/Header.js.map +1 -1
  112. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts +2 -1
  113. package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts.map +1 -1
  114. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js +7 -0
  115. package/dist/specification/src/sync/v4/export/controls/HeaderAction.js.map +1 -1
  116. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts +2 -1
  117. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts.map +1 -1
  118. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js +2 -1
  119. package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js.map +1 -1
  120. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts +1 -1
  121. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts.map +1 -1
  122. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js +0 -13
  123. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
  124. package/dist/specification/src/sync/v4/export/controls/Table.d.ts +21 -8
  125. package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
  126. package/dist/specification/src/sync/v4/export/controls/Table.js +38 -41
  127. package/dist/specification/src/sync/v4/export/controls/Table.js.map +1 -1
  128. package/dist/specification/src/sync/v4/export/controls/TableColumn.d.ts.map +1 -1
  129. package/dist/specification/src/sync/v4/export/controls/TableColumn.js +2 -2
  130. package/dist/specification/src/sync/v4/export/controls/TableColumn.js.map +1 -1
  131. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts +2 -1
  132. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts.map +1 -1
  133. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js +4 -3
  134. package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js.map +1 -1
  135. package/dist/specification/src/sync/v4/export/export.d.ts.map +1 -1
  136. package/dist/specification/src/sync/v4/export/export.js +25 -3
  137. package/dist/specification/src/sync/v4/export/export.js.map +1 -1
  138. package/dist/specification/src/sync/v4/export/pages/ListReport.js +1 -1
  139. package/dist/specification/src/sync/v4/export/pages/ListReport.js.map +1 -1
  140. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.d.ts.map +1 -1
  141. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js +20 -12
  142. package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js.map +1 -1
  143. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.d.ts.map +1 -1
  144. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.js +16 -1
  145. package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.js.map +1 -1
  146. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.d.ts.map +1 -1
  147. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js +10 -1
  148. package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js.map +1 -1
  149. package/dist/specification/src/sync/v4/generate/index.d.ts +1 -1
  150. package/dist/specification/src/sync/v4/generate/index.d.ts.map +1 -1
  151. package/dist/specification/src/sync/v4/generate/index.js +1 -1
  152. package/dist/specification/src/sync/v4/generate/index.js.map +1 -1
  153. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts +73 -0
  154. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts.map +1 -0
  155. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js +336 -0
  156. package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js.map +1 -0
  157. package/dist/specification/src/sync/v4/generate/{listReport.d.ts → list-report/listReport.d.ts} +21 -14
  158. package/dist/specification/src/sync/v4/generate/list-report/listReport.d.ts.map +1 -0
  159. package/dist/specification/src/sync/v4/generate/{listReport.js → list-report/listReport.js} +119 -226
  160. package/dist/specification/src/sync/v4/generate/list-report/listReport.js.map +1 -0
  161. package/dist/specification/src/sync/v4/generate/objectPage.d.ts.map +1 -1
  162. package/dist/specification/src/sync/v4/generate/objectPage.js +150 -56
  163. package/dist/specification/src/sync/v4/generate/objectPage.js.map +1 -1
  164. package/dist/specification/src/sync/v4/import/pages/listReport.d.ts.map +1 -1
  165. package/dist/specification/src/sync/v4/import/pages/listReport.js +2 -1
  166. package/dist/specification/src/sync/v4/import/pages/listReport.js.map +1 -1
  167. package/dist/specification/src/sync/v4/sync-rules/App.d.ts +9 -7
  168. package/dist/specification/src/sync/v4/sync-rules/App.d.ts.map +1 -1
  169. package/dist/specification/src/sync/v4/sync-rules/App.js +4 -8
  170. package/dist/specification/src/sync/v4/sync-rules/App.js.map +1 -1
  171. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts +2 -9
  172. package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts.map +1 -1
  173. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js +2 -11
  174. package/dist/specification/src/sync/v4/sync-rules/AppSchema.js.map +1 -1
  175. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts +219 -96
  176. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts.map +1 -1
  177. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js +557 -211
  178. package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js.map +1 -1
  179. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts +17 -22
  180. package/dist/specification/src/sync/v4/sync-rules/Page.d.ts.map +1 -1
  181. package/dist/specification/src/sync/v4/sync-rules/Page.js +15 -22
  182. package/dist/specification/src/sync/v4/sync-rules/Page.js.map +1 -1
  183. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts +1 -0
  184. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts.map +1 -1
  185. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js +17 -9
  186. package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js.map +1 -1
  187. package/dist/specification/src/sync/v4/sync-rules/index.d.ts +5 -0
  188. package/dist/specification/src/sync/v4/sync-rules/index.d.ts.map +1 -0
  189. package/dist/specification/src/sync/v4/sync-rules/index.js +21 -0
  190. package/dist/specification/src/sync/v4/sync-rules/index.js.map +1 -0
  191. package/dist/specification/src/sync/v4/sync-rules/utils.d.ts.map +1 -1
  192. package/dist/specification/src/sync/v4/sync-rules/utils.js +4 -0
  193. package/dist/specification/src/sync/v4/sync-rules/utils.js.map +1 -1
  194. package/dist/specification/src/sync/v4/utils/index.d.ts +2 -0
  195. package/dist/specification/src/sync/v4/utils/index.d.ts.map +1 -0
  196. package/dist/specification/src/sync/v4/utils/index.js +18 -0
  197. package/dist/specification/src/sync/v4/utils/index.js.map +1 -0
  198. package/dist/specification/src/sync/v4/utils/utils.d.ts +9 -1
  199. package/dist/specification/src/sync/v4/utils/utils.d.ts.map +1 -1
  200. package/dist/specification/src/sync/v4/utils/utils.js +18 -3
  201. package/dist/specification/src/sync/v4/utils/utils.js.map +1 -1
  202. package/dist/specification/test/test-projects/v2sttaProdMan2/webapp/manifest.json +550 -0
  203. package/dist/specification/test/test-projects/v4new/webapp/manifest.json +147 -0
  204. package/dist/specification/test/test-utils/utils.d.ts +71 -0
  205. package/dist/specification/test/test-utils/utils.d.ts.map +1 -0
  206. package/dist/specification/test/test-utils/utils.js +400 -0
  207. package/dist/specification/test/test-utils/utils.js.map +1 -0
  208. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts +131 -0
  209. package/dist/specification/test/unit/decorators/validity-test-utils.d.ts.map +1 -0
  210. package/dist/specification/test/unit/decorators/validity-test-utils.js +661 -0
  211. package/dist/specification/test/unit/decorators/validity-test-utils.js.map +1 -0
  212. package/dist/types/src/apiTypes.d.ts +2 -3
  213. package/dist/types/src/apiTypes.d.ts.map +1 -1
  214. package/dist/types/src/apiTypes.js.map +1 -1
  215. package/dist/types/src/common/types.d.ts +119 -13
  216. package/dist/types/src/common/types.d.ts.map +1 -1
  217. package/dist/types/src/common/types.js.map +1 -1
  218. package/dist/types/src/v2/controls/ObjectPageTable.d.ts +1 -1
  219. package/dist/types/src/v2/controls/Table.d.ts +1 -1
  220. package/dist/types/src/v4/controls/ObjectPageTable.d.ts +1 -1
  221. package/dist/types/src/v4/controls/ObjectPageTable.d.ts.map +1 -1
  222. package/dist/types/src/v4/controls/Table.d.ts +3 -3
  223. package/dist/types/src/v4/controls/Table.d.ts.map +1 -1
  224. package/package.json +14 -12
  225. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts +0 -107
  226. package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts.map +0 -1
  227. package/dist/specification/src/sync/v4/generate/ListReportUtils.js +0 -374
  228. package/dist/specification/src/sync/v4/generate/ListReportUtils.js.map +0 -1
  229. package/dist/specification/src/sync/v4/generate/listReport.d.ts.map +0 -1
  230. package/dist/specification/src/sync/v4/generate/listReport.js.map +0 -1
@@ -11,20 +11,18 @@ exports.analyzeViewAnnotation = analyzeViewAnnotation;
11
11
  exports.addALPViews = addALPViews;
12
12
  exports.addTagsToView = addTagsToView;
13
13
  exports.addLRViewParts = addLRViewParts;
14
- exports.getDefaultAnnotationPath = getDefaultAnnotationPath;
15
14
  exports.addHeaderActions = addHeaderActions;
16
15
  exports.addManifestPathsToPropertiesLR = addManifestPathsToPropertiesLR;
17
16
  exports.generateListReportSchemaV4 = generateListReportSchemaV4;
18
- const utils_1 = require("../utils/utils");
19
- const utils_2 = require("../utils/utils");
17
+ const utils_1 = require("../../utils");
18
+ const utils_2 = require("../../utils");
20
19
  const ux_specification_types_1 = require("@sap/ux-specification-types");
21
20
  const i18next_1 = __importDefault(require("i18next"));
22
- const extensionLogger_1 = require("../../../extensionLogger");
23
- const common_1 = require("../../common");
24
- const Page_1 = require("../sync-rules/Page");
25
- const App_1 = require("../sync-rules/App");
26
- const AppSchema_1 = require("../sync-rules/AppSchema");
21
+ const extensionLogger_1 = require("../../../../extensionLogger");
22
+ const common_1 = require("../../../common");
23
+ const sync_rules_1 = require("../../sync-rules");
27
24
  const ListReportUtils_1 = require("./ListReportUtils");
25
+ const controls_1 = require("../../export/controls");
28
26
  const ROOT_PROPERTIES_ORDER = ['header', 'filterBar', 'chart', 'table'];
29
27
  const UILINEITEM = '@UI.LineItem';
30
28
  /**
@@ -38,6 +36,7 @@ const UILINEITEM = '@UI.LineItem';
38
36
  * @returns {Definition} - the updated selection fields definition
39
37
  */
40
38
  function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, selectionFieldsDefinition, qualifier) {
39
+ // No @validity check needed here
41
40
  if (!selectionFieldsDefinition) {
42
41
  selectionFieldsDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.SelectionFields];
43
42
  selectionFieldsDefinition.additionalProperties = false;
@@ -48,8 +47,9 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
48
47
  }
49
48
  let i = 0;
50
49
  selectionFieldsAnnotation?.forEach((selectionField) => {
50
+ const value = selectionField.value ?? `UnknownField${i}`;
51
51
  let description = selectionField.value;
52
- const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(selectionField.value);
52
+ const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(value);
53
53
  if (selectionField.type === 'PropertyPath') {
54
54
  description = (0, common_1.getLabelForPropertyPath)(selectionField, entityType);
55
55
  }
@@ -65,10 +65,14 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
65
65
  additionalProperties: false,
66
66
  ...(dataType && { dataType })
67
67
  };
68
+ if (selectionField.value === undefined) {
69
+ // Add message about unresolvable value for selection field
70
+ (0, common_1.addMessageToSchema)(appSchema.definitions[fieldDefinition], {
71
+ text: i18next_1.default.t('UNRESOLVABLE_VALUE_OF_SELECTION_FIELD')
72
+ });
73
+ }
68
74
  appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.isViewNode] = true;
69
- appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [
70
- { name: ux_specification_types_1.SchemaKeyName.value, value: `${selectionField.value}` }
71
- ];
75
+ appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.value, value: `${value}` }];
72
76
  if (selectionField.$target?.fullyQualifiedName.indexOf('@') > -1) {
73
77
  appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.target] = selectionField.$target.fullyQualifiedName
74
78
  .split('@')[0]
@@ -126,6 +130,7 @@ function getPropertiesIndex(selectionFields, entityType) {
126
130
  * @param selectionFields - The selection fields annotation to be processed
127
131
  */
128
132
  function addVisualFilters(entityType, appSchema, visualFiltersManifest, selectionFields) {
133
+ // No @validity check needed here
129
134
  const propertiesIndex = getPropertiesIndex(selectionFields, entityType);
130
135
  const visualFilters = appSchema.definitions[ux_specification_types_1.DefinitionName.VisualFilters];
131
136
  visualFilters.properties = {};
@@ -167,6 +172,8 @@ function applyCustomFilterFields(appSchema, selectionFieldsDefinition, v4Page) {
167
172
  };
168
173
  (0, utils_2.addCustomFilterFieldDefinition)(appSchema, selectionFieldsDefinition, v4Page);
169
174
  const customSectionDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.CustomFilterFieldPosition];
175
+ // Instantiate for @validity check
176
+ new controls_1.CustomFilterFieldPosition().init();
170
177
  if (typeof customSectionDefinition === 'object') {
171
178
  (0, common_1.addDescriptiveEnumDefinition)(appSchema, selectionFieldsDefinition, {
172
179
  schema: customSectionDefinition,
@@ -240,6 +247,8 @@ function defineActions(appSchema, schemaIdForActions, annotations, targetAnnotat
240
247
  action[ux_specification_types_1.SchemaTag.annotationPath] = `/${actionRecord.fullyQualifiedName}`;
241
248
  //as ChartToolBarAction is an empty object, copy ViewToolBarAction and remove properties
242
249
  appSchema.definitions[actionDefinition] = JSON.parse(JSON.stringify(appSchema.definitions[ux_specification_types_1.DefinitionName.ViewToolBarAction]));
250
+ // Instantiate for @validity check
251
+ new controls_1.ViewToolBarAction().init();
243
252
  appSchema.definitions[actionDefinition].properties = {};
244
253
  appSchema.definitions[actionDefinition][ux_specification_types_1.SchemaTag.annotationPath] = actionRecord.fullyQualifiedName;
245
254
  i++;
@@ -423,6 +432,8 @@ function addALPChartView(appSchema, chartAnnotationPath, targetAnnotation, annot
423
432
  chartView[ux_specification_types_1.SchemaTag.artifactType] = ux_specification_types_1.ArtifactType.Manifest;
424
433
  chartView[ux_specification_types_1.SchemaTag.key] = 'primary';
425
434
  chartView[ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: 'primary' }];
435
+ // Instantiate for @validity check
436
+ new controls_1.ALPChart().init();
426
437
  }
427
438
  /**
428
439
  * Adds the ALP views to the app-specific schema.
@@ -548,8 +559,9 @@ function addViewChartDefinitions(inputParameters, annotations) {
548
559
  * @param viewKey - view key
549
560
  * @param title - view title
550
561
  * @param page - Represents the page in the application's structure where the view line items are to be added.
562
+ * @param app - Represents the overall application structure, providing access to the manifest.
551
563
  */
552
- function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title, page) {
564
+ function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title, page, app) {
553
565
  const idForChart = addViewChartDefinitions(inputParameters, UIAnnotations);
554
566
  const chartViewDefinition = appSchema.definitions[idForChart];
555
567
  chartViewDefinition.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
@@ -563,8 +575,8 @@ function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition
563
575
  };
564
576
  // Add "manifestPath" for table properties
565
577
  addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRChartView, chartViewDefinition, {
566
- pageName: page.getPage().id,
567
- manifest: page.getApp().manifest,
578
+ pageName: page.target.id,
579
+ manifest: app.manifest,
568
580
  targetAnnotation: inputParameters.targetAnnotation,
569
581
  viewConfig: {
570
582
  key: viewKey,
@@ -575,17 +587,21 @@ function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition
575
587
  /**
576
588
  * Modifies the app schema, adds the right line item settings as derived from the visualization.
577
589
  *
578
- * @param {ViewsParameters} inputParameters - The parameters required for generating and defining the line items in the view schema.
579
- * @param {Definition} viewsDefinition - The existing schema definition for views that will be updated with new view line items.
580
- * @param {string} visualization - The visualization format or mode for the line items, used to determine the associated annotations.
581
- * @param {string} templateAnnotation - The template annotation to infer metadata for the line items.
582
- * @param {GenerateAppSchemaParameters} generateParameters - Parameters essential for schema generation, including OData service metadata.
583
- * @param {Page} page - The page object representing the context in which the view is being generated.
584
- * @returns {void} No return value.
590
+ * @param {ViewsParameters} inputParameters - Parameters containing details needed for the view line item addition, including the app schema, view key, and target annotation.
591
+ * @param {Definition} viewsDefinition - The definition object to which the view line items will be added.
592
+ * @param {string} visualization - The specific visualization type, typically used to determine the annotation term.
593
+ * @param {string} templateAnnotation - Annotation path or type related to the template.
594
+ * @param generateParameters - list of API input parameters
595
+ * @param generateParameters.serviceAVT - OData service AVT information
596
+ * @param generateParameters.entityType - entity type of the current page
597
+ * @param {Page} page - Represents the page in the application's structure where the view line items are to be added.
598
+ * @param app - the application object containing manifest and other app-specific information.
599
+ * @param {ExtensionLogger} logger - Logger for recording informational or error messages during the schema adjustment process.
585
600
  */
586
- function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page) {
601
+ function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page, app, logger) {
587
602
  const tableId = `${ux_specification_types_1.DefinitionName.LRTableView}<${inputParameters.viewKey}>`;
588
- const viewId = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${inputParameters.viewKey}`;
603
+ const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${inputParameters.viewKey}`;
604
+ const schemaIdForActions = `${ux_specification_types_1.DefinitionName.Actions}<${schemaIdForColumns}>`;
589
605
  const lrTableView = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.LRTableView, inputParameters.viewKey, inputParameters.appSchema);
590
606
  delete lrTableView[ux_specification_types_1.SchemaTag.isViewNode];
591
607
  lrTableView[ux_specification_types_1.SchemaTag.annotationPath] = inputParameters.targetAnnotation;
@@ -596,14 +612,14 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
596
612
  lrTableView['entitySet'] = inputParameters.entitySet;
597
613
  }
598
614
  //Copy toolbar
599
- (0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, viewId);
615
+ (0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, schemaIdForColumns);
600
616
  const title = `Table View (key: ${inputParameters.viewKey})`;
601
617
  viewsDefinition.properties[inputParameters.viewKey] = {
602
618
  $ref: `${common_1.DEFINITION_LINK_PREFIX}${tableId}`,
603
619
  description: inputParameters.title || title,
604
620
  title
605
621
  };
606
- (0, common_1.addDefinitionRef)(lrTableView.properties.columns, viewId);
622
+ (0, common_1.addDefinitionRef)(lrTableView.properties.columns, schemaIdForColumns);
607
623
  lrTableView.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
608
624
  lrTableView.properties.index[ux_specification_types_1.SchemaTag.hidden] = true;
609
625
  lrTableView.properties.entitySet[ux_specification_types_1.SchemaTag.hidden] = true;
@@ -614,13 +630,13 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
614
630
  lineItemAnnotation: inputParameters.targetEntityType?.annotations.UI[annotationTerm],
615
631
  entityType: inputParameters.targetEntityType,
616
632
  oDataServiceAVT: serviceAVT,
617
- lineItemId: viewId
633
+ lineItemId: schemaIdForColumns
618
634
  };
619
635
  (0, utils_2.addLineItemsTypeToSchema)(dataForLineItem, ux_specification_types_1.DefinitionName.ViewTableColumn, ux_specification_types_1.DefinitionName.ViewCustomColumn, ux_specification_types_1.DefinitionName.ViewCustomAction);
620
636
  // Add "manifestPath" for table properties
621
637
  addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRTableView, lrTableView, {
622
- pageName: page.getPage().id,
623
- manifest: page.getApp().manifest,
638
+ pageName: page.target.id,
639
+ manifest: app.manifest,
624
640
  targetAnnotation: inputParameters.targetAnnotation,
625
641
  viewConfig: {
626
642
  key: inputParameters.viewKey,
@@ -645,57 +661,43 @@ function addTagsToView(viewsDefinition, viewKey, namespace, view) {
645
661
  viewsDefinition.properties[viewKey][ux_specification_types_1.SchemaTag.key] = viewKey;
646
662
  viewsDefinition.properties[viewKey][ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: viewKey }];
647
663
  }
648
- /**
649
- * Adjusts the entity type if a different entity set is maintained for a view.
650
- *
651
- * @param {EntitySet} entitySet - actual entity set (AVT information)
652
- * @param view - the current view in manifest
653
- * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
654
- * @returns the target entity type
655
- */
656
- function getTargetEntityType(entitySet, view, generateParameters) {
657
- let targetEntityType = generateParameters.entityType;
658
- let viewEntitySet = entitySet;
659
- if (view['entitySet'] && view['entitySet'] !== entitySet.name) {
660
- viewEntitySet = generateParameters.serviceAVT?.entitySets.find((es) => {
661
- return es.name === view['entitySet'];
662
- });
663
- targetEntityType = viewEntitySet.entityType;
664
- }
665
- return targetEntityType;
666
- }
667
664
  /**
668
665
  * Adds view custom extensions - custom column and custom action definitions.
669
666
  *
670
667
  * @param commonInputParameters - list of input parameters as collected by the calling instance
671
668
  * @param visualization - visualization of the annotation
672
669
  * @param v4Page - the given page in manifest
670
+ * @param manifest - The application manifest
673
671
  * @param logger - extension logger
674
672
  */
675
- function addViewCustomExtensions(commonInputParameters, visualization, v4Page, logger) {
676
- const sectionId = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${commonInputParameters.viewKey}`;
673
+ function addViewCustomExtensions(commonInputParameters, visualization, v4Page, manifest, logger) {
674
+ const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${commonInputParameters.viewKey}`;
677
675
  const sectionIdPrefix = commonInputParameters.entitySet ? `/${commonInputParameters.entitySet}/` : '';
678
676
  const sectionIdInManifest = `${sectionIdPrefix}@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}${visualization.split(ux_specification_types_1.Visualization.LineItem)[1]}`;
679
- const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn, sectionId, commonInputParameters.appSchema);
680
- (0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition, sectionId);
681
- (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition, sectionId, commonInputParameters.appSchema);
682
- (0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${sectionId}>`, sectionId, sectionIdInManifest);
683
- (0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema, sectionId, v4Page, `${ux_specification_types_1.DefinitionName.ViewPosition}<${sectionId}>`, sectionIdInManifest);
677
+ const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn, schemaIdForColumns, commonInputParameters.appSchema);
678
+ (0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns);
679
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns, commonInputParameters.appSchema);
680
+ (0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${schemaIdForColumns}>`, schemaIdForColumns, sectionIdInManifest);
681
+ (0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema, schemaIdForColumns, v4Page, `${ux_specification_types_1.DefinitionName.ViewPosition}<${schemaIdForColumns}>`, sectionIdInManifest);
682
+ // Add "manifestPath" for view columns
683
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(commonInputParameters.appSchema, v4Page.id, schemaIdForColumns, manifest, commonInputParameters.targetAnnotation, commonInputParameters.entitySet);
684
684
  // Remove generic position
685
685
  if (commonInputParameters.appSchema.definitions.Position) {
686
686
  delete commonInputParameters.appSchema.definitions.Position;
687
687
  }
688
688
  // Table toolbar actions with custom actions
689
- const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${sectionId}>`;
690
- const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${sectionId}>`;
689
+ const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${schemaIdForColumns}>`;
690
+ const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${schemaIdForColumns}>`;
691
691
  (0, utils_2.addCustomActionDefinition)(commonInputParameters.appSchema, v4Page, logger, customActionDefinitionKey, schemaIdForToolbarActions, sectionIdInManifest);
692
692
  // Anchor selection
693
- (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition, sectionId, commonInputParameters.appSchema);
694
- const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${sectionId}>`;
693
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition, schemaIdForColumns, commonInputParameters.appSchema);
694
+ const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${schemaIdForColumns}>`;
695
695
  const customActionDefinition = commonInputParameters.appSchema.definitions[customActionDefinitionKey];
696
696
  customActionDefinition.properties.position.$ref =
697
697
  `${common_1.DEFINITION_LINK_PREFIX}${customActionPositionDefinitionKey}`;
698
698
  (0, utils_2.addEnumForActionAnchor)(commonInputParameters.appSchema, schemaIdForToolbarActions, customActionPositionDefinitionKey);
699
+ // Add "manifestPath" for view actions
700
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(commonInputParameters.appSchema, v4Page.id, schemaIdForToolbarActions, manifest, commonInputParameters.targetAnnotation, commonInputParameters.entitySet);
699
701
  }
700
702
  /**
701
703
  * Adds definition parts to a LR View (LineItem/Chart).
@@ -708,18 +710,19 @@ function addViewCustomExtensions(commonInputParameters, visualization, v4Page, l
708
710
  * @param generateParameters.entityType - entity type of the current page
709
711
  * @param generateParameters.logger - extension logger
710
712
  * @param page - the current page object
713
+ * @param app - the application object containing manifest and other app-specific information.
711
714
  * @param uiAnnotations - UI annotations of the given entityType
712
715
  * @param view - the given view
713
716
  */
714
- function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, uiAnnotations, view) {
717
+ function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, app, uiAnnotations, view) {
715
718
  if (visualization?.indexOf(ux_specification_types_1.Visualization.LineItem) > -1) {
716
719
  //Add Line item view
717
- addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page);
718
- addViewCustomExtensions(commonInputParameters, visualization, page.getPage(), logger);
720
+ addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page, app, logger);
721
+ addViewCustomExtensions(commonInputParameters, visualization, page.target, app.getManifest(), logger);
719
722
  }
720
723
  else if (visualization?.indexOf('Chart') > -1) {
721
724
  //Add Chart view
722
- addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title, page);
725
+ addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title, page, app);
723
726
  }
724
727
  else if (view['template']) {
725
728
  const titleOnHover = view['label'] || `Custom View (key: ${commonInputParameters.viewKey})`;
@@ -740,157 +743,19 @@ function addLRViewParts(visualization, viewsDefinition, commonInputParameters, {
740
743
  };
741
744
  }
742
745
  }
743
- /**
744
- * Add list report views to the app-specific schema.
745
- *
746
- * @param appSchema - app-specific JSON schema
747
- * @param viewsPaths - views' paths' section in the manifest
748
- * @param generateParameters - list of API input parameters
749
- * @param page - the current page object
750
- * @param tableDefinitionName - The name of the table definition in the schema
751
- */
752
- function addLRViews(appSchema, viewsPaths, generateParameters, page, tableDefinitionName) {
753
- const tableDefinition = appSchema.definitions[tableDefinitionName];
754
- tableDefinition.properties = {
755
- annotationPath: tableDefinition.properties.annotationPath,
756
- initialLoad: tableDefinition.properties.initialLoad,
757
- views: tableDefinition.properties.views
758
- };
759
- const viewsDefinition = appSchema.definitions.MultiTableModeV4;
760
- for (const view of viewsPaths) {
761
- if (!view[ux_specification_types_1.SchemaTag.key]) {
762
- continue;
763
- }
764
- let navPropName = undefined;
765
- const targetEntityType = getTargetEntityType(generateParameters.entitySet, view, generateParameters);
766
- const uiAnnotations = targetEntityType?.annotations.UI;
767
- const { visualization, targetAnnotation, namespace, title } = analyzeViewAnnotation(view?.[ux_specification_types_1.SchemaTag.annotationPath], uiAnnotations, generateParameters.serviceAVT, view[ux_specification_types_1.SchemaTag.key], undefined, generateParameters.logger);
768
- if (view['entitySet']) {
769
- navPropName = generateParameters.entityType.navigationProperties.find((np) => {
770
- return np.targetTypeName === namespace;
771
- })?.name;
772
- }
773
- const viewKey = (0, common_1.prepareRef)(view[ux_specification_types_1.SchemaTag.key]);
774
- const commonInputParameters = {
775
- viewKey,
776
- appSchema,
777
- targetAnnotation,
778
- navPropName,
779
- targetEntityType,
780
- title,
781
- entitySet: view['entitySet']
782
- };
783
- addLRViewParts(visualization, viewsDefinition, commonInputParameters, generateParameters, page, uiAnnotations, view);
784
- addTagsToView(viewsDefinition, viewKey, namespace, view);
785
- }
786
- }
787
- /**
788
- * Adapts the table definition in schema.
789
- * Evaluates the path depending on if defaultTemplateAnnotationPath or Selection-/PresentationVariant is present.
790
- *
791
- * @param appSchema - the app-specific JSON schema
792
- * @param generateParameters - list of API input parameters
793
- * @param templateAnnotation - defaultTemplateAnnotationPath as registered in manifest
794
- * @param v4Page - the given page in manifest
795
- * @param alias - alias definition for the UI vocabulary
796
- * @param tableDefinitionName - The name of the table definition in the schema
797
- */
798
- function adaptTableDefinition(appSchema, generateParameters, templateAnnotation, v4Page, alias, tableDefinitionName) {
799
- //here: tableDefinitionName = DefinitionName.Table
800
- const tableDefinition = appSchema.definitions[tableDefinitionName];
801
- const { visualization, targetAnnotation, namespace } = analyzeViewAnnotation(templateAnnotation, generateParameters.entityType?.annotations.UI, generateParameters.serviceAVT, undefined, ux_specification_types_1.Visualization.LineItem, generateParameters.logger);
802
- if (visualization) {
803
- const annotationTerm = visualization.split('.')[1];
804
- const annotationTermInSchema = `${ux_specification_types_1.DefinitionName.LineItems}OfSPV::${(0, common_1.prepareRef)(annotationTerm)}`;
805
- const spvTable = (appSchema.definitions[`${tableDefinitionName}SPV`] = JSON.parse(JSON.stringify(appSchema.definitions[tableDefinitionName])));
806
- delete spvTable[ux_specification_types_1.SchemaTag.isViewNode];
807
- (0, common_1.addDefinitionRef)(spvTable.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, annotationTermInSchema);
808
- // Switch from generic column to specific definition
809
- spvTable[ux_specification_types_1.SchemaTag.annotationPath] = targetAnnotation;
810
- spvTable.properties.columns = {};
811
- (0, common_1.addDefinitionRef)(spvTable.properties.columns, annotationTermInSchema);
812
- delete tableDefinition.properties;
813
- (0, common_1.addDefinitionRef)(tableDefinition, `${tableDefinitionName}SPV`);
814
- tableDefinition[ux_specification_types_1.SchemaTag.annotationPath] = `/${namespace}/@${templateAnnotation}`;
815
- const lineItemAnnotation = generateParameters.entityType?.annotations.UI[annotationTerm];
816
- if (!lineItemAnnotation) {
817
- (0, extensionLogger_1.log)(generateParameters.logger, {
818
- severity: "error" /* LogSeverity.Error */,
819
- message: i18next_1.default.t('NOTARGET', { target: annotationTerm })
820
- });
821
- }
822
- const dataForLineItem = {
823
- isObjectPage: false,
824
- appSchema,
825
- lineItemAnnotation,
826
- entityType: generateParameters.entityType,
827
- oDataServiceAVT: generateParameters.serviceAVT,
828
- lineItemId: annotationTermInSchema
829
- };
830
- (0, utils_2.addLineItemsTypeToSchema)(dataForLineItem);
831
- const annotationTermQualifier = annotationTerm.split('#')?.[1];
832
- const sectionIdInManifest = annotationTermQualifier
833
- ? `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}#${annotationTermQualifier}`
834
- : `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}`;
835
- (0, utils_2.addCustomColumnDefinition)(appSchema, v4Page, generateParameters.logger, undefined, annotationTermInSchema, sectionIdInManifest);
836
- (0, utils_2.addFragmentEnumForAnchor)(appSchema, annotationTermInSchema, v4Page, undefined, sectionIdInManifest);
837
- // Table toolbar actions with custom actions
838
- const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${annotationTermInSchema}>`;
839
- const customColumnDefinitionName = (0, common_1.getCustomExtensionDefinitionName)(appSchema, annotationTermInSchema, ux_specification_types_1.DefinitionName.CustomTableAction);
840
- (0, utils_2.addCustomActionDefinition)(appSchema, v4Page, generateParameters.logger, (0, common_1.getDefinitionKey)(customColumnDefinitionName), schemaIdForToolbarActions, sectionIdInManifest);
841
- (0, utils_2.addEnumForActionAnchor)(appSchema, schemaIdForToolbarActions, ux_specification_types_1.DefinitionName.CustomActionPosition);
842
- }
843
- else {
844
- tableDefinition.properties.toolBar['$ref'] = `${common_1.DEFINITION_LINK_PREFIX}${ux_specification_types_1.DefinitionName.ToolBarLR}`;
845
- // Switch from generic column to specific definition
846
- (0, common_1.addDefinitionRef)(tableDefinition.properties.columns, ux_specification_types_1.DefinitionName.LineItems);
847
- const lineItemAnnotation = generateParameters.entityType?.annotations?.[alias]?.LineItem;
848
- if (!lineItemAnnotation && !v4Page.options?.settings?.views?.paths) {
849
- (0, extensionLogger_1.log)(generateParameters.logger, {
850
- severity: "error" /* LogSeverity.Error */,
851
- message: i18next_1.default.t('NOLINEITEMS')
852
- });
853
- }
854
- const dataForLineItem = {
855
- isObjectPage: false,
856
- appSchema,
857
- lineItemAnnotation,
858
- entityType: generateParameters.entityType,
859
- oDataServiceAVT: generateParameters.serviceAVT,
860
- lineItemId: ux_specification_types_1.DefinitionName.LineItems
861
- };
862
- (0, utils_2.addLineItemsTypeToSchema)(dataForLineItem);
863
- (0, utils_2.addCustomColumnDefinition)(appSchema, v4Page, generateParameters.logger);
864
- (0, utils_2.addFragmentEnumForAnchor)(appSchema, ux_specification_types_1.DefinitionName.LineItems, v4Page);
865
- if (lineItemAnnotation && !v4Page.options?.settings?.views?.paths) {
866
- tableDefinition[ux_specification_types_1.SchemaTag.annotationPath] = (0, common_1.createAnnotationPath)(generateParameters.entityType?.fullyQualifiedName, lineItemAnnotation.term, lineItemAnnotation.qualifier);
867
- }
868
- // Table toolbar actions with custom actions
869
- const schemaIdForActions = `${ux_specification_types_1.DefinitionName.Actions}<${(0, common_1.prepareRef)(ux_specification_types_1.DefinitionName.LineItems)}>`;
870
- (0, utils_2.addCustomActionDefinition)(appSchema, v4Page, generateParameters.logger, undefined, schemaIdForActions);
871
- (0, utils_2.addEnumForActionAnchor)(appSchema, schemaIdForActions, ux_specification_types_1.DefinitionName.CustomActionPosition);
872
- }
873
- // Add "manifestPath" for table properties
874
- addManifestPathsToPropertiesLR(appSchema, tableDefinitionName, tableDefinition, {
875
- pageName: v4Page.id,
876
- manifest: generateParameters.manifest,
877
- targetAnnotation
878
- });
879
- }
880
746
  /**
881
747
  * Checks for the default annotation path to use for LR table.
882
748
  *
883
- * @param v4Page - actual page in the manifest
884
- * @param entityType - actual entity type (AVT information)
885
- * @param templateType - The type of template being used (e.g., ListReportObjectPageV4 or AnalyticalListPageV4)
749
+ * @param page - the current page object
886
750
  * @returns annotation term
887
751
  */
888
- function getDefaultAnnotationPath(v4Page, entityType, templateType) {
889
- if (v4Page.options.settings?.views?.paths && templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
752
+ function getDefaultAnnotationPath(page) {
753
+ const { entity: { type: entityType }, template: { type: templateType }, target } = page;
754
+ if (target?.options?.settings?.views?.paths && templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
890
755
  return;
891
756
  }
892
- if (v4Page.options.settings?.defaultTemplateAnnotationPath) {
893
- return v4Page.options.settings.defaultTemplateAnnotationPath;
757
+ if (target?.options?.settings?.defaultTemplateAnnotationPath) {
758
+ return target?.options?.settings.defaultTemplateAnnotationPath;
894
759
  }
895
760
  if (templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
896
761
  return (entityType?.annotations.UI?.SelectionPresentationVariant?.term ||
@@ -930,8 +795,9 @@ function addHeaderActions(appSchema, v4Page, logger) {
930
795
  * @param definitionName - The name of the definition/class whose properties are being processed.
931
796
  * @param definition - The definition object containing property schemas.
932
797
  * @param pathParams - Additional context required to compute manifest paths.
798
+ * @param handleRelative - A flag indicating whether to use relative paths for definition properties.
933
799
  */
934
- function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams) {
800
+ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams, handleRelative = false) {
935
801
  let targetAnnotation = undefined;
936
802
  if (pathParams.targetAnnotation) {
937
803
  const annotationParts = pathParams.targetAnnotation?.split('/');
@@ -947,8 +813,13 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
947
813
  }
948
814
  (0, utils_1.addManifestPathsToProperties)(appSchema, definitionName, definition, {
949
815
  ...pathParams,
950
- pathsParts: [targetAnnotation, '', targetAnnotation, pathParams.viewConfig]
951
- });
816
+ pathsParts: [
817
+ pathParams.sectionId ? undefined : targetAnnotation,
818
+ pathParams.columnKey ? pathParams.columnKey : '',
819
+ targetAnnotation,
820
+ pathParams.viewConfig
821
+ ]
822
+ }, handleRelative);
952
823
  }
953
824
  /**
954
825
  * Adds 'manifestPath' to static nodes in schema.
@@ -957,6 +828,8 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
957
828
  * @param pathParams - Additional context required to compute manifest paths.
958
829
  */
959
830
  function addManifestPathsToStaticNodes(appSchema, pathParams) {
831
+ // Add "manifestPath" for current page
832
+ appSchema['manifestPath'] = (0, utils_1.getPageManifestPath)(pathParams);
960
833
  // Root level - rules stored on page class level
961
834
  addManifestPathsToPropertiesLR(appSchema, ux_specification_types_1.PageTypeV4.ListReport, appSchema, pathParams);
962
835
  // Other definitions
@@ -981,17 +854,24 @@ class ListReportPage {
981
854
  * @param contextPath - context path of the page
982
855
  */
983
856
  constructor(generateParameters, schema, templateName, contextPath) {
984
- this.schema = new AppSchema_1.AppSchema(schema);
985
- this.app = (0, App_1.createApp)(generateParameters.manifest, generateParameters.serviceAVT, generateParameters.logger);
986
- this.page = new Page_1.Page(this.app, { name: templateName, type: generateParameters.templateType }, generateParameters.entitySet, contextPath);
857
+ const template = { name: templateName, type: generateParameters.templateType };
858
+ this.appSchema = new sync_rules_1.AppSchema(schema);
859
+ this.app = (0, sync_rules_1.createApp)(generateParameters.manifest, generateParameters.serviceAVT, generateParameters.logger);
860
+ this.page = new sync_rules_1.Page(this.app, template, generateParameters.entitySet, generateParameters.entityType, contextPath);
861
+ this.logger = this.app.logger;
862
+ this.page.addConfig({
863
+ isALP: template.type === ux_specification_types_1.TemplateType.AnalyticalListPageV4,
864
+ views: this.page.target?.options?.settings.views,
865
+ defaultAnnotation: getDefaultAnnotationPath(this.page)
866
+ });
987
867
  }
988
868
  /**
989
869
  * Cleans up the schema by hiding specific properties and removing unnecessary definitions.
990
870
  */
991
871
  cleanup() {
992
- this.schema.hide(this.schema.getRootProperty([ux_specification_types_1.PropertyName.defaultTemplateAnnotationPath]));
993
- this.schema.cleanup(['GenericColumns', 'Action']);
994
- (0, common_1.updatePropertyIndices)(this.schema.getSchema(), ROOT_PROPERTIES_ORDER);
872
+ this.appSchema.hide(this.appSchema.getRootProperty([ux_specification_types_1.PropertyName.defaultTemplateAnnotationPath]));
873
+ this.appSchema.cleanup(['GenericColumns', 'Action']);
874
+ (0, common_1.updatePropertyIndices)(this.appSchema.get(), ROOT_PROPERTIES_ORDER);
995
875
  }
996
876
  /**
997
877
  * Generates the finalized schema for the List Report page.
@@ -999,20 +879,33 @@ class ListReportPage {
999
879
  * @returns The finalized schema for List Report page
1000
880
  */
1001
881
  generate() {
1002
- new ListReportUtils_1.GeneralListReportSettings(this.schema, this.page, this.app.getLogger()).instantiate();
1003
- if (!this.page.getPage()) {
1004
- return this.schema.finalize();
882
+ const params = {
883
+ appSchema: this.appSchema,
884
+ app: this.app,
885
+ page: this.page,
886
+ logger: this.logger
887
+ };
888
+ new ListReportUtils_1.GeneralListReportSettings(params).init();
889
+ if (!this.page.target) {
890
+ return this.appSchema.get();
1005
891
  }
1006
- new ListReportUtils_1.Header(this.schema, this.page, this.app.getLogger()).instantiate();
1007
- new ListReportUtils_1.FilterBar(this.schema, this.page, this.app.getLogger()).instantiate();
1008
- new ListReportUtils_1.TableAndViews(this.schema, this.page, this.app.getLogger()).instantiate();
892
+ new controls_1.Header(params).init();
893
+ new controls_1.HeaderActions(params).init();
894
+ new controls_1.CustomHeaderAction(params).init();
895
+ new ListReportUtils_1.FilterBar(params).init();
896
+ new ListReportUtils_1.TableAndViews(params).init();
1009
897
  // Add "manifestPath" for properties in static nodes
1010
- addManifestPathsToStaticNodes(this.schema.getSchema(), {
1011
- pageName: this.page.getPage().id,
898
+ addManifestPathsToStaticNodes(this.appSchema.get(), {
899
+ pageName: this.page.target.id,
1012
900
  manifest: this.app.getManifest()
1013
901
  });
902
+ // Add "manifestPath" for custom header actions
903
+ const definitionNames = [ux_specification_types_1.DefinitionName.HeaderActions];
904
+ definitionNames.forEach((definitionName) => {
905
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(this.appSchema.get(), this.page.target.id, definitionName, this.app.getManifest());
906
+ });
1014
907
  this.cleanup();
1015
- return this.schema.finalize();
908
+ return this.appSchema.get();
1016
909
  }
1017
910
  }
1018
911
  /**
@@ -1029,7 +922,7 @@ function generateListReportSchemaV4(generateParameters, genericSchema, templateN
1029
922
  const listReport = new ListReportPage(generateParameters, genericSchema, templateName, contextPath);
1030
923
  if (!listReport.app.getManifest()) {
1031
924
  listReport.cleanup();
1032
- return listReport.schema.finalize();
925
+ return listReport.appSchema.get();
1033
926
  }
1034
927
  return listReport.generate();
1035
928
  }