@sap/ux-specification 1.90.11 → 1.90.15

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 (153) hide show
  1. package/CHANGELOG.md +74 -4
  2. package/dist/documentation/v2/v2-AnalyticalListPage.html +1 -1
  3. package/dist/documentation/v2/v2-ApplicationV2.html +1 -1
  4. package/dist/documentation/v2/v2-ListReport.html +1 -1
  5. package/dist/documentation/v2/v2-ObjectPage.html +1 -1
  6. package/dist/documentation/v2/v2-OverviewPage.html +1 -1
  7. package/dist/documentation/v4/v4-AnalyticalListPage.html +1 -1
  8. package/dist/documentation/v4/v4-ApplicationV4.html +1 -1
  9. package/dist/documentation/v4/v4-ListReport.html +1 -1
  10. package/dist/documentation/v4/v4-ObjectPage.html +1 -1
  11. package/dist/index-min.js +1 -1
  12. package/dist/schemas/v2/AnalyticalListPageConfig.json +90 -13
  13. package/dist/schemas/v2/ListReportConfig.json +93 -16
  14. package/dist/schemas/v2/ObjectPageConfig.json +274 -60
  15. package/dist/schemas/v2/OverviewPageConfig.json +0 -28
  16. package/dist/schemas/v4/ObjectPageConfig.json +22 -0
  17. package/dist/scripts/to-json-schema.js +11 -2
  18. package/dist/scripts/to-json-schema.js.map +1 -1
  19. package/dist/specification/v2/index-min.js +1 -1
  20. package/dist/src/apiTypes.d.ts +8 -0
  21. package/dist/src/specification/v2/controls/Card.d.ts +0 -8
  22. package/dist/src/specification/v2/controls/Card.js.map +1 -1
  23. package/dist/src/specification/v2/controls/{DataField.d.ts → Field.d.ts} +2 -2
  24. package/dist/src/specification/v2/controls/{DataField.js → Field.js} +1 -1
  25. package/dist/src/specification/v2/controls/Field.js.map +1 -0
  26. package/dist/src/specification/v2/controls/FormAction.d.ts +27 -0
  27. package/dist/src/specification/v2/controls/FormAction.js +3 -0
  28. package/dist/src/specification/v2/controls/FormAction.js.map +1 -0
  29. package/dist/src/specification/v2/controls/ObjectPageFooter.d.ts +11 -0
  30. package/dist/src/specification/v2/controls/ObjectPageFooter.js +3 -0
  31. package/dist/src/specification/v2/controls/ObjectPageFooter.js.map +1 -0
  32. package/dist/src/specification/v2/controls/ObjectPageForm.d.ts +4 -5
  33. package/dist/src/specification/v2/controls/ObjectPageHeader.d.ts +2 -5
  34. package/dist/src/specification/v2/controls/ObjectPageHeader.js +0 -5
  35. package/dist/src/specification/v2/controls/ObjectPageHeader.js.map +1 -1
  36. package/dist/src/specification/v2/controls/ObjectPageHeaderAction.d.ts +20 -0
  37. package/dist/src/specification/v2/controls/ObjectPageSection.d.ts +25 -15
  38. package/dist/src/specification/v2/controls/ObjectPageSection.js.map +1 -1
  39. package/dist/src/specification/v2/controls/ObjectPageTable.d.ts +10 -5
  40. package/dist/src/specification/v2/controls/ObjectPageTable.js.map +1 -1
  41. package/dist/src/specification/v2/controls/Table.d.ts +7 -18
  42. package/dist/src/specification/v2/controls/Table.js +0 -15
  43. package/dist/src/specification/v2/controls/Table.js.map +1 -1
  44. package/dist/src/specification/v2/controls/ToolBar.d.ts +2 -6
  45. package/dist/src/specification/v2/controls/index.d.ts +4 -1
  46. package/dist/src/specification/v2/controls/index.js +0 -1
  47. package/dist/src/specification/v2/controls/index.js.map +1 -1
  48. package/dist/src/specification/v2/pages/ObjectPageConfig.d.ts +2 -1
  49. package/dist/src/specification/v4/controls/ObjectPageFooter.d.ts +11 -0
  50. package/dist/src/specification/v4/controls/ObjectPageFooter.js +3 -0
  51. package/dist/src/specification/v4/controls/ObjectPageFooter.js.map +1 -0
  52. package/dist/src/specification/v4/controls/index.d.ts +1 -0
  53. package/dist/src/specification/v4/pages/ObjectPageConfig.d.ts +2 -1
  54. package/dist/src/specification/v4/webapp/manifest/sapUi5.d.ts +2 -1
  55. package/dist/src/specification/v4/webapp/manifest/sapUi5.js.map +1 -1
  56. package/dist/src/sync/common/decoration/control.js +34 -19
  57. package/dist/src/sync/common/decoration/control.js.map +1 -1
  58. package/dist/src/sync/common/generate/objectPage.d.ts +31 -2
  59. package/dist/src/sync/common/generate/objectPage.js +195 -29
  60. package/dist/src/sync/common/generate/objectPage.js.map +1 -1
  61. package/dist/src/sync/common/import/utils.d.ts +6 -0
  62. package/dist/src/sync/common/import/utils.js +21 -0
  63. package/dist/src/sync/common/import/utils.js.map +1 -1
  64. package/dist/src/sync/common/importProject.js +64 -62
  65. package/dist/src/sync/common/importProject.js.map +1 -1
  66. package/dist/src/sync/common/types.d.ts +5 -2
  67. package/dist/src/sync/common/types.js +4 -0
  68. package/dist/src/sync/common/types.js.map +1 -1
  69. package/dist/src/sync/common/utils.d.ts +5 -3
  70. package/dist/src/sync/common/utils.js +94 -94
  71. package/dist/src/sync/common/utils.js.map +1 -1
  72. package/dist/src/sync/v2/application.d.ts +1 -0
  73. package/dist/src/sync/v2/application.js +3 -0
  74. package/dist/src/sync/v2/application.js.map +1 -1
  75. package/dist/src/sync/v2/export/controls/Card.d.ts +0 -2
  76. package/dist/src/sync/v2/export/controls/Card.js +0 -14
  77. package/dist/src/sync/v2/export/controls/Card.js.map +1 -1
  78. package/dist/src/sync/v2/export/controls/Field.d.ts +4 -0
  79. package/dist/src/sync/v2/export/controls/{DataField.js → Field.js} +6 -6
  80. package/dist/src/sync/v2/export/controls/Field.js.map +1 -0
  81. package/dist/src/sync/v2/export/controls/FilterBar.d.ts +1 -2
  82. package/dist/src/sync/v2/export/controls/FilterBar.js +2 -4
  83. package/dist/src/sync/v2/export/controls/FilterBar.js.map +1 -1
  84. package/dist/src/sync/v2/export/controls/FormAction.d.ts +16 -0
  85. package/dist/src/sync/v2/export/controls/FormAction.js +95 -0
  86. package/dist/src/sync/v2/export/controls/FormAction.js.map +1 -0
  87. package/dist/src/sync/v2/export/controls/ObjectPageChart.d.ts +4 -1
  88. package/dist/src/sync/v2/export/controls/ObjectPageChart.js +13 -0
  89. package/dist/src/sync/v2/export/controls/ObjectPageChart.js.map +1 -1
  90. package/dist/src/sync/v2/export/controls/ObjectPageHeader.d.ts +3 -2
  91. package/dist/src/sync/v2/export/controls/ObjectPageHeader.js.map +1 -1
  92. package/dist/src/sync/v2/export/controls/ObjectPageHeaderAction.d.ts +5 -0
  93. package/dist/src/sync/v2/export/controls/ObjectPageHeaderAction.js +42 -3
  94. package/dist/src/sync/v2/export/controls/ObjectPageHeaderAction.js.map +1 -1
  95. package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.d.ts +32 -0
  96. package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js +144 -0
  97. package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js.map +1 -0
  98. package/dist/src/sync/v2/export/controls/ObjectPageTable.d.ts +7 -5
  99. package/dist/src/sync/v2/export/controls/ObjectPageTable.js +16 -4
  100. package/dist/src/sync/v2/export/controls/ObjectPageTable.js.map +1 -1
  101. package/dist/src/sync/v2/export/controls/Table.d.ts +14 -5
  102. package/dist/src/sync/v2/export/controls/Table.js +84 -37
  103. package/dist/src/sync/v2/export/controls/Table.js.map +1 -1
  104. package/dist/src/sync/v2/export/controls/TableColumn.d.ts +3 -2
  105. package/dist/src/sync/v2/export/controls/TableColumn.js.map +1 -1
  106. package/dist/src/sync/v2/export/controls/index.d.ts +3 -1
  107. package/dist/src/sync/v2/export/controls/index.js +3 -1
  108. package/dist/src/sync/v2/export/controls/index.js.map +1 -1
  109. package/dist/src/sync/v2/export/export.js +125 -86
  110. package/dist/src/sync/v2/export/export.js.map +1 -1
  111. package/dist/src/sync/v2/generate/analyticalListReport.d.ts +3 -9
  112. package/dist/src/sync/v2/generate/analyticalListReport.js +12 -13
  113. package/dist/src/sync/v2/generate/analyticalListReport.js.map +1 -1
  114. package/dist/src/sync/v2/generate/generate.js +28 -6
  115. package/dist/src/sync/v2/generate/generate.js.map +1 -1
  116. package/dist/src/sync/v2/generate/listReport.d.ts +3 -10
  117. package/dist/src/sync/v2/generate/listReport.js +7 -12
  118. package/dist/src/sync/v2/generate/listReport.js.map +1 -1
  119. package/dist/src/sync/v2/generate/objectPage.d.ts +3 -10
  120. package/dist/src/sync/v2/generate/objectPage.js +201 -148
  121. package/dist/src/sync/v2/generate/objectPage.js.map +1 -1
  122. package/dist/src/sync/v2/generate/utils.d.ts +1 -2
  123. package/dist/src/sync/v2/generate/utils.js +8 -3
  124. package/dist/src/sync/v2/generate/utils.js.map +1 -1
  125. package/dist/src/sync/v2/import/pages/objectPage.js +176 -102
  126. package/dist/src/sync/v2/import/pages/objectPage.js.map +1 -1
  127. package/dist/src/sync/v2/types.d.ts +12 -0
  128. package/dist/src/sync/v2/types.js +11 -0
  129. package/dist/src/sync/v2/types.js.map +1 -1
  130. package/dist/src/sync/v4/application.js +10 -10
  131. package/dist/src/sync/v4/application.js.map +1 -1
  132. package/dist/src/sync/v4/export/export.js +156 -134
  133. package/dist/src/sync/v4/export/export.js.map +1 -1
  134. package/dist/src/sync/v4/export/manifest.js +96 -76
  135. package/dist/src/sync/v4/export/manifest.js.map +1 -1
  136. package/dist/src/sync/v4/generate/generate.js +10 -2
  137. package/dist/src/sync/v4/generate/generate.js.map +1 -1
  138. package/dist/src/sync/v4/generate/objectPage.d.ts +3 -6
  139. package/dist/src/sync/v4/generate/objectPage.js +92 -93
  140. package/dist/src/sync/v4/generate/objectPage.js.map +1 -1
  141. package/dist/src/sync/v4/import/app/appProvider.js +108 -80
  142. package/dist/src/sync/v4/import/app/appProvider.js.map +1 -1
  143. package/dist/src/sync/v4/import/fragment.js +41 -46
  144. package/dist/src/sync/v4/import/fragment.js.map +1 -1
  145. package/dist/src/sync/v4/utils/StableIdHelper.d.ts +0 -3
  146. package/dist/src/sync/v4/utils/StableIdHelper.js +9 -11
  147. package/dist/src/sync/v4/utils/StableIdHelper.js.map +1 -1
  148. package/dist/src/sync/v4/utils/utils.js +36 -21
  149. package/dist/src/sync/v4/utils/utils.js.map +1 -1
  150. package/package.json +14 -15
  151. package/dist/src/specification/v2/controls/DataField.js.map +0 -1
  152. package/dist/src/sync/v2/export/controls/DataField.d.ts +0 -4
  153. package/dist/src/sync/v2/export/controls/DataField.js.map +0 -1
@@ -47,12 +47,102 @@ function initializeRouting(manifestRouting) {
47
47
  }
48
48
  return routing;
49
49
  }
50
+ function setTargetOptions(target, navigationKey, association) {
51
+ if (!target.options) {
52
+ target.options = createTargetOption();
53
+ }
54
+ if (!target.options.settings) {
55
+ target.options.settings = {};
56
+ }
57
+ if (!target.options.settings.navigation) {
58
+ target.options.settings.navigation = {};
59
+ }
60
+ target.options.settings.navigation[navigationKey] = {
61
+ detail: {
62
+ route: association
63
+ }
64
+ };
65
+ }
66
+ function calculateQueryPattern(parts, pageType) {
67
+ let pattern = '';
68
+ parts.forEach((part, index) => {
69
+ let key = '';
70
+ if (pageType !== v4_1.PageTypeV4.ListReport) {
71
+ // Keys should be like - 'key', 'key2', 'key3'
72
+ key = `({key${index ? index + 1 : ''}})`;
73
+ }
74
+ pattern += `${pattern ? '/' : ''}${part}${key}`;
75
+ });
76
+ return pattern;
77
+ }
78
+ function handlePageNavigation(page, pages, target, routing) {
79
+ if (page.navigation) {
80
+ for (const association in page.navigation) {
81
+ const parts = page.navigation[association].split('.');
82
+ const pageType = pages[association] && pages[association].pageType;
83
+ const pattern = calculateQueryPattern(parts, pageType);
84
+ // Handle list report page different as there can be duplicate last part
85
+ let navigationKey = parts[parts.length - 1];
86
+ if (pageType === v4_1.PageTypeV4.ListReport ||
87
+ (pageType === v4_1.PageTypeV4.CustomPage && !pages[association].entitySet && !navigationKey)) {
88
+ navigationKey = association;
89
+ }
90
+ if (navigationKey) {
91
+ setTargetOptions(target, navigationKey, association);
92
+ }
93
+ if (!routing.routes.some((routingRoute) => routingRoute.name === association)) {
94
+ // Make sure there no route duplication
95
+ routing.routes.push(createRoute(association, association, `${pattern}${Constants.OptionalQuery}`));
96
+ }
97
+ }
98
+ }
99
+ }
100
+ function removeDeletedPages(routing, pages) {
101
+ for (const id in routing.targets) {
102
+ if (!pages || !pages[id]) {
103
+ // Remove target
104
+ delete routing.targets[id];
105
+ // Remove routes
106
+ const index = routing.routes.findIndex((route) => route.name === id);
107
+ if (index !== -1) {
108
+ routing.routes.splice(index, 1);
109
+ }
110
+ }
111
+ }
112
+ }
113
+ function transferEntitySet(page, target) {
114
+ var _a, _b, _c, _d, _e, _f;
115
+ if (page.entitySet) {
116
+ if (!target.options) {
117
+ target.options = createTargetOption(page.entitySet, page.variantManagement);
118
+ }
119
+ target.options.settings.entitySet = page.entitySet;
120
+ // We handle custom sections from scratch in exportObjectPageV4- clear 'sections' before handling
121
+ if ((_d = (_c = (_b = (_a = target === null || target === void 0 ? void 0 : target.options) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.body) === null || _d === void 0 ? void 0 : _d.sections) {
122
+ target.options.settings.content.body.sections = {};
123
+ }
124
+ }
125
+ else {
126
+ (_f = (_e = target.options) === null || _e === void 0 ? void 0 : _e.settings) === null || _f === void 0 ? true : delete _f.entitySet;
127
+ }
128
+ }
129
+ function updateRoute(routing, id, page) {
130
+ const route = routing.routes.find((routingRoute) => routingRoute.name === id);
131
+ if (route) {
132
+ if (page.defaultLayoutType) {
133
+ route.layout = page.defaultLayoutType;
134
+ }
135
+ else {
136
+ delete route.layout;
137
+ }
138
+ }
139
+ }
50
140
  /**
51
141
  * Transform Pages(from app.json) to UI5 routing configuration(manifest.json)
52
142
  * @param routing UI5 routing configuration
53
143
  */
54
144
  function transformRoutingV4(homePage, pages, manifest) {
55
- var _a, _b, _c, _d, _e, _f, _g, _h;
145
+ var _a, _b;
56
146
  const routing = initializeRouting(manifest[v4_1.ManifestSection.ui5].routing);
57
147
  // add default route
58
148
  if (homePage && !routing.routes.some((route) => route.name === homePage)) {
@@ -95,93 +185,23 @@ function transformRoutingV4(homePage, pages, manifest) {
95
185
  }
96
186
  });
97
187
  }
98
- if (page.entitySet) {
99
- if (!target.options) {
100
- target.options = createTargetOption(page.entitySet, page.variantManagement);
101
- }
102
- target.options.settings.entitySet = page.entitySet;
103
- // We handle custom sections from scratch in exportObjectPageV4- clear 'sections' before handling
104
- if ((_d = (_c = (_b = (_a = target === null || target === void 0 ? void 0 : target.options) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.content) === null || _c === void 0 ? void 0 : _c.body) === null || _d === void 0 ? void 0 : _d.sections) {
105
- target.options.settings.content.body.sections = {};
106
- }
107
- }
108
- else {
109
- (_f = (_e = target.options) === null || _e === void 0 ? void 0 : _e.settings) === null || _f === void 0 ? true : delete _f.entitySet;
110
- }
188
+ transferEntitySet(page, target);
111
189
  if (target && !page.controlAggregation) {
112
190
  delete target.contextPattern;
113
191
  delete target.controlAggregation;
114
192
  }
115
- if ((_h = (_g = target === null || target === void 0 ? void 0 : target.options) === null || _g === void 0 ? void 0 : _g.settings) === null || _h === void 0 ? void 0 : _h.navigation) {
193
+ if ((_b = (_a = target === null || target === void 0 ? void 0 : target.options) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.navigation) {
116
194
  // We handle page 'navigation' from scratch - clear 'navigation' before handling
117
195
  target.options.settings.navigation = {};
118
196
  }
119
197
  // Handle page 'navigation'
120
- if (page.navigation) {
121
- for (const association in page.navigation) {
122
- let pattern = '';
123
- const parts = page.navigation[association].split('.');
124
- const pageType = pages[association] && pages[association].pageType;
125
- parts.forEach((part, index) => {
126
- let key = '';
127
- if (pageType !== v4_1.PageTypeV4.ListReport) {
128
- // Keys should be like - 'key', 'key2', 'key3'
129
- key = `({key${index ? index + 1 : ''}})`;
130
- }
131
- pattern += `${pattern ? '/' : ''}${part}${key}`;
132
- });
133
- // Handle list report page different as there can be duplicate last part
134
- let navigationKey = parts[parts.length - 1];
135
- if (pageType === v4_1.PageTypeV4.ListReport ||
136
- (pageType === v4_1.PageTypeV4.CustomPage && !pages[association].entitySet && !navigationKey)) {
137
- navigationKey = association;
138
- }
139
- if (navigationKey) {
140
- if (!target.options) {
141
- target.options = createTargetOption();
142
- }
143
- if (!target.options.settings) {
144
- target.options.settings = {};
145
- }
146
- if (!target.options.settings.navigation) {
147
- target.options.settings.navigation = {};
148
- }
149
- target.options.settings.navigation[navigationKey] = {
150
- detail: {
151
- route: association
152
- }
153
- };
154
- }
155
- if (!routing.routes.some((route) => route.name === association)) {
156
- // Make sure there no route duplication
157
- routing.routes.push(createRoute(association, association, `${pattern}${Constants.OptionalQuery}`));
158
- }
159
- }
160
- }
198
+ handlePageNavigation(page, pages, target, routing);
161
199
  // Update associated route with layout information
162
- const route = routing.routes.find((route) => route.name === id);
163
- if (route) {
164
- if (page.defaultLayoutType) {
165
- route.layout = page.defaultLayoutType;
166
- }
167
- else {
168
- delete route.layout;
169
- }
170
- }
200
+ updateRoute(routing, id, page);
171
201
  routing.targets[id] = target;
172
202
  }
173
203
  // Remove deleted pages
174
- for (const id in routing.targets) {
175
- if (!pages || !pages[id]) {
176
- // Remove target
177
- delete routing.targets[id];
178
- // Remove routes
179
- const index = routing.routes.findIndex((route) => route.name === id);
180
- if (index !== -1) {
181
- routing.routes.splice(index, 1);
182
- }
183
- }
184
- }
204
+ removeDeletedPages(routing, pages);
185
205
  return routing;
186
206
  }
187
207
  exports.transformRoutingV4 = transformRoutingV4;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../../src/sync/v4/export/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../../../src/sync/v4/export/manifest.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const utils_1 = require("../../common/utils");
4
4
  const _1 = require(".");
5
+ const __1 = require("../../..");
5
6
  /**
6
7
  * Generates the app specific schema of an object page out of the generic schema for the same page.
7
8
  * Generic types are replaced by information from the app specific annotations.
@@ -15,8 +16,15 @@ const _1 = require(".");
15
16
  * @returns the app specific JSON schema
16
17
  */
17
18
  function generateObjectPageInterfaceV4(genericSchema, entitySet, annotations, manifest, logger) {
18
- const oDataServiceAVT = utils_1.parseAndMergeAndConvert(annotations, logger);
19
- return _1.generateObjectPageSchemaV4(genericSchema, entitySet, oDataServiceAVT, manifest, logger);
19
+ const serviceAVT = utils_1.parseAndMergeAndConvert(annotations, logger);
20
+ const generateParameters = {
21
+ fioriElementsVersion: __1.FioriElementsVersion.v4,
22
+ manifest,
23
+ fragments: [],
24
+ serviceAVT,
25
+ logger
26
+ };
27
+ return _1.generateObjectPageSchemaV4(generateParameters, genericSchema, entitySet);
20
28
  }
21
29
  exports.generateObjectPageInterfaceV4 = generateObjectPageInterfaceV4;
22
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../src/sync/v4/generate/generate.ts"],"names":[],"mappings":";;AACA,8CAA6D;AAC7D,wBAA2E;AAG3E;;;;;;;;;;;GAWG;AACH,SAAgB,6BAA6B,CACzC,aAAqB,EACrB,SAAiB,EACjB,WAAuB,EACvB,QAAgB,EAChB,MAAwB;IAExB,MAAM,eAAe,GAAG,+BAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrE,OAAO,6BAA0B,CAAC,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACnG,CAAC;AATD,sEASC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,6BAA6B,CACzC,aAAqB,EACrB,aAAqB,EACrB,WAAuB,EACvB,MAAwB;IAExB,MAAM,eAAe,GAAG,+BAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAErF,OAAO,6BAA0B,CAAC,aAAa,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;AACzG,CAAC;AAVD,sEAUC"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../src/sync/v4/generate/generate.ts"],"names":[],"mappings":";;AACA,8CAA6D;AAC7D,wBAA2E;AAE3E,gCAAgD;AAEhD;;;;;;;;;;;GAWG;AACH,SAAgB,6BAA6B,CACzC,aAAqB,EACrB,SAAiB,EACjB,WAAuB,EACvB,QAAgB,EAChB,MAAwB;IAExB,MAAM,UAAU,GAAG,+BAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,kBAAkB,GAAgC;QACpD,oBAAoB,EAAE,wBAAoB,CAAC,EAAE;QAC7C,QAAQ;QACR,SAAS,EAAE,EAAE;QACb,UAAU;QACV,MAAM;KACT,CAAC;IACF,OAAO,6BAA0B,CAAC,kBAAkB,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AACpF,CAAC;AAhBD,sEAgBC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,6BAA6B,CACzC,aAAqB,EACrB,aAAqB,EACrB,WAAuB,EACvB,MAAwB;IAExB,MAAM,eAAe,GAAG,+BAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAErF,OAAO,6BAA0B,CAAC,aAAa,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;AACzG,CAAC;AAVD,sEAUC"}
@@ -1,14 +1,11 @@
1
- import { ConverterOutput } from '@sap-ux/vocabularies-types';
2
- import { ExtensionLogger } from '../../../v4';
1
+ import { GenerateAppSchemaParameters } from '../../../v4';
3
2
  /**
4
3
  * Generates an app specific schema out of the generic schema.
5
4
  * Generic types are replaced by information from the app specific annotations.
5
+ * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
6
6
  * @param genericSchema - generic JSON schema of an object page
7
7
  * @param entityTypeName - the base entity type of the given page
8
- * @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
9
- * @param manifest - manifest.json of the app
10
- * @param {ExtensionLogger} logger - Logger class for logging messages
11
8
  *
12
9
  * @returns the app specific JSON schema
13
10
  */
14
- export declare function generateObjectPageSchemaV4(genericSchema: object, entityTypeName: string, oDataServiceAVT: ConverterOutput, manifest: object, logger?: ExtensionLogger): object;
11
+ export declare function generateObjectPageSchemaV4(generateParameters: GenerateAppSchemaParameters, genericSchema: object, entityTypeName: string): object;
@@ -10,57 +10,33 @@ const utils_1 = require("../utils/utils");
10
10
  const i18next_1 = __importDefault(require("i18next"));
11
11
  const extensionLogger_1 = require("../../../extensionLogger");
12
12
  /**
13
- * Add Object Page Header Action Buttons to app-specific schema
14
- *
15
- * @param {object} appSchema Schema of the app
13
+ * Callback for adding a single action to headerActions of V4
16
14
  * @param {EntityType} entityType - current entity type
17
- * @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
15
+ * @param {object} appSchema Schema of the app
16
+ * @param actionAnnotation - annotation as present in AVT ConverterOutput
17
+ * @param headerActions - list of header actions, to be enhanced
18
18
  */
19
- function addHeaderActions(appSchema, entityType, oDataServiceAVT) {
20
- appSchema['definitions']['ObjectPageHeader'] = JSON.parse(JSON.stringify(appSchema['definitions']['ObjectPageHeader<GenericActions>']));
21
- // Change reference of header
22
- appSchema['properties']['header'] = {
23
- $ref: common_2.DEFINITION_LINK_PREFIX + 'ObjectPageHeader'
19
+ function addHeaderActionCallBackV4(entityType, appSchema, actionAnnotation, headerActions, oDataServiceAVT) {
20
+ return (item, index) => {
21
+ if ((!item['Determining'] && item.$Type === "com.sap.vocabularies.UI.v1.DataFieldForAction" /* DataFieldForAction */) ||
22
+ item.$Type === "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation" /* DataFieldForIntentBasedNavigation */) {
23
+ const action = common_2.replaceAlias(item.Action, oDataServiceAVT);
24
+ const { actionName, actionId } = common_2.getActionNameAndId(action, entityType);
25
+ const description = item.Label || actionName;
26
+ const actionDefinitionKey = `HeaderAction<${common_2.prepareRef(actionId)}>`;
27
+ const convertedIdentification = actionAnnotation.fullyQualifiedName.replace(`@${"com.sap.vocabularies.UI.v1.Identification" /* Identification */}`, `/@${"com.sap.vocabularies.UI.v1.Identification" /* Identification */}`);
28
+ appSchema['definitions'][actionDefinitionKey] = {
29
+ isViewNode: true,
30
+ type: 'object',
31
+ properties: {},
32
+ description: description,
33
+ annotationPath: `/${convertedIdentification}/${index}`
34
+ };
35
+ headerActions.properties[actionId] = {
36
+ $ref: `${common_2.DEFINITION_LINK_PREFIX}${actionDefinitionKey}`
37
+ };
38
+ }
24
39
  };
25
- delete appSchema['definitions']['GenericActions'];
26
- delete appSchema['definitions']['ObjectPageHeader<GenericActions>'];
27
- const alias = common_2.findAlias(v4_1.UIVOCABULARY, oDataServiceAVT);
28
- const actionAnnotation = alias &&
29
- entityType.annotations &&
30
- entityType.annotations[alias] &&
31
- entityType.annotations[alias].Identification;
32
- if (actionAnnotation) {
33
- // Add action to configuration
34
- appSchema['definitions']['ObjectPageHeader'].properties['actions'] = {
35
- $ref: `${common_2.DEFINITION_LINK_PREFIX}HeaderActions`
36
- };
37
- const headerActions = (appSchema['definitions']['HeaderActions'] = {
38
- type: 'object',
39
- properties: {},
40
- description: 'Actions',
41
- additionalProperties: false,
42
- isViewNode: true,
43
- annotationPath: actionAnnotation.fullyQualifiedName
44
- });
45
- actionAnnotation.forEach((item, index) => {
46
- if ((!item['Determining'] && item.$Type === 'com.sap.vocabularies.UI.v1.DataFieldForAction') ||
47
- item.$Type === 'com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation') {
48
- const { actionName, actionId } = common_2.getActionNameAndId(item.Action, entityType);
49
- const description = item.Label || actionName;
50
- const actionDefinitionKey = `HeaderAction<${actionId}>`;
51
- appSchema['definitions'][actionDefinitionKey] = {
52
- isViewNode: true,
53
- type: 'object',
54
- properties: {},
55
- description: description,
56
- annotationPath: `${actionAnnotation.fullyQualifiedName}/${index}`
57
- };
58
- headerActions.properties[actionId] = {
59
- $ref: `${common_2.DEFINITION_LINK_PREFIX}${actionDefinitionKey}`
60
- };
61
- }
62
- });
63
- }
64
40
  }
65
41
  /**
66
42
  * Adds definitions for line items in object page sections to the app schema
@@ -92,7 +68,7 @@ function handleLineItem(facetId, appSchema, facet, facets, oDataServiceAVT) {
92
68
  appSchema['definitions'][idForTable].properties['toolBar'].$ref = `${common_2.DEFINITION_LINK_PREFIX}ObjectPageToolBar<${facetId}>`;
93
69
  for (const facetKey in facets) {
94
70
  if (facets[facetKey].base === 'LineItem' && facetKey.includes(navigationProperty)) {
95
- utils_1.addLineItemsType(appSchema, facets[facetKey]['lineItem'], facets[facetKey]['entityType'], oDataServiceAVT, 'ObjectPageTableColumn', facetId);
71
+ utils_1.addLineItemsType(appSchema, facets[facetKey].target, facets[facetKey].entityType, oDataServiceAVT, 'ObjectPageTableColumn', facetId);
96
72
  }
97
73
  }
98
74
  }
@@ -106,6 +82,7 @@ function handleLineItem(facetId, appSchema, facet, facets, oDataServiceAVT) {
106
82
  */
107
83
  function addSection(facets, facetKey, sections, appSchema, oDataServiceAVT, sectionPrefix) {
108
84
  const facet = facets[facetKey];
85
+ const definitionKey = facetKey.replace('#', '::');
109
86
  if (facet.base === 'CollectionFacet') {
110
87
  //handle collection facets
111
88
  sections['properties'][facetKey] = common_2.createSectionWithoutProperties(facet, facetKey);
@@ -127,12 +104,12 @@ function addSection(facets, facetKey, sections, appSchema, oDataServiceAVT, sect
127
104
  else if (facet.base === 'LineItem' && sectionPrefix === v4_1.SectionType.Section) {
128
105
  //handle reference facet (if comprising line item)
129
106
  sections['properties'][facetKey] = {
130
- $ref: `${common_2.DEFINITION_LINK_PREFIX}ObjectPage${sectionPrefix}TableV4<${facetKey}>`
107
+ $ref: `${common_2.DEFINITION_LINK_PREFIX}ObjectPage${sectionPrefix}TableV4<${definitionKey}>`
131
108
  };
132
- handleLineItem(facetKey, appSchema, facet, facets, oDataServiceAVT);
109
+ handleLineItem(definitionKey, appSchema, facet, facets, oDataServiceAVT);
133
110
  }
134
111
  else if (facet.base === common_2.FacetBase.Form || facet.base === common_2.FacetBase.Identification) {
135
- const formDefinitionKey = `ObjectPage${sectionPrefix}Form<${facetKey}>`;
112
+ const formDefinitionKey = `ObjectPage${sectionPrefix}Form<${definitionKey}>`;
136
113
  sections['properties'][facetKey] = {
137
114
  $ref: `${common_2.DEFINITION_LINK_PREFIX}${formDefinitionKey}`
138
115
  };
@@ -140,13 +117,13 @@ function addSection(facets, facetKey, sections, appSchema, oDataServiceAVT, sect
140
117
  common_2.addSectionTitleAndDescription(facet, appSchema['definitions'][formDefinitionKey], facetKey);
141
118
  appSchema['definitions'][formDefinitionKey]['annotationPath'] = facet.annotationPath;
142
119
  appSchema['definitions'][formDefinitionKey]['isViewNode'] = true;
143
- const withActions = facet.base === common_2.FacetBase.Identification ? false : true;
144
- common_2.handleForm(sectionPrefix, facet, appSchema['definitions'][formDefinitionKey], appSchema, false, withActions);
120
+ const withActions = facet.base === common_2.FacetBase.Identification && facetKey.indexOf('#') < 0 ? false : true;
121
+ common_2.handleForm(sectionPrefix, facet, appSchema['definitions'][formDefinitionKey], appSchema, common_1.FioriElementsVersion.v4, withActions);
145
122
  }
146
123
  else if (facet.base === common_2.FacetBase.DataPoint ||
147
124
  facet.base === common_2.FacetBase.Address ||
148
125
  facet.base === common_2.FacetBase.Contact) {
149
- const facetDefinitionKey = `ObjectPage${sectionPrefix}${facet.base}<${facetKey}>`;
126
+ const facetDefinitionKey = `ObjectPage${sectionPrefix}${facet.base}<${definitionKey}>`;
150
127
  sections['properties'][facetKey] = {
151
128
  $ref: `${common_2.DEFINITION_LINK_PREFIX}${facetDefinitionKey}`
152
129
  };
@@ -161,15 +138,15 @@ function addSection(facets, facetKey, sections, appSchema, oDataServiceAVT, sect
161
138
  }
162
139
  /**
163
140
  * Derives the sections from the UI.Facets annotation and adds them to the schema
141
+ * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
164
142
  * @param {object} appSchema - application specific JSON schema
165
- * @param {string} entityTypeName - current entity type
143
+ * @param {EntityType} entityType - current entity type
144
+ * @param {string} entitySetName - name of the current entity set
166
145
  * @param pages {SapUiAppPageV4[]} - list of (manifest) pages
167
- * @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
168
- * @param {ExtensionLogger} logger - Logger class for logging messages
169
146
  */
170
- function addSections(appSchema, entityType, entitySetName, pages, oDataServiceAVT, logger) {
147
+ function addSections(generateParameters, appSchema, entityType, entitySetName, pages) {
171
148
  // Get facet annotations
172
- const facets = common_2.getObjectPageFacets(entityType, oDataServiceAVT, common_1.FioriElementsVersion.v4, logger);
149
+ const facets = common_2.getObjectPageFacets(entityType, generateParameters.serviceAVT, common_1.FioriElementsVersion.v4, generateParameters.logger);
173
150
  if (!facets) {
174
151
  delete appSchema['definitions']['ObjectPageSubSections'];
175
152
  return;
@@ -180,7 +157,7 @@ function addSections(appSchema, entityType, entitySetName, pages, oDataServiceAV
180
157
  if (((_b = (_a = pages[element].options) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.entitySet) === entitySetName &&
181
158
  pages[element].name === v4_1.FE_TEMPLATE_V4_OBJECT_PAGE) {
182
159
  for (const facetKey in facets) {
183
- addSection(facets, facetKey, sections, appSchema, oDataServiceAVT, v4_1.SectionType.Section);
160
+ addSection(facets, facetKey, sections, appSchema, generateParameters.serviceAVT, v4_1.SectionType.Section);
184
161
  }
185
162
  }
186
163
  });
@@ -191,15 +168,15 @@ function addSections(appSchema, entityType, entitySetName, pages, oDataServiceAV
191
168
  }
192
169
  /**
193
170
  * Derives the header sections from the UI.HeaderFacets annotation and adds them to the schema
171
+ * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
194
172
  * @param {object} appSchema - application specific JSON schema
195
- * @param {string} entityTypeName - current entity type
173
+ * @param {EntityType} entityType - current entity type
174
+ * @param {string} entitySetName - name of the current entity set
196
175
  * @param pages {SapUiAppPageV4[]} - list of (manifest) pages
197
- * @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
198
- * @param {ExtensionLogger} logger - Logger class for logging messages
199
176
  */
200
- function addHeaderSections(appSchema, entityType, entitySetName, pages, oDataServiceAVT, logger) {
177
+ function addHeaderSections(generateParameters, appSchema, entityType, entitySetName, pages) {
201
178
  // Get facet annotations
202
- const facets = common_2.getObjectPageHeaderFacets(entityType, oDataServiceAVT, common_1.FioriElementsVersion.v4, logger);
179
+ const facets = common_2.getObjectPageHeaderFacets(entityType, generateParameters.serviceAVT, common_1.FioriElementsVersion.v4, generateParameters.logger);
203
180
  const sections = appSchema['definitions']['HeaderSections'];
204
181
  sections.properties = {};
205
182
  sections.additionalProperties = false;
@@ -211,14 +188,10 @@ function addHeaderSections(appSchema, entityType, entitySetName, pages, oDataSer
211
188
  if (((_b = (_a = pages[element].options) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.entitySet) === entitySetName &&
212
189
  pages[element].name === v4_1.FE_TEMPLATE_V4_OBJECT_PAGE) {
213
190
  for (const facetKey in facets) {
214
- addSection(facets, facetKey, sections, appSchema, oDataServiceAVT, v4_1.SectionType.HeaderSection);
191
+ addSection(facets, facetKey, sections, appSchema, generateParameters.serviceAVT, v4_1.SectionType.HeaderSection);
215
192
  }
216
193
  }
217
194
  });
218
- // Custom sections as part of sections - still open if can be added the same way
219
- /*if (appSchema['definitions']['CustomSections']) {
220
- sections.properties = { ...sections.properties, ...appSchema['definitions']['CustomSections'].properties };
221
- }*/
222
195
  //delete generic definitions
223
196
  delete appSchema['definitions']['ObjectPageHeaderSectionForm'];
224
197
  delete appSchema['definitions']['ObjectPageHeaderSectionChart'];
@@ -228,20 +201,20 @@ function addHeaderSections(appSchema, entityType, entitySetName, pages, oDataSer
228
201
  }
229
202
  /**
230
203
  * Adds the related facets keys 'enum' to the app schema
204
+ * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
231
205
  * @param {object} schema - app specific schema that potentially gets enhanced
232
206
  * @param {EntityType} entityType - current entity type
233
207
  * @param {string} entitySetName - entity set of the actual (object) page
234
208
  * @param {SapUiAppPageV4[]} pages - list of all pages
235
- * @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
236
209
  */
237
- function addRelatedFacetKeysType(schema, entityType, entitySetName, pages, oDataServiceAVT, logger) {
210
+ function addRelatedFacetKeysType(generateParameters, schema, entityType, entitySetName, pages) {
238
211
  Object.keys(pages).forEach((element) => {
239
212
  if (pages[element].options &&
240
213
  pages[element].options.settings &&
241
214
  pages[element].options.settings.entitySet === entitySetName &&
242
215
  pages[element].name === v4_1.FE_TEMPLATE_V4_OBJECT_PAGE) {
243
216
  // Find sections from annotation
244
- const facetSections = common_2.getObjectPageFacetSection(entityType, oDataServiceAVT, logger);
217
+ const facetSections = common_2.getObjectPageFacetSection(entityType, generateParameters.serviceAVT, generateParameters.logger);
245
218
  // Find custom sections ids from manifest
246
219
  const page = pages[element];
247
220
  if (page.options &&
@@ -268,27 +241,43 @@ function addRelatedFacetKeysType(schema, entityType, entitySetName, pages, oData
268
241
  }
269
242
  });
270
243
  }
244
+ /**
245
+ * Add Object Page Header to app-specific schema
246
+ *
247
+ * @param {object} appSchema Schema of the app
248
+ * @param {EntityType} entityType - current entity type
249
+ * @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
250
+ * @param entitySet - current entity set
251
+ * @param manifest - manifest.json of the app
252
+ * @param {ExtensionLogger} logger - Logger class for logging messages
253
+ */
254
+ function addHeader(generateParameters, appSchema, entityType, entitySet, pages) {
255
+ common_2.addCommonHeaderSchema(appSchema, entityType);
256
+ // Add header actions
257
+ common_2.addHeaderActions(appSchema, entityType, generateParameters.serviceAVT, addHeaderActionCallBackV4);
258
+ // Add header sections
259
+ appSchema['definitions']['HeaderSections']['annotationPath'] = `/${entitySet.entityType.fullyQualifiedName}/@${"com.sap.vocabularies.UI.v1.HeaderFacets" /* HeaderFacets */}`;
260
+ addHeaderSections(generateParameters, appSchema, entityType, entitySet.name, pages);
261
+ }
271
262
  /**
272
263
  * Generates an app specific schema out of the generic schema.
273
264
  * Generic types are replaced by information from the app specific annotations.
265
+ * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
274
266
  * @param genericSchema - generic JSON schema of an object page
275
267
  * @param entityTypeName - the base entity type of the given page
276
- * @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
277
- * @param manifest - manifest.json of the app
278
- * @param {ExtensionLogger} logger - Logger class for logging messages
279
268
  *
280
269
  * @returns the app specific JSON schema
281
270
  */
282
- function generateObjectPageSchemaV4(genericSchema, entityTypeName, oDataServiceAVT, manifest, logger) {
283
- var _a, _b, _c, _d;
271
+ function generateObjectPageSchemaV4(generateParameters, genericSchema, entityTypeName) {
272
+ var _a;
284
273
  const appSchema = JSON.parse(JSON.stringify(genericSchema));
285
274
  // Change reference to generated sections
286
275
  appSchema['properties']['sections'] = {
287
276
  $ref: common_2.DEFINITION_LINK_PREFIX + 'Sections'
288
277
  };
289
- const entitySet = oDataServiceAVT === null || oDataServiceAVT === void 0 ? void 0 : oDataServiceAVT.entitySets.find((es) => es.entityType.name === entityTypeName);
278
+ const entitySet = (_a = generateParameters.serviceAVT.entitySets) === null || _a === void 0 ? void 0 : _a.find((es) => es.entityType.name === entityTypeName);
290
279
  if (!entitySet) {
291
- extensionLogger_1.log(logger, {
280
+ extensionLogger_1.log(generateParameters.logger, {
292
281
  severity: "error" /* Error */,
293
282
  message: i18next_1.default.t('NOENTITYSET4NAME', { entityType: entityTypeName }),
294
283
  location: {
@@ -297,8 +286,9 @@ function generateObjectPageSchemaV4(genericSchema, entityTypeName, oDataServiceA
297
286
  });
298
287
  }
299
288
  const entityType = entitySet === null || entitySet === void 0 ? void 0 : entitySet.entityType;
300
- if (!manifest[common_1.ManifestSection.ui5].routing || !manifest[common_1.ManifestSection.ui5].routing.targets) {
301
- extensionLogger_1.log(logger, {
289
+ if (!generateParameters.manifest[common_1.ManifestSection.ui5].routing ||
290
+ !generateParameters.manifest[common_1.ManifestSection.ui5].routing.targets) {
291
+ extensionLogger_1.log(generateParameters.logger, {
302
292
  severity: "error" /* Error */,
303
293
  message: i18next_1.default.t('NOROUTING'),
304
294
  location: {
@@ -315,18 +305,27 @@ function generateObjectPageSchemaV4(genericSchema, entityTypeName, oDataServiceA
315
305
  description: 'Sections'
316
306
  };
317
307
  if (entitySet) {
318
- // Add header actions
319
- addHeaderActions(appSchema, entityType, oDataServiceAVT);
320
- // Add annotation path to ObjectPageHeader
321
- appSchema['definitions']['ObjectPageHeader']['annotationPath'] = `/${entitySet.entityType.fullyQualifiedName}/@com.sap.vocabularies.UI.v1.HeaderInfo`;
322
- // Add header sections
323
- appSchema['definitions']['HeaderSections']['annotationPath'] = `/${entitySet.entityType.fullyQualifiedName}/@com.sap.vocabularies.UI.v1.HeaderFacets`;
324
- addHeaderSections(appSchema, entityType, entitySet.name, (_b = (_a = manifest[common_1.ManifestSection.ui5]) === null || _a === void 0 ? void 0 : _a.routing) === null || _b === void 0 ? void 0 : _b.targets, oDataServiceAVT, logger);
308
+ const pages = generateParameters.manifest[common_1.ManifestSection.ui5].routing.targets;
309
+ if (!pages) {
310
+ extensionLogger_1.log(generateParameters.logger, {
311
+ severity: "error" /* Error */,
312
+ message: i18next_1.default.t('NOPAGES', { appId: generateParameters.manifest['sap.app']['id'] }),
313
+ location: {
314
+ path: v4_1.MANIFESTPATH,
315
+ range: [common_1.ManifestSection.generic]
316
+ }
317
+ });
318
+ return appSchema;
319
+ }
320
+ // Add Header
321
+ addHeader(generateParameters, appSchema, entityType, entitySet, pages);
325
322
  // Add sections
326
- appSchema['definitions']['Sections']['annotationPath'] = `/${entitySet.entityType.fullyQualifiedName}/@com.sap.vocabularies.UI.v1.Facets`;
327
- addSections(appSchema, entityType, entitySet.name, (_d = (_c = manifest[common_1.ManifestSection.ui5]) === null || _c === void 0 ? void 0 : _c.routing) === null || _d === void 0 ? void 0 : _d.targets, oDataServiceAVT, logger);
323
+ appSchema['definitions']['Sections']['annotationPath'] = `/${entitySet.entityType.fullyQualifiedName}/@${"com.sap.vocabularies.UI.v1.Facets" /* Facets */}`;
324
+ addSections(generateParameters, appSchema, entityType, entitySet.name, pages);
328
325
  // Custom Section facets
329
- addRelatedFacetKeysType(appSchema, entityType, entitySet.name, manifest[common_1.ManifestSection.ui5].routing.targets, oDataServiceAVT, logger);
326
+ addRelatedFacetKeysType(generateParameters, appSchema, entityType, entitySet.name, pages);
327
+ // Add Footer (actions only)
328
+ common_2.addFooterActions(appSchema, entityType, generateParameters.serviceAVT);
330
329
  }
331
330
  // Delete generic definitions from schema
332
331
  delete appSchema['definitions']['GenericSections'];