@sap/ux-specification 1.108.70 → 1.108.72
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 +419 -339
- package/dist/documentation/v2/v2-AnalyticalListPage.html +2 -2
- package/dist/documentation/v2/v2-ApplicationV2.html +2 -2
- package/dist/documentation/v2/v2-ListReport.html +2 -2
- package/dist/documentation/v2/v2-ListReportNew.html +2 -2
- package/dist/documentation/v2/v2-ObjectPage.html +2 -2
- package/dist/documentation/v2/v2-OverviewPage.html +2 -2
- package/dist/documentation/v4/v4-ApplicationV4.html +2 -2
- package/dist/documentation/v4/v4-BuildingBlocks.html +2 -2
- package/dist/documentation/v4/v4-FreestylePage.html +2 -2
- package/dist/documentation/v4/v4-ListReport.html +2 -2
- package/dist/documentation/v4/v4-ObjectPage.html +2 -2
- package/dist/index-min.js +256 -256
- package/dist/index-min.js.map +4 -4
- package/dist/schemas/v2/AnalyticalListPageConfig.json +3 -3
- package/dist/schemas/v2/ListReportConfig.json +5 -5
- package/dist/schemas/v2/ListReportNewConfig.json +1 -1
- package/dist/schemas/v2/ObjectPageConfig.json +5 -5
- package/dist/schemas/v4/ApplicationV4.json +1 -1
- package/dist/schemas/v4/BuildingBlocksConfig.json +8 -4
- package/dist/schemas/v4/ListReportConfig.json +24 -6
- package/dist/schemas/v4/ObjectPageConfig.json +9 -3
- package/dist/specification/package.json +13 -11
- package/dist/specification/scripts/extractDocu.js +18 -1
- package/dist/specification/scripts/extractDocu.js.map +1 -1
- package/dist/specification/scripts/generate-validity-report.d.ts +15 -0
- package/dist/specification/scripts/generate-validity-report.d.ts.map +1 -0
- package/dist/specification/scripts/generate-validity-report.js +365 -0
- package/dist/specification/scripts/generate-validity-report.js.map +1 -0
- package/dist/specification/scripts/macros/schema.d.ts.map +1 -1
- package/dist/specification/scripts/macros/schema.js +4 -1
- package/dist/specification/scripts/macros/schema.js.map +1 -1
- package/dist/specification/src/api.js +1 -1
- package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts +501 -0
- package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts.map +1 -0
- package/dist/specification/src/sync/common/decoration/decorator-paths.js +497 -0
- package/dist/specification/src/sync/common/decoration/decorator-paths.js.map +1 -0
- package/dist/specification/src/sync/common/decoration/decorators.d.ts +149 -23
- package/dist/specification/src/sync/common/decoration/decorators.d.ts.map +1 -1
- package/dist/specification/src/sync/common/decoration/decorators.js +369 -74
- package/dist/specification/src/sync/common/decoration/decorators.js.map +1 -1
- package/dist/specification/src/sync/common/decoration/index.d.ts +1 -0
- package/dist/specification/src/sync/common/decoration/index.d.ts.map +1 -1
- package/dist/specification/src/sync/common/decoration/index.js +1 -0
- package/dist/specification/src/sync/common/decoration/index.js.map +1 -1
- package/dist/specification/src/sync/common/dist_tag.json +8 -3
- package/dist/specification/src/sync/common/i18n.json +2 -1
- package/dist/specification/src/sync/common/utils.d.ts +35 -7
- package/dist/specification/src/sync/common/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/common/utils.js +206 -21
- package/dist/specification/src/sync/common/utils.js.map +1 -1
- package/dist/specification/src/sync/v2/export/exportPageGeneric.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/export/exportPageGeneric.js +3 -13
- package/dist/specification/src/sync/v2/export/exportPageGeneric.js.map +1 -1
- package/dist/specification/src/sync/v2/generate/analyticalListReport.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/generate/analyticalListReport.js +48 -0
- package/dist/specification/src/sync/v2/generate/analyticalListReport.js.map +1 -1
- package/dist/specification/src/sync/v2/generate/listReport.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/generate/listReport.js +3 -1
- package/dist/specification/src/sync/v2/generate/listReport.js.map +1 -1
- package/dist/specification/src/sync/v2/generate/objectPage.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/generate/objectPage.js +2 -0
- package/dist/specification/src/sync/v2/generate/objectPage.js.map +1 -1
- package/dist/specification/src/sync/v2/generate/overviewPage.d.ts +1 -9
- package/dist/specification/src/sync/v2/generate/overviewPage.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/generate/overviewPage.js +30 -1
- package/dist/specification/src/sync/v2/generate/overviewPage.js.map +1 -1
- package/dist/specification/src/sync/v2/generate/schemaAdaptation.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/generate/schemaAdaptation.js +28 -1
- package/dist/specification/src/sync/v2/generate/schemaAdaptation.js.map +1 -1
- package/dist/specification/src/sync/v2/import/app/appProvider.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/import/app/appProvider.js +2 -0
- package/dist/specification/src/sync/v2/import/app/appProvider.js.map +1 -1
- package/dist/specification/src/sync/v2/import/importPage.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/import/importPage.js +5 -6
- package/dist/specification/src/sync/v2/import/importPage.js.map +1 -1
- package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts +2 -1
- package/dist/specification/src/sync/v2/import/pages/analyticalListPage.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js +5 -0
- package/dist/specification/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
- package/dist/specification/src/sync/v2/import/pages/listReport.d.ts +2 -1
- package/dist/specification/src/sync/v2/import/pages/listReport.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/import/pages/listReport.js +5 -0
- package/dist/specification/src/sync/v2/import/pages/listReport.js.map +1 -1
- package/dist/specification/src/sync/v2/import/pages/objectPage.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/import/pages/objectPage.js +2 -1
- package/dist/specification/src/sync/v2/import/pages/objectPage.js.map +1 -1
- package/dist/specification/src/sync/v2/import/utils.d.ts +28 -1
- package/dist/specification/src/sync/v2/import/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/import/utils.js +37 -0
- package/dist/specification/src/sync/v2/import/utils.js.map +1 -1
- package/dist/specification/src/sync/v2/utils.d.ts +12 -2
- package/dist/specification/src/sync/v2/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/utils.js +19 -2
- package/dist/specification/src/sync/v2/utils.js.map +1 -1
- package/dist/specification/src/sync/v4/application.d.ts +20 -2
- package/dist/specification/src/sync/v4/application.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/application.js +27 -2
- package/dist/specification/src/sync/v4/application.js.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts +2 -1
- package/dist/specification/src/sync/v4/export/controls/FilterBar.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/FilterBar.js +2 -1
- package/dist/specification/src/sync/v4/export/controls/FilterBar.js.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/Header.d.ts +4 -3
- package/dist/specification/src/sync/v4/export/controls/Header.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/Header.js +7 -3
- package/dist/specification/src/sync/v4/export/controls/Header.js.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts +2 -1
- package/dist/specification/src/sync/v4/export/controls/HeaderAction.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/HeaderAction.js +7 -0
- package/dist/specification/src/sync/v4/export/controls/HeaderAction.js.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts +2 -1
- package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js +2 -1
- package/dist/specification/src/sync/v4/export/controls/ObjectPageCustomSection.js.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts +1 -1
- package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js +0 -13
- package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/Table.d.ts +21 -8
- package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/Table.js +38 -41
- package/dist/specification/src/sync/v4/export/controls/Table.js.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/TableColumn.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/TableColumn.js +2 -2
- package/dist/specification/src/sync/v4/export/controls/TableColumn.js.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts +2 -1
- package/dist/specification/src/sync/v4/export/controls/ToolBarAction.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js +2 -1
- package/dist/specification/src/sync/v4/export/controls/ToolBarAction.js.map +1 -1
- package/dist/specification/src/sync/v4/export/export.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/export.js +36 -6
- package/dist/specification/src/sync/v4/export/export.js.map +1 -1
- package/dist/specification/src/sync/v4/export/pages/ListReport.js +1 -1
- package/dist/specification/src/sync/v4/export/pages/ListReport.js.map +1 -1
- package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js +1 -1
- package/dist/specification/src/sync/v4/generate/fpm-custom-page/annotations.js.map +1 -1
- package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.js +8 -1
- package/dist/specification/src/sync/v4/generate/fpm-custom-page/generator.js.map +1 -1
- package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js +10 -1
- package/dist/specification/src/sync/v4/generate/fpm-custom-page/utils.js.map +1 -1
- package/dist/specification/src/sync/v4/generate/index.d.ts +1 -1
- package/dist/specification/src/sync/v4/generate/index.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/generate/index.js +1 -1
- package/dist/specification/src/sync/v4/generate/index.js.map +1 -1
- package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts +73 -0
- package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.d.ts.map +1 -0
- package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js +336 -0
- package/dist/specification/src/sync/v4/generate/list-report/ListReportUtils.js.map +1 -0
- package/dist/specification/src/sync/v4/generate/{listReport.d.ts → list-report/listReport.d.ts} +21 -14
- package/dist/specification/src/sync/v4/generate/list-report/listReport.d.ts.map +1 -0
- package/dist/specification/src/sync/v4/generate/{listReport.js → list-report/listReport.js} +142 -229
- package/dist/specification/src/sync/v4/generate/list-report/listReport.js.map +1 -0
- package/dist/specification/src/sync/v4/generate/objectPage.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/generate/objectPage.js +142 -49
- package/dist/specification/src/sync/v4/generate/objectPage.js.map +1 -1
- package/dist/specification/src/sync/v4/import/pages/listReport.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/import/pages/listReport.js +2 -1
- package/dist/specification/src/sync/v4/import/pages/listReport.js.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/App.d.ts +9 -7
- package/dist/specification/src/sync/v4/sync-rules/App.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/App.js +4 -8
- package/dist/specification/src/sync/v4/sync-rules/App.js.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts +2 -9
- package/dist/specification/src/sync/v4/sync-rules/AppSchema.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/AppSchema.js +2 -11
- package/dist/specification/src/sync/v4/sync-rules/AppSchema.js.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts +177 -46
- package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js +498 -152
- package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/Page.d.ts +17 -22
- package/dist/specification/src/sync/v4/sync-rules/Page.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/Page.js +15 -22
- package/dist/specification/src/sync/v4/sync-rules/Page.js.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts +1 -0
- package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js +17 -9
- package/dist/specification/src/sync/v4/sync-rules/controllerExtensions.js.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/index.d.ts +5 -0
- package/dist/specification/src/sync/v4/sync-rules/index.d.ts.map +1 -0
- package/dist/specification/src/sync/v4/sync-rules/index.js +21 -0
- package/dist/specification/src/sync/v4/sync-rules/index.js.map +1 -0
- package/dist/specification/src/sync/v4/sync-rules/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/utils.js +4 -0
- package/dist/specification/src/sync/v4/sync-rules/utils.js.map +1 -1
- package/dist/specification/src/sync/v4/utils/index.d.ts +2 -0
- package/dist/specification/src/sync/v4/utils/index.d.ts.map +1 -0
- package/dist/specification/src/sync/v4/utils/index.js +18 -0
- package/dist/specification/src/sync/v4/utils/index.js.map +1 -0
- package/dist/specification/src/sync/v4/utils/utils.d.ts +9 -1
- package/dist/specification/src/sync/v4/utils/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/utils/utils.js +18 -3
- package/dist/specification/src/sync/v4/utils/utils.js.map +1 -1
- package/dist/specification/test/test-projects/v2sttaProdMan2/webapp/manifest.json +550 -0
- package/dist/specification/test/test-projects/v4new/webapp/manifest.json +147 -0
- package/dist/specification/test/test-utils/utils.d.ts +71 -0
- package/dist/specification/test/test-utils/utils.d.ts.map +1 -0
- package/dist/specification/test/test-utils/utils.js +400 -0
- package/dist/specification/test/test-utils/utils.js.map +1 -0
- package/dist/specification/test/unit/decorators/validity-test-utils.d.ts +131 -0
- package/dist/specification/test/unit/decorators/validity-test-utils.d.ts.map +1 -0
- package/dist/specification/test/unit/decorators/validity-test-utils.js +661 -0
- package/dist/specification/test/unit/decorators/validity-test-utils.js.map +1 -0
- package/dist/types/src/apiTypes.d.ts +2 -3
- package/dist/types/src/apiTypes.d.ts.map +1 -1
- package/dist/types/src/apiTypes.js.map +1 -1
- package/dist/types/src/common/types.d.ts +131 -13
- package/dist/types/src/common/types.d.ts.map +1 -1
- package/dist/types/src/common/types.js +10 -1
- package/dist/types/src/common/types.js.map +1 -1
- package/dist/types/src/v2/controls/ObjectPageTable.d.ts +1 -1
- package/dist/types/src/v2/controls/Table.d.ts +1 -1
- package/dist/types/src/v4/controls/ObjectPageHeader.d.ts +1 -1
- package/dist/types/src/v4/controls/ObjectPageTable.d.ts +1 -1
- package/dist/types/src/v4/controls/ObjectPageTable.d.ts.map +1 -1
- package/dist/types/src/v4/controls/Table.d.ts +3 -3
- package/dist/types/src/v4/controls/Table.d.ts.map +1 -1
- package/package.json +14 -12
- package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts +0 -107
- package/dist/specification/src/sync/v4/generate/ListReportUtils.d.ts.map +0 -1
- package/dist/specification/src/sync/v4/generate/ListReportUtils.js +0 -374
- package/dist/specification/src/sync/v4/generate/ListReportUtils.js.map +0 -1
- package/dist/specification/src/sync/v4/generate/listReport.d.ts.map +0 -1
- package/dist/specification/src/sync/v4/generate/listReport.js.map +0 -1
|
@@ -11,20 +11,18 @@ exports.analyzeViewAnnotation = analyzeViewAnnotation;
|
|
|
11
11
|
exports.addALPViews = addALPViews;
|
|
12
12
|
exports.addTagsToView = addTagsToView;
|
|
13
13
|
exports.addLRViewParts = addLRViewParts;
|
|
14
|
-
exports.getDefaultAnnotationPath = getDefaultAnnotationPath;
|
|
15
14
|
exports.addHeaderActions = addHeaderActions;
|
|
16
15
|
exports.addManifestPathsToPropertiesLR = addManifestPathsToPropertiesLR;
|
|
17
16
|
exports.generateListReportSchemaV4 = generateListReportSchemaV4;
|
|
18
|
-
const utils_1 = require("
|
|
19
|
-
const utils_2 = require("
|
|
17
|
+
const utils_1 = require("../../utils");
|
|
18
|
+
const utils_2 = require("../../utils");
|
|
20
19
|
const ux_specification_types_1 = require("@sap/ux-specification-types");
|
|
21
20
|
const i18next_1 = __importDefault(require("i18next"));
|
|
22
|
-
const extensionLogger_1 = require("
|
|
23
|
-
const common_1 = require("
|
|
24
|
-
const
|
|
25
|
-
const App_1 = require("../sync-rules/App");
|
|
26
|
-
const AppSchema_1 = require("../sync-rules/AppSchema");
|
|
21
|
+
const extensionLogger_1 = require("../../../../extensionLogger");
|
|
22
|
+
const common_1 = require("../../../common");
|
|
23
|
+
const sync_rules_1 = require("../../sync-rules");
|
|
27
24
|
const ListReportUtils_1 = require("./ListReportUtils");
|
|
25
|
+
const controls_1 = require("../../export/controls");
|
|
28
26
|
const ROOT_PROPERTIES_ORDER = ['header', 'filterBar', 'chart', 'table'];
|
|
29
27
|
const UILINEITEM = '@UI.LineItem';
|
|
30
28
|
/**
|
|
@@ -38,6 +36,7 @@ const UILINEITEM = '@UI.LineItem';
|
|
|
38
36
|
* @returns {Definition} - the updated selection fields definition
|
|
39
37
|
*/
|
|
40
38
|
function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, selectionFieldsDefinition, qualifier) {
|
|
39
|
+
// No @validity check needed here
|
|
41
40
|
if (!selectionFieldsDefinition) {
|
|
42
41
|
selectionFieldsDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.SelectionFields];
|
|
43
42
|
selectionFieldsDefinition.additionalProperties = false;
|
|
@@ -48,8 +47,9 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
|
|
|
48
47
|
}
|
|
49
48
|
let i = 0;
|
|
50
49
|
selectionFieldsAnnotation?.forEach((selectionField) => {
|
|
50
|
+
const value = selectionField.value ?? `UnknownField${i}`;
|
|
51
51
|
let description = selectionField.value;
|
|
52
|
-
const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(
|
|
52
|
+
const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(value);
|
|
53
53
|
if (selectionField.type === 'PropertyPath') {
|
|
54
54
|
description = (0, common_1.getLabelForPropertyPath)(selectionField, entityType);
|
|
55
55
|
}
|
|
@@ -65,10 +65,14 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
|
|
|
65
65
|
additionalProperties: false,
|
|
66
66
|
...(dataType && { dataType })
|
|
67
67
|
};
|
|
68
|
+
if (selectionField.value === undefined) {
|
|
69
|
+
// Add message about unresolvable value for selection field
|
|
70
|
+
(0, common_1.addMessageToSchema)(appSchema.definitions[fieldDefinition], {
|
|
71
|
+
text: i18next_1.default.t('UNRESOLVABLE_VALUE_OF_SELECTION_FIELD')
|
|
72
|
+
});
|
|
73
|
+
}
|
|
68
74
|
appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.isViewNode] = true;
|
|
69
|
-
appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [
|
|
70
|
-
{ name: ux_specification_types_1.SchemaKeyName.value, value: `${selectionField.value}` }
|
|
71
|
-
];
|
|
75
|
+
appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.value, value: `${value}` }];
|
|
72
76
|
if (selectionField.$target?.fullyQualifiedName.indexOf('@') > -1) {
|
|
73
77
|
appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.target] = selectionField.$target.fullyQualifiedName
|
|
74
78
|
.split('@')[0]
|
|
@@ -126,6 +130,7 @@ function getPropertiesIndex(selectionFields, entityType) {
|
|
|
126
130
|
* @param selectionFields - The selection fields annotation to be processed
|
|
127
131
|
*/
|
|
128
132
|
function addVisualFilters(entityType, appSchema, visualFiltersManifest, selectionFields) {
|
|
133
|
+
// No @validity check needed here
|
|
129
134
|
const propertiesIndex = getPropertiesIndex(selectionFields, entityType);
|
|
130
135
|
const visualFilters = appSchema.definitions[ux_specification_types_1.DefinitionName.VisualFilters];
|
|
131
136
|
visualFilters.properties = {};
|
|
@@ -167,6 +172,8 @@ function applyCustomFilterFields(appSchema, selectionFieldsDefinition, v4Page) {
|
|
|
167
172
|
};
|
|
168
173
|
(0, utils_2.addCustomFilterFieldDefinition)(appSchema, selectionFieldsDefinition, v4Page);
|
|
169
174
|
const customSectionDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.CustomFilterFieldPosition];
|
|
175
|
+
// Instantiate for @validity check
|
|
176
|
+
new controls_1.CustomFilterFieldPosition().init();
|
|
170
177
|
if (typeof customSectionDefinition === 'object') {
|
|
171
178
|
(0, common_1.addDescriptiveEnumDefinition)(appSchema, selectionFieldsDefinition, {
|
|
172
179
|
schema: customSectionDefinition,
|
|
@@ -240,6 +247,8 @@ function defineActions(appSchema, schemaIdForActions, annotations, targetAnnotat
|
|
|
240
247
|
action[ux_specification_types_1.SchemaTag.annotationPath] = `/${actionRecord.fullyQualifiedName}`;
|
|
241
248
|
//as ChartToolBarAction is an empty object, copy ViewToolBarAction and remove properties
|
|
242
249
|
appSchema.definitions[actionDefinition] = JSON.parse(JSON.stringify(appSchema.definitions[ux_specification_types_1.DefinitionName.ViewToolBarAction]));
|
|
250
|
+
// Instantiate for @validity check
|
|
251
|
+
new controls_1.ViewToolBarAction().init();
|
|
243
252
|
appSchema.definitions[actionDefinition].properties = {};
|
|
244
253
|
appSchema.definitions[actionDefinition][ux_specification_types_1.SchemaTag.annotationPath] = actionRecord.fullyQualifiedName;
|
|
245
254
|
i++;
|
|
@@ -423,6 +432,8 @@ function addALPChartView(appSchema, chartAnnotationPath, targetAnnotation, annot
|
|
|
423
432
|
chartView[ux_specification_types_1.SchemaTag.artifactType] = ux_specification_types_1.ArtifactType.Manifest;
|
|
424
433
|
chartView[ux_specification_types_1.SchemaTag.key] = 'primary';
|
|
425
434
|
chartView[ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: 'primary' }];
|
|
435
|
+
// Instantiate for @validity check
|
|
436
|
+
new controls_1.ALPChart().init();
|
|
426
437
|
}
|
|
427
438
|
/**
|
|
428
439
|
* Adds the ALP views to the app-specific schema.
|
|
@@ -508,7 +519,7 @@ function addALPViews(appSchema, viewsPaths, generateParameters, templateAnnotati
|
|
|
508
519
|
addManifestPathsToPropertiesLR(appSchema, ux_specification_types_1.DefinitionName.ALPTable, tableDefinition, {
|
|
509
520
|
pageName: v4Page.id,
|
|
510
521
|
manifest: generateParameters.manifest,
|
|
511
|
-
targetAnnotation
|
|
522
|
+
targetAnnotation: target
|
|
512
523
|
});
|
|
513
524
|
}
|
|
514
525
|
/**
|
|
@@ -547,33 +558,50 @@ function addViewChartDefinitions(inputParameters, annotations) {
|
|
|
547
558
|
* @param viewsDefinition - the views definition in app schema (MultiTableModeV4)
|
|
548
559
|
* @param viewKey - view key
|
|
549
560
|
* @param title - view title
|
|
561
|
+
* @param page - Represents the page in the application's structure where the view line items are to be added.
|
|
562
|
+
* @param app - Represents the overall application structure, providing access to the manifest.
|
|
550
563
|
*/
|
|
551
|
-
function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title) {
|
|
564
|
+
function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title, page, app) {
|
|
552
565
|
const idForChart = addViewChartDefinitions(inputParameters, UIAnnotations);
|
|
553
|
-
appSchema.definitions[idForChart]
|
|
554
|
-
|
|
555
|
-
|
|
566
|
+
const chartViewDefinition = appSchema.definitions[idForChart];
|
|
567
|
+
chartViewDefinition.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
|
|
568
|
+
chartViewDefinition.properties.index[ux_specification_types_1.SchemaTag.hidden] = true;
|
|
569
|
+
chartViewDefinition.properties.entitySet[ux_specification_types_1.SchemaTag.hidden] = true;
|
|
556
570
|
const titleOnHover = `Chart View (key: ${viewKey})`;
|
|
557
571
|
viewsDefinition.properties[viewKey] = {
|
|
558
572
|
$ref: `${common_1.DEFINITION_LINK_PREFIX}${idForChart}`,
|
|
559
573
|
description: title ? title : titleOnHover,
|
|
560
574
|
title: titleOnHover
|
|
561
575
|
};
|
|
576
|
+
// Add "manifestPath" for table properties
|
|
577
|
+
addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRChartView, chartViewDefinition, {
|
|
578
|
+
pageName: page.target.id,
|
|
579
|
+
manifest: app.manifest,
|
|
580
|
+
targetAnnotation: inputParameters.targetAnnotation,
|
|
581
|
+
viewConfig: {
|
|
582
|
+
key: viewKey,
|
|
583
|
+
entitySet: inputParameters.entitySet
|
|
584
|
+
}
|
|
585
|
+
});
|
|
562
586
|
}
|
|
563
587
|
/**
|
|
564
588
|
* Modifies the app schema, adds the right line item settings as derived from the visualization.
|
|
565
589
|
*
|
|
566
|
-
* @param {ViewsParameters} inputParameters -
|
|
567
|
-
* @param {Definition} viewsDefinition - The
|
|
568
|
-
* @param {string} visualization - The visualization
|
|
569
|
-
* @param {string} templateAnnotation -
|
|
570
|
-
* @param
|
|
571
|
-
* @param
|
|
572
|
-
* @
|
|
590
|
+
* @param {ViewsParameters} inputParameters - Parameters containing details needed for the view line item addition, including the app schema, view key, and target annotation.
|
|
591
|
+
* @param {Definition} viewsDefinition - The definition object to which the view line items will be added.
|
|
592
|
+
* @param {string} visualization - The specific visualization type, typically used to determine the annotation term.
|
|
593
|
+
* @param {string} templateAnnotation - Annotation path or type related to the template.
|
|
594
|
+
* @param generateParameters - list of API input parameters
|
|
595
|
+
* @param generateParameters.serviceAVT - OData service AVT information
|
|
596
|
+
* @param generateParameters.entityType - entity type of the current page
|
|
597
|
+
* @param {Page} page - Represents the page in the application's structure where the view line items are to be added.
|
|
598
|
+
* @param app - the application object containing manifest and other app-specific information.
|
|
599
|
+
* @param {ExtensionLogger} logger - Logger for recording informational or error messages during the schema adjustment process.
|
|
573
600
|
*/
|
|
574
|
-
function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page) {
|
|
601
|
+
function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page, app, logger) {
|
|
575
602
|
const tableId = `${ux_specification_types_1.DefinitionName.LRTableView}<${inputParameters.viewKey}>`;
|
|
576
|
-
const
|
|
603
|
+
const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${inputParameters.viewKey}`;
|
|
604
|
+
const schemaIdForActions = `${ux_specification_types_1.DefinitionName.Actions}<${schemaIdForColumns}>`;
|
|
577
605
|
const lrTableView = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.LRTableView, inputParameters.viewKey, inputParameters.appSchema);
|
|
578
606
|
delete lrTableView[ux_specification_types_1.SchemaTag.isViewNode];
|
|
579
607
|
lrTableView[ux_specification_types_1.SchemaTag.annotationPath] = inputParameters.targetAnnotation;
|
|
@@ -584,14 +612,14 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
|
|
|
584
612
|
lrTableView['entitySet'] = inputParameters.entitySet;
|
|
585
613
|
}
|
|
586
614
|
//Copy toolbar
|
|
587
|
-
(0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar,
|
|
615
|
+
(0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, schemaIdForColumns);
|
|
588
616
|
const title = `Table View (key: ${inputParameters.viewKey})`;
|
|
589
617
|
viewsDefinition.properties[inputParameters.viewKey] = {
|
|
590
618
|
$ref: `${common_1.DEFINITION_LINK_PREFIX}${tableId}`,
|
|
591
619
|
description: inputParameters.title || title,
|
|
592
620
|
title
|
|
593
621
|
};
|
|
594
|
-
(0, common_1.addDefinitionRef)(lrTableView.properties.columns,
|
|
622
|
+
(0, common_1.addDefinitionRef)(lrTableView.properties.columns, schemaIdForColumns);
|
|
595
623
|
lrTableView.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
|
|
596
624
|
lrTableView.properties.index[ux_specification_types_1.SchemaTag.hidden] = true;
|
|
597
625
|
lrTableView.properties.entitySet[ux_specification_types_1.SchemaTag.hidden] = true;
|
|
@@ -602,14 +630,18 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
|
|
|
602
630
|
lineItemAnnotation: inputParameters.targetEntityType?.annotations.UI[annotationTerm],
|
|
603
631
|
entityType: inputParameters.targetEntityType,
|
|
604
632
|
oDataServiceAVT: serviceAVT,
|
|
605
|
-
lineItemId:
|
|
633
|
+
lineItemId: schemaIdForColumns
|
|
606
634
|
};
|
|
607
635
|
(0, utils_2.addLineItemsTypeToSchema)(dataForLineItem, ux_specification_types_1.DefinitionName.ViewTableColumn, ux_specification_types_1.DefinitionName.ViewCustomColumn, ux_specification_types_1.DefinitionName.ViewCustomAction);
|
|
608
636
|
// Add "manifestPath" for table properties
|
|
609
637
|
addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRTableView, lrTableView, {
|
|
610
|
-
pageName: page.
|
|
611
|
-
manifest:
|
|
612
|
-
targetAnnotation: inputParameters.targetAnnotation
|
|
638
|
+
pageName: page.target.id,
|
|
639
|
+
manifest: app.manifest,
|
|
640
|
+
targetAnnotation: inputParameters.targetAnnotation,
|
|
641
|
+
viewConfig: {
|
|
642
|
+
key: inputParameters.viewKey,
|
|
643
|
+
entitySet: inputParameters.entitySet
|
|
644
|
+
}
|
|
613
645
|
});
|
|
614
646
|
}
|
|
615
647
|
/**
|
|
@@ -629,57 +661,43 @@ function addTagsToView(viewsDefinition, viewKey, namespace, view) {
|
|
|
629
661
|
viewsDefinition.properties[viewKey][ux_specification_types_1.SchemaTag.key] = viewKey;
|
|
630
662
|
viewsDefinition.properties[viewKey][ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: viewKey }];
|
|
631
663
|
}
|
|
632
|
-
/**
|
|
633
|
-
* Adjusts the entity type if a different entity set is maintained for a view.
|
|
634
|
-
*
|
|
635
|
-
* @param {EntitySet} entitySet - actual entity set (AVT information)
|
|
636
|
-
* @param view - the current view in manifest
|
|
637
|
-
* @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters
|
|
638
|
-
* @returns the target entity type
|
|
639
|
-
*/
|
|
640
|
-
function getTargetEntityType(entitySet, view, generateParameters) {
|
|
641
|
-
let targetEntityType = generateParameters.entityType;
|
|
642
|
-
let viewEntitySet = entitySet;
|
|
643
|
-
if (view['entitySet'] && view['entitySet'] !== entitySet.name) {
|
|
644
|
-
viewEntitySet = generateParameters.serviceAVT?.entitySets.find((es) => {
|
|
645
|
-
return es.name === view['entitySet'];
|
|
646
|
-
});
|
|
647
|
-
targetEntityType = viewEntitySet.entityType;
|
|
648
|
-
}
|
|
649
|
-
return targetEntityType;
|
|
650
|
-
}
|
|
651
664
|
/**
|
|
652
665
|
* Adds view custom extensions - custom column and custom action definitions.
|
|
653
666
|
*
|
|
654
667
|
* @param commonInputParameters - list of input parameters as collected by the calling instance
|
|
655
668
|
* @param visualization - visualization of the annotation
|
|
656
669
|
* @param v4Page - the given page in manifest
|
|
670
|
+
* @param manifest - The application manifest
|
|
657
671
|
* @param logger - extension logger
|
|
658
672
|
*/
|
|
659
|
-
function addViewCustomExtensions(commonInputParameters, visualization, v4Page, logger) {
|
|
660
|
-
const
|
|
673
|
+
function addViewCustomExtensions(commonInputParameters, visualization, v4Page, manifest, logger) {
|
|
674
|
+
const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${commonInputParameters.viewKey}`;
|
|
661
675
|
const sectionIdPrefix = commonInputParameters.entitySet ? `/${commonInputParameters.entitySet}/` : '';
|
|
662
676
|
const sectionIdInManifest = `${sectionIdPrefix}@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}${visualization.split(ux_specification_types_1.Visualization.LineItem)[1]}`;
|
|
663
|
-
const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn,
|
|
664
|
-
(0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition,
|
|
665
|
-
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition,
|
|
666
|
-
(0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${
|
|
667
|
-
(0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema,
|
|
677
|
+
const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn, schemaIdForColumns, commonInputParameters.appSchema);
|
|
678
|
+
(0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns);
|
|
679
|
+
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns, commonInputParameters.appSchema);
|
|
680
|
+
(0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${schemaIdForColumns}>`, schemaIdForColumns, sectionIdInManifest);
|
|
681
|
+
(0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema, schemaIdForColumns, v4Page, `${ux_specification_types_1.DefinitionName.ViewPosition}<${schemaIdForColumns}>`, sectionIdInManifest);
|
|
682
|
+
// Add "manifestPath" for view columns
|
|
683
|
+
(0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(commonInputParameters.appSchema, v4Page.id, schemaIdForColumns, manifest, commonInputParameters.targetAnnotation, commonInputParameters.entitySet);
|
|
668
684
|
// Remove generic position
|
|
669
685
|
if (commonInputParameters.appSchema.definitions.Position) {
|
|
670
686
|
delete commonInputParameters.appSchema.definitions.Position;
|
|
671
687
|
}
|
|
672
688
|
// Table toolbar actions with custom actions
|
|
673
|
-
const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${
|
|
674
|
-
const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${
|
|
689
|
+
const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${schemaIdForColumns}>`;
|
|
690
|
+
const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${schemaIdForColumns}>`;
|
|
675
691
|
(0, utils_2.addCustomActionDefinition)(commonInputParameters.appSchema, v4Page, logger, customActionDefinitionKey, schemaIdForToolbarActions, sectionIdInManifest);
|
|
676
692
|
// Anchor selection
|
|
677
|
-
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition,
|
|
678
|
-
const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${
|
|
693
|
+
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition, schemaIdForColumns, commonInputParameters.appSchema);
|
|
694
|
+
const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${schemaIdForColumns}>`;
|
|
679
695
|
const customActionDefinition = commonInputParameters.appSchema.definitions[customActionDefinitionKey];
|
|
680
696
|
customActionDefinition.properties.position.$ref =
|
|
681
697
|
`${common_1.DEFINITION_LINK_PREFIX}${customActionPositionDefinitionKey}`;
|
|
682
698
|
(0, utils_2.addEnumForActionAnchor)(commonInputParameters.appSchema, schemaIdForToolbarActions, customActionPositionDefinitionKey);
|
|
699
|
+
// Add "manifestPath" for view actions
|
|
700
|
+
(0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(commonInputParameters.appSchema, v4Page.id, schemaIdForToolbarActions, manifest, commonInputParameters.targetAnnotation, commonInputParameters.entitySet);
|
|
683
701
|
}
|
|
684
702
|
/**
|
|
685
703
|
* Adds definition parts to a LR View (LineItem/Chart).
|
|
@@ -692,18 +710,19 @@ function addViewCustomExtensions(commonInputParameters, visualization, v4Page, l
|
|
|
692
710
|
* @param generateParameters.entityType - entity type of the current page
|
|
693
711
|
* @param generateParameters.logger - extension logger
|
|
694
712
|
* @param page - the current page object
|
|
713
|
+
* @param app - the application object containing manifest and other app-specific information.
|
|
695
714
|
* @param uiAnnotations - UI annotations of the given entityType
|
|
696
715
|
* @param view - the given view
|
|
697
716
|
*/
|
|
698
|
-
function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, uiAnnotations, view) {
|
|
717
|
+
function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, app, uiAnnotations, view) {
|
|
699
718
|
if (visualization?.indexOf(ux_specification_types_1.Visualization.LineItem) > -1) {
|
|
700
719
|
//Add Line item view
|
|
701
|
-
addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page);
|
|
702
|
-
addViewCustomExtensions(commonInputParameters, visualization, page.
|
|
720
|
+
addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page, app, logger);
|
|
721
|
+
addViewCustomExtensions(commonInputParameters, visualization, page.target, app.getManifest(), logger);
|
|
703
722
|
}
|
|
704
723
|
else if (visualization?.indexOf('Chart') > -1) {
|
|
705
724
|
//Add Chart view
|
|
706
|
-
addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title);
|
|
725
|
+
addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title, page, app);
|
|
707
726
|
}
|
|
708
727
|
else if (view['template']) {
|
|
709
728
|
const titleOnHover = view['label'] || `Custom View (key: ${commonInputParameters.viewKey})`;
|
|
@@ -724,157 +743,19 @@ function addLRViewParts(visualization, viewsDefinition, commonInputParameters, {
|
|
|
724
743
|
};
|
|
725
744
|
}
|
|
726
745
|
}
|
|
727
|
-
/**
|
|
728
|
-
* Add list report views to the app-specific schema.
|
|
729
|
-
*
|
|
730
|
-
* @param appSchema - app-specific JSON schema
|
|
731
|
-
* @param viewsPaths - views' paths' section in the manifest
|
|
732
|
-
* @param generateParameters - list of API input parameters
|
|
733
|
-
* @param page - the current page object
|
|
734
|
-
* @param tableDefinitionName - The name of the table definition in the schema
|
|
735
|
-
*/
|
|
736
|
-
function addLRViews(appSchema, viewsPaths, generateParameters, page, tableDefinitionName) {
|
|
737
|
-
const tableDefinition = appSchema.definitions[tableDefinitionName];
|
|
738
|
-
tableDefinition.properties = {
|
|
739
|
-
annotationPath: tableDefinition.properties.annotationPath,
|
|
740
|
-
initialLoad: tableDefinition.properties.initialLoad,
|
|
741
|
-
views: tableDefinition.properties.views
|
|
742
|
-
};
|
|
743
|
-
const viewsDefinition = appSchema.definitions.MultiTableModeV4;
|
|
744
|
-
for (const view of viewsPaths) {
|
|
745
|
-
if (!view[ux_specification_types_1.SchemaTag.key]) {
|
|
746
|
-
continue;
|
|
747
|
-
}
|
|
748
|
-
let navPropName = undefined;
|
|
749
|
-
const targetEntityType = getTargetEntityType(generateParameters.entitySet, view, generateParameters);
|
|
750
|
-
const uiAnnotations = targetEntityType?.annotations.UI;
|
|
751
|
-
const { visualization, targetAnnotation, namespace, title } = analyzeViewAnnotation(view?.[ux_specification_types_1.SchemaTag.annotationPath], uiAnnotations, generateParameters.serviceAVT, view[ux_specification_types_1.SchemaTag.key], undefined, generateParameters.logger);
|
|
752
|
-
if (view['entitySet']) {
|
|
753
|
-
navPropName = generateParameters.entityType.navigationProperties.find((np) => {
|
|
754
|
-
return np.targetTypeName === namespace;
|
|
755
|
-
})?.name;
|
|
756
|
-
}
|
|
757
|
-
const viewKey = (0, common_1.prepareRef)(view[ux_specification_types_1.SchemaTag.key]);
|
|
758
|
-
const commonInputParameters = {
|
|
759
|
-
viewKey,
|
|
760
|
-
appSchema,
|
|
761
|
-
targetAnnotation,
|
|
762
|
-
navPropName,
|
|
763
|
-
targetEntityType,
|
|
764
|
-
title,
|
|
765
|
-
entitySet: view['entitySet']
|
|
766
|
-
};
|
|
767
|
-
addLRViewParts(visualization, viewsDefinition, commonInputParameters, generateParameters, page, uiAnnotations, view);
|
|
768
|
-
addTagsToView(viewsDefinition, viewKey, namespace, view);
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
/**
|
|
772
|
-
* Adapts the table definition in schema.
|
|
773
|
-
* Evaluates the path depending on if defaultTemplateAnnotationPath or Selection-/PresentationVariant is present.
|
|
774
|
-
*
|
|
775
|
-
* @param appSchema - the app-specific JSON schema
|
|
776
|
-
* @param generateParameters - list of API input parameters
|
|
777
|
-
* @param templateAnnotation - defaultTemplateAnnotationPath as registered in manifest
|
|
778
|
-
* @param v4Page - the given page in manifest
|
|
779
|
-
* @param alias - alias definition for the UI vocabulary
|
|
780
|
-
* @param tableDefinitionName - The name of the table definition in the schema
|
|
781
|
-
*/
|
|
782
|
-
function adaptTableDefinition(appSchema, generateParameters, templateAnnotation, v4Page, alias, tableDefinitionName) {
|
|
783
|
-
//here: tableDefinitionName = DefinitionName.Table
|
|
784
|
-
const tableDefinition = appSchema.definitions[tableDefinitionName];
|
|
785
|
-
const { visualization, targetAnnotation, namespace } = analyzeViewAnnotation(templateAnnotation, generateParameters.entityType?.annotations.UI, generateParameters.serviceAVT, undefined, ux_specification_types_1.Visualization.LineItem, generateParameters.logger);
|
|
786
|
-
if (visualization) {
|
|
787
|
-
const annotationTerm = visualization.split('.')[1];
|
|
788
|
-
const annotationTermInSchema = `${ux_specification_types_1.DefinitionName.LineItems}OfSPV::${(0, common_1.prepareRef)(annotationTerm)}`;
|
|
789
|
-
const spvTable = (appSchema.definitions[`${tableDefinitionName}SPV`] = JSON.parse(JSON.stringify(appSchema.definitions[tableDefinitionName])));
|
|
790
|
-
delete spvTable[ux_specification_types_1.SchemaTag.isViewNode];
|
|
791
|
-
(0, common_1.addDefinitionRef)(spvTable.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, annotationTermInSchema);
|
|
792
|
-
// Switch from generic column to specific definition
|
|
793
|
-
spvTable[ux_specification_types_1.SchemaTag.annotationPath] = targetAnnotation;
|
|
794
|
-
spvTable.properties.columns = {};
|
|
795
|
-
(0, common_1.addDefinitionRef)(spvTable.properties.columns, annotationTermInSchema);
|
|
796
|
-
delete tableDefinition.properties;
|
|
797
|
-
(0, common_1.addDefinitionRef)(tableDefinition, `${tableDefinitionName}SPV`);
|
|
798
|
-
tableDefinition[ux_specification_types_1.SchemaTag.annotationPath] = `/${namespace}/@${templateAnnotation}`;
|
|
799
|
-
const lineItemAnnotation = generateParameters.entityType?.annotations.UI[annotationTerm];
|
|
800
|
-
if (!lineItemAnnotation) {
|
|
801
|
-
(0, extensionLogger_1.log)(generateParameters.logger, {
|
|
802
|
-
severity: "error" /* LogSeverity.Error */,
|
|
803
|
-
message: i18next_1.default.t('NOTARGET', { target: annotationTerm })
|
|
804
|
-
});
|
|
805
|
-
}
|
|
806
|
-
const dataForLineItem = {
|
|
807
|
-
isObjectPage: false,
|
|
808
|
-
appSchema,
|
|
809
|
-
lineItemAnnotation,
|
|
810
|
-
entityType: generateParameters.entityType,
|
|
811
|
-
oDataServiceAVT: generateParameters.serviceAVT,
|
|
812
|
-
lineItemId: annotationTermInSchema
|
|
813
|
-
};
|
|
814
|
-
(0, utils_2.addLineItemsTypeToSchema)(dataForLineItem);
|
|
815
|
-
const annotationTermQualifier = annotationTerm.split('#')?.[1];
|
|
816
|
-
const sectionIdInManifest = annotationTermQualifier
|
|
817
|
-
? `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}#${annotationTermQualifier}`
|
|
818
|
-
: `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}`;
|
|
819
|
-
(0, utils_2.addCustomColumnDefinition)(appSchema, v4Page, generateParameters.logger, undefined, annotationTermInSchema, sectionIdInManifest);
|
|
820
|
-
(0, utils_2.addFragmentEnumForAnchor)(appSchema, annotationTermInSchema, v4Page, undefined, sectionIdInManifest);
|
|
821
|
-
// Table toolbar actions with custom actions
|
|
822
|
-
const schemaIdForToolbarActions = `${ux_specification_types_1.DefinitionName.Actions}<${annotationTermInSchema}>`;
|
|
823
|
-
const customColumnDefinitionName = (0, common_1.getCustomExtensionDefinitionName)(appSchema, annotationTermInSchema, ux_specification_types_1.DefinitionName.CustomTableAction);
|
|
824
|
-
(0, utils_2.addCustomActionDefinition)(appSchema, v4Page, generateParameters.logger, (0, common_1.getDefinitionKey)(customColumnDefinitionName), schemaIdForToolbarActions, sectionIdInManifest);
|
|
825
|
-
(0, utils_2.addEnumForActionAnchor)(appSchema, schemaIdForToolbarActions, ux_specification_types_1.DefinitionName.CustomActionPosition);
|
|
826
|
-
}
|
|
827
|
-
else {
|
|
828
|
-
tableDefinition.properties.toolBar['$ref'] = `${common_1.DEFINITION_LINK_PREFIX}${ux_specification_types_1.DefinitionName.ToolBarLR}`;
|
|
829
|
-
// Switch from generic column to specific definition
|
|
830
|
-
(0, common_1.addDefinitionRef)(tableDefinition.properties.columns, ux_specification_types_1.DefinitionName.LineItems);
|
|
831
|
-
const lineItemAnnotation = generateParameters.entityType?.annotations?.[alias]?.LineItem;
|
|
832
|
-
if (!lineItemAnnotation && !v4Page.options?.settings?.views?.paths) {
|
|
833
|
-
(0, extensionLogger_1.log)(generateParameters.logger, {
|
|
834
|
-
severity: "error" /* LogSeverity.Error */,
|
|
835
|
-
message: i18next_1.default.t('NOLINEITEMS')
|
|
836
|
-
});
|
|
837
|
-
}
|
|
838
|
-
const dataForLineItem = {
|
|
839
|
-
isObjectPage: false,
|
|
840
|
-
appSchema,
|
|
841
|
-
lineItemAnnotation,
|
|
842
|
-
entityType: generateParameters.entityType,
|
|
843
|
-
oDataServiceAVT: generateParameters.serviceAVT,
|
|
844
|
-
lineItemId: ux_specification_types_1.DefinitionName.LineItems
|
|
845
|
-
};
|
|
846
|
-
(0, utils_2.addLineItemsTypeToSchema)(dataForLineItem);
|
|
847
|
-
(0, utils_2.addCustomColumnDefinition)(appSchema, v4Page, generateParameters.logger);
|
|
848
|
-
(0, utils_2.addFragmentEnumForAnchor)(appSchema, ux_specification_types_1.DefinitionName.LineItems, v4Page);
|
|
849
|
-
if (lineItemAnnotation && !v4Page.options?.settings?.views?.paths) {
|
|
850
|
-
tableDefinition[ux_specification_types_1.SchemaTag.annotationPath] = (0, common_1.createAnnotationPath)(generateParameters.entityType?.fullyQualifiedName, lineItemAnnotation.term, lineItemAnnotation.qualifier);
|
|
851
|
-
}
|
|
852
|
-
// Table toolbar actions with custom actions
|
|
853
|
-
const schemaIdForActions = `${ux_specification_types_1.DefinitionName.Actions}<${(0, common_1.prepareRef)(ux_specification_types_1.DefinitionName.LineItems)}>`;
|
|
854
|
-
(0, utils_2.addCustomActionDefinition)(appSchema, v4Page, generateParameters.logger, undefined, schemaIdForActions);
|
|
855
|
-
(0, utils_2.addEnumForActionAnchor)(appSchema, schemaIdForActions, ux_specification_types_1.DefinitionName.CustomActionPosition);
|
|
856
|
-
}
|
|
857
|
-
// Add "manifestPath" for table properties
|
|
858
|
-
addManifestPathsToPropertiesLR(appSchema, tableDefinitionName, tableDefinition, {
|
|
859
|
-
pageName: v4Page.id,
|
|
860
|
-
manifest: generateParameters.manifest,
|
|
861
|
-
targetAnnotation
|
|
862
|
-
});
|
|
863
|
-
}
|
|
864
746
|
/**
|
|
865
747
|
* Checks for the default annotation path to use for LR table.
|
|
866
748
|
*
|
|
867
|
-
* @param
|
|
868
|
-
* @param entityType - actual entity type (AVT information)
|
|
869
|
-
* @param templateType - The type of template being used (e.g., ListReportObjectPageV4 or AnalyticalListPageV4)
|
|
749
|
+
* @param page - the current page object
|
|
870
750
|
* @returns annotation term
|
|
871
751
|
*/
|
|
872
|
-
function getDefaultAnnotationPath(
|
|
873
|
-
|
|
752
|
+
function getDefaultAnnotationPath(page) {
|
|
753
|
+
const { entity: { type: entityType }, template: { type: templateType }, target } = page;
|
|
754
|
+
if (target?.options?.settings?.views?.paths && templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
|
|
874
755
|
return;
|
|
875
756
|
}
|
|
876
|
-
if (
|
|
877
|
-
return
|
|
757
|
+
if (target?.options?.settings?.defaultTemplateAnnotationPath) {
|
|
758
|
+
return target?.options?.settings.defaultTemplateAnnotationPath;
|
|
878
759
|
}
|
|
879
760
|
if (templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
|
|
880
761
|
return (entityType?.annotations.UI?.SelectionPresentationVariant?.term ||
|
|
@@ -914,8 +795,9 @@ function addHeaderActions(appSchema, v4Page, logger) {
|
|
|
914
795
|
* @param definitionName - The name of the definition/class whose properties are being processed.
|
|
915
796
|
* @param definition - The definition object containing property schemas.
|
|
916
797
|
* @param pathParams - Additional context required to compute manifest paths.
|
|
798
|
+
* @param handleRelative - A flag indicating whether to use relative paths for definition properties.
|
|
917
799
|
*/
|
|
918
|
-
function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams) {
|
|
800
|
+
function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams, handleRelative = false) {
|
|
919
801
|
let targetAnnotation = undefined;
|
|
920
802
|
if (pathParams.targetAnnotation) {
|
|
921
803
|
const annotationParts = pathParams.targetAnnotation?.split('/');
|
|
@@ -925,10 +807,19 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
|
|
|
925
807
|
// Default annotation path
|
|
926
808
|
targetAnnotation = `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}`;
|
|
927
809
|
}
|
|
810
|
+
const entitySet = pathParams.viewConfig?.entitySet;
|
|
811
|
+
if (entitySet) {
|
|
812
|
+
targetAnnotation = entitySet ? `/${entitySet}/${targetAnnotation}` : targetAnnotation;
|
|
813
|
+
}
|
|
928
814
|
(0, utils_1.addManifestPathsToProperties)(appSchema, definitionName, definition, {
|
|
929
815
|
...pathParams,
|
|
930
|
-
pathsParts: [
|
|
931
|
-
|
|
816
|
+
pathsParts: [
|
|
817
|
+
pathParams.sectionId ? undefined : targetAnnotation,
|
|
818
|
+
pathParams.columnKey ? pathParams.columnKey : '',
|
|
819
|
+
targetAnnotation,
|
|
820
|
+
pathParams.viewConfig
|
|
821
|
+
]
|
|
822
|
+
}, handleRelative);
|
|
932
823
|
}
|
|
933
824
|
/**
|
|
934
825
|
* Adds 'manifestPath' to static nodes in schema.
|
|
@@ -937,6 +828,8 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
|
|
|
937
828
|
* @param pathParams - Additional context required to compute manifest paths.
|
|
938
829
|
*/
|
|
939
830
|
function addManifestPathsToStaticNodes(appSchema, pathParams) {
|
|
831
|
+
// Add "manifestPath" for current page
|
|
832
|
+
appSchema['manifestPath'] = (0, utils_1.getPageManifestPath)(pathParams);
|
|
940
833
|
// Root level - rules stored on page class level
|
|
941
834
|
addManifestPathsToPropertiesLR(appSchema, ux_specification_types_1.PageTypeV4.ListReport, appSchema, pathParams);
|
|
942
835
|
// Other definitions
|
|
@@ -961,17 +854,24 @@ class ListReportPage {
|
|
|
961
854
|
* @param contextPath - context path of the page
|
|
962
855
|
*/
|
|
963
856
|
constructor(generateParameters, schema, templateName, contextPath) {
|
|
964
|
-
|
|
965
|
-
this.
|
|
966
|
-
this.
|
|
857
|
+
const template = { name: templateName, type: generateParameters.templateType };
|
|
858
|
+
this.appSchema = new sync_rules_1.AppSchema(schema);
|
|
859
|
+
this.app = (0, sync_rules_1.createApp)(generateParameters.manifest, generateParameters.serviceAVT, generateParameters.logger);
|
|
860
|
+
this.page = new sync_rules_1.Page(this.app, template, generateParameters.entitySet, generateParameters.entityType, contextPath);
|
|
861
|
+
this.logger = this.app.logger;
|
|
862
|
+
this.page.addConfig({
|
|
863
|
+
isALP: template.type === ux_specification_types_1.TemplateType.AnalyticalListPageV4,
|
|
864
|
+
views: this.page.target?.options?.settings.views,
|
|
865
|
+
defaultAnnotation: getDefaultAnnotationPath(this.page)
|
|
866
|
+
});
|
|
967
867
|
}
|
|
968
868
|
/**
|
|
969
869
|
* Cleans up the schema by hiding specific properties and removing unnecessary definitions.
|
|
970
870
|
*/
|
|
971
871
|
cleanup() {
|
|
972
|
-
this.
|
|
973
|
-
this.
|
|
974
|
-
(0, common_1.updatePropertyIndices)(this.
|
|
872
|
+
this.appSchema.hide(this.appSchema.getRootProperty([ux_specification_types_1.PropertyName.defaultTemplateAnnotationPath]));
|
|
873
|
+
this.appSchema.cleanup(['GenericColumns', 'Action']);
|
|
874
|
+
(0, common_1.updatePropertyIndices)(this.appSchema.get(), ROOT_PROPERTIES_ORDER);
|
|
975
875
|
}
|
|
976
876
|
/**
|
|
977
877
|
* Generates the finalized schema for the List Report page.
|
|
@@ -979,20 +879,33 @@ class ListReportPage {
|
|
|
979
879
|
* @returns The finalized schema for List Report page
|
|
980
880
|
*/
|
|
981
881
|
generate() {
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
882
|
+
const params = {
|
|
883
|
+
appSchema: this.appSchema,
|
|
884
|
+
app: this.app,
|
|
885
|
+
page: this.page,
|
|
886
|
+
logger: this.logger
|
|
887
|
+
};
|
|
888
|
+
new ListReportUtils_1.GeneralListReportSettings(params).init();
|
|
889
|
+
if (!this.page.target) {
|
|
890
|
+
return this.appSchema.get();
|
|
985
891
|
}
|
|
986
|
-
new
|
|
987
|
-
new
|
|
988
|
-
new
|
|
892
|
+
new controls_1.Header(params).init();
|
|
893
|
+
new controls_1.HeaderActions(params).init();
|
|
894
|
+
new controls_1.CustomHeaderAction(params).init();
|
|
895
|
+
new ListReportUtils_1.FilterBar(params).init();
|
|
896
|
+
new ListReportUtils_1.TableAndViews(params).init();
|
|
989
897
|
// Add "manifestPath" for properties in static nodes
|
|
990
|
-
addManifestPathsToStaticNodes(this.
|
|
991
|
-
pageName: this.page.
|
|
898
|
+
addManifestPathsToStaticNodes(this.appSchema.get(), {
|
|
899
|
+
pageName: this.page.target.id,
|
|
992
900
|
manifest: this.app.getManifest()
|
|
993
901
|
});
|
|
902
|
+
// Add "manifestPath" for custom header actions
|
|
903
|
+
const definitionNames = [ux_specification_types_1.DefinitionName.HeaderActions];
|
|
904
|
+
definitionNames.forEach((definitionName) => {
|
|
905
|
+
(0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(this.appSchema.get(), this.page.target.id, definitionName, this.app.getManifest());
|
|
906
|
+
});
|
|
994
907
|
this.cleanup();
|
|
995
|
-
return this.
|
|
908
|
+
return this.appSchema.get();
|
|
996
909
|
}
|
|
997
910
|
}
|
|
998
911
|
/**
|
|
@@ -1009,7 +922,7 @@ function generateListReportSchemaV4(generateParameters, genericSchema, templateN
|
|
|
1009
922
|
const listReport = new ListReportPage(generateParameters, genericSchema, templateName, contextPath);
|
|
1010
923
|
if (!listReport.app.getManifest()) {
|
|
1011
924
|
listReport.cleanup();
|
|
1012
|
-
return listReport.
|
|
925
|
+
return listReport.appSchema.get();
|
|
1013
926
|
}
|
|
1014
927
|
return listReport.generate();
|
|
1015
928
|
}
|