@sap/ux-specification 1.84.35 → 1.84.38
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 +69 -24
- 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-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 +9 -5
- package/dist/schemas/v2/ListReportConfig.json +11 -7
- package/dist/schemas/v2/ObjectPageConfig.json +195 -7
- package/dist/schemas/v4/ListReportConfig.json +34 -4
- package/dist/schemas/v4/ObjectPageConfig.json +36 -0
- package/dist/specification/v2/index-min.js +1 -1
- package/dist/src/apiTypes.d.ts +2 -1
- package/dist/src/project.d.ts +1 -0
- package/dist/src/project.js +13 -5
- package/dist/src/project.js.map +1 -1
- package/dist/src/specification/v2/controls/ObjectPageSection.d.ts +40 -7
- package/dist/src/specification/v2/controls/ObjectPageSection.js.map +1 -1
- package/dist/src/specification/v2/controls/ObjectPageTable.d.ts +2 -3
- package/dist/src/specification/v2/controls/Table.d.ts +5 -2
- package/dist/src/specification/v2/controls/Table.js +5 -0
- package/dist/src/specification/v2/controls/Table.js.map +1 -1
- package/dist/src/specification/v4/controls/ObjectPageSection.d.ts +22 -1
- package/dist/src/specification/v4/controls/ObjectPageSection.js.map +1 -1
- package/dist/src/specification/v4/controls/ObjectPageTable.d.ts +0 -14
- package/dist/src/specification/v4/controls/Table.d.ts +12 -29
- package/dist/src/specification/v4/pages/ListReportConfig.d.ts +6 -1
- package/dist/src/specification/v4/webapp/manifest/sapUiPageV4.d.ts +1 -0
- package/dist/src/specification/v4/webapp/manifest/sapUiPageV4.js.map +1 -1
- package/dist/src/sync/common/decoration/control.d.ts +1 -1
- package/dist/src/sync/common/decoration/control.js +27 -22
- package/dist/src/sync/common/decoration/control.js.map +1 -1
- package/dist/src/sync/common/generate/objectPage.d.ts +5 -4
- package/dist/src/sync/common/generate/objectPage.js +67 -66
- package/dist/src/sync/common/generate/objectPage.js.map +1 -1
- package/dist/src/sync/common/generate/utils.d.ts +53 -12
- package/dist/src/sync/common/generate/utils.js +139 -46
- package/dist/src/sync/common/generate/utils.js.map +1 -1
- package/dist/src/sync/common/import/utils.d.ts +3 -2
- package/dist/src/sync/common/import/utils.js +11 -6
- package/dist/src/sync/common/import/utils.js.map +1 -1
- package/dist/src/sync/common/importProject.js +20 -19
- package/dist/src/sync/common/importProject.js.map +1 -1
- package/dist/src/sync/common/types.d.ts +105 -26
- package/dist/src/sync/common/types.js +101 -22
- package/dist/src/sync/common/types.js.map +1 -1
- package/dist/src/sync/common/utils.d.ts +17 -12
- package/dist/src/sync/common/utils.js +132 -88
- package/dist/src/sync/common/utils.js.map +1 -1
- package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.js +1 -1
- package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.js.map +1 -1
- package/dist/src/sync/v2/export/controls/Fragment.js +2 -2
- package/dist/src/sync/v2/export/controls/Fragment.js.map +1 -1
- package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.d.ts +26 -14
- package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js +57 -5
- package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js.map +1 -1
- package/dist/src/sync/v2/export/controls/ObjectPageTable.d.ts +2 -3
- package/dist/src/sync/v2/export/controls/ObjectPageTable.js.map +1 -1
- package/dist/src/sync/v2/export/controls/Table.d.ts +3 -3
- package/dist/src/sync/v2/export/controls/Table.js +89 -48
- package/dist/src/sync/v2/export/controls/Table.js.map +1 -1
- package/dist/src/sync/v2/export/export.d.ts +0 -1
- package/dist/src/sync/v2/export/export.js +222 -160
- package/dist/src/sync/v2/export/export.js.map +1 -1
- package/dist/src/sync/v2/export/exportPage.js +35 -34
- package/dist/src/sync/v2/export/exportPage.js.map +1 -1
- package/dist/src/sync/v2/export/manifest.d.ts +22 -0
- package/dist/src/sync/v2/export/manifest.js +77 -36
- package/dist/src/sync/v2/export/manifest.js.map +1 -1
- package/dist/src/sync/v2/export/pages/OverviewPage.d.ts +1 -1
- package/dist/src/sync/v2/export/pages/OverviewPage.js +18 -16
- package/dist/src/sync/v2/export/pages/OverviewPage.js.map +1 -1
- package/dist/src/sync/v2/generate/analyticalListReport.js +10 -10
- package/dist/src/sync/v2/generate/analyticalListReport.js.map +1 -1
- package/dist/src/sync/v2/generate/listReport.js +1 -1
- package/dist/src/sync/v2/generate/listReport.js.map +1 -1
- package/dist/src/sync/v2/generate/objectPage.js +57 -43
- package/dist/src/sync/v2/generate/objectPage.js.map +1 -1
- package/dist/src/sync/v2/generate/utils.d.ts +5 -4
- package/dist/src/sync/v2/generate/utils.js +73 -69
- package/dist/src/sync/v2/generate/utils.js.map +1 -1
- package/dist/src/sync/v2/import/app/appProvider.d.ts +9 -0
- package/dist/src/sync/v2/import/app/appProvider.js +36 -13
- package/dist/src/sync/v2/import/app/appProvider.js.map +1 -1
- package/dist/src/sync/v2/import/app/ovpProvider.js +1 -1
- package/dist/src/sync/v2/import/app/ovpProvider.js.map +1 -1
- package/dist/src/sync/v2/import/common/index.js +6 -6
- package/dist/src/sync/v2/import/common/index.js.map +1 -1
- package/dist/src/sync/v2/import/pages/objectPage.js +93 -101
- package/dist/src/sync/v2/import/pages/objectPage.js.map +1 -1
- package/dist/src/sync/v2/import/pages/overviewPage.js +1 -1
- package/dist/src/sync/v2/import/pages/overviewPage.js.map +1 -1
- package/dist/src/sync/v2/import/utils.js +1 -1
- package/dist/src/sync/v2/import/utils.js.map +1 -1
- package/dist/src/sync/v2/types.d.ts +8 -3
- package/dist/src/sync/v2/types.js +6 -2
- package/dist/src/sync/v2/types.js.map +1 -1
- package/dist/src/sync/v4/application.d.ts +22 -10
- package/dist/src/sync/v4/application.js +68 -19
- package/dist/src/sync/v4/application.js.map +1 -1
- package/dist/src/sync/v4/export/controls/Table.d.ts +5 -0
- package/dist/src/sync/v4/export/controls/Table.js +91 -50
- package/dist/src/sync/v4/export/controls/Table.js.map +1 -1
- package/dist/src/sync/v4/export/controls/TableColumn.js +4 -4
- package/dist/src/sync/v4/export/controls/TableColumn.js.map +1 -1
- package/dist/src/sync/v4/export/export.js +287 -150
- package/dist/src/sync/v4/export/export.js.map +1 -1
- package/dist/src/sync/v4/export/manifest.js +25 -6
- package/dist/src/sync/v4/export/manifest.js.map +1 -1
- package/dist/src/sync/v4/export/pages/ListReport.d.ts +1 -0
- package/dist/src/sync/v4/export/pages/ListReport.js +7 -0
- package/dist/src/sync/v4/export/pages/ListReport.js.map +1 -1
- package/dist/src/sync/v4/export/pages/ObjectPage.js +3 -2
- package/dist/src/sync/v4/export/pages/ObjectPage.js.map +1 -1
- package/dist/src/sync/v4/export/types.d.ts +5 -5
- package/dist/src/sync/v4/generate/listReport.js +304 -156
- package/dist/src/sync/v4/generate/listReport.js.map +1 -1
- package/dist/src/sync/v4/generate/objectPage.d.ts +1 -1
- package/dist/src/sync/v4/generate/objectPage.js +288 -147
- package/dist/src/sync/v4/generate/objectPage.js.map +1 -1
- package/dist/src/sync/v4/import/app/appProvider.js +32 -22
- package/dist/src/sync/v4/import/app/appProvider.js.map +1 -1
- package/dist/src/sync/v4/import/pages/listReport.js +54 -37
- package/dist/src/sync/v4/import/pages/listReport.js.map +1 -1
- package/dist/src/sync/v4/import/pages/objectPage.d.ts +13 -0
- package/dist/src/sync/v4/import/pages/objectPage.js +64 -35
- package/dist/src/sync/v4/import/pages/objectPage.js.map +1 -1
- package/dist/src/sync/v4/import/utils.d.ts +2 -1
- package/dist/src/sync/v4/import/utils.js.map +1 -1
- package/dist/src/sync/v4/types.d.ts +2 -0
- package/dist/src/sync/v4/utils/StableIdHelper.js +13 -10
- package/dist/src/sync/v4/utils/StableIdHelper.js.map +1 -1
- package/dist/src/sync/v4/utils/utils.d.ts +7 -7
- package/dist/src/sync/v4/utils/utils.js +43 -32
- package/dist/src/sync/v4/utils/utils.js.map +1 -1
- package/dist/test/unit/export/manifest.test.d.ts +1 -0
- package/package.json +2 -2
|
@@ -56,73 +56,107 @@ function exportFlexChange(syncRule, transferParameters, ids, breadcrumbs, config
|
|
|
56
56
|
const flexChange = common_1.fillFlexChangeContent(configObject, syncRule, transferParameters.ui5Version, key, controlId);
|
|
57
57
|
transferParameters.exportResults.flexChanges.push(syncRule.flex.createFlexChange(flexChange, transferParameters.exportResults.manifest));
|
|
58
58
|
}
|
|
59
|
-
|
|
60
|
-
* Determines the target annotation that is relevant for the sync rule
|
|
61
|
-
* @param {string[]} ids - list of ids of parent elements
|
|
62
|
-
* @param {TransferParameterTypeV4} transferParameters - list of parameters passed from API
|
|
63
|
-
* @param { [key: string]: any } configObject - the given config.json, to be exported
|
|
64
|
-
* @returns { targetAnnotationEncoded, targetAnnotation, custom }
|
|
65
|
-
*/
|
|
66
|
-
function determineTargetAnnotation(ids, transferParameters, configObject) {
|
|
59
|
+
function determineTargetAnnotationOfTable(ids, transferParameters, configObject) {
|
|
67
60
|
var _a, _b, _c;
|
|
68
|
-
let
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
targetAnnotationEncoded = targetAnnotation =
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
//chart level
|
|
86
|
-
targetAnnotationEncoded = targetAnnotation = `@${(_b = configObject.chart) === null || _b === void 0 ? void 0 : _b.annotationPath}`;
|
|
61
|
+
let targetAnnotationEncoded = '@com.sap.vocabularies.UI.v1.LineItem';
|
|
62
|
+
let targetAnnotation = '@com.sap.vocabularies.UI.v1.LineItem';
|
|
63
|
+
if (ids.length > 1 && transferParameters.config['table'].annotationPath) {
|
|
64
|
+
const annoPath = (_a = transferParameters.appSchema.definitions[v4_1.DefinitionName.ALPTable]) === null || _a === void 0 ? void 0 : _a[v4_1.SchemaTag.annotationPath];
|
|
65
|
+
targetAnnotationEncoded = targetAnnotation = annoPath && annoPath.substr(annoPath.lastIndexOf('@'));
|
|
66
|
+
}
|
|
67
|
+
else if ((_b = configObject.table) === null || _b === void 0 ? void 0 : _b.annotationPath) {
|
|
68
|
+
//view definition
|
|
69
|
+
targetAnnotationEncoded = targetAnnotation = `@${configObject.table.annotationPath}`;
|
|
70
|
+
}
|
|
71
|
+
else if (ids[0] === v4_1.PropertyName.table && transferParameters.config[v4_1.PropertyName.defaultTemplateAnnotationPath]) {
|
|
72
|
+
const annotationPath = (_c = transferParameters.appSchema.definitions[v4_1.DefinitionName.TableSPV]) === null || _c === void 0 ? void 0 : _c[v4_1.SchemaTag.annotationPath];
|
|
73
|
+
if (annotationPath) {
|
|
74
|
+
const annotationPathArray = annotationPath.split('/');
|
|
75
|
+
targetAnnotationEncoded = targetAnnotation = annotationPathArray[annotationPathArray.length - 1];
|
|
87
76
|
}
|
|
88
77
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
targetAnnotationEncoded = ids[1] && ids[1].replace(/\//g, '::');
|
|
97
|
-
targetAnnotation = targetAnnotationEncoded.replace(/::/g, '/');
|
|
98
|
-
}
|
|
78
|
+
return { targetAnnotationEncoded, targetAnnotation };
|
|
79
|
+
}
|
|
80
|
+
function determineTargetAnnotationOfChart(ids, transferParameters, targetAnnotationEncoded, targetAnnotation, configObject) {
|
|
81
|
+
var _a, _b;
|
|
82
|
+
if (ids.length > 1) {
|
|
83
|
+
const annoPath = (_a = transferParameters.appSchema.definitions[v4_1.DefinitionName.ALPChart]) === null || _a === void 0 ? void 0 : _a[v4_1.SchemaTag.annotationPath];
|
|
84
|
+
targetAnnotationEncoded = targetAnnotation = annoPath && annoPath.substr(annoPath.lastIndexOf('@'));
|
|
99
85
|
}
|
|
100
|
-
else
|
|
101
|
-
//
|
|
102
|
-
targetAnnotation =
|
|
103
|
-
transferParameters.title && transferParameters.title.indexOf(v4_1.FacetTitlePrefix) > -1
|
|
104
|
-
? transferParameters.title.split(v4_1.FacetTitlePrefix)[1]
|
|
105
|
-
: targetAnnotationEncoded.replace(/::/g, '/');
|
|
86
|
+
else {
|
|
87
|
+
//chart level
|
|
88
|
+
targetAnnotationEncoded = targetAnnotation = `@${(_b = configObject.chart) === null || _b === void 0 ? void 0 : _b.annotationPath}`;
|
|
106
89
|
}
|
|
107
|
-
|
|
108
|
-
|
|
90
|
+
return { targetAnnotationEncoded, targetAnnotation };
|
|
91
|
+
}
|
|
92
|
+
function determineTargetAnnotationOfViews(transferParameters, ids, targetAnnotation, targetAnnotationEncoded) {
|
|
93
|
+
var _a, _b;
|
|
94
|
+
const parentDefinition = (_a = transferParameters.appSchema.definitions['MultiTableModeV4']) === null || _a === void 0 ? void 0 : _a.properties[ids[2]];
|
|
95
|
+
if (parentDefinition) {
|
|
109
96
|
if (ids.length === 3) {
|
|
110
97
|
//the parent definition comprises the annotation of the visualization of the (Selection)PresentationVariant.
|
|
111
98
|
targetAnnotation = targetAnnotationEncoded =
|
|
112
|
-
parentDefinition[
|
|
113
|
-
parentDefinition[
|
|
99
|
+
parentDefinition[v4_1.SchemaTag.annotationPath] &&
|
|
100
|
+
parentDefinition[v4_1.SchemaTag.annotationPath].substr(parentDefinition[v4_1.SchemaTag.annotationPath].lastIndexOf('@'));
|
|
114
101
|
}
|
|
115
102
|
else if (ids.length > 3) {
|
|
116
103
|
//the own definitio comprises the lineItem or chart annotation from he visualization
|
|
117
|
-
const ownDefinitionName = (
|
|
104
|
+
const ownDefinitionName = (_b = parentDefinition.$ref) === null || _b === void 0 ? void 0 : _b.split(utils_1.DEFINITION_LINK_PREFIX)[1];
|
|
118
105
|
const ownDefinition = ownDefinitionName && transferParameters.appSchema.definitions[ownDefinitionName];
|
|
119
|
-
const annotation = (ownDefinition === null || ownDefinition === void 0 ? void 0 : ownDefinition[
|
|
120
|
-
ownDefinition[
|
|
106
|
+
const annotation = (ownDefinition === null || ownDefinition === void 0 ? void 0 : ownDefinition[v4_1.SchemaTag.annotationPath]) &&
|
|
107
|
+
ownDefinition[v4_1.SchemaTag.annotationPath].substr(ownDefinition[v4_1.SchemaTag.annotationPath].lastIndexOf('@'));
|
|
121
108
|
targetAnnotation = targetAnnotationEncoded = ownDefinition['navigationProperty']
|
|
122
109
|
? `${ownDefinition['navigationProperty']}/${annotation}`
|
|
123
110
|
: annotation;
|
|
124
111
|
}
|
|
125
112
|
}
|
|
113
|
+
return { targetAnnotation, targetAnnotationEncoded };
|
|
114
|
+
}
|
|
115
|
+
function determineTargetAnnotationOfSections(ids, custom, targetAnnotationEncoded, targetAnnotation) {
|
|
116
|
+
if (ids[1] === 'custom' && ids[2] !== ids[ids.length - 1]) {
|
|
117
|
+
custom = true;
|
|
118
|
+
targetAnnotationEncoded = ids[2];
|
|
119
|
+
targetAnnotation = targetAnnotationEncoded && targetAnnotationEncoded.replace(/::/g, '/');
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
targetAnnotationEncoded = ids[1] && ids[1].replace(/\//g, '::');
|
|
123
|
+
targetAnnotation = targetAnnotationEncoded && targetAnnotationEncoded.replace(/::/g, '/');
|
|
124
|
+
}
|
|
125
|
+
return { custom, targetAnnotationEncoded, targetAnnotation };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Determines the target annotation that is relevant for the sync rule
|
|
129
|
+
* @param {string[]} ids - list of ids of parent elements
|
|
130
|
+
* @param {TransferParameterTypeV4} transferParameters - list of parameters passed from API
|
|
131
|
+
* @param { [key: string]: any } configObject - the given config.json, to be exported
|
|
132
|
+
* @returns { targetAnnotationEncoded, targetAnnotation, custom }
|
|
133
|
+
*/
|
|
134
|
+
function determineTargetAnnotation(ids, transferParameters, configObject) {
|
|
135
|
+
let targetAnnotation, targetAnnotationEncoded, custom = false;
|
|
136
|
+
if (ids[0] === v4_1.PropertyName.table && ids[1] !== v4_1.PropertyName.views) {
|
|
137
|
+
({ targetAnnotationEncoded, targetAnnotation } = determineTargetAnnotationOfTable(ids, transferParameters, configObject));
|
|
138
|
+
}
|
|
139
|
+
else if (ids[0] === v4_1.PropertyName.chart && transferParameters.templateType === utils_1.TemplateType.AnalyticalListPageV4) {
|
|
140
|
+
({ targetAnnotationEncoded, targetAnnotation } = determineTargetAnnotationOfChart(ids, transferParameters, targetAnnotationEncoded, targetAnnotation, configObject));
|
|
141
|
+
}
|
|
142
|
+
else if (ids[0] === v4_1.PropertyName.sections) {
|
|
143
|
+
({ custom, targetAnnotationEncoded, targetAnnotation } = determineTargetAnnotationOfSections(ids, custom, targetAnnotationEncoded, targetAnnotation));
|
|
144
|
+
}
|
|
145
|
+
else if (ids[1] === v4_1.PropertyName.sections) {
|
|
146
|
+
//header sections
|
|
147
|
+
if (transferParameters.title && transferParameters.title.indexOf(v4_1.FacetTitlePrefix) > -1) {
|
|
148
|
+
targetAnnotation = targetAnnotationEncoded = transferParameters.title.split(v4_1.FacetTitlePrefix)[1];
|
|
149
|
+
}
|
|
150
|
+
else if (ids[2]) {
|
|
151
|
+
targetAnnotation = targetAnnotationEncoded = ids[2].split('@')[1];
|
|
152
|
+
}
|
|
153
|
+
else if (targetAnnotationEncoded) {
|
|
154
|
+
targetAnnotation = targetAnnotationEncoded = targetAnnotationEncoded.replace(/::/g, '/');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else if (ids[1] === v4_1.PropertyName.views) {
|
|
158
|
+
({ targetAnnotation, targetAnnotationEncoded } = determineTargetAnnotationOfViews(transferParameters, ids, targetAnnotation, targetAnnotationEncoded));
|
|
159
|
+
}
|
|
126
160
|
return { targetAnnotationEncoded, targetAnnotation, custom };
|
|
127
161
|
}
|
|
128
162
|
/**
|
|
@@ -134,49 +168,50 @@ function determineKeyForSyncRule(ids) {
|
|
|
134
168
|
let idIndex = 0;
|
|
135
169
|
for (let index = ids.length - 1; index > -1; index--) {
|
|
136
170
|
const element = ids[index];
|
|
137
|
-
if (element === 'columns' || element ===
|
|
171
|
+
if (element === 'columns' || element === v4_1.PropertyName.actions || element === 'views') {
|
|
138
172
|
idIndex = index + 1;
|
|
139
173
|
break;
|
|
140
174
|
}
|
|
141
175
|
}
|
|
142
|
-
return idIndex > 0 ? ids[idIndex] : undefined;
|
|
176
|
+
return idIndex > 0 ? ids[idIndex].replace(/\//gi, '??') : undefined;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Creates a new object in manifest
|
|
180
|
+
* @param {ExportToManifestParams} params - list of parameters
|
|
181
|
+
*/
|
|
182
|
+
function createNewObjectInManifest(params) {
|
|
183
|
+
if (params.exportHandler && typeof params.exportHandler === 'function') {
|
|
184
|
+
params.exportHandler(params.manifestSection, params.configObject, params.configPropertyKey, params.manifestKey, params.syncRuleKey);
|
|
185
|
+
}
|
|
186
|
+
else if (!params.manifestSection[params.manifestKey]) {
|
|
187
|
+
params.manifestSection[params.manifestKey] = {};
|
|
188
|
+
}
|
|
143
189
|
}
|
|
144
190
|
/**
|
|
145
191
|
* Transfers a property value from config to manifest
|
|
192
|
+
* @param {ExportToManifestParams} params - list of parameters
|
|
146
193
|
* @param propertyDefinition - schema definiton of a particular property
|
|
147
194
|
* @param nextDefinition - schema definition referred by $ref
|
|
148
|
-
* @param {SyncRule} syncRule - syncRule (metadata)
|
|
149
|
-
* @param manifestSection - actual section n manifest.json
|
|
150
|
-
* @param { [key: string]: any } configObject - the given config.json, to be exported
|
|
151
|
-
* @param {string} configPropertyKey - key of property in the config
|
|
152
|
-
* @param manifestKey - key in manifest (might be different from propertyKey)
|
|
153
|
-
* @param syncRuleKey - specific key, calculated for the export handler
|
|
154
195
|
*/
|
|
155
|
-
function transferPropertyToManifest(propertyDefinition, nextDefinition
|
|
156
|
-
|
|
196
|
+
function transferPropertyToManifest(params, propertyDefinition, nextDefinition) {
|
|
197
|
+
var _a, _b;
|
|
157
198
|
if (!(propertyDefinition['type'] !== 'array' &&
|
|
158
|
-
nextDefinition &&
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
if (exportHandler && typeof exportHandler === 'function') {
|
|
163
|
-
exportHandler(manifestSection, configObject, configPropertyKey, manifestKey, syncRuleKey);
|
|
199
|
+
((_a = nextDefinition === null || nextDefinition === void 0 ? void 0 : nextDefinition['targetDefinition']) === null || _a === void 0 ? void 0 : _a.type) === 'object' && ((_b = nextDefinition === null || nextDefinition === void 0 ? void 0 : nextDefinition['targetDefinition']) === null || _b === void 0 ? void 0 : _b.properties))) {
|
|
200
|
+
if (params.exportHandler !== false) {
|
|
201
|
+
if (params.exportHandler && typeof params.exportHandler === 'function') {
|
|
202
|
+
params.exportHandler(params.manifestSection, params.configObject, params.configPropertyKey, params.manifestKey, params.syncRuleKey);
|
|
164
203
|
}
|
|
165
|
-
else if (Array.isArray(configObject[configPropertyKey]) &&
|
|
166
|
-
|
|
204
|
+
else if (Array.isArray(params.configObject[params.configPropertyKey]) &&
|
|
205
|
+
!params.configObject[params.configPropertyKey].length) {
|
|
206
|
+
delete params.manifestSection[params.manifestKey];
|
|
167
207
|
}
|
|
168
208
|
else {
|
|
169
|
-
manifestSection[manifestKey] = configObject[configPropertyKey];
|
|
209
|
+
params.manifestSection[params.manifestKey] = params.configObject[params.configPropertyKey];
|
|
170
210
|
}
|
|
171
211
|
}
|
|
172
212
|
}
|
|
173
|
-
else if (propertyDefinition['type'] !== 'array' && manifestSection[manifestKey] === undefined) {
|
|
174
|
-
|
|
175
|
-
exportHandler(manifestSection, configObject, configPropertyKey, manifestKey, syncRuleKey);
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
manifestSection[manifestKey] = {};
|
|
179
|
-
}
|
|
213
|
+
else if (propertyDefinition['type'] !== 'array' && params.manifestSection[params.manifestKey] === undefined) {
|
|
214
|
+
createNewObjectInManifest(params);
|
|
180
215
|
}
|
|
181
216
|
}
|
|
182
217
|
/**
|
|
@@ -200,19 +235,29 @@ function exportManifestChange(ids, syncRule, transferParameters, configPropertyK
|
|
|
200
235
|
const syncRuleKey = determineKeyForSyncRule(ids);
|
|
201
236
|
const path = syncRule.manifest.path(transferParameters.pageNameArray, transferParameters.exportResults.manifest, targetAnnotationEncoded, syncRuleKey, targetAnnotation);
|
|
202
237
|
const manifestSection = common_1.getManifestSectionByPathV4(transferParameters.exportResults.manifest, path, targetAnnotation, custom ? undefined : targetAnnotationEncoded);
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
238
|
+
if (manifestSection) {
|
|
239
|
+
const manifestKey = syncRule.manifest.key || configPropertyKey;
|
|
240
|
+
if (configObject[configPropertyKey] !== undefined) {
|
|
241
|
+
// In case of arrays we take over complete array
|
|
242
|
+
const exportParams = {
|
|
243
|
+
exportHandler: syncRule.manifest.export,
|
|
244
|
+
manifestSection,
|
|
245
|
+
configObject,
|
|
246
|
+
configPropertyKey,
|
|
247
|
+
manifestKey,
|
|
248
|
+
syncRuleKey
|
|
249
|
+
};
|
|
250
|
+
transferPropertyToManifest(exportParams, propertyDefinition, nextDefinition);
|
|
251
|
+
}
|
|
252
|
+
else if (syncRule.manifest.delete) {
|
|
253
|
+
const deleteHandler = syncRule.manifest.delete;
|
|
254
|
+
if (typeof deleteHandler === 'function') {
|
|
255
|
+
deleteHandler(manifestSection, configObject, configPropertyKey, manifestKey, syncRuleKey);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else if (manifestSection[manifestKey] !== undefined) {
|
|
259
|
+
delete manifestSection[manifestKey];
|
|
212
260
|
}
|
|
213
|
-
}
|
|
214
|
-
else if (manifestSection[manifestKey] !== undefined) {
|
|
215
|
-
delete manifestSection[manifestKey];
|
|
216
261
|
}
|
|
217
262
|
utils_1.deleteEmptyStructure(transferParameters.exportResults.manifest, path, targetAnnotation, targetAnnotationEncoded);
|
|
218
263
|
}
|
|
@@ -238,15 +283,23 @@ function evaluateExportRule(transferParameters, breadcrumbs, key, configObject,
|
|
|
238
283
|
}
|
|
239
284
|
}
|
|
240
285
|
}
|
|
241
|
-
|
|
286
|
+
/**
|
|
287
|
+
* Processes an (object-like) sub-object of the app schema and transfer all connected config entries to manifest
|
|
288
|
+
* @param {TransferEntryParameters} parameters - list of parameters
|
|
289
|
+
* @param {NextDefinition} nextDefinition - the next definition in app schema to be processed
|
|
290
|
+
* @param currentConfigObject - current config object
|
|
291
|
+
* @param ids - list of parent & child ID's
|
|
292
|
+
* @param localIdParts - list of ID parts for building the stable ID
|
|
293
|
+
*/
|
|
294
|
+
function transferSubObject(parameters, nextDefinition, currentConfigObject, ids, localIdParts) {
|
|
242
295
|
let objects = [], isArray = false;
|
|
243
|
-
if (propertyDefinition.$ref && nextDefinition) {
|
|
296
|
+
if (parameters.propertyDefinition.$ref && nextDefinition) {
|
|
244
297
|
objects.push(nextDefinition.configObject);
|
|
245
298
|
}
|
|
246
|
-
else if (propertyDefinition['anyOf']) {
|
|
299
|
+
else if (parameters.propertyDefinition['anyOf']) {
|
|
247
300
|
objects.push(currentConfigObject);
|
|
248
301
|
}
|
|
249
|
-
else if (propertyDefinition.type === 'array') {
|
|
302
|
+
else if (parameters.propertyDefinition.type === 'array') {
|
|
250
303
|
objects = currentConfigObject;
|
|
251
304
|
isArray = true;
|
|
252
305
|
}
|
|
@@ -255,13 +308,13 @@ function transferSubObject(propertyDefinition, nextDefinition, currentConfigObje
|
|
|
255
308
|
}
|
|
256
309
|
for (const innerObject of objects) {
|
|
257
310
|
const additionalIds = [];
|
|
258
|
-
if (breadcrumbs[0] ===
|
|
311
|
+
if (parameters.breadcrumbs[0] === v4_1.PropertyName.sections && parameters.key === 'custom' && isArray) {
|
|
259
312
|
// We need add custom section 'id' into breadcrumbs to retrieve correct path to manifest
|
|
260
313
|
additionalIds.push(innerObject['id']);
|
|
261
314
|
}
|
|
262
|
-
transferParameters.title = nextDefinition.title;
|
|
315
|
+
parameters.transferParameters.title = nextDefinition.title;
|
|
263
316
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
264
|
-
transferManifestEntriesAndFlexChange(transferParameters, innerObject, [...ids, ...additionalIds], localIdParts, [...breadcrumbs, key], nextDefinition.targetDefinition);
|
|
317
|
+
transferManifestEntriesAndFlexChange(parameters.transferParameters, innerObject, [...ids, ...additionalIds], localIdParts, [...parameters.breadcrumbs, parameters.key], nextDefinition.targetDefinition);
|
|
265
318
|
}
|
|
266
319
|
}
|
|
267
320
|
/**
|
|
@@ -312,6 +365,7 @@ function createALPTableView(transferParameters, configObject, key) {
|
|
|
312
365
|
* - a boolean infcating if the processing of sub-objects shall be stopped
|
|
313
366
|
*/
|
|
314
367
|
function createALPChartView(transferParameters, configObject, key) {
|
|
368
|
+
var _a;
|
|
315
369
|
let newElementCreated = false;
|
|
316
370
|
if (!configObject[key] || Object.keys(configObject[key]).length === 0) {
|
|
317
371
|
return { newElementCreated, stopProcessing: true };
|
|
@@ -341,7 +395,7 @@ function createALPChartView(transferParameters, configObject, key) {
|
|
|
341
395
|
if (!views['paths'][0].secondary) {
|
|
342
396
|
views['paths'][0].secondary = [
|
|
343
397
|
{
|
|
344
|
-
annotationPath: 'com.sap.vocabularies.UI.v1.LineItem'
|
|
398
|
+
annotationPath: ((_a = configObject === null || configObject === void 0 ? void 0 : configObject.table) === null || _a === void 0 ? void 0 : _a.annotationPath) || 'com.sap.vocabularies.UI.v1.LineItem'
|
|
345
399
|
}
|
|
346
400
|
];
|
|
347
401
|
}
|
|
@@ -354,28 +408,35 @@ function createALPChartView(transferParameters, configObject, key) {
|
|
|
354
408
|
* @param configObject - current object in config.json
|
|
355
409
|
* @returns a boolean indicating that the views entry got created.
|
|
356
410
|
*/
|
|
357
|
-
function createLRTableView(transferParameters, key, configObject) {
|
|
411
|
+
function createLRTableView(index, transferParameters, key, configObject) {
|
|
358
412
|
if (!configObject || Object.keys(configObject).length === 0) {
|
|
359
413
|
return false;
|
|
360
414
|
}
|
|
361
415
|
let newElementCreated = false;
|
|
362
416
|
const path = application_1.getSettingsPathForPage(transferParameters.pageNameArray) + `/views`;
|
|
363
417
|
const views = common_1.getManifestSectionByPathV4(transferParameters.exportResults.manifest, path);
|
|
418
|
+
const newEntry = {
|
|
419
|
+
key: key,
|
|
420
|
+
annotationPath: configObject.annotationPath
|
|
421
|
+
};
|
|
364
422
|
if (!views['paths'] || Object.keys(views['paths']).length === 0) {
|
|
365
|
-
views
|
|
366
|
-
|
|
367
|
-
key: key,
|
|
368
|
-
annotationPath: configObject.annotationPath
|
|
369
|
-
}
|
|
370
|
-
];
|
|
423
|
+
//No views yet
|
|
424
|
+
views['paths'] = [newEntry];
|
|
371
425
|
newElementCreated = true;
|
|
372
426
|
}
|
|
373
|
-
else
|
|
374
|
-
views['paths'].
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
427
|
+
else {
|
|
428
|
+
const existingIndex = views['paths'].findIndex((view) => view.key === key);
|
|
429
|
+
if (existingIndex === -1) {
|
|
430
|
+
//Given view does not exist yet
|
|
431
|
+
views['paths'].push(newEntry);
|
|
432
|
+
newElementCreated = true;
|
|
433
|
+
}
|
|
434
|
+
else if (existingIndex !== index) {
|
|
435
|
+
//Reordering scenario
|
|
436
|
+
views['paths'].splice(existingIndex, 1);
|
|
437
|
+
views['paths'].splice(index, 0, newEntry);
|
|
438
|
+
newElementCreated = true;
|
|
439
|
+
}
|
|
379
440
|
}
|
|
380
441
|
return newElementCreated;
|
|
381
442
|
}
|
|
@@ -388,19 +449,89 @@ function createLRTableView(transferParameters, key, configObject) {
|
|
|
388
449
|
* @param {TransferParameterTypeV4} transferParameters - list of parameters passed from API
|
|
389
450
|
* @returns newElementCreated - boolean value to indicate that a new element was created ==> no further sync rule on this level
|
|
390
451
|
*/
|
|
391
|
-
function createNewElement(definitionName, key, configObject, breadcrumbs, transferParameters) {
|
|
452
|
+
function createNewElement(index, definitionName, key, configObject, breadcrumbs, transferParameters, preprocessed = false) {
|
|
392
453
|
let newElementCreated = false;
|
|
393
454
|
const stopProcessing = false;
|
|
394
|
-
if (
|
|
395
|
-
|
|
455
|
+
if (!preprocessed) {
|
|
456
|
+
if (definitionName === v4_1.DefinitionName.ALPChartView && key === v4_1.PropertyName.chart && configObject) {
|
|
457
|
+
return createALPChartView(transferParameters, configObject, key);
|
|
458
|
+
}
|
|
459
|
+
else if (definitionName === v4_1.DefinitionName.ALPTableView && key === v4_1.PropertyName.table && configObject) {
|
|
460
|
+
return createALPTableView(transferParameters, configObject, key);
|
|
461
|
+
}
|
|
462
|
+
else if (key &&
|
|
463
|
+
((definitionName === null || definitionName === void 0 ? void 0 : definitionName.startsWith(v4_1.DefinitionName.LRTableView)) || (definitionName === null || definitionName === void 0 ? void 0 : definitionName.startsWith(v4_1.DefinitionName.LRChartView)))) {
|
|
464
|
+
newElementCreated = createLRTableView(index, transferParameters, key, configObject[key]);
|
|
465
|
+
}
|
|
396
466
|
}
|
|
397
|
-
|
|
398
|
-
|
|
467
|
+
return { newElementCreated, stopProcessing };
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Transfers one enry of a list (aka one property of the config) to the manifest
|
|
471
|
+
* @param {TransferEntryParameters} parameters - list of parameters
|
|
472
|
+
* @param parentIds - array of collected parent ids
|
|
473
|
+
* @param stableIdParts - list of parts of the stable ID for flex changes
|
|
474
|
+
* @param preprocessed - indicates that the list was already preprocessed by following the config order
|
|
475
|
+
*/
|
|
476
|
+
function transferSortedListEntry(parameters, parentIds, stableIdParts, preprocessed = false) {
|
|
477
|
+
var _a;
|
|
478
|
+
const currentConfigObject = parameters.configObject[parameters.key];
|
|
479
|
+
const childId = common_1.getChildId(parameters.configObject, parameters.key);
|
|
480
|
+
const nextDefinition = utils_1.getNextTargetDefinition(parameters.transferParameters.appSchema, parameters.transferParameters.title, currentConfigObject, parameters.propertyDefinition, parameters.key, parameters.transferParameters.factory, parameters.transferParameters.pageType);
|
|
481
|
+
const { newElementCreated, stopProcessing } = createNewElement(parameters.index, (_a = parameters.propertyDefinition.$ref) === null || _a === void 0 ? void 0 : _a.split(utils_1.DEFINITION_LINK_PREFIX)[1], parameters.key, parameters.configObject, parameters.breadcrumbs, parameters.transferParameters, preprocessed);
|
|
482
|
+
const ids = childId ? [...parentIds, childId] : [...parentIds, parameters.key];
|
|
483
|
+
if (!newElementCreated) {
|
|
484
|
+
evaluateExportRule(parameters.transferParameters, parameters.breadcrumbs, parameters.key, parameters.configObject, ids, parameters.propertyDefinition, nextDefinition);
|
|
485
|
+
}
|
|
486
|
+
if (parameters.propertyDefinition &&
|
|
487
|
+
(typeof currentConfigObject === 'object' ||
|
|
488
|
+
(parameters.propertyDefinition.$ref && nextDefinition.configObject)) &&
|
|
489
|
+
!stopProcessing) {
|
|
490
|
+
const localIdParts = childId ? [...stableIdParts, childId] : stableIdParts;
|
|
491
|
+
transferSubObject(parameters, nextDefinition, currentConfigObject, ids, localIdParts);
|
|
399
492
|
}
|
|
400
|
-
|
|
401
|
-
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Function for special handling of anyOf definitions during the export
|
|
496
|
+
* @param {TransferEntryParameters} parameters - list of parameters
|
|
497
|
+
* @param anyOfDefinitions - the array of definitions from the anyOf (of additionalProperties)
|
|
498
|
+
* @param schemaDefinition - parent definition, comprising properties as well as additionalProperties
|
|
499
|
+
* @param parentIds - array of collected parent ids
|
|
500
|
+
* @param stableIdParts - list of parts of the stable ID for flex changes
|
|
501
|
+
* @returns
|
|
502
|
+
*/
|
|
503
|
+
function transferConfigEntriesWithAnyOfDefinitions(transferEntryParameters, anyOfDefinitions, schemaDefinition, parentIds, stableIdParts) {
|
|
504
|
+
let preprocessed = false;
|
|
505
|
+
if (anyOfDefinitions) {
|
|
506
|
+
const configEntries = Object.entries(transferEntryParameters.configObject);
|
|
507
|
+
if (!configEntries || configEntries.length < 1) {
|
|
508
|
+
return preprocessed;
|
|
509
|
+
}
|
|
510
|
+
configEntries.sort((a, b) => a[1]['index'] - b[1]['index']);
|
|
511
|
+
//follow the config order, to support reordering
|
|
512
|
+
configEntries.forEach((configEntry) => {
|
|
513
|
+
if (schemaDefinition.properties[configEntry[0]]) {
|
|
514
|
+
transferEntryParameters.key = configEntry[0];
|
|
515
|
+
transferEntryParameters.propertyDefinition = schemaDefinition.properties[configEntry[0]];
|
|
516
|
+
//already part of schema
|
|
517
|
+
transferSortedListEntry(transferEntryParameters, parentIds, stableIdParts);
|
|
518
|
+
preprocessed = true;
|
|
519
|
+
}
|
|
520
|
+
else if (typeof configEntry[1] === 'object') {
|
|
521
|
+
//match against potential schema definitions
|
|
522
|
+
anyOfDefinitions.forEach((anyOfDefinition) => {
|
|
523
|
+
if (anyOfDefinition.$ref) {
|
|
524
|
+
transferEntryParameters.key = configEntry[0];
|
|
525
|
+
transferEntryParameters.propertyDefinition = anyOfDefinition;
|
|
526
|
+
transferSortedListEntry(transferEntryParameters, parentIds, stableIdParts);
|
|
527
|
+
preprocessed = true;
|
|
528
|
+
}
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
transferEntryParameters.index++;
|
|
532
|
+
});
|
|
402
533
|
}
|
|
403
|
-
return
|
|
534
|
+
return preprocessed;
|
|
404
535
|
}
|
|
405
536
|
/**
|
|
406
537
|
* Recursive function that traverses the content of the current object. It reads decorators and fills exportResultManifest entries and flex changes
|
|
@@ -413,35 +544,36 @@ function createNewElement(definitionName, key, configObject, breadcrumbs, transf
|
|
|
413
544
|
* @param title - the title to be used for the given schema definition
|
|
414
545
|
*/
|
|
415
546
|
function transferManifestEntriesAndFlexChange(transferParameters, configObject, parentIds, stableIdParts, breadcrumbs, schemaDefinition) {
|
|
416
|
-
var _a;
|
|
417
|
-
|
|
418
|
-
if (!(schemaDefinition === null || schemaDefinition === void 0 ? void 0 : schemaDefinition['properties'])) {
|
|
547
|
+
var _a, _b;
|
|
548
|
+
if (!(schemaDefinition === null || schemaDefinition === void 0 ? void 0 : schemaDefinition.properties)) {
|
|
419
549
|
return;
|
|
420
550
|
}
|
|
421
|
-
|
|
422
|
-
|
|
551
|
+
let index = 0;
|
|
552
|
+
//In case of additionalProperties = flexible array definition ==> new entries from the config shall be exported too
|
|
553
|
+
const transferEntryParameters = {
|
|
554
|
+
transferParameters,
|
|
555
|
+
breadcrumbs,
|
|
556
|
+
key: undefined,
|
|
557
|
+
index,
|
|
558
|
+
configObject,
|
|
559
|
+
propertyDefinition: undefined
|
|
560
|
+
};
|
|
561
|
+
const anyOfDefinitions = (_a = schemaDefinition.additionalProperties) === null || _a === void 0 ? void 0 : _a.anyOf;
|
|
562
|
+
const preprocessed = transferConfigEntriesWithAnyOfDefinitions(transferEntryParameters, anyOfDefinitions, schemaDefinition, parentIds, stableIdParts);
|
|
563
|
+
//Sort if there is a propertyIndex, so that the exported list ends up in manifest in the right order
|
|
564
|
+
let sortedList = schemaDefinition.properties && Object.entries(schemaDefinition.properties);
|
|
423
565
|
if (sortedList) {
|
|
424
|
-
if ((
|
|
425
|
-
sortedList = Object.entries(schemaDefinition
|
|
566
|
+
if ((_b = sortedList[0]) === null || _b === void 0 ? void 0 : _b[1][v4_1.SchemaTag.propertyIndex]) {
|
|
567
|
+
sortedList = Object.entries(schemaDefinition.properties).sort((a, b) => a[1][v4_1.SchemaTag.propertyIndex] - b[1][v4_1.SchemaTag.propertyIndex]);
|
|
426
568
|
}
|
|
569
|
+
index = 0;
|
|
427
570
|
sortedList.forEach((element) => {
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
const definitionInSchema = (_a = propertyDefinition.$ref) === null || _a === void 0 ? void 0 : _a.split(utils_1.DEFINITION_LINK_PREFIX)[1];
|
|
435
|
-
const { newElementCreated, stopProcessing } = createNewElement(definitionInSchema, key, configObject, breadcrumbs, transferParameters);
|
|
436
|
-
const ids = childId ? [...parentIds, childId] : [...parentIds, key];
|
|
437
|
-
if (!newElementCreated) {
|
|
438
|
-
evaluateExportRule(transferParameters, breadcrumbs, key, configObject, ids, propertyDefinition, nextDefinition);
|
|
439
|
-
}
|
|
440
|
-
if (propertyDefinition &&
|
|
441
|
-
(typeof currentConfigObject === 'object' || (propertyDefinition.$ref && nextDefinition.configObject)) &&
|
|
442
|
-
!stopProcessing) {
|
|
443
|
-
const localIdParts = childId ? [...stableIdParts, childId] : stableIdParts;
|
|
444
|
-
transferSubObject(propertyDefinition, nextDefinition, currentConfigObject, breadcrumbs, key, transferParameters, ids, localIdParts);
|
|
571
|
+
transferEntryParameters.key = element[0];
|
|
572
|
+
transferEntryParameters.propertyDefinition = element[1];
|
|
573
|
+
transferEntryParameters.index = index;
|
|
574
|
+
transferSortedListEntry(transferEntryParameters, parentIds, stableIdParts, preprocessed);
|
|
575
|
+
if (element[1].$ref) {
|
|
576
|
+
index++;
|
|
445
577
|
}
|
|
446
578
|
});
|
|
447
579
|
}
|
|
@@ -503,7 +635,7 @@ const exportObjectPage = (exportParameters, ui5Version) => {
|
|
|
503
635
|
const pageLayoutInformation = common_1.getPageLayoutInformation(objectPage);
|
|
504
636
|
const pageName = exportParameters.page.name;
|
|
505
637
|
const baseId = `${exportParameters.appId}::${pageLayoutInformation.id}::${pageName}--`;
|
|
506
|
-
if ((_a = exportParameters.page.config) === null || _a === void 0 ? void 0 : _a[
|
|
638
|
+
if ((_a = exportParameters.page.config) === null || _a === void 0 ? void 0 : _a[v4_1.PropertyName.sections]) {
|
|
507
639
|
getExportClassesForSections(exportParameters.page.config, objectPage, factory);
|
|
508
640
|
}
|
|
509
641
|
const transferParameters = {
|
|
@@ -512,6 +644,7 @@ const exportObjectPage = (exportParameters, ui5Version) => {
|
|
|
512
644
|
appRootPath: exportParameters.appRootPath,
|
|
513
645
|
baseId,
|
|
514
646
|
appSchema: exportParameters.jsonSchema,
|
|
647
|
+
config: objectPage,
|
|
515
648
|
ui5Version,
|
|
516
649
|
factory,
|
|
517
650
|
pageNameArray: [pageName],
|
|
@@ -534,28 +667,32 @@ const exportObjectPage = (exportParameters, ui5Version) => {
|
|
|
534
667
|
* @param ui5Version - SAP UI5 version
|
|
535
668
|
*/
|
|
536
669
|
const exportListPage = (exportParameters, factory, config, pageType, ui5Version, templateType) => {
|
|
537
|
-
var _a;
|
|
670
|
+
var _a, _b;
|
|
538
671
|
const exportResults = defaultExportResult;
|
|
539
672
|
exportResults.manifest = JSON.parse(JSON.stringify(exportParameters.manifest));
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
673
|
+
const appSchema = exportParameters.jsonSchema;
|
|
674
|
+
const tableDefinition = ((_a = config.table) === null || _a === void 0 ? void 0 : _a[v4_1.PropertyName.annotationPath]) ? v4_1.DefinitionName.ALPTableView
|
|
675
|
+
: v4_1.DefinitionName.Table;
|
|
676
|
+
config.table = factory.createInstance(pageType, tableDefinition, config.table);
|
|
677
|
+
if (((_b = config.table.toolBar) === null || _b === void 0 ? void 0 : _b.actions) && appSchema.definitions['Actions<LineItems>']) {
|
|
678
|
+
for (const actionKey in appSchema.definitions['Actions<LineItems>'].properties) {
|
|
543
679
|
config.table.toolBar.actions[actionKey] = factory.createInstance(pageType, 'ToolBarAction', config.table.toolBar.actions[actionKey]);
|
|
544
680
|
}
|
|
545
681
|
}
|
|
546
682
|
const pageLayoutInformation = common_1.getPageLayoutInformation(config);
|
|
547
683
|
const pageName = exportParameters.page.name;
|
|
548
684
|
const baseId = `${exportParameters.appId}::${pageLayoutInformation.id}::${pageName}--`;
|
|
549
|
-
if (!exportResults.manifest[v4_1.ManifestSection.ui5]
|
|
685
|
+
if (!exportResults.manifest[v4_1.ManifestSection.ui5].routing.targets[pageName]) {
|
|
550
686
|
const newV4Page = getV4ManifestPageTemplate(pageLayoutInformation.pageId, pageName);
|
|
551
|
-
exportResults.manifest[v4_1.ManifestSection.ui5]
|
|
687
|
+
exportResults.manifest[v4_1.ManifestSection.ui5].routing.targets[pageName] = newV4Page;
|
|
552
688
|
}
|
|
553
689
|
const transferParameters = {
|
|
554
690
|
exportResults,
|
|
555
691
|
appId: exportParameters.appId,
|
|
556
692
|
appRootPath: exportParameters.appRootPath,
|
|
557
693
|
baseId,
|
|
558
|
-
appSchema
|
|
694
|
+
appSchema,
|
|
695
|
+
config,
|
|
559
696
|
ui5Version,
|
|
560
697
|
factory,
|
|
561
698
|
pageNameArray: [pageName],
|
|
@@ -567,7 +704,7 @@ const exportListPage = (exportParameters, factory, config, pageType, ui5Version,
|
|
|
567
704
|
transferManifestEntriesAndFlexChange(transferParameters, config, [], //no parentIds
|
|
568
705
|
[], // no stableIds
|
|
569
706
|
[], // no breadcrumbs
|
|
570
|
-
|
|
707
|
+
appSchema //starting point for target definition
|
|
571
708
|
);
|
|
572
709
|
return exportResults;
|
|
573
710
|
};
|