@sap/ux-specification 1.142.2 → 1.142.4
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 +117 -43
- 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 +288 -282
- 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 +128 -42
- package/dist/schemas/v4/ListReportConfig.json +24 -6
- package/dist/schemas/v4/ObjectPageConfig.json +32 -8
- package/dist/specification/package.json +14 -12
- 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.map +1 -1
- package/dist/specification/scripts/macros/corrections.js +36 -1
- 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 +13 -0
- package/dist/specification/scripts/macros/schema.js.map +1 -1
- package/dist/specification/src/api.js +1 -1
- package/dist/specification/src/i18n/i18n.d.ts.map +1 -1
- package/dist/specification/src/i18n/i18n.js +2 -1
- package/dist/specification/src/i18n/i18n.js.map +1 -1
- package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.d.ts +8 -1
- package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.d.ts.map +1 -1
- package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.js +10 -7
- package/dist/specification/src/sync/common/ManifestDrivenSchemaProcessor.js.map +1 -1
- package/dist/specification/src/sync/common/decoration/decorator-paths.d.ts +503 -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 +116 -24
- package/dist/specification/src/sync/common/decoration/decorators.d.ts.map +1 -1
- package/dist/specification/src/sync/common/decoration/decorators.js +308 -78
- 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/objectPage.d.ts.map +1 -1
- package/dist/specification/src/sync/common/generate/objectPage.js +3 -1
- package/dist/specification/src/sync/common/generate/objectPage.js.map +1 -1
- package/dist/specification/src/sync/common/i18n.json +2 -1
- package/dist/specification/src/sync/common/rules.d.ts +25 -0
- package/dist/specification/src/sync/common/rules.d.ts.map +1 -1
- package/dist/specification/src/sync/common/rules.js +27 -2
- package/dist/specification/src/sync/common/rules.js.map +1 -1
- package/dist/specification/src/sync/common/utils.d.ts +22 -6
- package/dist/specification/src/sync/common/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/common/utils.js +122 -18
- package/dist/specification/src/sync/common/utils.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 +9 -7
- 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 +58 -2
- 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/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/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 +31 -2
- package/dist/specification/src/sync/v4/application.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/application.js +44 -4
- 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 +32 -17
- package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/Table.js +90 -60
- 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 +4 -3
- 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 +25 -3
- 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/actions.d.ts +1 -1
- package/dist/specification/src/sync/v4/generate/actions.d.ts.map +1 -1
- 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 +20 -12
- 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/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 +354 -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} +27 -16
- 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} +194 -164
- 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 +145 -44
- 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/import/utils.js +5 -3
- package/dist/specification/src/sync/v4/import/utils.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 +219 -96
- package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/sync-rules/DecoratorClass.js +557 -211
- 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 +17 -2
- 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 +119 -13
- package/dist/types/src/common/types.d.ts.map +1 -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/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 -394
- 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
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DEFAULT_TABLE_TYPE = void 0;
|
|
6
7
|
exports.addSelectionFields = addSelectionFields;
|
|
7
8
|
exports.getVisualFilters = getVisualFilters;
|
|
8
9
|
exports.addVisualFilters = addVisualFilters;
|
|
@@ -12,21 +13,23 @@ exports.addALPViews = addALPViews;
|
|
|
12
13
|
exports.applyLRSchemaAdjustments = applyLRSchemaAdjustments;
|
|
13
14
|
exports.addTagsToView = addTagsToView;
|
|
14
15
|
exports.addLRViewParts = addLRViewParts;
|
|
15
|
-
exports.getDefaultAnnotationPath = getDefaultAnnotationPath;
|
|
16
16
|
exports.addHeaderActions = addHeaderActions;
|
|
17
17
|
exports.addManifestPathsToPropertiesLR = addManifestPathsToPropertiesLR;
|
|
18
18
|
exports.generateListReportSchemaV4 = generateListReportSchemaV4;
|
|
19
|
-
const utils_1 = require("
|
|
20
|
-
const utils_2 = require("
|
|
19
|
+
const utils_1 = require("../../utils");
|
|
20
|
+
const utils_2 = require("../../utils");
|
|
21
21
|
const ux_specification_types_1 = require("@sap/ux-specification-types");
|
|
22
22
|
const i18next_1 = __importDefault(require("i18next"));
|
|
23
|
-
const extensionLogger_1 = require("
|
|
24
|
-
const common_1 = require("
|
|
25
|
-
const actions_1 = require("
|
|
26
|
-
const
|
|
27
|
-
const App_1 = require("../sync-rules/App");
|
|
28
|
-
const Page_1 = require("../sync-rules/Page");
|
|
23
|
+
const extensionLogger_1 = require("../../../../extensionLogger");
|
|
24
|
+
const common_1 = require("../../../common");
|
|
25
|
+
const actions_1 = require("../actions");
|
|
26
|
+
const sync_rules_1 = require("../../sync-rules");
|
|
29
27
|
const ListReportUtils_1 = require("./ListReportUtils");
|
|
28
|
+
const controls_1 = require("../../export/controls");
|
|
29
|
+
/**
|
|
30
|
+
* Default table type when not specified in manifest.
|
|
31
|
+
*/
|
|
32
|
+
exports.DEFAULT_TABLE_TYPE = ux_specification_types_1.v4.TableTypeV4.ResponsiveTable;
|
|
30
33
|
const ROOT_PROPERTIES_ORDER = ['header', 'filterBar', 'chart', 'table'];
|
|
31
34
|
const UILINEITEM = '@UI.LineItem';
|
|
32
35
|
/**
|
|
@@ -40,6 +43,7 @@ const UILINEITEM = '@UI.LineItem';
|
|
|
40
43
|
* @returns {Definition} - the updated selection fields definition
|
|
41
44
|
*/
|
|
42
45
|
function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, selectionFieldsDefinition, qualifier) {
|
|
46
|
+
// No @validity check needed here
|
|
43
47
|
if (!selectionFieldsDefinition) {
|
|
44
48
|
selectionFieldsDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.SelectionFields];
|
|
45
49
|
selectionFieldsDefinition.additionalProperties = false;
|
|
@@ -51,8 +55,9 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
|
|
|
51
55
|
if (selectionFieldsAnnotation) {
|
|
52
56
|
let i = 0;
|
|
53
57
|
selectionFieldsAnnotation?.forEach((selectionField) => {
|
|
58
|
+
const value = selectionField.value ?? `UnknownField${i}`;
|
|
54
59
|
let description = selectionField.value;
|
|
55
|
-
const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(
|
|
60
|
+
const fieldDefinition = 'SelectionField::' + (0, common_1.prepareRef)(value);
|
|
56
61
|
if (selectionField.type === 'PropertyPath') {
|
|
57
62
|
description = (0, common_1.getLabelForPropertyPath)(selectionField, entityType);
|
|
58
63
|
}
|
|
@@ -68,10 +73,14 @@ function addSelectionFields(entityType, appSchema, selectionFieldsAnnotation, se
|
|
|
68
73
|
additionalProperties: false,
|
|
69
74
|
...(dataType && { dataType })
|
|
70
75
|
};
|
|
76
|
+
if (selectionField.value === undefined) {
|
|
77
|
+
// Add message about unresolvable value for selection field
|
|
78
|
+
(0, common_1.addMessageToSchema)(appSchema.definitions[fieldDefinition], {
|
|
79
|
+
text: i18next_1.default.t('UNRESOLVABLE_VALUE_OF_SELECTION_FIELD')
|
|
80
|
+
});
|
|
81
|
+
}
|
|
71
82
|
appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.isViewNode] = true;
|
|
72
|
-
appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [
|
|
73
|
-
{ name: ux_specification_types_1.SchemaKeyName.value, value: `${selectionField.value}` }
|
|
74
|
-
];
|
|
83
|
+
appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.value, value: `${value}` }];
|
|
75
84
|
if (selectionField.$target?.fullyQualifiedName.indexOf('@') > -1) {
|
|
76
85
|
appSchema.definitions[fieldDefinition][ux_specification_types_1.SchemaTag.target] = selectionField.$target.fullyQualifiedName
|
|
77
86
|
.split('@')[0]
|
|
@@ -130,6 +139,7 @@ function getPropertiesIndex(selectionFields, entityType) {
|
|
|
130
139
|
* @param selectionFields - The selection fields annotation to be processed
|
|
131
140
|
*/
|
|
132
141
|
function addVisualFilters(entityType, appSchema, visualFiltersManifest, selectionFields) {
|
|
142
|
+
// No @validity check needed here
|
|
133
143
|
const propertiesIndex = getPropertiesIndex(selectionFields, entityType);
|
|
134
144
|
const visualFilters = appSchema.definitions[ux_specification_types_1.DefinitionName.VisualFilters];
|
|
135
145
|
visualFilters.properties = {};
|
|
@@ -171,6 +181,8 @@ function applyCustomFilterFields(appSchema, selectionFieldsDefinition, v4Page) {
|
|
|
171
181
|
};
|
|
172
182
|
(0, utils_2.addCustomFilterFieldDefinition)(appSchema, selectionFieldsDefinition, v4Page);
|
|
173
183
|
const customSectionDefinition = appSchema.definitions[ux_specification_types_1.DefinitionName.CustomFilterFieldPosition];
|
|
184
|
+
// Instantiate for @validity check
|
|
185
|
+
new controls_1.CustomFilterFieldPosition().init();
|
|
174
186
|
if (typeof customSectionDefinition === 'object') {
|
|
175
187
|
(0, common_1.addDescriptiveEnumDefinition)(appSchema, selectionFieldsDefinition, {
|
|
176
188
|
schema: customSectionDefinition,
|
|
@@ -212,6 +224,8 @@ function defineActions(appSchema, schemaIdForActions, annotations, targetAnnotat
|
|
|
212
224
|
action[ux_specification_types_1.SchemaTag.annotationPath] = `/${actionRecord.fullyQualifiedName}`;
|
|
213
225
|
//as ChartToolBarAction is an empty object, copy ViewToolBarAction and remove properties
|
|
214
226
|
appSchema.definitions[actionDefinition] = JSON.parse(JSON.stringify(appSchema.definitions[ux_specification_types_1.DefinitionName.ViewToolBarAction]));
|
|
227
|
+
// Instantiate for @validity check
|
|
228
|
+
new controls_1.ViewToolBarAction().init();
|
|
215
229
|
appSchema.definitions[actionDefinition].properties = {};
|
|
216
230
|
appSchema.definitions[actionDefinition][ux_specification_types_1.SchemaTag.annotationPath] = actionRecord.fullyQualifiedName;
|
|
217
231
|
i++;
|
|
@@ -395,6 +409,8 @@ function addALPChartView(appSchema, chartAnnotationPath, targetAnnotation, annot
|
|
|
395
409
|
chartView[ux_specification_types_1.SchemaTag.artifactType] = ux_specification_types_1.ArtifactType.Manifest;
|
|
396
410
|
chartView[ux_specification_types_1.SchemaTag.key] = 'primary';
|
|
397
411
|
chartView[ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.key, value: 'primary' }];
|
|
412
|
+
// Instantiate for @validity check
|
|
413
|
+
new controls_1.ALPChart().init();
|
|
398
414
|
}
|
|
399
415
|
/**
|
|
400
416
|
* Adds the ALP views to the app-specific schema.
|
|
@@ -527,8 +543,9 @@ function addViewChartDefinitions(inputParameters, annotations) {
|
|
|
527
543
|
* @param viewKey - view key
|
|
528
544
|
* @param title - view title
|
|
529
545
|
* @param page - Represents the page in the application's structure where the view line items are to be added.
|
|
546
|
+
* @param app - Represents the overall application structure, providing access to the manifest.
|
|
530
547
|
*/
|
|
531
|
-
function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title, page) {
|
|
548
|
+
function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition, viewKey, title, page, app) {
|
|
532
549
|
const idForChart = addViewChartDefinitions(inputParameters, UIAnnotations);
|
|
533
550
|
const chartViewDefinition = appSchema.definitions[idForChart];
|
|
534
551
|
chartViewDefinition.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
|
|
@@ -542,14 +559,14 @@ function addViewChart(inputParameters, UIAnnotations, appSchema, viewsDefinition
|
|
|
542
559
|
};
|
|
543
560
|
// Add "manifestPath" for table properties
|
|
544
561
|
addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRChartView, chartViewDefinition, {
|
|
545
|
-
pageName: page.
|
|
546
|
-
manifest:
|
|
562
|
+
pageName: page.target.id,
|
|
563
|
+
manifest: app.manifest,
|
|
547
564
|
targetAnnotation: inputParameters.targetAnnotation,
|
|
548
565
|
viewConfig: {
|
|
549
566
|
key: viewKey,
|
|
550
567
|
entitySet: inputParameters.entitySet
|
|
551
568
|
}
|
|
552
|
-
});
|
|
569
|
+
}, true);
|
|
553
570
|
}
|
|
554
571
|
/**
|
|
555
572
|
* Retrieves the line item reference for a specified view and entity type.
|
|
@@ -573,96 +590,6 @@ function getLineItemRef(v4Page, entityType, viewKey, lineItemTerm, lineItemQuali
|
|
|
573
590
|
`@${lineItemTerm}${qualifier}`;
|
|
574
591
|
return entitySet ? `/${entitySet}/${lineItemReference}` : lineItemReference;
|
|
575
592
|
}
|
|
576
|
-
/**
|
|
577
|
-
* Adjusts the schema definition related to the creation fields in the list report (LR) table.
|
|
578
|
-
* This function modifies the app schema to handle the creation mode and relevant settings for the table.
|
|
579
|
-
*
|
|
580
|
-
* @param {SchemaAdjustmentParameters} schemaAdjustmentParameters - An object containing parameters required for schema adjustments.
|
|
581
|
-
* It includes the application schema, table definition ID, facet definition ID, and the V4 page information.
|
|
582
|
-
*/
|
|
583
|
-
function adjustCreationFieldsDefinition(schemaAdjustmentParameters) {
|
|
584
|
-
const { entityType, appSchema, tableDefinitionKey, facetDefinitionKey, v4Page, viewKey } = schemaAdjustmentParameters;
|
|
585
|
-
// when the table view is created, the entity type may differ from the one used for the table
|
|
586
|
-
// schemaAdjustmentParameters contains the entity type used for the view
|
|
587
|
-
const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term);
|
|
588
|
-
// set specific implementation for creation fields in the LR table
|
|
589
|
-
const creationModeDefinitionKey = (0, common_1.getFacetDefinitionKey)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey);
|
|
590
|
-
const tableDefinition = appSchema.definitions[tableDefinitionKey];
|
|
591
|
-
const creationModeProperty = tableDefinition.properties[ux_specification_types_1.PropertyName.creationMode];
|
|
592
|
-
creationModeProperty.$ref = (0, common_1.getFacetDefinitionLink)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey);
|
|
593
|
-
const creationModeDefinition = appSchema.definitions[creationModeDefinitionKey] ??
|
|
594
|
-
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey, appSchema);
|
|
595
|
-
const context = {
|
|
596
|
-
page: v4Page,
|
|
597
|
-
schema: creationModeDefinition,
|
|
598
|
-
parameters: {
|
|
599
|
-
lineItemRef,
|
|
600
|
-
tableDefinition
|
|
601
|
-
}
|
|
602
|
-
};
|
|
603
|
-
// for the AnalyticalTable we don't set the creation mode property
|
|
604
|
-
common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRCreationModeForAnalyticalTable, context);
|
|
605
|
-
// the TreeTable has some specific properties in the creation mode
|
|
606
|
-
common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRCreationModeForNonTreeTable, context);
|
|
607
|
-
// only in CreationDialog mode is the creationFields property allowed
|
|
608
|
-
common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRCreationModeForNonCreationDialogMode, context);
|
|
609
|
-
}
|
|
610
|
-
/**
|
|
611
|
-
* Adjusts the schema definition related to the analytical configuration in the list report (LR) table.
|
|
612
|
-
* This function modifies the app schema to handle the analytical configuration and relevant settings for the table.
|
|
613
|
-
*
|
|
614
|
-
* @param {SchemaAdjustmentParameters} schemaAdjustmentParameters - An object containing parameters required for schema adjustments.
|
|
615
|
-
* It includes the application schema, table definition ID, facet definition ID, and the V4 page information.
|
|
616
|
-
*/
|
|
617
|
-
function adjustAnalyticalConfiguration(schemaAdjustmentParameters) {
|
|
618
|
-
const { entityType, appSchema, tableDefinitionKey, facetDefinitionKey, v4Page, viewKey, dataForLineItem } = schemaAdjustmentParameters;
|
|
619
|
-
// when the table view is created, the entity type may differ from the one used for the table
|
|
620
|
-
// schemaAdjustmentParameters contains the entity type used for the view
|
|
621
|
-
const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term, dataForLineItem.lineItemAnnotation?.qualifier);
|
|
622
|
-
// set specific implementation for analytical configuration in the LR table
|
|
623
|
-
const tableDefinition = appSchema.definitions[tableDefinitionKey];
|
|
624
|
-
const analyticalConfigurationDefinitionName = viewKey
|
|
625
|
-
? ux_specification_types_1.DefinitionName.ViewAnalyticalConfiguration
|
|
626
|
-
: ux_specification_types_1.DefinitionName.AnalyticalConfiguration;
|
|
627
|
-
const analyticalConfigurationDefinition = appSchema.definitions[analyticalConfigurationDefinitionName] ??
|
|
628
|
-
(0, common_1.parseSchemaDefinition)(analyticalConfigurationDefinitionName, facetDefinitionKey, appSchema);
|
|
629
|
-
const context = {
|
|
630
|
-
page: v4Page,
|
|
631
|
-
schema: analyticalConfigurationDefinition,
|
|
632
|
-
parameters: {
|
|
633
|
-
lineItemRef,
|
|
634
|
-
tableDefinition
|
|
635
|
-
}
|
|
636
|
-
};
|
|
637
|
-
// for the AnalyticalTable we set the analytical configuration property
|
|
638
|
-
common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRAnalyticalConfigurationForNonAnalyticalTable, context);
|
|
639
|
-
}
|
|
640
|
-
/**
|
|
641
|
-
* Adjusts the schema definition related to the popin layout in the list report (LR) table.
|
|
642
|
-
* This function modifies the app schema to handle the popin layout and relevant settings for the table.
|
|
643
|
-
*
|
|
644
|
-
* @param {SchemaAdjustmentParameters} schemaAdjustmentParameters - An object containing parameters required for schema adjustments.
|
|
645
|
-
* It includes the application schema, table definition ID, facet definition ID, and the V4 page information.
|
|
646
|
-
*/
|
|
647
|
-
function adjustPopinLayout(schemaAdjustmentParameters) {
|
|
648
|
-
const { entityType, appSchema, tableDefinitionKey, v4Page, viewKey, dataForLineItem } = schemaAdjustmentParameters;
|
|
649
|
-
// when the table view is created, the entity type may differ from the one used for the table
|
|
650
|
-
// schemaAdjustmentParameters contains the entity type used for the view
|
|
651
|
-
const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term, dataForLineItem.lineItemAnnotation?.qualifier);
|
|
652
|
-
// set specific implementation for popinLayout in the LR table
|
|
653
|
-
const tableDefinition = appSchema.definitions[tableDefinitionKey];
|
|
654
|
-
const popinLayoutDefinition = tableDefinition.properties['popinLayout'];
|
|
655
|
-
const context = {
|
|
656
|
-
page: v4Page,
|
|
657
|
-
schema: popinLayoutDefinition,
|
|
658
|
-
parameters: {
|
|
659
|
-
lineItemRef,
|
|
660
|
-
tableDefinition
|
|
661
|
-
}
|
|
662
|
-
};
|
|
663
|
-
// for the ResponsiveTable (default table type) we allow to set the popin layout property
|
|
664
|
-
common_1.manifestDrivenSchemaProcessor.apply(ux_specification_types_1.RuleName.LRPopinLayoutForNonResponsiveTable, context);
|
|
665
|
-
}
|
|
666
593
|
/**
|
|
667
594
|
* Adjusts the schema for a table by making necessary changes such as populating creation fields,
|
|
668
595
|
* adjusting creation field definitions, and adding enum mappings for mass edit functionalities.
|
|
@@ -674,16 +601,85 @@ function applyLRSchemaAdjustments(schemaAdjustmentParameters) {
|
|
|
674
601
|
// in the future, all postgeneration adjustments for the LR Page should be done here
|
|
675
602
|
// populate the creation fields for the table with the data from the columns
|
|
676
603
|
(0, utils_1.initializeCreationModeSchema)(appSchema, facetDefinitionKey, entityType, ux_specification_types_1.DefinitionName.TableCreationModeLR);
|
|
677
|
-
//
|
|
678
|
-
|
|
679
|
-
// remove unnecessary properties from the analytical configuration aggregation according to the table type
|
|
680
|
-
adjustAnalyticalConfiguration(schemaAdjustmentParameters);
|
|
681
|
-
adjustPopinLayout(schemaAdjustmentParameters);
|
|
604
|
+
// Apply decorator-based visibility rules for table properties
|
|
605
|
+
applyTableDecorators(schemaAdjustmentParameters);
|
|
682
606
|
// add columns to a enum, in this case enableMassEdit -> visibleFields and ignoredFields
|
|
683
607
|
(0, utils_2.addEnumForEnableMassEdit)(appSchema, tableDefinitionKey, facetDefinitionKey, entityType);
|
|
684
608
|
// add the custom action and custom action menu definition
|
|
685
609
|
(0, actions_1.configureCustomActionDefinition)(schemaAdjustmentParameters);
|
|
686
610
|
}
|
|
611
|
+
/**
|
|
612
|
+
* Retrieves the table settings from the manifest for a given line item reference.
|
|
613
|
+
* The returned object includes both TableSettings and Table-level properties
|
|
614
|
+
* like creationMode, analyticalConfiguration, and popinLayout.
|
|
615
|
+
*
|
|
616
|
+
* @param v4Page - The V4 page configuration from manifest
|
|
617
|
+
* @param lineItemRef - The line item reference (e.g., '@UI.LineItem')
|
|
618
|
+
* @returns The table settings or undefined if not found
|
|
619
|
+
*/
|
|
620
|
+
function getTableSettingsFromManifest(v4Page, lineItemRef) {
|
|
621
|
+
return v4Page?.options?.settings?.controlConfiguration?.[lineItemRef ?? '']?.[ux_specification_types_1.PropertyName.tableSettings];
|
|
622
|
+
}
|
|
623
|
+
/**
|
|
624
|
+
* Applies decorator-based visibility rules to table and creation mode definitions.
|
|
625
|
+
* This function uses the @hide and @message decorators defined on the Table and TableCreationModeLR classes
|
|
626
|
+
* to conditionally hide properties and show warning messages based on table type and settings.
|
|
627
|
+
*
|
|
628
|
+
* @param schemaAdjustmentParameters - Parameters containing schema, page, and table definition information
|
|
629
|
+
*/
|
|
630
|
+
function applyTableDecorators(schemaAdjustmentParameters) {
|
|
631
|
+
const { appSchema, tableDefinitionKey, facetDefinitionKey, v4Page, viewKey, entityType, dataForLineItem } = schemaAdjustmentParameters;
|
|
632
|
+
// Get the line item reference for looking up table settings in manifest
|
|
633
|
+
const lineItemRef = getLineItemRef(v4Page, entityType, viewKey, entityType?.annotations?.UI?.LineItem?.term, dataForLineItem?.lineItemAnnotation?.qualifier);
|
|
634
|
+
// Get table settings from manifest and build custom context for decorator evaluation
|
|
635
|
+
const tableSettings = getTableSettingsFromManifest(v4Page, lineItemRef);
|
|
636
|
+
const customContext = {
|
|
637
|
+
...tableSettings,
|
|
638
|
+
type: tableSettings?.type ?? exports.DEFAULT_TABLE_TYPE
|
|
639
|
+
};
|
|
640
|
+
// Get the table definition to apply decorators to
|
|
641
|
+
const tableDefinition = appSchema.definitions[tableDefinitionKey];
|
|
642
|
+
// Get the creation mode definition
|
|
643
|
+
const creationModeDefinitionKey = (0, common_1.getFacetDefinitionKey)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey);
|
|
644
|
+
const creationModeDefinition = appSchema.definitions[creationModeDefinitionKey] ??
|
|
645
|
+
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey, appSchema);
|
|
646
|
+
// Set up the $ref for creationMode property
|
|
647
|
+
if (tableDefinition?.properties?.[ux_specification_types_1.PropertyName.creationMode]) {
|
|
648
|
+
const creationModeProperty = tableDefinition.properties[ux_specification_types_1.PropertyName.creationMode];
|
|
649
|
+
creationModeProperty.$ref = (0, common_1.getFacetDefinitionLink)(ux_specification_types_1.DefinitionName.TableCreationModeLR, facetDefinitionKey);
|
|
650
|
+
}
|
|
651
|
+
// Apply decorators to the Table definition (creationMode, analyticalConfiguration, popinLayout)
|
|
652
|
+
// Create a Table instance and apply its decorators to the specific table definition
|
|
653
|
+
new controls_1.Table().init(customContext, tableDefinition);
|
|
654
|
+
// Apply decorators to the TableCreationModeLR definition (creationFields, createInPlace, isCreateEnabled)
|
|
655
|
+
new controls_1.TableCreationModeLR().init(customContext, creationModeDefinition);
|
|
656
|
+
// Apply analyticalConfiguration decorators only when the property is specified in manifest
|
|
657
|
+
const hasAnalyticalConfiguration = tableSettings?.analyticalConfiguration !== undefined;
|
|
658
|
+
if (!hasAnalyticalConfiguration) {
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
if (viewKey) {
|
|
662
|
+
// Multi-view: create a view-specific definition to isolate decorator messages per view
|
|
663
|
+
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewAnalyticalConfiguration, viewKey, appSchema);
|
|
664
|
+
const definitionKey = (0, common_1.getFacetDefinitionKey)(ux_specification_types_1.DefinitionName.ViewAnalyticalConfiguration, viewKey);
|
|
665
|
+
const definition = appSchema.definitions[definitionKey];
|
|
666
|
+
if (definition) {
|
|
667
|
+
new controls_1.ViewAnalyticalConfiguration().init(customContext, definition);
|
|
668
|
+
// Update the table's $ref to point to the view-specific definition
|
|
669
|
+
const analyticalConfigProp = tableDefinition?.properties?.[ux_specification_types_1.PropertyName.analyticalConfiguration];
|
|
670
|
+
if (analyticalConfigProp) {
|
|
671
|
+
analyticalConfigProp.$ref = (0, common_1.getFacetDefinitionLink)(ux_specification_types_1.DefinitionName.ViewAnalyticalConfiguration, viewKey);
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
else {
|
|
676
|
+
// Single table: use the shared definition
|
|
677
|
+
const definition = appSchema.definitions[ux_specification_types_1.DefinitionName.AnalyticalConfiguration];
|
|
678
|
+
if (definition) {
|
|
679
|
+
new controls_1.AnalyticalConfiguration().init(customContext, definition);
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
}
|
|
687
683
|
/**
|
|
688
684
|
* Modifies the app schema, adds the right line item settings as derived from the visualization.
|
|
689
685
|
*
|
|
@@ -695,11 +691,13 @@ function applyLRSchemaAdjustments(schemaAdjustmentParameters) {
|
|
|
695
691
|
* @param generateParameters.serviceAVT - OData service AVT information
|
|
696
692
|
* @param generateParameters.entityType - entity type of the current page
|
|
697
693
|
* @param {Page} page - Represents the page in the application's structure where the view line items are to be added.
|
|
694
|
+
* @param app - the application object containing manifest and other app-specific information.
|
|
698
695
|
* @param {ExtensionLogger} logger - Logger for recording informational or error messages during the schema adjustment process.
|
|
699
696
|
*/
|
|
700
|
-
function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page, logger) {
|
|
697
|
+
function addViewLineItems(inputParameters, viewsDefinition, visualization, templateAnnotation, { serviceAVT, entityType }, page, app, logger) {
|
|
701
698
|
const tableId = `${ux_specification_types_1.DefinitionName.LRTableView}<${inputParameters.viewKey}>`;
|
|
702
|
-
const
|
|
699
|
+
const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${inputParameters.viewKey}`;
|
|
700
|
+
const schemaIdForActions = `${ux_specification_types_1.DefinitionName.Actions}<${schemaIdForColumns}>`;
|
|
703
701
|
const lrTableView = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.LRTableView, inputParameters.viewKey, inputParameters.appSchema);
|
|
704
702
|
delete lrTableView[ux_specification_types_1.SchemaTag.isViewNode];
|
|
705
703
|
lrTableView[ux_specification_types_1.SchemaTag.annotationPath] = inputParameters.targetAnnotation;
|
|
@@ -710,14 +708,14 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
|
|
|
710
708
|
lrTableView['entitySet'] = inputParameters.entitySet;
|
|
711
709
|
}
|
|
712
710
|
//Copy toolbar
|
|
713
|
-
(0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar,
|
|
711
|
+
(0, common_1.addDefinitionRef)(lrTableView.properties.toolBar, ux_specification_types_1.DefinitionName.ToolBar, schemaIdForColumns);
|
|
714
712
|
const title = `Table View (key: ${inputParameters.viewKey})`;
|
|
715
713
|
viewsDefinition.properties[inputParameters.viewKey] = {
|
|
716
714
|
$ref: `${common_1.DEFINITION_LINK_PREFIX}${tableId}`,
|
|
717
715
|
description: inputParameters.title || title,
|
|
718
716
|
title
|
|
719
717
|
};
|
|
720
|
-
(0, common_1.addDefinitionRef)(lrTableView.properties.columns,
|
|
718
|
+
(0, common_1.addDefinitionRef)(lrTableView.properties.columns, schemaIdForColumns);
|
|
721
719
|
lrTableView.properties.annotationPath[ux_specification_types_1.SchemaTag.hidden] = true;
|
|
722
720
|
lrTableView.properties.index[ux_specification_types_1.SchemaTag.hidden] = true;
|
|
723
721
|
lrTableView.properties.entitySet[ux_specification_types_1.SchemaTag.hidden] = true;
|
|
@@ -728,30 +726,29 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
|
|
|
728
726
|
lineItemAnnotation: inputParameters.targetEntityType?.annotations.UI[annotationTerm],
|
|
729
727
|
entityType: inputParameters.targetEntityType,
|
|
730
728
|
oDataServiceAVT: serviceAVT,
|
|
731
|
-
lineItemId:
|
|
729
|
+
lineItemId: schemaIdForColumns
|
|
732
730
|
};
|
|
733
731
|
(0, utils_2.addLineItemsTypeToSchema)(dataForLineItem, ux_specification_types_1.DefinitionName.ViewTableColumn, ux_specification_types_1.DefinitionName.ViewCustomColumn, ux_specification_types_1.DefinitionName.ViewCustomAction);
|
|
734
732
|
// Table toolbar actions with custom actions
|
|
735
733
|
const sectionIdPrefix = inputParameters.entitySet ? `/${inputParameters.entitySet}/` : '';
|
|
736
734
|
const sectionIdInManifest = `${sectionIdPrefix}@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}${visualization.split(ux_specification_types_1.Visualization.LineItem)[1]}`;
|
|
737
|
-
const
|
|
738
|
-
const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${viewId}>`;
|
|
735
|
+
const customActionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomAction}<${schemaIdForColumns}>`;
|
|
739
736
|
// Anchor selection
|
|
740
|
-
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition,
|
|
741
|
-
const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${
|
|
737
|
+
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomActionPosition, schemaIdForColumns, inputParameters.appSchema);
|
|
738
|
+
const customActionPositionDefinitionKey = `${ux_specification_types_1.DefinitionName.ViewCustomActionPosition}<${schemaIdForColumns}>`;
|
|
742
739
|
const customActionDefinition = inputParameters.appSchema.definitions[customActionDefinitionKey];
|
|
743
740
|
customActionDefinition.properties.position.$ref =
|
|
744
741
|
`${common_1.DEFINITION_LINK_PREFIX}${customActionPositionDefinitionKey}`;
|
|
745
742
|
const schemaAdjustmentParameters = {
|
|
746
743
|
logger: logger,
|
|
747
744
|
appSchema: inputParameters.appSchema,
|
|
748
|
-
v4Page: page.
|
|
745
|
+
v4Page: page.target,
|
|
749
746
|
tableDefinitionKey: tableId,
|
|
750
|
-
facetDefinitionKey:
|
|
747
|
+
facetDefinitionKey: schemaIdForColumns,
|
|
751
748
|
viewKey: inputParameters.viewKey,
|
|
752
749
|
entityType: inputParameters.targetEntityType || entityType,
|
|
753
750
|
dataForLineItem,
|
|
754
|
-
sectionActionsDefinitionKey:
|
|
751
|
+
sectionActionsDefinitionKey: schemaIdForActions,
|
|
755
752
|
scopedCustomActionDefinitionKey: customActionDefinitionKey,
|
|
756
753
|
customActionDefinitionName: ux_specification_types_1.DefinitionName.ViewCustomAction,
|
|
757
754
|
sectionIdInManifest,
|
|
@@ -760,14 +757,16 @@ function addViewLineItems(inputParameters, viewsDefinition, visualization, templ
|
|
|
760
757
|
applyLRSchemaAdjustments(schemaAdjustmentParameters);
|
|
761
758
|
// Add "manifestPath" for table properties
|
|
762
759
|
addManifestPathsToPropertiesLR(inputParameters.appSchema, ux_specification_types_1.DefinitionName.LRTableView, lrTableView, {
|
|
763
|
-
pageName: page.
|
|
764
|
-
manifest:
|
|
760
|
+
pageName: page.target.id,
|
|
761
|
+
manifest: app.manifest,
|
|
765
762
|
targetAnnotation: inputParameters.targetAnnotation,
|
|
766
763
|
viewConfig: {
|
|
767
764
|
key: inputParameters.viewKey,
|
|
768
765
|
entitySet: inputParameters.entitySet
|
|
769
766
|
}
|
|
770
|
-
});
|
|
767
|
+
}, true);
|
|
768
|
+
// Add "manifestPath" for view actions
|
|
769
|
+
(0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(inputParameters.appSchema, page.target.id, schemaIdForActions, app.getManifest(), inputParameters.targetAnnotation, inputParameters.entitySet);
|
|
771
770
|
}
|
|
772
771
|
/**
|
|
773
772
|
* Adds the schema tags to a given view.
|
|
@@ -792,17 +791,20 @@ function addTagsToView(viewsDefinition, viewKey, namespace, view) {
|
|
|
792
791
|
* @param commonInputParameters - list of input parameters as collected by the calling instance
|
|
793
792
|
* @param visualization - visualization of the annotation
|
|
794
793
|
* @param v4Page - the given page in manifest
|
|
794
|
+
* @param manifest - The application manifest
|
|
795
795
|
* @param logger - extension logger
|
|
796
796
|
*/
|
|
797
|
-
function addViewCustomExtensions(commonInputParameters, visualization, v4Page, logger) {
|
|
798
|
-
const
|
|
797
|
+
function addViewCustomExtensions(commonInputParameters, visualization, v4Page, manifest, logger) {
|
|
798
|
+
const schemaIdForColumns = `${ux_specification_types_1.DefinitionName.LineItemsOfView}::${commonInputParameters.viewKey}`;
|
|
799
799
|
const sectionIdPrefix = commonInputParameters.entitySet ? `/${commonInputParameters.entitySet}/` : '';
|
|
800
800
|
const sectionIdInManifest = `${sectionIdPrefix}@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}${visualization.split(ux_specification_types_1.Visualization.LineItem)[1]}`;
|
|
801
|
-
const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn,
|
|
802
|
-
(0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition,
|
|
803
|
-
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition,
|
|
804
|
-
(0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${
|
|
805
|
-
(0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema,
|
|
801
|
+
const viewColumnDefinition = (0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewCustomColumn, schemaIdForColumns, commonInputParameters.appSchema);
|
|
802
|
+
(0, common_1.addDefinitionRef)(viewColumnDefinition.properties.position, ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns);
|
|
803
|
+
(0, common_1.parseSchemaDefinition)(ux_specification_types_1.DefinitionName.ViewPosition, schemaIdForColumns, commonInputParameters.appSchema);
|
|
804
|
+
(0, utils_2.addCustomColumnDefinition)(commonInputParameters.appSchema, v4Page, logger, `${ux_specification_types_1.DefinitionName.ViewCustomColumn}<${schemaIdForColumns}>`, schemaIdForColumns, sectionIdInManifest);
|
|
805
|
+
(0, utils_2.addFragmentEnumForAnchor)(commonInputParameters.appSchema, schemaIdForColumns, v4Page, `${ux_specification_types_1.DefinitionName.ViewPosition}<${schemaIdForColumns}>`, sectionIdInManifest);
|
|
806
|
+
// Add "manifestPath" for view columns
|
|
807
|
+
(0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(commonInputParameters.appSchema, v4Page.id, schemaIdForColumns, manifest, commonInputParameters.targetAnnotation, commonInputParameters.entitySet);
|
|
806
808
|
// Remove generic position
|
|
807
809
|
if (commonInputParameters.appSchema.definitions.Position) {
|
|
808
810
|
delete commonInputParameters.appSchema.definitions.Position;
|
|
@@ -819,18 +821,19 @@ function addViewCustomExtensions(commonInputParameters, visualization, v4Page, l
|
|
|
819
821
|
* @param generateParameters.entityType - entity type of the current page
|
|
820
822
|
* @param generateParameters.logger - extension logger
|
|
821
823
|
* @param page - the current page object
|
|
824
|
+
* @param app - the application object containing manifest and other app-specific information.
|
|
822
825
|
* @param uiAnnotations - UI annotations of the given entityType
|
|
823
826
|
* @param view - the given view
|
|
824
827
|
*/
|
|
825
|
-
function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, uiAnnotations, view) {
|
|
828
|
+
function addLRViewParts(visualization, viewsDefinition, commonInputParameters, { serviceAVT, entityType, logger }, page, app, uiAnnotations, view) {
|
|
826
829
|
if (visualization?.indexOf(ux_specification_types_1.Visualization.LineItem) > -1) {
|
|
827
830
|
//Add Line item view
|
|
828
|
-
addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page, logger);
|
|
829
|
-
addViewCustomExtensions(commonInputParameters, visualization, page.
|
|
831
|
+
addViewLineItems(commonInputParameters, viewsDefinition, visualization, commonInputParameters.targetAnnotation, { serviceAVT, entityType }, page, app, logger);
|
|
832
|
+
addViewCustomExtensions(commonInputParameters, visualization, page.target, app.getManifest(), logger);
|
|
830
833
|
}
|
|
831
834
|
else if (visualization?.indexOf('Chart') > -1) {
|
|
832
835
|
//Add Chart view
|
|
833
|
-
addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title, page);
|
|
836
|
+
addViewChart(commonInputParameters, uiAnnotations, commonInputParameters.appSchema, viewsDefinition, commonInputParameters.viewKey, commonInputParameters.title, page, app);
|
|
834
837
|
}
|
|
835
838
|
else if (view['template']) {
|
|
836
839
|
const titleOnHover = view['label'] || `Custom View (key: ${commonInputParameters.viewKey})`;
|
|
@@ -854,17 +857,16 @@ function addLRViewParts(visualization, viewsDefinition, commonInputParameters, {
|
|
|
854
857
|
/**
|
|
855
858
|
* Checks for the default annotation path to use for LR table.
|
|
856
859
|
*
|
|
857
|
-
* @param
|
|
858
|
-
* @param entityType - actual entity type (AVT information)
|
|
859
|
-
* @param templateType - The type of template being used (e.g., ListReportObjectPageV4 or AnalyticalListPageV4)
|
|
860
|
+
* @param page - the current page object
|
|
860
861
|
* @returns annotation term
|
|
861
862
|
*/
|
|
862
|
-
function getDefaultAnnotationPath(
|
|
863
|
-
|
|
863
|
+
function getDefaultAnnotationPath(page) {
|
|
864
|
+
const { entity: { type: entityType }, template: { type: templateType }, target } = page;
|
|
865
|
+
if (target?.options?.settings?.views?.paths && templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
|
|
864
866
|
return;
|
|
865
867
|
}
|
|
866
|
-
if (
|
|
867
|
-
return
|
|
868
|
+
if (target?.options?.settings?.defaultTemplateAnnotationPath) {
|
|
869
|
+
return target?.options?.settings.defaultTemplateAnnotationPath;
|
|
868
870
|
}
|
|
869
871
|
if (templateType === ux_specification_types_1.TemplateType.ListReportObjectPageV4) {
|
|
870
872
|
return (entityType?.annotations.UI?.SelectionPresentationVariant?.term ||
|
|
@@ -904,8 +906,9 @@ function addHeaderActions(appSchema, v4Page, logger) {
|
|
|
904
906
|
* @param definitionName - The name of the definition/class whose properties are being processed.
|
|
905
907
|
* @param definition - The definition object containing property schemas.
|
|
906
908
|
* @param pathParams - Additional context required to compute manifest paths.
|
|
909
|
+
* @param handleRelative - A flag indicating whether to use relative paths for definition properties.
|
|
907
910
|
*/
|
|
908
|
-
function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams) {
|
|
911
|
+
function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, pathParams, handleRelative = false) {
|
|
909
912
|
let targetAnnotation = undefined;
|
|
910
913
|
if (pathParams.targetAnnotation) {
|
|
911
914
|
const annotationParts = pathParams.targetAnnotation?.split('/');
|
|
@@ -921,8 +924,13 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
|
|
|
921
924
|
}
|
|
922
925
|
(0, utils_1.addManifestPathsToProperties)(appSchema, definitionName, definition, {
|
|
923
926
|
...pathParams,
|
|
924
|
-
pathsParts: [
|
|
925
|
-
|
|
927
|
+
pathsParts: [
|
|
928
|
+
pathParams.sectionId ? undefined : targetAnnotation,
|
|
929
|
+
pathParams.columnKey ? pathParams.columnKey : '',
|
|
930
|
+
targetAnnotation,
|
|
931
|
+
pathParams.viewConfig
|
|
932
|
+
]
|
|
933
|
+
}, handleRelative);
|
|
926
934
|
}
|
|
927
935
|
/**
|
|
928
936
|
* Adds 'manifestPath' to static nodes in schema.
|
|
@@ -931,6 +939,8 @@ function addManifestPathsToPropertiesLR(appSchema, definitionName, definition, p
|
|
|
931
939
|
* @param pathParams - Additional context required to compute manifest paths.
|
|
932
940
|
*/
|
|
933
941
|
function addManifestPathsToStaticNodes(appSchema, pathParams) {
|
|
942
|
+
// Add "manifestPath" for current page
|
|
943
|
+
appSchema['manifestPath'] = (0, utils_1.getPageManifestPath)(pathParams);
|
|
934
944
|
// Root level - rules stored on page class level
|
|
935
945
|
addManifestPathsToPropertiesLR(appSchema, ux_specification_types_1.PageTypeV4.ListReport, appSchema, pathParams);
|
|
936
946
|
// Other definitions
|
|
@@ -955,17 +965,24 @@ class ListReportPage {
|
|
|
955
965
|
* @param contextPath - context path of the page
|
|
956
966
|
*/
|
|
957
967
|
constructor(generateParameters, schema, templateName, contextPath) {
|
|
958
|
-
|
|
959
|
-
this.
|
|
960
|
-
this.
|
|
968
|
+
const template = { name: templateName, type: generateParameters.templateType };
|
|
969
|
+
this.appSchema = new sync_rules_1.AppSchema(schema);
|
|
970
|
+
this.app = (0, sync_rules_1.createApp)(generateParameters.manifest, generateParameters.serviceAVT, generateParameters.logger);
|
|
971
|
+
this.page = new sync_rules_1.Page(this.app, template, generateParameters.entitySet, generateParameters.entityType, contextPath);
|
|
972
|
+
this.logger = this.app.logger;
|
|
973
|
+
this.page.addConfig({
|
|
974
|
+
isALP: template.type === ux_specification_types_1.TemplateType.AnalyticalListPageV4,
|
|
975
|
+
views: this.page.target?.options?.settings.views,
|
|
976
|
+
defaultAnnotation: getDefaultAnnotationPath(this.page)
|
|
977
|
+
});
|
|
961
978
|
}
|
|
962
979
|
/**
|
|
963
980
|
* Cleans up the schema by hiding specific properties and removing unnecessary definitions.
|
|
964
981
|
*/
|
|
965
982
|
cleanup() {
|
|
966
|
-
this.
|
|
967
|
-
this.
|
|
968
|
-
(0, common_1.updatePropertyIndices)(this.
|
|
983
|
+
this.appSchema.hide(this.appSchema.getRootProperty([ux_specification_types_1.PropertyName.defaultTemplateAnnotationPath]));
|
|
984
|
+
this.appSchema.cleanup(['GenericColumns', 'Action']);
|
|
985
|
+
(0, common_1.updatePropertyIndices)(this.appSchema.get(), ROOT_PROPERTIES_ORDER);
|
|
969
986
|
}
|
|
970
987
|
/**
|
|
971
988
|
* Generates the finalized schema for the List Report page.
|
|
@@ -973,20 +990,33 @@ class ListReportPage {
|
|
|
973
990
|
* @returns The finalized schema for List Report page
|
|
974
991
|
*/
|
|
975
992
|
generate() {
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
993
|
+
const params = {
|
|
994
|
+
appSchema: this.appSchema,
|
|
995
|
+
app: this.app,
|
|
996
|
+
page: this.page,
|
|
997
|
+
logger: this.logger
|
|
998
|
+
};
|
|
999
|
+
new ListReportUtils_1.GeneralListReportSettings(params).init();
|
|
1000
|
+
if (!this.page.target) {
|
|
1001
|
+
return this.appSchema.get();
|
|
979
1002
|
}
|
|
980
|
-
new
|
|
981
|
-
new
|
|
982
|
-
new
|
|
1003
|
+
new controls_1.Header(params).init();
|
|
1004
|
+
new controls_1.HeaderActions(params).init();
|
|
1005
|
+
new controls_1.CustomHeaderAction(params).init();
|
|
1006
|
+
new ListReportUtils_1.FilterBar(params).init();
|
|
1007
|
+
new ListReportUtils_1.TableAndViews(params).init();
|
|
983
1008
|
// Add "manifestPath" for properties in static nodes
|
|
984
|
-
addManifestPathsToStaticNodes(this.
|
|
985
|
-
pageName: this.page.
|
|
1009
|
+
addManifestPathsToStaticNodes(this.appSchema.get(), {
|
|
1010
|
+
pageName: this.page.target.id,
|
|
986
1011
|
manifest: this.app.getManifest()
|
|
987
1012
|
});
|
|
1013
|
+
// Add "manifestPath" for custom header actions
|
|
1014
|
+
const definitionNames = [ux_specification_types_1.DefinitionName.HeaderActions];
|
|
1015
|
+
definitionNames.forEach((definitionName) => {
|
|
1016
|
+
(0, ListReportUtils_1.addManifestPathsToDefinitionPropertiesLR)(this.appSchema.get(), this.page.target.id, definitionName, this.app.getManifest());
|
|
1017
|
+
});
|
|
988
1018
|
this.cleanup();
|
|
989
|
-
return this.
|
|
1019
|
+
return this.appSchema.get();
|
|
990
1020
|
}
|
|
991
1021
|
}
|
|
992
1022
|
/**
|
|
@@ -1003,7 +1033,7 @@ function generateListReportSchemaV4(generateParameters, genericSchema, templateN
|
|
|
1003
1033
|
const listReport = new ListReportPage(generateParameters, genericSchema, templateName, contextPath);
|
|
1004
1034
|
if (!listReport.app.getManifest()) {
|
|
1005
1035
|
listReport.cleanup();
|
|
1006
|
-
return listReport.
|
|
1036
|
+
return listReport.appSchema.get();
|
|
1007
1037
|
}
|
|
1008
1038
|
return listReport.generate();
|
|
1009
1039
|
}
|