@sap/ux-specification 1.90.17 → 1.90.20
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 +55 -2
- package/dist/documentation/runDocu-min.js +1 -1
- package/dist/documentation/styleDocu.css +7 -14
- package/dist/documentation/v2/v2-AnalyticalListPage.html +1 -1
- package/dist/documentation/v2/v2-ApplicationV2.html +1 -1
- package/dist/documentation/v2/v2-ListReport.html +1 -1
- package/dist/documentation/v2/v2-ObjectPage.html +1 -1
- package/dist/documentation/v2/v2-OverviewPage.html +1 -1
- package/dist/documentation/v4/v4-AnalyticalListPage.html +1 -1
- package/dist/documentation/v4/v4-ApplicationV4.html +1 -1
- package/dist/documentation/v4/v4-ListReport.html +1 -1
- package/dist/documentation/v4/v4-ObjectPage.html +1 -1
- package/dist/index-min.js +1 -1
- package/dist/schemas/v2/AnalyticalListPageConfig.json +175 -15
- package/dist/schemas/v2/ListReportConfig.json +187 -15
- package/dist/schemas/v2/ObjectPageConfig.json +127 -33
- package/dist/schemas/v2/OverviewPageConfig.json +57 -16
- package/dist/schemas/v4/AnalyticalListPageConfig.json +43 -86
- package/dist/schemas/v4/ListReportConfig.json +43 -86
- package/dist/schemas/v4/ObjectPageConfig.json +64 -71
- package/dist/scripts/runDocu.js +30 -7
- package/dist/scripts/runDocu.js.map +1 -1
- package/dist/scripts/to-json-schema.js +31 -37
- package/dist/scripts/to-json-schema.js.map +1 -1
- package/dist/specification/v2/index-min.js +1 -1
- package/dist/specification/v4/index-min.js +1 -1
- package/dist/src/api.js +9 -9
- package/dist/src/api.js.map +1 -1
- package/dist/src/apiTypes.d.ts +5 -2
- package/dist/src/specification/schemaAccess.js +1 -3
- package/dist/src/specification/schemaAccess.js.map +1 -1
- package/dist/src/specification/v2/controls/Action.d.ts +19 -2
- package/dist/src/specification/v2/controls/FilterBar.d.ts +70 -22
- package/dist/src/specification/v2/controls/FilterBar.js +24 -0
- package/dist/src/specification/v2/controls/FilterBar.js.map +1 -1
- package/dist/src/specification/v2/controls/Footer.d.ts +20 -0
- package/dist/src/specification/v2/controls/{ObjectPageFooter.js → Footer.js} +1 -1
- package/dist/src/specification/v2/controls/Footer.js.map +1 -0
- package/dist/src/specification/v2/controls/ObjectPageTable.d.ts +4 -0
- package/dist/src/specification/v2/controls/Table.d.ts +12 -1
- package/dist/src/specification/v2/controls/Table.js.map +1 -1
- package/dist/src/specification/v2/controls/ToolBar.d.ts +1 -8
- package/dist/src/specification/v2/controls/index.d.ts +1 -2
- package/dist/src/specification/v2/controls/index.js.map +1 -1
- package/dist/src/specification/v2/pages/AnalyticalListPageConfig.d.ts +2 -1
- package/dist/src/specification/v2/pages/ListReportConfig.d.ts +2 -1
- package/dist/src/specification/v2/pages/OverviewPageConfig.d.ts +36 -2
- package/dist/src/specification/v2/pages/OverviewPageConfig.js.map +1 -1
- package/dist/src/specification/v4/controls/ObjectPageFooter.d.ts +2 -2
- package/dist/src/specification/v4/controls/ObjectPageSection.d.ts +7 -7
- package/dist/src/specification/v4/controls/ObjectPageTable.d.ts +5 -6
- package/dist/src/specification/v4/controls/Table.d.ts +2 -7
- package/dist/src/specification/v4/webapp/manifest/ManifestSettings.d.ts +59 -10
- package/dist/src/specification/v4/webapp/manifest/ManifestSettings.js +6 -0
- package/dist/src/specification/v4/webapp/manifest/ManifestSettings.js.map +1 -1
- package/dist/src/sync/common/appProvider.js.map +1 -1
- package/dist/src/sync/common/decoration/control.d.ts +11 -1
- package/dist/src/sync/common/decoration/control.js +29 -3
- package/dist/src/sync/common/decoration/control.js.map +1 -1
- package/dist/src/sync/common/decoration/factory.js +2 -4
- package/dist/src/sync/common/decoration/factory.js.map +1 -1
- package/dist/src/sync/common/generate/objectPage.d.ts +9 -0
- package/dist/src/sync/common/generate/objectPage.js +89 -43
- package/dist/src/sync/common/generate/objectPage.js.map +1 -1
- package/dist/src/sync/common/generate/utils.d.ts +27 -0
- package/dist/src/sync/common/generate/utils.js +118 -3
- package/dist/src/sync/common/generate/utils.js.map +1 -1
- package/dist/src/sync/common/i18n.json +2 -0
- package/dist/src/sync/common/import/utils.d.ts +8 -1
- package/dist/src/sync/common/import/utils.js +15 -4
- package/dist/src/sync/common/import/utils.js.map +1 -1
- package/dist/src/sync/common/importProject.js +13 -22
- package/dist/src/sync/common/importProject.js.map +1 -1
- package/dist/src/sync/common/types.d.ts +30 -16
- package/dist/src/sync/common/types.js +25 -1
- package/dist/src/sync/common/types.js.map +1 -1
- package/dist/src/sync/common/utils.d.ts +4 -3
- package/dist/src/sync/common/utils.js +19 -24
- package/dist/src/sync/common/utils.js.map +1 -1
- package/dist/src/sync/v2/export/controls/Action.d.ts +15 -0
- package/dist/src/sync/v2/export/controls/Action.js +68 -15
- package/dist/src/sync/v2/export/controls/Action.js.map +1 -1
- package/dist/src/sync/v2/export/controls/FilterBar.d.ts +18 -6
- package/dist/src/sync/v2/export/controls/FilterBar.js +102 -65
- package/dist/src/sync/v2/export/controls/FilterBar.js.map +1 -1
- package/dist/src/sync/v2/export/controls/FormAction.js +3 -2
- package/dist/src/sync/v2/export/controls/FormAction.js.map +1 -1
- package/dist/src/sync/v2/export/controls/Fragment.d.ts +1 -1
- package/dist/src/sync/v2/export/controls/Fragment.js +239 -164
- package/dist/src/sync/v2/export/controls/Fragment.js.map +1 -1
- package/dist/src/sync/v2/export/controls/ObjectPageFooterAction.d.ts +2 -2
- package/dist/src/sync/v2/export/controls/ObjectPageFooterAction.js +9 -9
- package/dist/src/sync/v2/export/controls/ObjectPageFooterAction.js.map +1 -1
- package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.d.ts +2 -2
- package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js +4 -4
- package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js.map +1 -1
- package/dist/src/sync/v2/export/controls/ObjectPageTable.d.ts +1 -0
- package/dist/src/sync/v2/export/controls/ObjectPageTable.js +12 -0
- package/dist/src/sync/v2/export/controls/ObjectPageTable.js.map +1 -1
- package/dist/src/sync/v2/export/controls/ObjectPageToolBarAction.js +6 -4
- package/dist/src/sync/v2/export/controls/ObjectPageToolBarAction.js.map +1 -1
- package/dist/src/sync/v2/export/controls/Table.d.ts +1 -0
- package/dist/src/sync/v2/export/controls/Table.js +12 -0
- package/dist/src/sync/v2/export/controls/Table.js.map +1 -1
- package/dist/src/sync/v2/export/controls/TableColumn.d.ts +18 -2
- package/dist/src/sync/v2/export/controls/TableColumn.js +126 -1
- package/dist/src/sync/v2/export/controls/TableColumn.js.map +1 -1
- package/dist/src/sync/v2/export/export.js +137 -111
- package/dist/src/sync/v2/export/export.js.map +1 -1
- package/dist/src/sync/v2/export/manifest.js +2 -5
- package/dist/src/sync/v2/export/manifest.js.map +1 -1
- package/dist/src/sync/v2/export/pages/AnalyticalListPage.d.ts +2 -1
- package/dist/src/sync/v2/export/pages/AnalyticalListPage.js +3 -0
- package/dist/src/sync/v2/export/pages/AnalyticalListPage.js.map +1 -1
- package/dist/src/sync/v2/export/pages/ListReport.d.ts +2 -1
- package/dist/src/sync/v2/export/pages/ListReport.js +3 -0
- package/dist/src/sync/v2/export/pages/ListReport.js.map +1 -1
- package/dist/src/sync/v2/export/pages/OverviewPage.d.ts +2 -1
- package/dist/src/sync/v2/export/pages/OverviewPage.js +32 -2
- package/dist/src/sync/v2/export/pages/OverviewPage.js.map +1 -1
- package/dist/src/sync/v2/export/view-controller-generator.d.ts +16 -21
- package/dist/src/sync/v2/export/view-controller-generator.js +20 -36
- package/dist/src/sync/v2/export/view-controller-generator.js.map +1 -1
- package/dist/src/sync/v2/generate/analyticalListReport.js +14 -6
- package/dist/src/sync/v2/generate/analyticalListReport.js.map +1 -1
- package/dist/src/sync/v2/generate/listReport.js +13 -4
- package/dist/src/sync/v2/generate/listReport.js.map +1 -1
- package/dist/src/sync/v2/generate/objectPage.d.ts +1 -5
- package/dist/src/sync/v2/generate/objectPage.js +10 -10
- package/dist/src/sync/v2/generate/objectPage.js.map +1 -1
- package/dist/src/sync/v2/generate/utils.d.ts +22 -11
- package/dist/src/sync/v2/generate/utils.js +282 -110
- package/dist/src/sync/v2/generate/utils.js.map +1 -1
- package/dist/src/sync/v2/import/common/index.d.ts +22 -4
- package/dist/src/sync/v2/import/common/index.js +237 -27
- package/dist/src/sync/v2/import/common/index.js.map +1 -1
- package/dist/src/sync/v2/import/controls/table.js +3 -2
- package/dist/src/sync/v2/import/controls/table.js.map +1 -1
- package/dist/src/sync/v2/import/pages/analyticalListPage.js +36 -5
- package/dist/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
- package/dist/src/sync/v2/import/pages/listReport.d.ts +0 -5
- package/dist/src/sync/v2/import/pages/listReport.js +21 -122
- package/dist/src/sync/v2/import/pages/listReport.js.map +1 -1
- package/dist/src/sync/v2/import/pages/objectPage.js +182 -107
- package/dist/src/sync/v2/import/pages/objectPage.js.map +1 -1
- package/dist/src/sync/v2/import/utils.d.ts +4 -6
- package/dist/src/sync/v2/import/utils.js +43 -11
- package/dist/src/sync/v2/import/utils.js.map +1 -1
- package/dist/src/sync/v2/types.d.ts +8 -1
- package/dist/src/sync/v2/types.js +8 -1
- package/dist/src/sync/v2/types.js.map +1 -1
- package/dist/src/sync/v4/export/controls/ObjectPageTableColumn.d.ts +3 -7
- package/dist/src/sync/v4/export/controls/ObjectPageTableColumn.js +2 -25
- package/dist/src/sync/v4/export/controls/ObjectPageTableColumn.js.map +1 -1
- package/dist/src/sync/v4/export/controls/TableColumn.d.ts +1 -6
- package/dist/src/sync/v4/export/controls/TableColumn.js +0 -33
- package/dist/src/sync/v4/export/controls/TableColumn.js.map +1 -1
- package/dist/src/sync/v4/export/controls/ToolBar.d.ts +5 -1
- package/dist/src/sync/v4/export/controls/ToolBar.js +3 -0
- package/dist/src/sync/v4/export/controls/ToolBar.js.map +1 -1
- package/dist/src/sync/v4/export/export.js +20 -16
- package/dist/src/sync/v4/export/export.js.map +1 -1
- package/dist/src/sync/v4/export/pages/AnalyticalListPage.d.ts +2 -2
- package/dist/src/sync/v4/export/pages/ListReport.d.ts +2 -2
- package/dist/src/sync/v4/export/pages/ObjectPage.d.ts +2 -2
- package/dist/src/sync/v4/export/types.d.ts +3 -0
- package/dist/src/sync/v4/generate/generate.d.ts +4 -2
- package/dist/src/sync/v4/generate/generate.js +15 -6
- package/dist/src/sync/v4/generate/generate.js.map +1 -1
- package/dist/src/sync/v4/generate/listReport.d.ts +7 -6
- package/dist/src/sync/v4/generate/listReport.js +50 -34
- package/dist/src/sync/v4/generate/listReport.js.map +1 -1
- package/dist/src/sync/v4/generate/objectPage.js +66 -85
- package/dist/src/sync/v4/generate/objectPage.js.map +1 -1
- package/dist/src/sync/v4/import/pages/analyticalListPage.d.ts +2 -2
- package/dist/src/sync/v4/import/pages/analyticalListPage.js +0 -1
- package/dist/src/sync/v4/import/pages/analyticalListPage.js.map +1 -1
- package/dist/src/sync/v4/import/pages/listReport.d.ts +3 -3
- package/dist/src/sync/v4/import/pages/listReport.js +34 -23
- package/dist/src/sync/v4/import/pages/listReport.js.map +1 -1
- package/dist/src/sync/v4/import/pages/objectPage.d.ts +2 -2
- package/dist/src/sync/v4/import/pages/objectPage.js +21 -16
- package/dist/src/sync/v4/import/pages/objectPage.js.map +1 -1
- package/dist/src/sync/v4/import/utils.js +6 -5
- package/dist/src/sync/v4/import/utils.js.map +1 -1
- package/dist/src/sync/v4/utils/utils.d.ts +14 -1
- package/dist/src/sync/v4/utils/utils.js +62 -26
- package/dist/src/sync/v4/utils/utils.js.map +1 -1
- package/dist/test/unit/utils.test.d.ts +1 -1
- package/package.json +8 -9
- package/dist/src/specification/v2/controls/ObjectPageFooter.d.ts +0 -11
- package/dist/src/specification/v2/controls/ObjectPageFooter.js.map +0 -1
- package/dist/src/specification/v2/controls/ObjectPageFooterAction.d.ts +0 -28
- package/dist/src/specification/v2/controls/ObjectPageFooterAction.js +0 -3
- package/dist/src/specification/v2/controls/ObjectPageFooterAction.js.map +0 -1
- package/dist/test/test-utils/metadataParser.d.ts +0 -19
|
@@ -10,8 +10,6 @@ const extensionLogger_1 = require("../../../../extensionLogger");
|
|
|
10
10
|
const i18next_1 = __importDefault(require("i18next"));
|
|
11
11
|
const i18n_1 = require("../../../../i18n/i18n");
|
|
12
12
|
const utils_1 = require("../../import/utils");
|
|
13
|
-
const xml_js_1 = require("xml-js");
|
|
14
|
-
const controls_1 = require("../../export/controls");
|
|
15
13
|
const factory_1 = require("../../export/factory");
|
|
16
14
|
const types_1 = require("../../types");
|
|
17
15
|
/**
|
|
@@ -43,133 +41,34 @@ function addSettings(importParameters, listReportConfig, factory, pageKey) {
|
|
|
43
41
|
index_1.transferSettingsOfObject(listReportConfig.table.toolBar, importParameters.manifest, importParameters.jsonSchema['definitions']['ToolBar'], pageKey, importParameters.logger);
|
|
44
42
|
if (importParameters.jsonSchema['definitions']['Actions<LineItems>']) {
|
|
45
43
|
for (const actionProperty in importParameters.jsonSchema['definitions']['Actions<LineItems>'].properties) {
|
|
46
|
-
const actionKey = actionProperty
|
|
44
|
+
const actionKey = actionProperty;
|
|
47
45
|
listReportConfig.table.toolBar.actions[actionKey] = factory.createInstance(common_1.PageType.ListReport, 'Action');
|
|
48
46
|
index_1.transferSettingsOfObject(listReportConfig.table.toolBar.actions[actionKey], importParameters.manifest, importParameters.jsonSchema['definitions']['Action'], pageKey, importParameters.logger);
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
|
-
//
|
|
52
|
-
listReportConfig.filterBar = factory.createInstance(common_1.PageType.ListReport,
|
|
53
|
-
index_1.transferSettingsOfObject(listReportConfig.filterBar, importParameters.manifest, importParameters.jsonSchema['definitions'][
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (config.table.toolBar) {
|
|
62
|
-
for (const actionKey in config.table.toolBar.actions) {
|
|
63
|
-
if (Object.keys(config.table.toolBar.actions[actionKey]).length === 0) {
|
|
64
|
-
delete config.table.toolBar.actions[actionKey];
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
if (Object.keys(config.table.toolBar.actions).length === 0) {
|
|
68
|
-
delete config.table.toolBar.actions;
|
|
69
|
-
}
|
|
70
|
-
if (Object.keys(config.table.toolBar).length === 0) {
|
|
71
|
-
delete config.table.toolBar;
|
|
49
|
+
//FilterBar:
|
|
50
|
+
listReportConfig.filterBar = factory.createInstance(common_1.PageType.ListReport, common_2.DefinitionName.ListReportFilterBar, listReportConfig.filterBar);
|
|
51
|
+
index_1.transferSettingsOfObject(listReportConfig.filterBar, importParameters.manifest, importParameters.jsonSchema['definitions'][common_2.DefinitionName.ListReportFilterBar], pageKey, importParameters.logger);
|
|
52
|
+
if (importParameters.jsonSchema['definitions']['SelectionFields']) {
|
|
53
|
+
listReportConfig.filterBar.selectionFields = factory.createInstance(common_1.PageType.ListReport, common_2.DefinitionName.ListReportFilterBar, listReportConfig.filterBar.selectionFields);
|
|
54
|
+
const schemaSelectionFields = importParameters.jsonSchema['definitions']['SelectionFields'].properties;
|
|
55
|
+
for (const selectionProperty in schemaSelectionFields) {
|
|
56
|
+
const selectionKey = selectionProperty;
|
|
57
|
+
listReportConfig.filterBar.selectionFields[selectionKey] = factory.createInstance(common_1.PageType.ListReport, 'SelectionFieldDateSettings');
|
|
58
|
+
index_1.transferSettingsOfObject(listReportConfig.filterBar.selectionFields[selectionKey], importParameters.manifest, importParameters.jsonSchema['definitions']['SelectionFieldDateSettings'], pageKey, importParameters.logger, selectionKey);
|
|
72
59
|
}
|
|
73
60
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (!columnText) {
|
|
83
|
-
columnText = column['Label'] && column['Label']._attributes && column['Label']._attributes['text'];
|
|
84
|
-
}
|
|
85
|
-
const customElement = {
|
|
86
|
-
id: column._attributes && column._attributes['id'],
|
|
87
|
-
text: columnText,
|
|
88
|
-
columnKey: columnParts['columnKey'],
|
|
89
|
-
columnIndex: columnParts['columnIndex'] !== undefined ? Number(columnParts['columnIndex']) : undefined,
|
|
90
|
-
leadingProperty: columnParts['leadingProperty'],
|
|
91
|
-
className: viewExtensionsOfPage[manifestKey].className,
|
|
92
|
-
fragmentName: viewExtensionsOfPage[manifestKey].fragmentName,
|
|
93
|
-
tabKey: keyPart3,
|
|
94
|
-
extensionType
|
|
95
|
-
};
|
|
96
|
-
if (cellsFragmentName) {
|
|
97
|
-
customElement.cellsFragmentName = cellsFragmentName;
|
|
98
|
-
}
|
|
99
|
-
if (!config.table['columns']['custom']) {
|
|
100
|
-
config.table['columns']['custom'] = [];
|
|
101
|
-
}
|
|
102
|
-
const customColumns = config.table['columns']['custom'];
|
|
103
|
-
customColumns.push(customElement);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
function addFragments(config, manifest, v2Page, pageType, fragments, objectPageSectionData) {
|
|
107
|
-
if (!fragments) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
const targetKeyEntitySet = '|' + (objectPageSectionData && objectPageSectionData.target ? objectPageSectionData.target : v2Page.entitySet);
|
|
111
|
-
if (manifest[common_1.ManifestSection.ui5] &&
|
|
112
|
-
manifest[common_1.ManifestSection.ui5]['extends'] &&
|
|
113
|
-
manifest[common_1.ManifestSection.ui5]['extends']['extensions'] &&
|
|
114
|
-
manifest[common_1.ManifestSection.ui5]['extends']['extensions']['sap.ui.viewExtensions']) {
|
|
115
|
-
const viewExtension = common_1.PAGETYPE_VIEW_EXTENSION_TEMPLATE_MAP.get(pageType);
|
|
116
|
-
const viewExtensionsOfPage = manifest[common_1.ManifestSection.ui5]['extends']['extensions']['sap.ui.viewExtensions'][viewExtension];
|
|
117
|
-
if (viewExtensionsOfPage) {
|
|
118
|
-
for (const manifestKey of Object.keys(viewExtensionsOfPage)) {
|
|
119
|
-
const manifestKeyParts = manifestKey.split('|');
|
|
120
|
-
const [keyExtensionType, keyEntitySet] = manifestKeyParts;
|
|
121
|
-
// If Object Page section have key, then Ignore it as it is not from QuickVariantSelectionX
|
|
122
|
-
const referenceId = manifestKeyParts[2];
|
|
123
|
-
const keyTab = objectPageSectionData && referenceId === objectPageSectionData.key ? undefined : referenceId;
|
|
124
|
-
const extensionType = common_2.ViewTemplateType[keyExtensionType];
|
|
125
|
-
if (extensionType && '|' + keyEntitySet === targetKeyEntitySet) {
|
|
126
|
-
const fragmentType = viewExtensionsOfPage[manifestKey].type
|
|
127
|
-
? viewExtensionsOfPage[manifestKey].type.toLowerCase()
|
|
128
|
-
: 'xml';
|
|
129
|
-
let fragmentName = viewExtensionsOfPage[manifestKey].fragmentName;
|
|
130
|
-
if (!fragmentName) {
|
|
131
|
-
continue;
|
|
132
|
-
}
|
|
133
|
-
// Responsive Table ==> check cells' fragment name
|
|
134
|
-
let cellsFragmentName;
|
|
135
|
-
if (extensionType === common_2.ViewTemplateType.ResponsiveTableColumnsExtension) {
|
|
136
|
-
for (const cellsKey of Object.keys(viewExtensionsOfPage)) {
|
|
137
|
-
const [cellsKeyType, cellsKeyEntitySet, cellsKeyTab] = cellsKey.split('|');
|
|
138
|
-
if (cellsKeyType === common_2.ViewTemplateType.ResponsiveTableCellsExtension &&
|
|
139
|
-
cellsKeyEntitySet === keyEntitySet &&
|
|
140
|
-
cellsKeyTab === referenceId) {
|
|
141
|
-
cellsFragmentName = viewExtensionsOfPage[cellsKey].fragmentName;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
// Retrieve information from fragment
|
|
146
|
-
const fragmentParts = fragmentName.split('.');
|
|
147
|
-
fragmentName = fragmentParts[fragmentParts.length - 1] + common_2.FRAGMENTNAMEPART + fragmentType;
|
|
148
|
-
const filteredFragments = fragments.filter((fragment) => fragment['dataSourceUri'].endsWith(fragmentName));
|
|
149
|
-
if (filteredFragments[0]) {
|
|
150
|
-
const fragmentJson = JSON.parse(xml_js_1.xml2json(filteredFragments[0].fileContent, { compact: true }));
|
|
151
|
-
const fragmentDefintion = fragmentJson[controls_1.FRAGMENT_DEFINITION];
|
|
152
|
-
const columnDefinition = controls_1.getRootCustomColumnFromFragmentJSON(fragmentDefintion);
|
|
153
|
-
if (columnDefinition) {
|
|
154
|
-
if (!config.table['columns']) {
|
|
155
|
-
config.table['columns'] = {};
|
|
156
|
-
}
|
|
157
|
-
if (Array.isArray(columnDefinition)) {
|
|
158
|
-
for (let j = 0; j < columnDefinition.length; j++) {
|
|
159
|
-
evaluateFragmentColumn(columnDefinition[j], viewExtensionsOfPage, manifestKey, keyTab, config, extensionType, cellsFragmentName);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
evaluateFragmentColumn(columnDefinition, viewExtensionsOfPage, manifestKey, keyTab, config, extensionType, cellsFragmentName);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
61
|
+
//Footer:
|
|
62
|
+
listReportConfig.footer = { actions: {} };
|
|
63
|
+
const footerAction = importParameters.jsonSchema['definitions']['FooterActions<LineItems>'];
|
|
64
|
+
if (footerAction) {
|
|
65
|
+
for (const actionProperty in footerAction.properties) {
|
|
66
|
+
const actionKey = actionProperty.replace('/', '::');
|
|
67
|
+
listReportConfig.footer.actions[actionKey] = factory.createInstance(common_1.PageType.ListReport, 'FooterAction');
|
|
68
|
+
index_1.transferSettingsOfObject(listReportConfig.footer.actions[actionKey], importParameters.manifest, importParameters.jsonSchema['definitions']['Action'], pageKey, importParameters.logger);
|
|
169
69
|
}
|
|
170
70
|
}
|
|
171
71
|
}
|
|
172
|
-
exports.addFragments = addFragments;
|
|
173
72
|
/**
|
|
174
73
|
* Creates the configuration file content for a list report V2
|
|
175
74
|
* @param {ImportListReportV2Parameters} importParameters - object comprising all input data
|
|
@@ -226,8 +125,8 @@ function createListReportConfig(importParameters) {
|
|
|
226
125
|
index_1.addFlex(config, change, importParameters.jsonSchema, importParameters.logger);
|
|
227
126
|
}
|
|
228
127
|
});
|
|
229
|
-
addFragments(config, importParameters.manifest, v2Page, common_1.PageType.ListReport, importParameters.fragments);
|
|
230
|
-
removeEmptySettings(config);
|
|
128
|
+
index_1.addFragments(config, importParameters.manifest, v2Page, common_1.PageType.ListReport, importParameters.fragments);
|
|
129
|
+
utils_1.removeEmptySettings(config);
|
|
231
130
|
return config;
|
|
232
131
|
}
|
|
233
132
|
exports.createListReportConfig = createListReportConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listReport.js","sourceRoot":"","sources":["../../../../../../src/sync/v2/import/pages/listReport.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"listReport.js","sourceRoot":"","sources":["../../../../../../src/sync/v2/import/pages/listReport.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,6 @@ const sapUiPageV2_1 = require("../.../../../../../specification/v2/webapp/manife
|
|
|
13
13
|
const i18next_1 = __importDefault(require("i18next"));
|
|
14
14
|
const i18n_1 = require("../../../../i18n/i18n");
|
|
15
15
|
const common_2 = require("../../../../specification/common");
|
|
16
|
-
const listReport_1 = require("../pages/listReport");
|
|
17
16
|
const factory_1 = require("../../export/factory");
|
|
18
17
|
const types_1 = require("../../types");
|
|
19
18
|
const common_3 = require("../common");
|
|
@@ -25,9 +24,12 @@ const common_3 = require("../common");
|
|
|
25
24
|
function getSingleSelectorIdPart(selectorIdParts, facetID) {
|
|
26
25
|
const lastIdParts = selectorIdParts[0].split('-');
|
|
27
26
|
const id = lastIdParts[lastIdParts.length - 1];
|
|
28
|
-
if (selectorIdParts[0].indexOf(
|
|
27
|
+
if (selectorIdParts[0].indexOf('::action::') >= 0 || selectorIdParts[0].startsWith('action::')) {
|
|
29
28
|
// Object Page ToolBar Actions
|
|
30
|
-
facetID =
|
|
29
|
+
facetID =
|
|
30
|
+
lastIdParts[0].split('::action::')[0] ||
|
|
31
|
+
lastIdParts[0].split(`${"com.sap.vocabularies.UI.v1.LineItem" /* LineItem */}::`)[1].split('::')[0];
|
|
32
|
+
facetID = `Action ID: ${facetID}`;
|
|
31
33
|
}
|
|
32
34
|
else if (selectorIdParts[0].indexOf("com.sap.vocabularies.UI.v1.LineItem" /* LineItem */) >= 0 ||
|
|
33
35
|
selectorIdParts[0].indexOf('UI.LineItem') >= 0 ||
|
|
@@ -91,7 +93,7 @@ function prepareFlexChanges(changes, entitySet, logger) {
|
|
|
91
93
|
const change = common_1.parseChangeString(changeString);
|
|
92
94
|
if (change && ((_a = change.controlId) === null || _a === void 0 ? void 0 : _a.includes(sapUiPageV2_1.FE_TEMPLATE_V2_OBJECT_PAGE)) && ((_b = change.controlId) === null || _b === void 0 ? void 0 : _b.includes(entitySet))) {
|
|
93
95
|
let selectorId = change.controlId.split('--')[1].replace(/:3a:3a/g, '::');
|
|
94
|
-
const complexIdMatch =
|
|
96
|
+
const complexIdMatch = /.+DataField.+:::sSmartTableId::.+/;
|
|
95
97
|
if (complexIdMatch.exec(selectorId) !== null) {
|
|
96
98
|
selectorId = selectorId.split('template:::TableColumn:::')[1];
|
|
97
99
|
}
|
|
@@ -121,9 +123,11 @@ function prepareFlexChanges(changes, entitySet, logger) {
|
|
|
121
123
|
});
|
|
122
124
|
return result;
|
|
123
125
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
126
|
+
/**
|
|
127
|
+
* Returns the type of a given section
|
|
128
|
+
* @param schemaSection - current section
|
|
129
|
+
* @returns {SectionTypeV2} - type of section, differentiated by level (Sub/Section)
|
|
130
|
+
*/
|
|
127
131
|
const getSectionType = (schemaSection) => {
|
|
128
132
|
var _a, _b, _c;
|
|
129
133
|
let reference;
|
|
@@ -140,6 +144,131 @@ const getSectionType = (schemaSection) => {
|
|
|
140
144
|
return types_1.SectionTypeV2.SubSection;
|
|
141
145
|
}
|
|
142
146
|
};
|
|
147
|
+
/**
|
|
148
|
+
* Import of flex changes of a table to the config JSON of OP
|
|
149
|
+
* @param flexChanges - list of flex changes (pre-processed by prepareFlexChanges)
|
|
150
|
+
* @param propertyKey - key of the current property in the app schema
|
|
151
|
+
* @param configPart - part of the configuration to be filled
|
|
152
|
+
* @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data
|
|
153
|
+
* @param sectionTitle - title of the section (optional)
|
|
154
|
+
* @param sectionId - ID of the given section (optional)
|
|
155
|
+
*/
|
|
156
|
+
function importFlexChangesOfTable(flexChanges, propertyKey, configPart, importParameters, sectionTitle, sectionId) {
|
|
157
|
+
const unescapedId = sectionId === null || sectionId === void 0 ? void 0 : sectionId.replace(/::@com.sap.vocabularies/g, v2_1.VOCWITHSLASH);
|
|
158
|
+
for (const selector in flexChanges) {
|
|
159
|
+
const flexChange = flexChanges[selector];
|
|
160
|
+
const propertyIdMatch = flexChange.propertyId === propertyKey;
|
|
161
|
+
const isTableColumn = propertyKey === 'columns' && flexChange.controlType === common_1.ControlType.TableColumn;
|
|
162
|
+
let facetIds;
|
|
163
|
+
if (sectionTitle) {
|
|
164
|
+
facetIds = [sectionTitle];
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
facetIds = [sectionId, unescapedId];
|
|
168
|
+
}
|
|
169
|
+
if ((propertyIdMatch || isTableColumn) && facetIds.indexOf(flexChange === null || flexChange === void 0 ? void 0 : flexChange.facetId) > -1) {
|
|
170
|
+
table_1.addFlexForTable(configPart, flexChanges[selector], importParameters.jsonSchema);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Import of (regular) flex changes to the config JSON of OP
|
|
176
|
+
* @param schemaDefinition - current section of the app specific schema
|
|
177
|
+
* @param configPart - part of the configuration to be filled
|
|
178
|
+
* @param flexChanges - list of flex changes (pre-processed by prepareFlexChanges)
|
|
179
|
+
* @param propertyKey - key of the current property in the app schema
|
|
180
|
+
* @param sectionTitle - title of the section (optional)
|
|
181
|
+
* @param actionId - ID of the given action (optional)
|
|
182
|
+
*/
|
|
183
|
+
function importFlexChanges(schemaDefinition, configPart, flexChanges, propertyKey, sectionTitle, actionId) {
|
|
184
|
+
var _a, _b;
|
|
185
|
+
for (const selector in flexChanges) {
|
|
186
|
+
const flexChange = flexChanges[selector];
|
|
187
|
+
const actionIdMatch = !actionId || new RegExp(`.*${actionId}\\d?$`).test(selector);
|
|
188
|
+
const propertyIdMatch = flexChange.propertyId === propertyKey;
|
|
189
|
+
const schemaControlType = (_a = schemaDefinition['properties'][flexChange.propertyId]) === null || _a === void 0 ? void 0 : _a.controlType;
|
|
190
|
+
const controlTypeMatch = flexChange.controlType === schemaControlType;
|
|
191
|
+
if (
|
|
192
|
+
// Actions
|
|
193
|
+
(((_b = flexChange === null || flexChange === void 0 ? void 0 : flexChange.facetId) === null || _b === void 0 ? void 0 : _b.includes(common_1.ActionTitlePrefix)) && !sectionTitle && actionIdMatch && propertyIdMatch) ||
|
|
194
|
+
(!sectionTitle && actionIdMatch && propertyIdMatch && controlTypeMatch) ||
|
|
195
|
+
// Sections
|
|
196
|
+
(selector.includes(sectionTitle) && actionIdMatch && propertyIdMatch && controlTypeMatch)) {
|
|
197
|
+
configPart[propertyKey] = flexChange.newValue;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Checks for deprecated properties and writes them to the log
|
|
203
|
+
* @param manifestSection - given section in the manifest
|
|
204
|
+
* @param deprecatedProperties - list of deperecated properties
|
|
205
|
+
* @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data
|
|
206
|
+
* @param manifestPath - manifest path, as calcualted by the sync rule
|
|
207
|
+
*/
|
|
208
|
+
function checkDeprecatedProperties(manifestSection, deprecatedProperties, importParameters, manifestPath) {
|
|
209
|
+
if (manifestSection && deprecatedProperties) {
|
|
210
|
+
for (const key in manifestSection) {
|
|
211
|
+
const deprecated = deprecatedProperties[key];
|
|
212
|
+
if (deprecated) {
|
|
213
|
+
extensionLogger_1.log(importParameters.logger, {
|
|
214
|
+
severity: "warning" /* Warning */,
|
|
215
|
+
message: common_1.getTextForDeprecated(key, deprecated),
|
|
216
|
+
location: {
|
|
217
|
+
path: 'webapp/manifest.json/',
|
|
218
|
+
range: manifestPath.split('/')
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
delete deprecatedProperties[key];
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Imports manifest settings to the object page config
|
|
228
|
+
* @param syncRule - sync rule for accessing the reflect-metadata
|
|
229
|
+
* @param pageKeys - list of page keys (comprises the one entry describing the given page)
|
|
230
|
+
* @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data
|
|
231
|
+
* @param configPart - part of the configuration to be filled
|
|
232
|
+
* @param propertyKey - key of the current property of the schema definition
|
|
233
|
+
* @param deprecatedProperties - list od deperecated properties
|
|
234
|
+
* @param sectionId - ID of the given section (optional)
|
|
235
|
+
* @param sectionTitle - title of the section (optional)
|
|
236
|
+
*/
|
|
237
|
+
function importManifestSetting(syncRule, pageKeys, importParameters, configPart, propertyKey, deprecatedProperties, sectionId, sectionTitle) {
|
|
238
|
+
const sectionIdInManifest = sectionId ? sectionId.replace(/\/@/g, '::').replace(/@com.sap/g, 'com.sap') : undefined;
|
|
239
|
+
let manifestPath;
|
|
240
|
+
let manifestSection;
|
|
241
|
+
if (sectionTitle) {
|
|
242
|
+
manifestPath = syncRule.manifest.path(pageKeys, {}, sectionTitle);
|
|
243
|
+
if (Object.values(manifest_1.getManifestSectionByPathV2(importParameters.manifest, manifestPath)).length !== 0) {
|
|
244
|
+
manifestSection = manifest_1.getManifestSectionByPathV2(importParameters.manifest, manifestPath);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
manifestPath = syncRule.manifest.path(pageKeys, {}, sectionIdInManifest);
|
|
248
|
+
manifestSection = manifest_1.getManifestSectionByPathV2(importParameters.manifest, manifestPath);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
manifestPath = syncRule.manifest.path(pageKeys, {}, sectionIdInManifest);
|
|
253
|
+
manifestSection = manifest_1.getManifestSectionByPathV2(importParameters.manifest, manifestPath);
|
|
254
|
+
}
|
|
255
|
+
const importHandler = syncRule.manifest.import;
|
|
256
|
+
if (importHandler && typeof importHandler === 'function') {
|
|
257
|
+
const value = importHandler(manifestSection, sectionId);
|
|
258
|
+
if (value !== undefined) {
|
|
259
|
+
configPart[propertyKey] = value;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
const manifestKey = syncRule.manifest.key || propertyKey;
|
|
264
|
+
if (manifestKey in manifestSection) {
|
|
265
|
+
configPart[propertyKey] = manifestSection[manifestKey];
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Check for deprecated properties.
|
|
269
|
+
checkDeprecatedProperties(manifestSection, deprecatedProperties, importParameters, manifestPath);
|
|
270
|
+
return manifestSection;
|
|
271
|
+
}
|
|
143
272
|
/**
|
|
144
273
|
* Transfers settings from manifest and flexChanges to object page config
|
|
145
274
|
* @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data
|
|
@@ -148,105 +277,57 @@ const getSectionType = (schemaSection) => {
|
|
|
148
277
|
* @param pageKeys - list of page keys (comprises the one entry describing the given page)
|
|
149
278
|
* @param flexChanges - list of flex changes (pre-processed by prepareFlexChanges)
|
|
150
279
|
* @param sectionId - ID of the given section (optional)
|
|
280
|
+
* @param sectionTitle - Facet ID of the given section mentioned in annotations (optional)
|
|
151
281
|
* @param actionId - ID of the given action (optional)
|
|
152
282
|
*/
|
|
153
283
|
function transferSettingsAndFlexChanges(importParameters, configPart, schemaDefinition, pageKeys, flexChanges, sectionId, sectionTitle, actionId) {
|
|
154
|
-
var _a;
|
|
155
284
|
if (!schemaDefinition) {
|
|
156
285
|
return;
|
|
157
286
|
}
|
|
158
|
-
let deprecatedProperties =
|
|
159
|
-
let manifestSection = {};
|
|
287
|
+
let deprecatedProperties = {};
|
|
160
288
|
if (configPart === null || configPart === void 0 ? void 0 : configPart.getDeprecated) {
|
|
161
289
|
deprecatedProperties = configPart.getDeprecated();
|
|
162
290
|
}
|
|
163
|
-
const unescapedId = sectionId && sectionId.replace(/::@com.sap.vocabularies/g, v2_1.VOCWITHSLASH);
|
|
164
291
|
for (const propertyKey in schemaDefinition['properties'] || schemaDefinition) {
|
|
165
292
|
const syncRule = common_1.getReflectMetadata(configPart, propertyKey);
|
|
166
293
|
if (syncRule || propertyKey === 'columns') {
|
|
167
|
-
if (propertyKey === 'columns' || (syncRule
|
|
294
|
+
if (propertyKey === 'columns' || (syncRule === null || syncRule === void 0 ? void 0 : syncRule.flex)) {
|
|
168
295
|
if (sectionId) {
|
|
169
|
-
|
|
170
|
-
const flexChange = flexChanges[selector];
|
|
171
|
-
const propertyIdMatch = flexChange.propertyId === propertyKey;
|
|
172
|
-
const isTableColumn = propertyKey === 'columns' && flexChange.controlType === common_1.ControlType.TableColumn;
|
|
173
|
-
const facetIds = [sectionId, unescapedId, sectionTitle];
|
|
174
|
-
if ((propertyIdMatch || isTableColumn) && facetIds.indexOf(flexChange === null || flexChange === void 0 ? void 0 : flexChange.facetId) > -1) {
|
|
175
|
-
table_1.addFlexForTable(configPart, flexChanges[selector], importParameters.jsonSchema);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
296
|
+
importFlexChangesOfTable(flexChanges, propertyKey, configPart, importParameters, sectionTitle, sectionId);
|
|
178
297
|
}
|
|
179
298
|
else {
|
|
180
|
-
|
|
181
|
-
const flexChange = flexChanges[selector];
|
|
182
|
-
const actionIdMatch = !actionId || new RegExp(`.*${actionId}\\d?$`).test(selector);
|
|
183
|
-
const propertyIdMatch = flexChange.propertyId === propertyKey;
|
|
184
|
-
const schemaControlType = (_a = schemaDefinition['properties'][flexChange.propertyId]) === null || _a === void 0 ? void 0 : _a.controlType;
|
|
185
|
-
const controlTypeMatch = flexChange.controlType === schemaControlType;
|
|
186
|
-
if (
|
|
187
|
-
// Actions
|
|
188
|
-
(flexChange.facetId === 'action' && !sectionTitle && actionIdMatch && propertyIdMatch) ||
|
|
189
|
-
(!sectionTitle && actionIdMatch && propertyIdMatch && controlTypeMatch) ||
|
|
190
|
-
// Sections
|
|
191
|
-
(selector.includes(sectionTitle) && actionIdMatch && propertyIdMatch && controlTypeMatch)) {
|
|
192
|
-
addFlexToConfig(configPart, propertyKey, flexChange.newValue);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
299
|
+
importFlexChanges(schemaDefinition, configPart, flexChanges, propertyKey, sectionTitle, actionId);
|
|
195
300
|
}
|
|
196
301
|
}
|
|
197
302
|
else if (syncRule.manifest) {
|
|
198
|
-
|
|
199
|
-
? sectionId.replace(/\/@/g, '::').replace(/@com.sap/g, 'com.sap')
|
|
200
|
-
: undefined;
|
|
201
|
-
let path;
|
|
202
|
-
if (sectionTitle) {
|
|
203
|
-
path = syncRule.manifest.path(pageKeys, {}, sectionTitle);
|
|
204
|
-
if (Object.values(manifest_1.getManifestSectionByPathV2(importParameters.manifest, path)).length !== 0) {
|
|
205
|
-
manifestSection = manifest_1.getManifestSectionByPathV2(importParameters.manifest, path);
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
path = syncRule.manifest.path(pageKeys, {}, sectionIdInManifest);
|
|
209
|
-
manifestSection = manifest_1.getManifestSectionByPathV2(importParameters.manifest, path);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
path = syncRule.manifest.path(pageKeys, {}, sectionIdInManifest);
|
|
214
|
-
manifestSection = manifest_1.getManifestSectionByPathV2(importParameters.manifest, path);
|
|
215
|
-
}
|
|
216
|
-
const importHandler = syncRule.manifest.import;
|
|
217
|
-
if (importHandler && typeof importHandler === 'function') {
|
|
218
|
-
const value = importHandler(manifestSection, sectionId);
|
|
219
|
-
if (value !== undefined) {
|
|
220
|
-
configPart[propertyKey] = value;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
const manifestKey = syncRule.manifest.key || propertyKey;
|
|
225
|
-
if (manifestKey in manifestSection) {
|
|
226
|
-
configPart[propertyKey] = manifestSection[manifestKey];
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// Check for deprecated properties.
|
|
230
|
-
if (manifestSection && deprecatedProperties) {
|
|
231
|
-
for (const key in manifestSection) {
|
|
232
|
-
const deprecated = deprecatedProperties[key];
|
|
233
|
-
if (deprecated) {
|
|
234
|
-
extensionLogger_1.log(importParameters.logger, {
|
|
235
|
-
severity: "warning" /* Warning */,
|
|
236
|
-
message: common_1.getTextForDeprecated(key, deprecated),
|
|
237
|
-
location: {
|
|
238
|
-
path: 'webapp/manifest.json/',
|
|
239
|
-
range: path.split('/')
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
delete deprecatedProperties[key];
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
303
|
+
importManifestSetting(syncRule, pageKeys, importParameters, configPart, propertyKey, deprecatedProperties, sectionId, sectionTitle);
|
|
246
304
|
}
|
|
247
305
|
}
|
|
248
306
|
}
|
|
249
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
*
|
|
310
|
+
* @param actionType - type of action
|
|
311
|
+
* @param configActionId - id of action in config
|
|
312
|
+
* @param {ActionTypeV2|string} importTypeId - type of action that was be initiated
|
|
313
|
+
* @returns {string} actionId - to be used for import of flex changes
|
|
314
|
+
*/
|
|
315
|
+
function getActionId(actionType, configActionId, importTypeId, facetId) {
|
|
316
|
+
if (actionType === types_1.ActionTypeV2.Form) {
|
|
317
|
+
return `${configActionId}::${facetId}::${importTypeId}`;
|
|
318
|
+
}
|
|
319
|
+
else if (actionType === types_1.ActionTypeV2.OPFooter) {
|
|
320
|
+
return `${configActionId}::Determining`;
|
|
321
|
+
}
|
|
322
|
+
else if (actionType === types_1.ActionTypeV2.OPToolBar) {
|
|
323
|
+
return configActionId.includes('sAction::')
|
|
324
|
+
? configActionId.split('sAction::')[1]
|
|
325
|
+
: configActionId.replace(':2f', '::');
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
return configActionId;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
250
331
|
/**
|
|
251
332
|
* Fills the action of the configuration
|
|
252
333
|
* @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data
|
|
@@ -255,25 +336,17 @@ function transferSettingsAndFlexChanges(importParameters, configPart, schemaDefi
|
|
|
255
336
|
* @param {ObjectPageV2ConfigParameters} configParameters - container for factory, pageKeys, flexChanges, v2Page, ObjectPageConfig
|
|
256
337
|
* @param {ActionTypeV2|string} importTypeId - type of action that should be initiated
|
|
257
338
|
*/
|
|
258
|
-
function fillActions(importParameters, actionProperties, configPart, configParameters, importTypeId) {
|
|
259
|
-
let actionId, configActionId;
|
|
339
|
+
function fillActions(importParameters, actionProperties, configPart, configParameters, importTypeId, facetId) {
|
|
260
340
|
configPart['actions'] = {};
|
|
261
|
-
importTypeId = importTypeId.replace(/@/g, '::');
|
|
262
341
|
const actionType = importTypeId.split('::').pop();
|
|
263
342
|
if (configParameters.flexChanges.constructor === Object && Object.keys(configParameters.flexChanges).length !== 0) {
|
|
264
343
|
for (const actionProperty in actionProperties) {
|
|
265
|
-
configActionId = actionProperty.replace(/@/g, '::');
|
|
266
|
-
|
|
267
|
-
actionId = `${configActionId}${importTypeId}`;
|
|
268
|
-
}
|
|
269
|
-
else if (actionType === types_1.ActionTypeV2.Footer) {
|
|
270
|
-
actionId = `${configActionId}::Determining`;
|
|
271
|
-
}
|
|
272
|
-
else {
|
|
273
|
-
actionId = configActionId;
|
|
274
|
-
}
|
|
344
|
+
const configActionId = actionProperty.replace(/@/g, '::');
|
|
345
|
+
const actionId = getActionId(actionType, configActionId, importTypeId, facetId);
|
|
275
346
|
configPart['actions'][configActionId] = configParameters.factory.createInstance(common_2.PageType.ObjectPage, actionType);
|
|
276
|
-
|
|
347
|
+
if (actionId) {
|
|
348
|
+
transferSettingsAndFlexChanges(importParameters, configPart['actions'][configActionId], importParameters.jsonSchema['definitions'][actionType], configParameters.pageKeys, configParameters.flexChanges, undefined, undefined, actionId);
|
|
349
|
+
}
|
|
277
350
|
if (Object.keys(configPart['actions'][configActionId]).length === 0) {
|
|
278
351
|
delete configPart['actions'][configActionId];
|
|
279
352
|
}
|
|
@@ -346,7 +419,7 @@ function fillTableInConfig(importParameters, sectionPart, manifestSettings, conf
|
|
|
346
419
|
transferSettingsAndFlexChanges(importParameters, configPart[sectionPart.id]['table'], localJsonSchema, configParameters.pageKeys, configParameters.flexChanges, sectionPart.id, sectionTitle);
|
|
347
420
|
const toolBarActions = JSON.parse(JSON.stringify(schemaDefinitions))[`Actions<${sectionPart.id}>`];
|
|
348
421
|
if (toolBarActions === null || toolBarActions === void 0 ? void 0 : toolBarActions['properties']) {
|
|
349
|
-
fillActions(importParameters, toolBarActions.properties, configPart[sectionPart.id]['table']['toolBar'], configParameters, types_1.ActionTypeV2.
|
|
422
|
+
fillActions(importParameters, toolBarActions.properties, configPart[sectionPart.id]['table']['toolBar'], configParameters, types_1.ActionTypeV2.OPToolBar);
|
|
350
423
|
}
|
|
351
424
|
if (Object.keys(configPart[sectionPart.id]['table']['toolBar']).length === 0) {
|
|
352
425
|
delete configPart[sectionPart.id]['table']['toolBar'];
|
|
@@ -361,17 +434,17 @@ function fillTableInConfig(importParameters, sectionPart, manifestSettings, conf
|
|
|
361
434
|
* @param {object} configPart - the given part of the object page config
|
|
362
435
|
* @param {SapUiAppPageV2} v2Page - v2 page from manifest.
|
|
363
436
|
*/
|
|
364
|
-
function fillCustomColumnsInConfig(importParameters, escapedSectionId,
|
|
437
|
+
function fillCustomColumnsInConfig(importParameters, escapedSectionId, configPart, v2Page) {
|
|
365
438
|
const customColumnSchemaProp = importParameters.jsonSchema['definitions'][escapedSectionId].properties.custom;
|
|
366
439
|
const customColumnTarget = customColumnSchemaProp
|
|
367
|
-
?
|
|
440
|
+
? common_1.getTargetFromCustomColumnRef(customColumnSchemaProp.$ref)
|
|
368
441
|
: undefined;
|
|
369
442
|
if (customColumnTarget) {
|
|
370
443
|
const objectPageSectionData = {
|
|
371
|
-
key:
|
|
444
|
+
key: escapedSectionId.replace('@', ''),
|
|
372
445
|
target: customColumnTarget
|
|
373
446
|
};
|
|
374
|
-
|
|
447
|
+
common_3.addFragments(configPart[escapedSectionId], importParameters.manifest, v2Page, common_2.PageType.ObjectPage, importParameters.fragments, objectPageSectionData);
|
|
375
448
|
}
|
|
376
449
|
}
|
|
377
450
|
/**
|
|
@@ -412,8 +485,9 @@ function fillFormSection(importParameters, sectionPart, configPart, configParame
|
|
|
412
485
|
transferSettingsAndFlexChanges(importParameters, configPart[sectionPart.id], sectionPart.schema, configParameters.pageKeys, configParameters.flexChanges, undefined, sectionTitle);
|
|
413
486
|
}
|
|
414
487
|
const formActions = importParameters.jsonSchema['definitions'][`SectionActions${formId}`];
|
|
488
|
+
const formFacetId = sectionTitle || sectionPart.id.replace(/@/g, '::').replace(/::com/g, 'com');
|
|
415
489
|
if (formActions && formActions['properties']) {
|
|
416
|
-
fillActions(importParameters, formActions.properties, configPart[sectionPart.id]['form'], configParameters,
|
|
490
|
+
fillActions(importParameters, formActions.properties, configPart[sectionPart.id]['form'], configParameters, types_1.ActionTypeV2.Form, formFacetId);
|
|
417
491
|
}
|
|
418
492
|
const formFields = importParameters.jsonSchema['definitions'][`SectionFields${formId}`];
|
|
419
493
|
if (formFields['properties']) {
|
|
@@ -462,8 +536,9 @@ function fillSubSection(importParameters, sectionPart, manifestSettings, configP
|
|
|
462
536
|
*/
|
|
463
537
|
function fillSectionsInConfig(importParameters, sectionProperties, manifestSettings, configPart, configParameters) {
|
|
464
538
|
for (const sectionId in sectionProperties) {
|
|
539
|
+
const escapedSectionId = sectionId.replace(/\/@/g, '::');
|
|
465
540
|
const sectionPart = {
|
|
466
|
-
id:
|
|
541
|
+
id: escapedSectionId,
|
|
467
542
|
type: getSectionType(sectionProperties[sectionId]),
|
|
468
543
|
schema: sectionProperties[sectionId]
|
|
469
544
|
};
|
|
@@ -475,7 +550,7 @@ function fillSectionsInConfig(importParameters, sectionProperties, manifestSetti
|
|
|
475
550
|
importParameters.jsonSchema['definitions'][`${sectionPart.type}<${sectionId}>`];
|
|
476
551
|
fillTableInConfig(importParameters, sectionPart, manifestSettings, configPart, configParameters);
|
|
477
552
|
// Custom column ref
|
|
478
|
-
fillCustomColumnsInConfig(importParameters,
|
|
553
|
+
fillCustomColumnsInConfig(importParameters, escapedSectionId, configPart, configParameters.v2Page);
|
|
479
554
|
break;
|
|
480
555
|
}
|
|
481
556
|
case types_1.SectionTypeV2.SectionChart:
|
|
@@ -535,7 +610,7 @@ function fillConfig(importParameters, configParameters) {
|
|
|
535
610
|
objectPageConfig.footer = {};
|
|
536
611
|
const footerAction = importParameters.jsonSchema['definitions']['FooterActions'];
|
|
537
612
|
if (footerAction) {
|
|
538
|
-
fillActions(importParameters, footerAction.properties, objectPageConfig.footer, configParameters, types_1.ActionTypeV2.
|
|
613
|
+
fillActions(importParameters, footerAction.properties, objectPageConfig.footer, configParameters, types_1.ActionTypeV2.OPFooter);
|
|
539
614
|
}
|
|
540
615
|
// Transfer Layout information
|
|
541
616
|
objectPageConfig.layout = configParameters.factory.createInstance(common_2.PageType.ObjectPage, 'ObjectPageLayout');
|