@sap/ux-specification 1.124.34 → 1.124.36

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 +356 -275
  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 +46 -4
  21. package/dist/schemas/v4/ListReportConfig.json +24 -6
  22. package/dist/schemas/v4/ObjectPageConfig.json +32 -8
  23. package/dist/specification/package.json +15 -13
  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 +114 -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} +120 -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 +135 -43
  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 +15 -13
  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;
@@ -49,8 +48,9 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
49
48
  if (selectionFieldsAnnotation) {
50
49
  let i = 0;
51
50
  selectionFieldsAnnotation?.forEach((selectionField) => {
51
+ const value = selectionField.value ?? `UnknownField${i}`;
52
52
  let description = selectionField.value;
53
- const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(selectionField.value);
53
+ const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(value);
54
54
  if (selectionField.type === 'PropertyPath') {
55
55
  description = (0, common_1.getLabelForPropertyPath)(selectionField, entityType);
56
56
  }
@@ -66,10 +66,14 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
66
66
  additionalProperties: false,
67
67
  ...(dataType && { dataType })
68
68
  };
69
+ if (selectionField.value === undefined) {
70
+ // Add message about unresolvable value for selection field
71
+ (0, common_1.addMessageToSchema)(appSchema.definitions[fieldDefinition], {
72
+ text: i18next_1.default.t('UNRESOLVABLE_VALUE_OF_SELECTION_FIELD')
73
+ });
74
+ }
69
75
  appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.isViewNode] = true;
70
- appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [
71
- { name: ux_specification_types_1.SchemaKeyName.value, value: `${selectionField.value}` }
72
- ];
76
+ appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.value, value: `${value}` }];
73
77
  if (selectionField.$target?.fullyQualifiedName.indexOf('@') > -1) {
74
78
  appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.target] = selectionField.$target.fullyQualifiedName
75
79
  .split('@')[0]
@@ -128,6 +132,7 @@ function getPropertiesIndex(selectionFields, entityType) {
128
132
  * @param selectionFields - The selection fields annotation to be processed
129
133
  */
130
134
  function addVisualFilters(entityType, appSchema, visualFiltersManifest, selectionFields) {
135
+ // No @validity check needed here
131
136
  const propertiesIndex = getPropertiesIndex(selectionFields, entityType);
132
137
  const visualFilters = appSchema.definitions[ux_specification_types_1.DefinitionName.VisualFilters];
133
138
  visualFilters.properties = {};
@@ -169,6 +174,8 @@ function applyCustomFilterFields(appSchema, selectionFieldsDefinition, v4Page) {
169
174
  };
170
175
  (0, utils_2.addCustomFilterFieldDefinition)(appSchema, selectionFieldsDefinition, v4Page);
171
176
  const customSectionDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.CustomFilterFieldPosition];
177
+ // Instantiate for @validity check
178
+ new controls_1.CustomFilterFieldPosition().init();
172
179
  if (typeof customSectionDefinition === 'object') {
173
180
  (0, common_1.addDescriptiveEnumDefinition)(appSchema, selectionFieldsDefinition, {
174
181
  schema: customSectionDefinition,
@@ -242,6 +249,8 @@ function defineActions(appSchema, schemaIdForActions, annotations, targetAnnotat
242
249
  action[ux_specification_types_1.SchemaTag.annotationPath] = `/${actionRecord.fullyQualifiedName}`;
243
250
  //as ChartToolBarAction is an empty object, copy ViewToolBarAction and remove properties
244
251
  appSchema.definitions[actionDefinition] = JSON.parse(JSON.stringify(appSchema.definitions[ux_specification_types_1.DefinitionName.ViewToolBarAction]));
252
+ // Instantiate for @validity check
253
+ new controls_1.ViewToolBarAction().init();
245
254
  appSchema.definitions[actionDefinition].properties = {};
246
255
  appSchema.definitions[actionDefinition][ux_specification_types_1.SchemaTag.annotationPath] = actionRecord.fullyQualifiedName;
247
256
  i++;
@@ -425,6 +434,8 @@ function addALPChartView(appSchema, chartAnnotationPath, targetAnnotation, annot
425
434
  chartView[ux_specification_types_1.SchemaTag.artifactType] = ux_specification_types_1.ArtifactType.Manifest;
426
435
  chartView[ux_specification_types_1.SchemaTag.key] = 'primary';
427
436
  chartView[ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: 'primary' }];
437
+ // Instantiate for @validity check
438
+ new controls_1.ALPChart().init();
428
439
  }
429
440
  /**
430
441
  * Adds the ALP views to the app-specific schema.
@@ -550,8 +561,9 @@ function addViewChartDefinitions(inputParameters, annotations) {
550
561
  * @param viewKey - view key
551
562
  * @param title - view title
552
563
  * @param page - Represents the page in the application's structure where the view line items are to be added.
564
+ * @param app - Represents the overall application structure, providing access to the manifest.
553
565
  */
554
- function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title, page) {
566
+ function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title, page, app) {
555
567
  const idForChart = addViewChartDefinitions(inputParameters, UIAnnotations);
556
568
  const chartViewDefinition = appSchema.definitions[idForChart];
557
569
  chartViewDefinition.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
@@ -565,8 +577,8 @@ function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition
565
577
  };
566
578
  // Add "manifestPath" for table properties
567
579
  addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRChartView, chartViewDefinition, {
568
- pageName: page.getPage().id,
569
- manifest: page.getApp().manifest,
580
+ pageName: page.target.id,
581
+ manifest: app.manifest,
570
582
  targetAnnotation: inputParameters.targetAnnotation,
571
583
  viewConfig: {
572
584
  key: viewKey,
@@ -577,17 +589,21 @@ function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition
577
589
  /**
578
590
  * Modifies the app schema, adds the right line item settings as derived from the visualization.
579
591
  *
580
- * @param {ViewsParameters} inputParameters - The parameters required for generating and defining the line items in the view schema.
581
- * @param {Definition} viewsDefinition - The existing schema definition for views that will be updated with new view line items.
582
- * @param {string} visualization - The visualization format or mode for the line items, used to determine the associated annotations.
583
- * @param {string} templateAnnotation - The template annotation to infer metadata for the line items.
584
- * @param {GenerateAppSchemaParameters} generateParameters - Parameters essential for schema generation, including OData service metadata.
585
- * @param {Page} page - The page object representing the context in which the view is being generated.
586
- * @returns {void} No return value.
592
+ * @param {ViewsParameters} inputParameters - Parameters containing details needed for the view line item addition, including the app schema, view key, and target annotation.
593
+ * @param {Definition} viewsDefinition - The definition object to which the view line items will be added.
594
+ * @param {string} visualization - The specific visualization type, typically used to determine the annotation term.
595
+ * @param {string} templateAnnotation - Annotation path or type related to the template.
596
+ * @param generateParameters - list of API input parameters
597
+ * @param generateParameters.serviceAVT - OData service AVT information
598
+ * @param generateParameters.entityType - entity type of the current page
599
+ * @param {Page} page - Represents the page in the application's structure where the view line items are to be added.
600
+ * @param app - the application object containing manifest and other app-specific information.
601
+ * @param {ExtensionLogger} logger - Logger for recording informational or error messages during the schema adjustment process.
587
602
  */
588
- function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page) {
603
+ function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page, app, logger) {
589
604
  const tableId = `${ux_specification_types_1.DefinitionName.LRTableView}<${inputParameters.viewKey}>`;
590
- const viewId = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${inputParameters.viewKey}`;
605
+ const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${inputParameters.viewKey}`;
606
+ const schemaIdForActions = `${ux_specification_types_1.DefinitionName.Actions}<${schemaIdForColumns}>`;
591
607
  const lrTableView = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.LRTableView, inputParameters.viewKey, inputParameters.appSchema);
592
608
  delete lrTableView[ux_specification_types_1.SchemaTag.isViewNode];
593
609
  lrTableView[ux_specification_types_1.SchemaTag.annotationPath] = inputParameters.targetAnnotation;
@@ -598,14 +614,14 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
598
614
  lrTableView['entitySet'] = inputParameters.entitySet;
599
615
  }
600
616
  //Copy toolbar
601
- (0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, viewId);
617
+ (0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, schemaIdForColumns);
602
618
  const title = `Table View (key: ${inputParameters.viewKey})`;
603
619
  viewsDefinition.properties[inputParameters.viewKey] = {
604
620
  $ref: `${common_1.DEFINITION_LINK_PREFIX}${tableId}`,
605
621
  description: inputParameters.title || title,
606
622
  title
607
623
  };
608
- (0, common_1.addDefinitionRef)(lrTableView.properties.columns, viewId);
624
+ (0, common_1.addDefinitionRef)(lrTableView.properties.columns, schemaIdForColumns);
609
625
  lrTableView.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
610
626
  lrTableView.properties.index[ux_specification_types_1.SchemaTag.hidden] = true;
611
627
  lrTableView.properties.entitySet[ux_specification_types_1.SchemaTag.hidden] = true;
@@ -616,12 +632,13 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
616
632
  lineItemAnnotation: inputParameters.targetEntityType?.annotations.UI[annotationTerm],
617
633
  entityType: inputParameters.targetEntityType,
618
634
  oDataServiceAVT: serviceAVT,
619
- lineItemId: viewId
635
+ lineItemId: schemaIdForColumns
620
636
  };
621
637
  (0, utils_2.addLineItemsTypeToSchema)(dataForLineItem, ux_specification_types_1.DefinitionName.ViewTableColumn, ux_specification_types_1.DefinitionName.ViewCustomColumn, ux_specification_types_1.DefinitionName.ViewCustomAction);
638
+ // Add "manifestPath" for table properties
622
639
  addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRTableView, lrTableView, {
623
- pageName: page.getPage().id,
624
- manifest: page.getApp().manifest,
640
+ pageName: page.target.id,
641
+ manifest: app.manifest,
625
642
  targetAnnotation: inputParameters.targetAnnotation,
626
643
  viewConfig: {
627
644
  key: inputParameters.viewKey,
@@ -646,57 +663,43 @@ function addTagsToView(viewsDefinition, viewKey, namespace, view) {
646
663
  viewsDefinition.properties[viewKey][ux_specification_types_1.SchemaTag.key] = viewKey;
647
664
  viewsDefinition.properties[viewKey][ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: viewKey }];
648
665
  }
649
- /**
650
- * Adjusts the entity type if a different entity set is maintained for a view.
651
- *
652
- * @param {EntitySet} entitySet - actual entity set (AVT information)
653
- * @param view - the current view in manifest
654
- * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
655
- * @returns the target entity type
656
- */
657
- function getTargetEntityType(entitySet, view, generateParameters) {
658
- let targetEntityType = generateParameters.entityType;
659
- let viewEntitySet = entitySet;
660
- if (view['entitySet'] && view['entitySet'] !== entitySet.name) {
661
- viewEntitySet = generateParameters.serviceAVT?.entitySets.find((es) => {
662
- return es.name === view['entitySet'];
663
- });
664
- targetEntityType = viewEntitySet.entityType;
665
- }
666
- return targetEntityType;
667
- }
668
666
  /**
669
667
  * Adds view custom extensions - custom column and custom action definitions.
670
668
  *
671
669
  * @param commonInputParameters - list of input parameters as collected by the calling instance
672
670
  * @param visualization - visualization of the annotation
673
671
  * @param v4Page - the given page in manifest
672
+ * @param manifest - The application manifest
674
673
  * @param logger - extension logger
675
674
  */
676
- function addViewCustomExtensions(commonInputParameters, visualization, v4Page, logger) {
677
- const sectionId = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${commonInputParameters.viewKey}`;
675
+ function addViewCustomExtensions(commonInputParameters, visualization, v4Page, manifest, logger) {
676
+ const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${commonInputParameters.viewKey}`;
678
677
  const sectionIdPrefix = commonInputParameters.entitySet ? `/${commonInputParameters.entitySet}/` : '';
679
678
  const sectionIdInManifest = `${sectionIdPrefix}@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}${visualization.split(ux_specification_types_1.Visualization.LineItem)[1]}`;
680
- const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn, sectionId, commonInputParameters.appSchema);
681
- (0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition, sectionId);
682
- (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition, sectionId, commonInputParameters.appSchema);
683
- (0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${sectionId}>`, sectionId, sectionIdInManifest);
684
- (0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema, sectionId, v4Page, `${ux_specification_types_1.DefinitionName.ViewPosition}<${sectionId}>`, sectionIdInManifest);
679
+ const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn, schemaIdForColumns, commonInputParameters.appSchema);
680
+ (0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns);
681
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns, commonInputParameters.appSchema);
682
+ (0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${schemaIdForColumns}>`, schemaIdForColumns, sectionIdInManifest);
683
+ (0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema, schemaIdForColumns, v4Page, `${ux_specification_types_1.DefinitionName.ViewPosition}<${schemaIdForColumns}>`, sectionIdInManifest);
684
+ // Add "manifestPath" for view columns
685
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(commonInputParameters.appSchema, v4Page.id, schemaIdForColumns, manifest, commonInputParameters.targetAnnotation, commonInputParameters.entitySet);
685
686
  // Remove generic position
686
687
  if (commonInputParameters.appSchema.definitions.Position) {
687
688
  delete commonInputParameters.appSchema.definitions.Position;
688
689
  }
689
690
  // Table toolbar actions with custom actions
690
- const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${sectionId}>`;
691
- const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${sectionId}>`;
691
+ const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${schemaIdForColumns}>`;
692
+ const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${schemaIdForColumns}>`;
692
693
  (0, utils_2.addCustomActionDefinition)(commonInputParameters.appSchema, v4Page, logger, customActionDefinitionKey, schemaIdForToolbarActions, sectionIdInManifest);
693
694
  // Anchor selection
694
- (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition, sectionId, commonInputParameters.appSchema);
695
- const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${sectionId}>`;
695
+ (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition, schemaIdForColumns, commonInputParameters.appSchema);
696
+ const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${schemaIdForColumns}>`;
696
697
  const customActionDefinition = commonInputParameters.appSchema.definitions[customActionDefinitionKey];
697
698
  customActionDefinition.properties.position.$ref =
698
699
  `${common_1.DEFINITION_LINK_PREFIX}${customActionPositionDefinitionKey}`;
699
700
  (0, utils_2.addEnumForActionAnchor)(commonInputParameters.appSchema, schemaIdForToolbarActions, customActionPositionDefinitionKey);
701
+ // Add "manifestPath" for view actions
702
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(commonInputParameters.appSchema, v4Page.id, schemaIdForToolbarActions, manifest, commonInputParameters.targetAnnotation, commonInputParameters.entitySet);
700
703
  }
701
704
  /**
702
705
  * Adds definition parts to a LR View (LineItem/Chart).
@@ -709,18 +712,19 @@ function addViewCustomExtensions(commonInputParameters, visualization, v4Page, l
709
712
  * @param generateParameters.entityType - entity type of the current page
710
713
  * @param generateParameters.logger - extension logger
711
714
  * @param page - the current page object
715
+ * @param app - the application object containing manifest and other app-specific information.
712
716
  * @param uiAnnotations - UI annotations of the given entityType
713
717
  * @param view - the given view
714
718
  */
715
- function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, uiAnnotations, view) {
719
+ function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, app, uiAnnotations, view) {
716
720
  if (visualization?.indexOf(ux_specification_types_1.Visualization.LineItem) > -1) {
717
721
  //Add Line item view
718
- addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page);
719
- addViewCustomExtensions(commonInputParameters, visualization, page.getPage(), logger);
722
+ addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page, app, logger);
723
+ addViewCustomExtensions(commonInputParameters, visualization, page.target, app.getManifest(), logger);
720
724
  }
721
725
  else if (visualization?.indexOf('Chart') > -1) {
722
726
  //Add Chart view
723
- addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title, page);
727
+ addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title, page, app);
724
728
  }
725
729
  else if (view['template']) {
726
730
  const titleOnHover = view['label'] || `Custom View (key: ${commonInputParameters.viewKey})`;
@@ -741,157 +745,19 @@ function addLRViewParts(visualization, viewsDefinition, commonInputParameters, {
741
745
  };
742
746
  }
743
747
  }
744
- /**
745
- * Add list report views to the app-specific schema.
746
- *
747
- * @param appSchema - app-specific JSON schema
748
- * @param viewsPaths - views' paths' section in the manifest
749
- * @param generateParameters - list of API input parameters
750
- * @param page - the current page object
751
- * @param tableDefinitionName - The name of the table definition in the schema
752
- */
753
- function addLRViews(appSchema, viewsPaths, generateParameters, page, tableDefinitionName) {
754
- const tableDefinition = appSchema.definitions[tableDefinitionName];
755
- tableDefinition.properties = {
756
- annotationPath: tableDefinition.properties.annotationPath,
757
- initialLoad: tableDefinition.properties.initialLoad,
758
- views: tableDefinition.properties.views
759
- };
760
- const viewsDefinition = appSchema.definitions.MultiTableModeV4;
761
- for (const view of viewsPaths) {
762
- if (!view[ux_specification_types_1.SchemaTag.key]) {
763
- continue;
764
- }
765
- let navPropName = undefined;
766
- const targetEntityType = getTargetEntityType(generateParameters.entitySet, view, generateParameters);
767
- const uiAnnotations = targetEntityType?.annotations.UI;
768
- 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);
769
- if (view['entitySet']) {
770
- navPropName = generateParameters.entityType.navigationProperties.find((np) => {
771
- return np.targetTypeName === namespace;
772
- })?.name;
773
- }
774
- const viewKey = (0, common_1.prepareRef)(view[ux_specification_types_1.SchemaTag.key]);
775
- const commonInputParameters = {
776
- viewKey,
777
- appSchema,
778
- targetAnnotation,
779
- navPropName,
780
- targetEntityType,
781
- title,
782
- entitySet: view['entitySet']
783
- };
784
- addLRViewParts(visualization, viewsDefinition, commonInputParameters, generateParameters, page, uiAnnotations, view);
785
- addTagsToView(viewsDefinition, viewKey, namespace, view);
786
- }
787
- }
788
- /**
789
- * Adapts the table definition in schema.
790
- * Evaluates the path depending on if defaultTemplateAnnotationPath or Selection-/PresentationVariant is present.
791
- *
792
- * @param appSchema - the app-specific JSON schema
793
- * @param generateParameters - list of API input parameters
794
- * @param templateAnnotation - defaultTemplateAnnotationPath as registered in manifest
795
- * @param v4Page - the given page in manifest
796
- * @param alias - alias definition for the UI vocabulary
797
- * @param tableDefinitionName - The name of the table definition in the schema
798
- */
799
- function adaptTableDefinition(appSchema, generateParameters, templateAnnotation, v4Page, alias, tableDefinitionName) {
800
- //here: tableDefinitionName = DefinitionName.Table
801
- const tableDefinition = appSchema.definitions[tableDefinitionName];
802
- const { visualization, targetAnnotation, namespace } = analyzeViewAnnotation(templateAnnotation, generateParameters.entityType?.annotations.UI, generateParameters.serviceAVT, undefined, ux_specification_types_1.Visualization.LineItem, generateParameters.logger);
803
- if (visualization) {
804
- const annotationTerm = visualization.split('.')[1];
805
- const annotationTermInSchema = `${ux_specification_types_1.DefinitionName.LineItems}OfSPV::${(0, common_1.prepareRef)(annotationTerm)}`;
806
- const spvTable = (appSchema.definitions[`${tableDefinitionName}SPV`] = JSON.parse(JSON.stringify(appSchema.definitions[tableDefinitionName])));
807
- delete spvTable[ux_specification_types_1.SchemaTag.isViewNode];
808
- (0, common_1.addDefinitionRef)(spvTable.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, annotationTermInSchema);
809
- // Switch from generic column to specific definition
810
- spvTable[ux_specification_types_1.SchemaTag.annotationPath] = targetAnnotation;
811
- spvTable.properties.columns = {};
812
- (0, common_1.addDefinitionRef)(spvTable.properties.columns, annotationTermInSchema);
813
- delete tableDefinition.properties;
814
- (0, common_1.addDefinitionRef)(tableDefinition, `${tableDefinitionName}SPV`);
815
- tableDefinition[ux_specification_types_1.SchemaTag.annotationPath] = `/${namespace}/@${templateAnnotation}`;
816
- const lineItemAnnotation = generateParameters.entityType?.annotations.UI[annotationTerm];
817
- if (!lineItemAnnotation) {
818
- (0, extensionLogger_1.log)(generateParameters.logger, {
819
- severity: "error" /* LogSeverity.Error */,
820
- message: i18next_1.default.t('NOTARGET', { target: annotationTerm })
821
- });
822
- }
823
- const dataForLineItem = {
824
- isObjectPage: false,
825
- appSchema,
826
- lineItemAnnotation,
827
- entityType: generateParameters.entityType,
828
- oDataServiceAVT: generateParameters.serviceAVT,
829
- lineItemId: annotationTermInSchema
830
- };
831
- (0, utils_2.addLineItemsTypeToSchema)(dataForLineItem);
832
- const annotationTermQualifier = annotationTerm.split('#')?.[1];
833
- const sectionIdInManifest = annotationTermQualifier
834
- ? `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}#${annotationTermQualifier}`
835
- : `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}`;
836
- (0, utils_2.addCustomColumnDefinition)(appSchema, v4Page, generateParameters.logger, undefined, annotationTermInSchema, sectionIdInManifest);
837
- (0, utils_2.addFragmentEnumForAnchor)(appSchema, annotationTermInSchema, v4Page, undefined, sectionIdInManifest);
838
- // Table toolbar actions with custom actions
839
- const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${annotationTermInSchema}>`;
840
- const customColumnDefinitionName = (0, common_1.getCustomExtensionDefinitionName)(appSchema, annotationTermInSchema, ux_specification_types_1.DefinitionName.CustomTableAction);
841
- (0, utils_2.addCustomActionDefinition)(appSchema, v4Page, generateParameters.logger, (0, common_1.getDefinitionKey)(customColumnDefinitionName), schemaIdForToolbarActions, sectionIdInManifest);
842
- (0, utils_2.addEnumForActionAnchor)(appSchema, schemaIdForToolbarActions, ux_specification_types_1.DefinitionName.CustomActionPosition);
843
- }
844
- else {
845
- tableDefinition.properties.toolBar['$ref'] = `${common_1.DEFINITION_LINK_PREFIX}${ux_specification_types_1.DefinitionName.ToolBarLR}`;
846
- // Switch from generic column to specific definition
847
- (0, common_1.addDefinitionRef)(tableDefinition.properties.columns, ux_specification_types_1.DefinitionName.LineItems);
848
- const lineItemAnnotation = generateParameters.entityType?.annotations?.[alias]?.LineItem;
849
- if (!lineItemAnnotation && !v4Page.options?.settings?.views?.paths) {
850
- (0, extensionLogger_1.log)(generateParameters.logger, {
851
- severity: "error" /* LogSeverity.Error */,
852
- message: i18next_1.default.t('NOLINEITEMS')
853
- });
854
- }
855
- const dataForLineItem = {
856
- isObjectPage: false,
857
- appSchema,
858
- lineItemAnnotation,
859
- entityType: generateParameters.entityType,
860
- oDataServiceAVT: generateParameters.serviceAVT,
861
- lineItemId: ux_specification_types_1.DefinitionName.LineItems
862
- };
863
- (0, utils_2.addLineItemsTypeToSchema)(dataForLineItem);
864
- (0, utils_2.addCustomColumnDefinition)(appSchema, v4Page, generateParameters.logger);
865
- (0, utils_2.addFragmentEnumForAnchor)(appSchema, ux_specification_types_1.DefinitionName.LineItems, v4Page);
866
- if (lineItemAnnotation && !v4Page.options?.settings?.views?.paths) {
867
- tableDefinition[ux_specification_types_1.SchemaTag.annotationPath] = (0, common_1.createAnnotationPath)(generateParameters.entityType?.fullyQualifiedName, lineItemAnnotation.term, lineItemAnnotation.qualifier);
868
- }
869
- // Table toolbar actions with custom actions
870
- const schemaIdForActions = `${ux_specification_types_1.DefinitionName.Actions}<${(0, common_1.prepareRef)(ux_specification_types_1.DefinitionName.LineItems)}>`;
871
- (0, utils_2.addCustomActionDefinition)(appSchema, v4Page, generateParameters.logger, undefined, schemaIdForActions);
872
- (0, utils_2.addEnumForActionAnchor)(appSchema, schemaIdForActions, ux_specification_types_1.DefinitionName.CustomActionPosition);
873
- }
874
- // Add "manifestPath" for table properties
875
- addManifestPathsToPropertiesLR(appSchema, tableDefinitionName, tableDefinition, {
876
- pageName: v4Page.id,
877
- manifest: generateParameters.manifest,
878
- targetAnnotation
879
- });
880
- }
881
748
  /**
882
749
  * Checks for the default annotation path to use for LR table.
883
750
  *
884
- * @param v4Page - actual page in the manifest
885
- * @param entityType - actual entity type (AVT information)
886
- * @param templateType - The type of template being used (e.g., ListReportObjectPageV4 or AnalyticalListPageV4)
751
+ * @param page - the current page object
887
752
  * @returns annotation term
888
753
  */
889
- function getDefaultAnnotationPath(v4Page, entityType, templateType) {
890
- if (v4Page.options.settings?.views?.paths && templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
754
+ function getDefaultAnnotationPath(page) {
755
+ const { entity: { type: entityType }, template: { type: templateType }, target } = page;
756
+ if (target?.options?.settings?.views?.paths && templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
891
757
  return;
892
758
  }
893
- if (v4Page.options.settings?.defaultTemplateAnnotationPath) {
894
- return v4Page.options.settings.defaultTemplateAnnotationPath;
759
+ if (target?.options?.settings?.defaultTemplateAnnotationPath) {
760
+ return target?.options?.settings.defaultTemplateAnnotationPath;
895
761
  }
896
762
  if (templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
897
763
  return (entityType?.annotations.UI?.SelectionPresentationVariant?.term ||
@@ -931,8 +797,9 @@ function addHeaderActions(appSchema, v4Page, logger) {
931
797
  * @param definitionName - The name of the definition/class whose properties are being processed.
932
798
  * @param definition - The definition object containing property schemas.
933
799
  * @param pathParams - Additional context required to compute manifest paths.
800
+ * @param handleRelative - A flag indicating whether to use relative paths for definition properties.
934
801
  */
935
- function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams) {
802
+ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams, handleRelative = false) {
936
803
  let targetAnnotation = undefined;
937
804
  if (pathParams.targetAnnotation) {
938
805
  const annotationParts = pathParams.targetAnnotation?.split('/');
@@ -948,8 +815,13 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
948
815
  }
949
816
  (0, utils_1.addManifestPathsToProperties)(appSchema, definitionName, definition, {
950
817
  ...pathParams,
951
- pathsParts: [targetAnnotation, '', targetAnnotation, pathParams.viewConfig]
952
- });
818
+ pathsParts: [
819
+ pathParams.sectionId ? undefined : targetAnnotation,
820
+ pathParams.columnKey ? pathParams.columnKey : '',
821
+ targetAnnotation,
822
+ pathParams.viewConfig
823
+ ]
824
+ }, handleRelative);
953
825
  }
954
826
  /**
955
827
  * Adds 'manifestPath' to static nodes in schema.
@@ -958,6 +830,8 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
958
830
  * @param pathParams - Additional context required to compute manifest paths.
959
831
  */
960
832
  function addManifestPathsToStaticNodes(appSchema, pathParams) {
833
+ // Add "manifestPath" for current page
834
+ appSchema['manifestPath'] = (0, utils_1.getPageManifestPath)(pathParams);
961
835
  // Root level - rules stored on page class level
962
836
  addManifestPathsToPropertiesLR(appSchema, ux_specification_types_1.PageTypeV4.ListReport, appSchema, pathParams);
963
837
  // Other definitions
@@ -982,17 +856,24 @@ class ListReportPage {
982
856
  * @param contextPath - context path of the page
983
857
  */
984
858
  constructor(generateParameters, schema, templateName, contextPath) {
985
- this.schema = new AppSchema_1.AppSchema(schema);
986
- this.app = (0, App_1.createApp)(generateParameters.manifest, generateParameters.serviceAVT, generateParameters.logger);
987
- this.page = new Page_1.Page(this.app, { name: templateName, type: generateParameters.templateType }, generateParameters.entitySet, contextPath);
859
+ const template = { name: templateName, type: generateParameters.templateType };
860
+ this.appSchema = new sync_rules_1.AppSchema(schema);
861
+ this.app = (0, sync_rules_1.createApp)(generateParameters.manifest, generateParameters.serviceAVT, generateParameters.logger);
862
+ this.page = new sync_rules_1.Page(this.app, template, generateParameters.entitySet, generateParameters.entityType, contextPath);
863
+ this.logger = this.app.logger;
864
+ this.page.addConfig({
865
+ isALP: template.type === ux_specification_types_1.TemplateType.AnalyticalListPageV4,
866
+ views: this.page.target?.options?.settings.views,
867
+ defaultAnnotation: getDefaultAnnotationPath(this.page)
868
+ });
988
869
  }
989
870
  /**
990
871
  * Cleans up the schema by hiding specific properties and removing unnecessary definitions.
991
872
  */
992
873
  cleanup() {
993
- this.schema.hide(this.schema.getRootProperty([ux_specification_types_1.PropertyName.defaultTemplateAnnotationPath]));
994
- this.schema.cleanup(['GenericColumns', 'Action']);
995
- (0, common_1.updatePropertyIndices)(this.schema.getSchema(), ROOT_PROPERTIES_ORDER);
874
+ this.appSchema.hide(this.appSchema.getRootProperty([ux_specification_types_1.PropertyName.defaultTemplateAnnotationPath]));
875
+ this.appSchema.cleanup(['GenericColumns', 'Action']);
876
+ (0, common_1.updatePropertyIndices)(this.appSchema.get(), ROOT_PROPERTIES_ORDER);
996
877
  }
997
878
  /**
998
879
  * Generates the finalized schema for the List Report page.
@@ -1000,20 +881,33 @@ class ListReportPage {
1000
881
  * @returns The finalized schema for List Report page
1001
882
  */
1002
883
  generate() {
1003
- new ListReportUtils_1.GeneralListReportSettings(this.schema, this.page, this.app.getLogger()).instantiate();
1004
- if (!this.page.getPage()) {
1005
- return this.schema.finalize();
884
+ const params = {
885
+ appSchema: this.appSchema,
886
+ app: this.app,
887
+ page: this.page,
888
+ logger: this.logger
889
+ };
890
+ new ListReportUtils_1.GeneralListReportSettings(params).init();
891
+ if (!this.page.target) {
892
+ return this.appSchema.get();
1006
893
  }
1007
- new ListReportUtils_1.Header(this.schema, this.page, this.app.getLogger()).instantiate();
1008
- new ListReportUtils_1.FilterBar(this.schema, this.page, this.app.getLogger()).instantiate();
1009
- new ListReportUtils_1.TableAndViews(this.schema, this.page, this.app.getLogger()).instantiate();
894
+ new controls_1.Header(params).init();
895
+ new controls_1.HeaderActions(params).init();
896
+ new controls_1.CustomHeaderAction(params).init();
897
+ new ListReportUtils_1.FilterBar(params).init();
898
+ new ListReportUtils_1.TableAndViews(params).init();
1010
899
  // Add "manifestPath" for properties in static nodes
1011
- addManifestPathsToStaticNodes(this.schema.getSchema(), {
1012
- pageName: this.page.getPage().id,
900
+ addManifestPathsToStaticNodes(this.appSchema.get(), {
901
+ pageName: this.page.target.id,
1013
902
  manifest: this.app.getManifest()
1014
903
  });
904
+ // Add "manifestPath" for custom header actions
905
+ const definitionNames = [ux_specification_types_1.DefinitionName.HeaderActions];
906
+ definitionNames.forEach((definitionName) => {
907
+ (0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(this.appSchema.get(), this.page.target.id, definitionName, this.app.getManifest());
908
+ });
1015
909
  this.cleanup();
1016
- return this.schema.finalize();
910
+ return this.appSchema.get();
1017
911
  }
1018
912
  }
1019
913
  /**
@@ -1030,7 +924,7 @@ function generateListReportSchemaV4(generateParameters, genericSchema, templateN
1030
924
  const listReport = new ListReportPage(generateParameters, genericSchema, templateName, contextPath);
1031
925
  if (!listReport.app.getManifest()) {
1032
926
  listReport.cleanup();
1033
- return listReport.schema.finalize();
927
+ return listReport.appSchema.get();
1034
928
  }
1035
929
  return listReport.generate();
1036
930
  }