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