@sap/ux-specification 1.90.12 → 1.90.13
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.
- package/CHANGELOG.md +38 -4
- package/dist/documentation/v2/v2-AnalyticalListPage.html +1 -1
- package/dist/documentation/v2/v2-ApplicationV2.html +1 -1
- package/dist/documentation/v2/v2-ListReport.html +1 -1
- package/dist/documentation/v2/v2-ObjectPage.html +1 -1
- package/dist/documentation/v2/v2-OverviewPage.html +1 -1
- package/dist/documentation/v4/v4-AnalyticalListPage.html +1 -1
- package/dist/documentation/v4/v4-ApplicationV4.html +1 -1
- package/dist/documentation/v4/v4-ListReport.html +1 -1
- package/dist/documentation/v4/v4-ObjectPage.html +1 -1
- package/dist/index-min.js +1 -1
- package/dist/schemas/v2/AnalyticalListPageConfig.json +86 -11
- package/dist/schemas/v2/ListReportConfig.json +86 -11
- package/dist/schemas/v2/ObjectPageConfig.json +265 -53
- package/dist/schemas/v2/OverviewPageConfig.json +0 -28
- package/dist/schemas/v4/ObjectPageConfig.json +22 -0
- package/dist/specification/v2/index-min.js +1 -1
- package/dist/src/apiTypes.d.ts +8 -0
- package/dist/src/specification/v2/controls/Card.d.ts +0 -8
- package/dist/src/specification/v2/controls/Card.js.map +1 -1
- package/dist/src/specification/v2/controls/{DataField.d.ts → Field.d.ts} +2 -2
- package/dist/src/specification/v2/controls/{DataField.js → Field.js} +1 -1
- package/dist/src/specification/v2/controls/Field.js.map +1 -0
- package/dist/src/specification/v2/controls/FormAction.d.ts +43 -0
- package/dist/src/specification/v2/controls/FormAction.js +20 -0
- package/dist/src/specification/v2/controls/FormAction.js.map +1 -0
- package/dist/src/specification/v2/controls/ObjectPageFooter.d.ts +11 -0
- package/dist/src/specification/v2/controls/ObjectPageFooter.js +3 -0
- package/dist/src/specification/v2/controls/ObjectPageFooter.js.map +1 -0
- package/dist/src/specification/v2/controls/ObjectPageForm.d.ts +4 -5
- package/dist/src/specification/v2/controls/ObjectPageHeaderAction.d.ts +20 -0
- package/dist/src/specification/v2/controls/ObjectPageSection.d.ts +25 -15
- package/dist/src/specification/v2/controls/ObjectPageSection.js.map +1 -1
- package/dist/src/specification/v2/controls/ObjectPageTable.d.ts +8 -4
- package/dist/src/specification/v2/controls/ObjectPageTable.js.map +1 -1
- package/dist/src/specification/v2/controls/Table.d.ts +4 -3
- package/dist/src/specification/v2/controls/ToolBar.d.ts +2 -6
- package/dist/src/specification/v2/controls/index.d.ts +4 -1
- package/dist/src/specification/v2/controls/index.js +1 -0
- package/dist/src/specification/v2/controls/index.js.map +1 -1
- package/dist/src/specification/v2/pages/ObjectPageConfig.d.ts +2 -1
- package/dist/src/specification/v4/controls/ObjectPageFooter.d.ts +11 -0
- package/dist/src/specification/v4/controls/ObjectPageFooter.js +3 -0
- package/dist/src/specification/v4/controls/ObjectPageFooter.js.map +1 -0
- package/dist/src/specification/v4/controls/index.d.ts +1 -0
- package/dist/src/specification/v4/pages/ObjectPageConfig.d.ts +2 -1
- package/dist/src/specification/v4/webapp/manifest/sapUi5.d.ts +2 -1
- package/dist/src/specification/v4/webapp/manifest/sapUi5.js.map +1 -1
- package/dist/src/sync/common/decoration/control.js +34 -19
- package/dist/src/sync/common/decoration/control.js.map +1 -1
- package/dist/src/sync/common/generate/objectPage.d.ts +31 -2
- package/dist/src/sync/common/generate/objectPage.js +185 -20
- package/dist/src/sync/common/generate/objectPage.js.map +1 -1
- package/dist/src/sync/common/import/utils.d.ts +6 -0
- package/dist/src/sync/common/import/utils.js +21 -0
- package/dist/src/sync/common/import/utils.js.map +1 -1
- package/dist/src/sync/common/importProject.js +62 -60
- package/dist/src/sync/common/importProject.js.map +1 -1
- package/dist/src/sync/common/types.d.ts +5 -2
- package/dist/src/sync/common/types.js +4 -0
- package/dist/src/sync/common/types.js.map +1 -1
- package/dist/src/sync/common/utils.d.ts +4 -3
- package/dist/src/sync/common/utils.js +76 -81
- package/dist/src/sync/common/utils.js.map +1 -1
- package/dist/src/sync/v2/application.d.ts +1 -0
- package/dist/src/sync/v2/application.js +3 -0
- package/dist/src/sync/v2/application.js.map +1 -1
- package/dist/src/sync/v2/export/controls/Card.d.ts +0 -2
- package/dist/src/sync/v2/export/controls/Card.js +0 -14
- package/dist/src/sync/v2/export/controls/Card.js.map +1 -1
- package/dist/src/sync/v2/export/controls/Field.d.ts +4 -0
- package/dist/src/sync/v2/export/controls/{DataField.js → Field.js} +6 -6
- package/dist/src/sync/v2/export/controls/Field.js.map +1 -0
- package/dist/src/sync/v2/export/controls/FilterBar.d.ts +1 -2
- package/dist/src/sync/v2/export/controls/FilterBar.js +2 -4
- package/dist/src/sync/v2/export/controls/FilterBar.js.map +1 -1
- package/dist/src/sync/v2/export/controls/FormAction.d.ts +15 -0
- package/dist/src/sync/v2/export/controls/FormAction.js +133 -0
- package/dist/src/sync/v2/export/controls/FormAction.js.map +1 -0
- package/dist/src/sync/v2/export/controls/ObjectPageChart.d.ts +4 -1
- package/dist/src/sync/v2/export/controls/ObjectPageChart.js +13 -0
- package/dist/src/sync/v2/export/controls/ObjectPageChart.js.map +1 -1
- package/dist/src/sync/v2/export/controls/ObjectPageHeaderAction.d.ts +5 -1
- package/dist/src/sync/v2/export/controls/ObjectPageHeaderAction.js +42 -3
- package/dist/src/sync/v2/export/controls/ObjectPageHeaderAction.js.map +1 -1
- package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.d.ts +32 -0
- package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js +144 -0
- package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js.map +1 -0
- package/dist/src/sync/v2/export/controls/ObjectPageTable.d.ts +5 -4
- package/dist/src/sync/v2/export/controls/ObjectPageTable.js +16 -4
- package/dist/src/sync/v2/export/controls/ObjectPageTable.js.map +1 -1
- package/dist/src/sync/v2/export/controls/Table.d.ts +12 -4
- package/dist/src/sync/v2/export/controls/Table.js +84 -37
- package/dist/src/sync/v2/export/controls/Table.js.map +1 -1
- package/dist/src/sync/v2/export/controls/index.d.ts +3 -1
- package/dist/src/sync/v2/export/controls/index.js +3 -1
- package/dist/src/sync/v2/export/controls/index.js.map +1 -1
- package/dist/src/sync/v2/export/export.js +125 -86
- package/dist/src/sync/v2/export/export.js.map +1 -1
- package/dist/src/sync/v2/generate/analyticalListReport.d.ts +3 -9
- package/dist/src/sync/v2/generate/analyticalListReport.js +12 -13
- package/dist/src/sync/v2/generate/analyticalListReport.js.map +1 -1
- package/dist/src/sync/v2/generate/generate.js +28 -6
- package/dist/src/sync/v2/generate/generate.js.map +1 -1
- package/dist/src/sync/v2/generate/listReport.d.ts +3 -10
- package/dist/src/sync/v2/generate/listReport.js +7 -12
- package/dist/src/sync/v2/generate/listReport.js.map +1 -1
- package/dist/src/sync/v2/generate/objectPage.d.ts +3 -10
- package/dist/src/sync/v2/generate/objectPage.js +199 -151
- package/dist/src/sync/v2/generate/objectPage.js.map +1 -1
- package/dist/src/sync/v2/generate/utils.d.ts +1 -2
- package/dist/src/sync/v2/generate/utils.js +5 -0
- package/dist/src/sync/v2/generate/utils.js.map +1 -1
- package/dist/src/sync/v2/import/pages/objectPage.js +162 -88
- package/dist/src/sync/v2/import/pages/objectPage.js.map +1 -1
- package/dist/src/sync/v2/types.d.ts +12 -0
- package/dist/src/sync/v2/types.js +11 -0
- package/dist/src/sync/v2/types.js.map +1 -1
- package/dist/src/sync/v4/application.js +10 -10
- package/dist/src/sync/v4/application.js.map +1 -1
- package/dist/src/sync/v4/export/export.js +156 -134
- package/dist/src/sync/v4/export/export.js.map +1 -1
- package/dist/src/sync/v4/export/manifest.js +96 -76
- package/dist/src/sync/v4/export/manifest.js.map +1 -1
- package/dist/src/sync/v4/generate/generate.js +10 -2
- package/dist/src/sync/v4/generate/generate.js.map +1 -1
- package/dist/src/sync/v4/generate/objectPage.d.ts +3 -6
- package/dist/src/sync/v4/generate/objectPage.js +87 -94
- package/dist/src/sync/v4/generate/objectPage.js.map +1 -1
- package/dist/src/sync/v4/import/app/appProvider.js +108 -80
- package/dist/src/sync/v4/import/app/appProvider.js.map +1 -1
- package/dist/src/sync/v4/import/fragment.js +41 -46
- package/dist/src/sync/v4/import/fragment.js.map +1 -1
- package/dist/src/sync/v4/utils/utils.js +1 -1
- package/dist/src/sync/v4/utils/utils.js.map +1 -1
- package/package.json +4 -5
- package/dist/src/specification/v2/controls/DataField.js.map +0 -1
- package/dist/src/sync/v2/export/controls/DataField.d.ts +0 -4
- 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
|
|
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
|
-
|
|
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 ((
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":";;
|
|
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
|
|
19
|
-
|
|
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;
|
|
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 {
|
|
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
|
|
11
|
+
export declare function generateObjectPageSchemaV4(generateParameters: GenerateAppSchemaParameters, genericSchema: object, entityTypeName: string): object;
|
|
@@ -10,62 +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
|
-
*
|
|
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 {
|
|
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
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
function addHeaderActionCallBackV4(entityType, appSchema, actionAnnotation, headerActions, oDataServiceAVT) {
|
|
20
|
+
return (item, index) => {
|
|
21
|
+
if ((!item['Determining'] && item.$Type === 'com.sap.vocabularies.UI.v1.DataFieldForAction') ||
|
|
22
|
+
item.$Type === 'com.sap.vocabularies.UI.v1.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<${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
|
+
}
|
|
27
39
|
};
|
|
28
|
-
const headerActions = (appSchema['definitions']['HeaderActions'] = {
|
|
29
|
-
type: 'object',
|
|
30
|
-
properties: {},
|
|
31
|
-
description: 'Actions',
|
|
32
|
-
additionalProperties: false,
|
|
33
|
-
isViewNode: true
|
|
34
|
-
});
|
|
35
|
-
const alias = common_2.findAlias(v4_1.UIVOCABULARY, oDataServiceAVT);
|
|
36
|
-
const actionAnnotation = alias &&
|
|
37
|
-
entityType.annotations &&
|
|
38
|
-
entityType.annotations[alias] &&
|
|
39
|
-
entityType.annotations[alias].Identification;
|
|
40
|
-
if (actionAnnotation) {
|
|
41
|
-
headerActions['annotationPath'] =
|
|
42
|
-
'/' +
|
|
43
|
-
actionAnnotation.fullyQualifiedName.replace('@com.sap.vocabularies.UI.v1.Identification', '/@com.sap.vocabularies.UI.v1.Identification');
|
|
44
|
-
actionAnnotation.forEach((item, index) => {
|
|
45
|
-
if ((!item['Determining'] && item.$Type === 'com.sap.vocabularies.UI.v1.DataFieldForAction') ||
|
|
46
|
-
item.$Type === 'com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation') {
|
|
47
|
-
const { actionName, actionId } = common_2.getActionNameAndId(item.Action, entityType);
|
|
48
|
-
const description = item.Label || actionName;
|
|
49
|
-
const actionDefinitionKey = `HeaderAction<${actionId}>`;
|
|
50
|
-
appSchema['definitions'][actionDefinitionKey] = {
|
|
51
|
-
isViewNode: true,
|
|
52
|
-
type: 'object',
|
|
53
|
-
properties: {},
|
|
54
|
-
description: description,
|
|
55
|
-
annotationPath: `${headerActions['annotationPath']}/${index}`
|
|
56
|
-
};
|
|
57
|
-
headerActions.properties[actionId] = {
|
|
58
|
-
$ref: `${common_2.DEFINITION_LINK_PREFIX}${actionDefinitionKey}`
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
headerActions['annotationPath'] = `/${entityType.fullyQualifiedName}/@com.sap.vocabularies.UI.v1.Identification`;
|
|
65
|
-
}
|
|
66
|
-
delete appSchema['definitions']['GenericActions'];
|
|
67
|
-
delete appSchema['definitions']['ObjectPageHeader<GenericActions>'];
|
|
68
|
-
delete appSchema['definitions']['HeaderAction'];
|
|
69
40
|
}
|
|
70
41
|
/**
|
|
71
42
|
* Adds definitions for line items in object page sections to the app schema
|
|
@@ -97,7 +68,7 @@ function handleLineItem(facetId, appSchema, facet, facets, oDataServiceAVT) {
|
|
|
97
68
|
appSchema['definitions'][idForTable].properties['toolBar'].$ref = `${common_2.DEFINITION_LINK_PREFIX}ObjectPageToolBar<${facetId}>`;
|
|
98
69
|
for (const facetKey in facets) {
|
|
99
70
|
if (facets[facetKey].base === 'LineItem' && facetKey.includes(navigationProperty)) {
|
|
100
|
-
utils_1.addLineItemsType(appSchema, facets[facetKey]
|
|
71
|
+
utils_1.addLineItemsType(appSchema, facets[facetKey].target, facets[facetKey].entityType, oDataServiceAVT, 'ObjectPageTableColumn', facetId);
|
|
101
72
|
}
|
|
102
73
|
}
|
|
103
74
|
}
|
|
@@ -145,8 +116,8 @@ function addSection(facets, facetKey, sections, appSchema, oDataServiceAVT, sect
|
|
|
145
116
|
common_2.addSectionTitleAndDescription(facet, appSchema['definitions'][formDefinitionKey], facetKey);
|
|
146
117
|
appSchema['definitions'][formDefinitionKey]['annotationPath'] = facet.annotationPath;
|
|
147
118
|
appSchema['definitions'][formDefinitionKey]['isViewNode'] = true;
|
|
148
|
-
const withActions = facet.base === common_2.FacetBase.Identification ? false : true;
|
|
149
|
-
common_2.handleForm(sectionPrefix, facet, appSchema['definitions'][formDefinitionKey], appSchema,
|
|
119
|
+
const withActions = facet.base === common_2.FacetBase.Identification && facetKey.indexOf('#') < 0 ? false : true;
|
|
120
|
+
common_2.handleForm(sectionPrefix, facet, appSchema['definitions'][formDefinitionKey], appSchema, common_1.FioriElementsVersion.v4, withActions);
|
|
150
121
|
}
|
|
151
122
|
else if (facet.base === common_2.FacetBase.DataPoint ||
|
|
152
123
|
facet.base === common_2.FacetBase.Address ||
|
|
@@ -166,15 +137,15 @@ function addSection(facets, facetKey, sections, appSchema, oDataServiceAVT, sect
|
|
|
166
137
|
}
|
|
167
138
|
/**
|
|
168
139
|
* Derives the sections from the UI.Facets annotation and adds them to the schema
|
|
140
|
+
* @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
|
|
169
141
|
* @param {object} appSchema - application specific JSON schema
|
|
170
|
-
* @param {
|
|
142
|
+
* @param {EntityType} entityType - current entity type
|
|
143
|
+
* @param {string} entitySetName - name of the current entity set
|
|
171
144
|
* @param pages {SapUiAppPageV4[]} - list of (manifest) pages
|
|
172
|
-
* @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
|
|
173
|
-
* @param {ExtensionLogger} logger - Logger class for logging messages
|
|
174
145
|
*/
|
|
175
|
-
function addSections(appSchema, entityType, entitySetName, pages
|
|
146
|
+
function addSections(generateParameters, appSchema, entityType, entitySetName, pages) {
|
|
176
147
|
// Get facet annotations
|
|
177
|
-
const facets = common_2.getObjectPageFacets(entityType,
|
|
148
|
+
const facets = common_2.getObjectPageFacets(entityType, generateParameters.serviceAVT, common_1.FioriElementsVersion.v4, generateParameters.logger);
|
|
178
149
|
if (!facets) {
|
|
179
150
|
delete appSchema['definitions']['ObjectPageSubSections'];
|
|
180
151
|
return;
|
|
@@ -185,7 +156,7 @@ function addSections(appSchema, entityType, entitySetName, pages, oDataServiceAV
|
|
|
185
156
|
if (((_b = (_a = pages[element].options) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.entitySet) === entitySetName &&
|
|
186
157
|
pages[element].name === v4_1.FE_TEMPLATE_V4_OBJECT_PAGE) {
|
|
187
158
|
for (const facetKey in facets) {
|
|
188
|
-
addSection(facets, facetKey, sections, appSchema,
|
|
159
|
+
addSection(facets, facetKey, sections, appSchema, generateParameters.serviceAVT, v4_1.SectionType.Section);
|
|
189
160
|
}
|
|
190
161
|
}
|
|
191
162
|
});
|
|
@@ -196,15 +167,15 @@ function addSections(appSchema, entityType, entitySetName, pages, oDataServiceAV
|
|
|
196
167
|
}
|
|
197
168
|
/**
|
|
198
169
|
* Derives the header sections from the UI.HeaderFacets annotation and adds them to the schema
|
|
170
|
+
* @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
|
|
199
171
|
* @param {object} appSchema - application specific JSON schema
|
|
200
|
-
* @param {
|
|
172
|
+
* @param {EntityType} entityType - current entity type
|
|
173
|
+
* @param {string} entitySetName - name of the current entity set
|
|
201
174
|
* @param pages {SapUiAppPageV4[]} - list of (manifest) pages
|
|
202
|
-
* @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
|
|
203
|
-
* @param {ExtensionLogger} logger - Logger class for logging messages
|
|
204
175
|
*/
|
|
205
|
-
function addHeaderSections(appSchema, entityType, entitySetName, pages
|
|
176
|
+
function addHeaderSections(generateParameters, appSchema, entityType, entitySetName, pages) {
|
|
206
177
|
// Get facet annotations
|
|
207
|
-
const facets = common_2.getObjectPageHeaderFacets(entityType,
|
|
178
|
+
const facets = common_2.getObjectPageHeaderFacets(entityType, generateParameters.serviceAVT, common_1.FioriElementsVersion.v4, generateParameters.logger);
|
|
208
179
|
const sections = appSchema['definitions']['HeaderSections'];
|
|
209
180
|
sections.properties = {};
|
|
210
181
|
sections.additionalProperties = false;
|
|
@@ -216,14 +187,10 @@ function addHeaderSections(appSchema, entityType, entitySetName, pages, oDataSer
|
|
|
216
187
|
if (((_b = (_a = pages[element].options) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.entitySet) === entitySetName &&
|
|
217
188
|
pages[element].name === v4_1.FE_TEMPLATE_V4_OBJECT_PAGE) {
|
|
218
189
|
for (const facetKey in facets) {
|
|
219
|
-
addSection(facets, facetKey, sections, appSchema,
|
|
190
|
+
addSection(facets, facetKey, sections, appSchema, generateParameters.serviceAVT, v4_1.SectionType.HeaderSection);
|
|
220
191
|
}
|
|
221
192
|
}
|
|
222
193
|
});
|
|
223
|
-
// Custom sections as part of sections - still open if can be added the same way
|
|
224
|
-
/*if (appSchema['definitions']['CustomSections']) {
|
|
225
|
-
sections.properties = { ...sections.properties, ...appSchema['definitions']['CustomSections'].properties };
|
|
226
|
-
}*/
|
|
227
194
|
//delete generic definitions
|
|
228
195
|
delete appSchema['definitions']['ObjectPageHeaderSectionForm'];
|
|
229
196
|
delete appSchema['definitions']['ObjectPageHeaderSectionChart'];
|
|
@@ -233,20 +200,20 @@ function addHeaderSections(appSchema, entityType, entitySetName, pages, oDataSer
|
|
|
233
200
|
}
|
|
234
201
|
/**
|
|
235
202
|
* Adds the related facets keys 'enum' to the app schema
|
|
203
|
+
* @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
|
|
236
204
|
* @param {object} schema - app specific schema that potentially gets enhanced
|
|
237
205
|
* @param {EntityType} entityType - current entity type
|
|
238
206
|
* @param {string} entitySetName - entity set of the actual (object) page
|
|
239
207
|
* @param {SapUiAppPageV4[]} pages - list of all pages
|
|
240
|
-
* @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
|
|
241
208
|
*/
|
|
242
|
-
function addRelatedFacetKeysType(schema, entityType, entitySetName, pages
|
|
209
|
+
function addRelatedFacetKeysType(generateParameters, schema, entityType, entitySetName, pages) {
|
|
243
210
|
Object.keys(pages).forEach((element) => {
|
|
244
211
|
if (pages[element].options &&
|
|
245
212
|
pages[element].options.settings &&
|
|
246
213
|
pages[element].options.settings.entitySet === entitySetName &&
|
|
247
214
|
pages[element].name === v4_1.FE_TEMPLATE_V4_OBJECT_PAGE) {
|
|
248
215
|
// Find sections from annotation
|
|
249
|
-
const facetSections = common_2.getObjectPageFacetSection(entityType,
|
|
216
|
+
const facetSections = common_2.getObjectPageFacetSection(entityType, generateParameters.serviceAVT, generateParameters.logger);
|
|
250
217
|
// Find custom sections ids from manifest
|
|
251
218
|
const page = pages[element];
|
|
252
219
|
if (page.options &&
|
|
@@ -273,27 +240,43 @@ function addRelatedFacetKeysType(schema, entityType, entitySetName, pages, oData
|
|
|
273
240
|
}
|
|
274
241
|
});
|
|
275
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Add Object Page Header to app-specific schema
|
|
245
|
+
*
|
|
246
|
+
* @param {object} appSchema Schema of the app
|
|
247
|
+
* @param {EntityType} entityType - current entity type
|
|
248
|
+
* @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
|
|
249
|
+
* @param entitySet - current entity set
|
|
250
|
+
* @param manifest - manifest.json of the app
|
|
251
|
+
* @param {ExtensionLogger} logger - Logger class for logging messages
|
|
252
|
+
*/
|
|
253
|
+
function addHeader(generateParameters, appSchema, entityType, entitySet, pages) {
|
|
254
|
+
common_2.addCommonHeaderSchema(appSchema, entityType);
|
|
255
|
+
// Add header actions
|
|
256
|
+
common_2.addHeaderActions(appSchema, entityType, generateParameters.serviceAVT, addHeaderActionCallBackV4);
|
|
257
|
+
// Add header sections
|
|
258
|
+
appSchema['definitions']['HeaderSections']['annotationPath'] = `/${entitySet.entityType.fullyQualifiedName}/@${"com.sap.vocabularies.UI.v1.HeaderFacets" /* HeaderFacets */}`;
|
|
259
|
+
addHeaderSections(generateParameters, appSchema, entityType, entitySet.name, pages);
|
|
260
|
+
}
|
|
276
261
|
/**
|
|
277
262
|
* Generates an app specific schema out of the generic schema.
|
|
278
263
|
* Generic types are replaced by information from the app specific annotations.
|
|
264
|
+
* @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
|
|
279
265
|
* @param genericSchema - generic JSON schema of an object page
|
|
280
266
|
* @param entityTypeName - the base entity type of the given page
|
|
281
|
-
* @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
|
|
282
|
-
* @param manifest - manifest.json of the app
|
|
283
|
-
* @param {ExtensionLogger} logger - Logger class for logging messages
|
|
284
267
|
*
|
|
285
268
|
* @returns the app specific JSON schema
|
|
286
269
|
*/
|
|
287
|
-
function generateObjectPageSchemaV4(genericSchema, entityTypeName
|
|
288
|
-
var _a
|
|
270
|
+
function generateObjectPageSchemaV4(generateParameters, genericSchema, entityTypeName) {
|
|
271
|
+
var _a;
|
|
289
272
|
const appSchema = JSON.parse(JSON.stringify(genericSchema));
|
|
290
273
|
// Change reference to generated sections
|
|
291
274
|
appSchema['properties']['sections'] = {
|
|
292
275
|
$ref: common_2.DEFINITION_LINK_PREFIX + 'Sections'
|
|
293
276
|
};
|
|
294
|
-
const entitySet =
|
|
277
|
+
const entitySet = (_a = generateParameters.serviceAVT.entitySets) === null || _a === void 0 ? void 0 : _a.find((es) => es.entityType.name === entityTypeName);
|
|
295
278
|
if (!entitySet) {
|
|
296
|
-
extensionLogger_1.log(logger, {
|
|
279
|
+
extensionLogger_1.log(generateParameters.logger, {
|
|
297
280
|
severity: "error" /* Error */,
|
|
298
281
|
message: i18next_1.default.t('NOENTITYSET4NAME', { entityType: entityTypeName }),
|
|
299
282
|
location: {
|
|
@@ -302,8 +285,9 @@ function generateObjectPageSchemaV4(genericSchema, entityTypeName, oDataServiceA
|
|
|
302
285
|
});
|
|
303
286
|
}
|
|
304
287
|
const entityType = entitySet === null || entitySet === void 0 ? void 0 : entitySet.entityType;
|
|
305
|
-
if (!manifest[common_1.ManifestSection.ui5].routing ||
|
|
306
|
-
|
|
288
|
+
if (!generateParameters.manifest[common_1.ManifestSection.ui5].routing ||
|
|
289
|
+
!generateParameters.manifest[common_1.ManifestSection.ui5].routing.targets) {
|
|
290
|
+
extensionLogger_1.log(generateParameters.logger, {
|
|
307
291
|
severity: "error" /* Error */,
|
|
308
292
|
message: i18next_1.default.t('NOROUTING'),
|
|
309
293
|
location: {
|
|
@@ -320,18 +304,27 @@ function generateObjectPageSchemaV4(genericSchema, entityTypeName, oDataServiceA
|
|
|
320
304
|
description: 'Sections'
|
|
321
305
|
};
|
|
322
306
|
if (entitySet) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
307
|
+
const pages = generateParameters.manifest[common_1.ManifestSection.ui5].routing.targets;
|
|
308
|
+
if (!pages) {
|
|
309
|
+
extensionLogger_1.log(generateParameters.logger, {
|
|
310
|
+
severity: "error" /* Error */,
|
|
311
|
+
message: i18next_1.default.t('NOPAGES', { appId: generateParameters.manifest['sap.app']['id'] }),
|
|
312
|
+
location: {
|
|
313
|
+
path: v4_1.MANIFESTPATH,
|
|
314
|
+
range: [common_1.ManifestSection.generic]
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
return appSchema;
|
|
318
|
+
}
|
|
319
|
+
// Add Header
|
|
320
|
+
addHeader(generateParameters, appSchema, entityType, entitySet, pages);
|
|
330
321
|
// Add sections
|
|
331
|
-
appSchema['definitions']['Sections']['annotationPath'] = `/${entitySet.entityType.fullyQualifiedName}
|
|
332
|
-
addSections(appSchema, entityType, entitySet.name,
|
|
322
|
+
appSchema['definitions']['Sections']['annotationPath'] = `/${entitySet.entityType.fullyQualifiedName}/@${"com.sap.vocabularies.UI.v1.Facets" /* Facets */}`;
|
|
323
|
+
addSections(generateParameters, appSchema, entityType, entitySet.name, pages);
|
|
333
324
|
// Custom Section facets
|
|
334
|
-
addRelatedFacetKeysType(appSchema, entityType, entitySet.name,
|
|
325
|
+
addRelatedFacetKeysType(generateParameters, appSchema, entityType, entitySet.name, pages);
|
|
326
|
+
// Add Footer (actions only)
|
|
327
|
+
common_2.addFooterActions(appSchema, entityType, generateParameters.serviceAVT);
|
|
335
328
|
}
|
|
336
329
|
// Delete generic definitions from schema
|
|
337
330
|
delete appSchema['definitions']['GenericSections'];
|