@sap/ux-specification 1.84.99 → 1.84.100
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 +24 -0
- package/dist/documentation/runDocu-min.js.map +3 -3
- 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-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-ListReport.html +2 -2
- package/dist/documentation/v4/v4-ObjectPage.html +2 -2
- package/dist/index-min.js +30 -30
- package/dist/index-min.js.map +3 -3
- package/dist/specification/package.json +3 -3
- package/dist/specification/scripts/documentation/components/filter.js +0 -1
- package/dist/specification/scripts/documentation/components/filter.js.map +1 -1
- package/dist/specification/scripts/documentation/components/ui/TreeUI.d.ts.map +1 -1
- package/dist/specification/scripts/documentation/components/ui/TreeUI.js +2 -1
- package/dist/specification/scripts/documentation/components/ui/TreeUI.js.map +1 -1
- package/dist/specification/scripts/documentation/components/ui/search.d.ts.map +1 -1
- package/dist/specification/scripts/documentation/components/ui/search.js +6 -3
- package/dist/specification/scripts/documentation/components/ui/search.js.map +1 -1
- package/dist/specification/scripts/documentation/components/ui/toggle.d.ts.map +1 -1
- package/dist/specification/scripts/documentation/components/ui/toggle.js +6 -3
- package/dist/specification/scripts/documentation/components/ui/toggle.js.map +1 -1
- package/dist/specification/scripts/documentation/components/ui/tooltip.d.ts.map +1 -1
- package/dist/specification/scripts/documentation/components/ui/tooltip.js +13 -9
- package/dist/specification/scripts/documentation/components/ui/tooltip.js.map +1 -1
- package/dist/specification/scripts/documentation/components/ui/utils.d.ts.map +1 -1
- package/dist/specification/scripts/documentation/components/ui/utils.js +8 -4
- package/dist/specification/scripts/documentation/components/ui/utils.js.map +1 -1
- package/dist/specification/scripts/extractDocu.js +64 -24
- package/dist/specification/scripts/extractDocu.js.map +1 -1
- package/dist/specification/scripts/to-json-schema.js +1 -1
- package/dist/specification/scripts/to-json-schema.js.map +1 -1
- package/dist/specification/src/api.js +1 -1
- package/dist/specification/src/extensionLogger.js +3 -3
- package/dist/specification/src/sync/common/appProvider.d.ts.map +1 -1
- package/dist/specification/src/sync/common/appProvider.js.map +1 -1
- package/dist/specification/src/sync/common/decoration/control.d.ts.map +1 -1
- package/dist/specification/src/sync/common/decoration/control.js +2 -2
- package/dist/specification/src/sync/common/decoration/control.js.map +1 -1
- package/dist/specification/src/sync/common/flexUtils.js +1 -1
- package/dist/specification/src/sync/common/flexUtils.js.map +1 -1
- package/dist/specification/src/sync/common/generate/objectPage.js +0 -1
- package/dist/specification/src/sync/common/generate/objectPage.js.map +1 -1
- package/dist/specification/src/sync/common/generate/utils.js +10 -10
- package/dist/specification/src/sync/common/generate/utils.js.map +1 -1
- package/dist/specification/src/sync/common/import/utils.js +2 -2
- package/dist/specification/src/sync/common/importProject.js +3 -3
- package/dist/specification/src/sync/common/importProject.js.map +1 -1
- package/dist/specification/src/sync/common/utils.d.ts +1 -2
- package/dist/specification/src/sync/common/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/common/utils.js +104 -100
- package/dist/specification/src/sync/common/utils.js.map +1 -1
- package/dist/specification/src/sync/v2/export/controls/FilterBar.d.ts +1 -1
- package/dist/specification/src/sync/v2/export/controls/FilterBar.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/export/controls/FilterBar.js.map +1 -1
- package/dist/specification/src/sync/v2/export/controls/ObjectPageHeaderSection.js +6 -6
- package/dist/specification/src/sync/v2/export/export.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/export/export.js +1 -6
- package/dist/specification/src/sync/v2/export/export.js.map +1 -1
- package/dist/specification/src/sync/v2/export/factory.js +8 -8
- package/dist/specification/src/sync/v2/export/manifest.js +0 -1
- package/dist/specification/src/sync/v2/export/manifest.js.map +1 -1
- package/dist/specification/src/sync/v2/generate/analyticalListReport.js +1 -1
- package/dist/specification/src/sync/v2/generate/analyticalListReport.js.map +1 -1
- package/dist/specification/src/sync/v2/generate/objectPage.js +4 -4
- package/dist/specification/src/sync/v2/generate/objectPage.js.map +1 -1
- package/dist/specification/src/sync/v2/generate/utils.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/generate/utils.js +0 -2
- package/dist/specification/src/sync/v2/generate/utils.js.map +1 -1
- package/dist/specification/src/sync/v2/import/app/appProvider.js +0 -1
- package/dist/specification/src/sync/v2/import/app/appProvider.js.map +1 -1
- package/dist/specification/src/sync/v2/import/app/ovpProvider.js.map +1 -1
- package/dist/specification/src/sync/v2/import/common/index.d.ts.map +1 -1
- package/dist/specification/src/sync/v2/import/common/index.js +3 -1
- package/dist/specification/src/sync/v2/import/common/index.js.map +1 -1
- package/dist/specification/src/sync/v2/import/pages/objectPage.js +6 -7
- package/dist/specification/src/sync/v2/import/pages/objectPage.js.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/Table.d.ts +1 -1
- package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/Table.js.map +1 -1
- package/dist/specification/src/sync/v4/export/controls/ToolBar.d.ts +1 -1
- package/dist/specification/src/sync/v4/export/controls/ToolBar.d.ts.map +1 -1
- package/dist/specification/src/sync/v4/export/export.js +2 -3
- package/dist/specification/src/sync/v4/export/export.js.map +1 -1
- package/dist/specification/src/sync/v4/export/factory.js +6 -6
- package/dist/specification/src/sync/v4/import/pages/objectPage.js +1 -1
- package/dist/types/src/apiTypes.d.ts +1 -1
- package/dist/types/src/apiTypes.js +2 -2
- package/dist/types/src/common/page.d.ts +1 -1
- package/dist/types/src/common/page.d.ts.map +1 -1
- package/dist/types/src/common/page.js.map +1 -1
- package/dist/types/src/common/types.d.ts +3 -3
- package/dist/types/src/common/types.d.ts.map +1 -1
- package/dist/types/src/common/types.js +4 -4
- package/dist/types/src/common/types.js.map +1 -1
- package/package.json +3 -3
|
@@ -39,7 +39,6 @@ exports.updatePropertyIndices = updatePropertyIndices;
|
|
|
39
39
|
exports.removeNamespaces = removeNamespaces;
|
|
40
40
|
exports.replaceNamespaces = replaceNamespaces;
|
|
41
41
|
const ux_specification_types_1 = require("@sap/ux-specification-types");
|
|
42
|
-
const ux_specification_types_2 = require("@sap/ux-specification-types");
|
|
43
42
|
const i18next_1 = __importDefault(require("i18next"));
|
|
44
43
|
const deepmerge_1 = __importDefault(require("deepmerge"));
|
|
45
44
|
const annotation_converter_1 = require("@sap-ux/annotation-converter");
|
|
@@ -47,10 +46,10 @@ const edmx_parser_1 = require("@sap-ux/edmx-parser");
|
|
|
47
46
|
const extensionLogger_1 = require("../../extensionLogger");
|
|
48
47
|
exports.DEFINITION_LINK_PREFIX = '#/definitions/';
|
|
49
48
|
exports.V4_TEMPLATES = [
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
ux_specification_types_1.v4.FE_TEMPLATE_V4_LIST_REPORT,
|
|
50
|
+
ux_specification_types_1.v4.FE_TEMPLATE_V4_ALP,
|
|
51
|
+
ux_specification_types_1.v4.FE_TEMPLATE_V4_OBJECT_PAGE,
|
|
52
|
+
ux_specification_types_1.v4.FE_TEMPLATE_V4_CUSTOM_PAGE
|
|
54
53
|
];
|
|
55
54
|
exports.V4_LIBS = ['sap.fe.core', 'sap.fe.templates'];
|
|
56
55
|
const arrayIncludes = (arr, target) => target.every((v) => arr.includes(v));
|
|
@@ -264,7 +263,7 @@ function getDataFieldDescription(dataFieldAbstract, entityType) {
|
|
|
264
263
|
}
|
|
265
264
|
return title;
|
|
266
265
|
}
|
|
267
|
-
catch
|
|
266
|
+
catch {
|
|
268
267
|
return title;
|
|
269
268
|
}
|
|
270
269
|
}
|
|
@@ -273,6 +272,7 @@ function getDataFieldDescription(dataFieldAbstract, entityType) {
|
|
|
273
272
|
* @param refInput string to be character checked and replaced
|
|
274
273
|
* @returns string with replaced characters
|
|
275
274
|
*/
|
|
275
|
+
//@typescript-eslint/no-wrapper-object-types turned off tor prevent conversion String > string; String is used by AVT
|
|
276
276
|
function prepareRef(refInput) {
|
|
277
277
|
return refInput.replace('#', '::').replace(/\//g, ':2f');
|
|
278
278
|
}
|
|
@@ -282,7 +282,7 @@ function prepareRef(refInput) {
|
|
|
282
282
|
*/
|
|
283
283
|
function getPageTypeV2(name) {
|
|
284
284
|
if (name) {
|
|
285
|
-
const templatePart = `${
|
|
285
|
+
const templatePart = `${ux_specification_types_1.v2.FE_TEMPLATE_V2}.`;
|
|
286
286
|
return name.split(templatePart)[1];
|
|
287
287
|
}
|
|
288
288
|
}
|
|
@@ -291,14 +291,14 @@ function getPageTypeV2(name) {
|
|
|
291
291
|
* @param name - page component name
|
|
292
292
|
*/
|
|
293
293
|
function getPageTypeV4(v4App) {
|
|
294
|
-
if (v4App.name && v4App.name !==
|
|
295
|
-
const templatePart = `${
|
|
294
|
+
if (v4App.name && v4App.name !== ux_specification_types_1.v4.FE_TEMPLATE_V4_CUSTOM_PAGE) {
|
|
295
|
+
const templatePart = `${ux_specification_types_1.v4.FE_TEMPLATE_V4}.`;
|
|
296
296
|
return v4App.name.split(templatePart)[1];
|
|
297
297
|
}
|
|
298
|
-
else if (v4App?.name ===
|
|
298
|
+
else if (v4App?.name === ux_specification_types_1.v4.FE_TEMPLATE_V4_CUSTOM_PAGE ||
|
|
299
299
|
v4App.viewId ||
|
|
300
300
|
v4App.viewName) {
|
|
301
|
-
return
|
|
301
|
+
return ux_specification_types_1.PageTypeV4.CustomPage;
|
|
302
302
|
}
|
|
303
303
|
}
|
|
304
304
|
function getTargetAnnotationName(targetAnnotation, keyForRelatedFacetKeys = false) {
|
|
@@ -358,11 +358,11 @@ function adjustKey(key, navigationParts, keyForRelatedFacetKeys) {
|
|
|
358
358
|
key = pathParts.join('::');
|
|
359
359
|
}
|
|
360
360
|
else {
|
|
361
|
-
key = uiClass.replace('@UI', `${!keyForRelatedFacetKeys ? '@' : ''}${
|
|
361
|
+
key = uiClass.replace('@UI', `${!keyForRelatedFacetKeys ? '@' : ''}${ux_specification_types_1.UIVOCABULARY}`);
|
|
362
362
|
}
|
|
363
363
|
return key;
|
|
364
364
|
}
|
|
365
|
-
function getKeyAndEntityTypeOfReferenceFacet(oDataServiceAVT, key, entityType, propertyValue, oDataVersion =
|
|
365
|
+
function getKeyAndEntityTypeOfReferenceFacet(oDataServiceAVT, key, entityType, propertyValue, oDataVersion = ux_specification_types_1.FioriElementsVersion.v2, keyForRelatedFacetKeys = false) {
|
|
366
366
|
let stopProcessing = false;
|
|
367
367
|
let namespace;
|
|
368
368
|
const navigationParts = propertyValue.split('/');
|
|
@@ -373,7 +373,7 @@ function getKeyAndEntityTypeOfReferenceFacet(oDataServiceAVT, key, entityType, p
|
|
|
373
373
|
key = adjustKey(key, navigationParts, keyForRelatedFacetKeys);
|
|
374
374
|
const targetAnnotation = determineTargetAnnotation(navigationParts, entityType, oDataServiceAVT);
|
|
375
375
|
if (targetAnnotation) {
|
|
376
|
-
const separator = oDataVersion ===
|
|
376
|
+
const separator = oDataVersion === ux_specification_types_1.FioriElementsVersion.v2 ? '::' : '#';
|
|
377
377
|
key = getTargetAnnotationName(targetAnnotation, keyForRelatedFacetKeys).replace('#', separator);
|
|
378
378
|
namespace = targetAnnotation.fullyQualifiedName?.split('@')[0];
|
|
379
379
|
}
|
|
@@ -382,7 +382,7 @@ function getKeyAndEntityTypeOfReferenceFacet(oDataServiceAVT, key, entityType, p
|
|
|
382
382
|
return { key, entityType, stopProcessing, namespace };
|
|
383
383
|
}
|
|
384
384
|
if (navigation) {
|
|
385
|
-
const navSeparator = oDataVersion ===
|
|
385
|
+
const navSeparator = oDataVersion === ux_specification_types_1.FioriElementsVersion.v2 ? '::' : '/';
|
|
386
386
|
navigationParts.pop();
|
|
387
387
|
const navigationIDs = [...navigationParts].join(navSeparator);
|
|
388
388
|
key = `${navigationIDs}${navSeparator}${key}`;
|
|
@@ -398,7 +398,7 @@ function getKeyAndEntityTypeOfReferenceFacet(oDataServiceAVT, key, entityType, p
|
|
|
398
398
|
* @param {ExtensionLogger} logger - Logger class for logging messages
|
|
399
399
|
* @returns {FacetSection} - object comprising the relevant facet information
|
|
400
400
|
*/
|
|
401
|
-
function getSectionFacet(facetDefinition, sourceEntityType, oDataServiceAVT, logger, oDataVersion =
|
|
401
|
+
function getSectionFacet(facetDefinition, sourceEntityType, oDataServiceAVT, logger, oDataVersion = ux_specification_types_1.FioriElementsVersion.v2, keyForRelatedFacetKeys = false) {
|
|
402
402
|
//Take facet ID as fallback
|
|
403
403
|
const facetName = facetDefinition.fullyQualifiedName?.substring(facetDefinition.fullyQualifiedName?.lastIndexOf('@'));
|
|
404
404
|
let key = facetDefinition.ID ? facetDefinition.ID.toString() : facetName;
|
|
@@ -496,7 +496,7 @@ function getSchemaKeyOfLineItemRecord(lineItemRecord) {
|
|
|
496
496
|
schemaKey =
|
|
497
497
|
'DataFieldForAnnotation:::sTarget::' +
|
|
498
498
|
target
|
|
499
|
-
.replace('@UI', `@${
|
|
499
|
+
.replace('@UI', `@${ux_specification_types_1.UIVOCABULARY}`)
|
|
500
500
|
.replace('@Communication', '@com.sap.vocabularies.Communication.v1')
|
|
501
501
|
.replace('@Contact', '@com.sap.vocabularies.Contact.v1');
|
|
502
502
|
}
|
|
@@ -591,20 +591,20 @@ function getAnnotationTerm(path, alias, entityType) {
|
|
|
591
591
|
* @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool
|
|
592
592
|
*/
|
|
593
593
|
function evaluateTargetAnnotation(section, annotationRecord, facets, entityType, oDataServiceAVT) {
|
|
594
|
-
const alias = findAlias(
|
|
594
|
+
const alias = findAlias(ux_specification_types_1.UIVOCABULARY, oDataServiceAVT);
|
|
595
595
|
let path = section ? section.key : '';
|
|
596
596
|
const targetEntityType = section.entityType;
|
|
597
597
|
const annotationTerm = getAnnotationTerm(path, alias, entityType);
|
|
598
598
|
switch (annotationTerm) {
|
|
599
599
|
case "com.sap.vocabularies.UI.v1.Chart" /* UIAnnotationTerms.Chart */: {
|
|
600
|
-
facets[path] = { base:
|
|
600
|
+
facets[path] = { base: ux_specification_types_1.FacetBase.Chart };
|
|
601
601
|
facets[path].target = annotationRecord?.Target?.$target;
|
|
602
602
|
facets[path].entityType = targetEntityType;
|
|
603
603
|
facets[path].namespace = section.namespace;
|
|
604
604
|
break;
|
|
605
605
|
}
|
|
606
606
|
case "com.sap.vocabularies.UI.v1.Identification" /* UIAnnotationTerms.Identification */: {
|
|
607
|
-
facets[path] = { base:
|
|
607
|
+
facets[path] = { base: ux_specification_types_1.FacetBase.Identification };
|
|
608
608
|
facets[path].target = annotationRecord?.Target?.$target;
|
|
609
609
|
facets[path].entityType = targetEntityType;
|
|
610
610
|
facets[path].namespace = section.namespace;
|
|
@@ -616,21 +616,21 @@ function evaluateTargetAnnotation(section, annotationRecord, facets, entityType,
|
|
|
616
616
|
pathParts[pathParts.length - 1] = `@${"com.sap.vocabularies.UI.v1.LineItem" /* UIAnnotationTerms.LineItem */}`;
|
|
617
617
|
path = pathParts.join('::');
|
|
618
618
|
}
|
|
619
|
-
facets[path] = { base:
|
|
619
|
+
facets[path] = { base: ux_specification_types_1.FacetBase.LineItem };
|
|
620
620
|
facets[path].target = annotationRecord?.Target?.$target;
|
|
621
621
|
facets[path].entityType = targetEntityType;
|
|
622
622
|
facets[path].namespace = section.namespace;
|
|
623
623
|
break;
|
|
624
624
|
}
|
|
625
625
|
case "com.sap.vocabularies.UI.v1.FieldGroup" /* UIAnnotationTerms.FieldGroup */: {
|
|
626
|
-
facets[path] = { base:
|
|
626
|
+
facets[path] = { base: ux_specification_types_1.FacetBase.Form };
|
|
627
627
|
facets[path].target = annotationRecord?.Target?.$target;
|
|
628
628
|
facets[path].entityType = targetEntityType;
|
|
629
629
|
facets[path].namespace = section.namespace;
|
|
630
630
|
break;
|
|
631
631
|
}
|
|
632
632
|
case "com.sap.vocabularies.UI.v1.DataPoint" /* UIAnnotationTerms.DataPoint */: {
|
|
633
|
-
facets[path] = { base:
|
|
633
|
+
facets[path] = { base: ux_specification_types_1.FacetBase.DataPoint };
|
|
634
634
|
facets[path].Label = annotationRecord?.Target?.$target['Title'];
|
|
635
635
|
facets[path].target = annotationRecord?.Target?.$target;
|
|
636
636
|
facets[path].entityType = targetEntityType;
|
|
@@ -638,32 +638,32 @@ function evaluateTargetAnnotation(section, annotationRecord, facets, entityType,
|
|
|
638
638
|
break;
|
|
639
639
|
}
|
|
640
640
|
case "com.sap.vocabularies.UI.v1.PresentationVariant" /* UIAnnotationTerms.PresentationVariant */: {
|
|
641
|
-
facets[path] = { base:
|
|
641
|
+
facets[path] = { base: ux_specification_types_1.FacetBase.PresentationVariant };
|
|
642
642
|
facets[path].target = annotationRecord?.Target?.$target;
|
|
643
643
|
facets[path].entityType = targetEntityType;
|
|
644
644
|
facets[path].namespace = section.namespace;
|
|
645
645
|
break;
|
|
646
646
|
}
|
|
647
647
|
case "com.sap.vocabularies.Communication.v1.Contact" /* CommunicationAnnotationTerms.Contact */: {
|
|
648
|
-
facets[path] = { base:
|
|
648
|
+
facets[path] = { base: ux_specification_types_1.FacetBase.Contact };
|
|
649
649
|
facets[path].target = annotationRecord?.Target?.$target;
|
|
650
650
|
facets[path].entityType = targetEntityType;
|
|
651
651
|
facets[path].namespace = section.namespace;
|
|
652
652
|
break;
|
|
653
653
|
}
|
|
654
654
|
case "com.sap.vocabularies.Communication.v1.Address" /* CommunicationAnnotationTerms.Address */: {
|
|
655
|
-
facets[path] = { base:
|
|
655
|
+
facets[path] = { base: ux_specification_types_1.FacetBase.Address };
|
|
656
656
|
facets[path].target = annotationRecord?.Target?.$target;
|
|
657
657
|
facets[path].entityType = targetEntityType;
|
|
658
658
|
facets[path].namespace = section.namespace;
|
|
659
659
|
break;
|
|
660
660
|
}
|
|
661
661
|
default: {
|
|
662
|
-
facets[path] = { base:
|
|
662
|
+
facets[path] = { base: ux_specification_types_1.FacetBase.Unknown };
|
|
663
663
|
}
|
|
664
664
|
}
|
|
665
665
|
if (facets[path]) {
|
|
666
|
-
facets[path].annotationPath = `/${annotationRecord.fullyQualifiedName.replace('@com.sap.vocabularies',
|
|
666
|
+
facets[path].annotationPath = `/${annotationRecord.fullyQualifiedName.replace('@com.sap.vocabularies', ux_specification_types_1.VOCWITHSLASH)}`;
|
|
667
667
|
if (annotationRecord.Label) {
|
|
668
668
|
facets[path].Label = annotationRecord.Label;
|
|
669
669
|
}
|
|
@@ -686,7 +686,7 @@ function evaluateTargetAnnotation(section, annotationRecord, facets, entityType,
|
|
|
686
686
|
* @param {FioriElementsVersion} oDataVersion - OData version
|
|
687
687
|
* @param {ExtensionLogger} logger - Logger class for logging messages
|
|
688
688
|
*/
|
|
689
|
-
function addFacetToConfig(annotationRecord, oDataServiceAVT, serviceName, entityType, facets, oDataVersion =
|
|
689
|
+
function addFacetToConfig(annotationRecord, oDataServiceAVT, serviceName, entityType, facets, oDataVersion = ux_specification_types_1.FioriElementsVersion.v2, logger) {
|
|
690
690
|
const section = getSectionFacet(annotationRecord, entityType, oDataServiceAVT, logger, oDataVersion, false);
|
|
691
691
|
if (section) {
|
|
692
692
|
switch (annotationRecord.$Type) {
|
|
@@ -697,14 +697,14 @@ function addFacetToConfig(annotationRecord, oDataServiceAVT, serviceName, entity
|
|
|
697
697
|
case "com.sap.vocabularies.UI.v1.CollectionFacet" /* UIAnnotationTypes.CollectionFacet */: {
|
|
698
698
|
const annotationPath = `/${entityType.fullyQualifiedName}/${annotationRecord.fullyQualifiedName.split(entityType.fullyQualifiedName)[1]}`;
|
|
699
699
|
const facet = (facets[section.key] = {
|
|
700
|
-
base:
|
|
700
|
+
base: ux_specification_types_1.FacetBase.CollectionFacet,
|
|
701
701
|
facets: {},
|
|
702
702
|
ID: section.ID,
|
|
703
703
|
annotationPath: annotationPath,
|
|
704
704
|
Label: section.label,
|
|
705
705
|
namespace: section.namespace
|
|
706
706
|
});
|
|
707
|
-
if (!facet.ID && oDataVersion ===
|
|
707
|
+
if (!facet.ID && oDataVersion === ux_specification_types_1.FioriElementsVersion.v4) {
|
|
708
708
|
(0, extensionLogger_1.log)(logger, {
|
|
709
709
|
severity: "error" /* LogSeverity.Error */,
|
|
710
710
|
message: i18next_1.default.t('NOID4SECTION', { facet: annotationRecord.fullyQualifiedName })
|
|
@@ -725,12 +725,12 @@ function addFacetToConfig(annotationRecord, oDataServiceAVT, serviceName, entity
|
|
|
725
725
|
* @param {FioriElementsVersion} oDataVersion - OData version
|
|
726
726
|
* @param {ExtensionLogger} logger - Logger class for logging messages
|
|
727
727
|
*/
|
|
728
|
-
function getObjectPageHeaderFacets(entityType, oDataServiceAVT, oDataVersion =
|
|
728
|
+
function getObjectPageHeaderFacets(entityType, oDataServiceAVT, oDataVersion = ux_specification_types_1.FioriElementsVersion.v2, logger) {
|
|
729
729
|
const facets = {};
|
|
730
730
|
if (!entityType || !entityType.annotations) {
|
|
731
731
|
return;
|
|
732
732
|
}
|
|
733
|
-
const alias = findAlias(
|
|
733
|
+
const alias = findAlias(ux_specification_types_1.UIVOCABULARY, oDataServiceAVT);
|
|
734
734
|
const facetAnnotation = alias && entityType?.annotations?.[alias]?.HeaderFacets;
|
|
735
735
|
if (facetAnnotation) {
|
|
736
736
|
const lastDot = entityType && entityType.fullyQualifiedName.lastIndexOf('.');
|
|
@@ -749,12 +749,12 @@ function getObjectPageHeaderFacets(entityType, oDataServiceAVT, oDataVersion = u
|
|
|
749
749
|
* @param {FioriElementsVersion} oDataVersion - OData version
|
|
750
750
|
* @param {ExtensionLogger} logger - Logger class for logging messages
|
|
751
751
|
*/
|
|
752
|
-
function getObjectPageFacets(entityType, oDataServiceAVT, oDataVersion =
|
|
752
|
+
function getObjectPageFacets(entityType, oDataServiceAVT, oDataVersion = ux_specification_types_1.FioriElementsVersion.v2, logger) {
|
|
753
753
|
const facets = {};
|
|
754
754
|
if (!entityType || !entityType.annotations) {
|
|
755
755
|
return;
|
|
756
756
|
}
|
|
757
|
-
const alias = findAlias(
|
|
757
|
+
const alias = findAlias(ux_specification_types_1.UIVOCABULARY, oDataServiceAVT);
|
|
758
758
|
const facetAnnotation = alias && entityType?.annotations[alias]?.Facets;
|
|
759
759
|
if (facetAnnotation) {
|
|
760
760
|
const lastDot = entityType && entityType.fullyQualifiedName.lastIndexOf('.');
|
|
@@ -772,17 +772,17 @@ function getObjectPageFacets(entityType, oDataServiceAVT, oDataVersion = ux_spec
|
|
|
772
772
|
* @returns FioriElementsVersion
|
|
773
773
|
*/
|
|
774
774
|
function getFEVersionFromManifest(manifest) {
|
|
775
|
-
if ((manifest[
|
|
776
|
-
(manifest[
|
|
777
|
-
return
|
|
775
|
+
if ((manifest[ux_specification_types_1.ManifestSection.generic] && Object.keys(manifest[ux_specification_types_1.ManifestSection.generic]).length > 0) ||
|
|
776
|
+
(manifest[ux_specification_types_1.ManifestSection.ovp] && Object.keys(manifest[ux_specification_types_1.ManifestSection.ovp]).length > 0)) {
|
|
777
|
+
return ux_specification_types_1.FioriElementsVersion.v2;
|
|
778
778
|
}
|
|
779
779
|
else {
|
|
780
|
-
const targets = manifest[
|
|
781
|
-
const libs = manifest[
|
|
780
|
+
const targets = manifest[ux_specification_types_1.ManifestSection.ui5]?.routing?.targets;
|
|
781
|
+
const libs = manifest[ux_specification_types_1.ManifestSection.ui5]?.dependencies?.libs;
|
|
782
782
|
if ((targets &&
|
|
783
783
|
Object.keys(targets).find((targetKey) => exports.V4_TEMPLATES.indexOf(targets[targetKey].name) > -1)) ||
|
|
784
784
|
(libs && Object.keys(libs).find((lib) => exports.V4_LIBS.indexOf(lib) > -1))) {
|
|
785
|
-
return
|
|
785
|
+
return ux_specification_types_1.FioriElementsVersion.v4;
|
|
786
786
|
}
|
|
787
787
|
else {
|
|
788
788
|
return undefined;
|
|
@@ -798,11 +798,11 @@ function getFEVersionFromManifest(manifest) {
|
|
|
798
798
|
* @returns - main service name
|
|
799
799
|
*/
|
|
800
800
|
function getMainService(manifest) {
|
|
801
|
-
const model = typeof manifest?.[
|
|
802
|
-
? manifest[
|
|
801
|
+
const model = typeof manifest?.[ux_specification_types_1.ManifestSection.ovp]?.globalFilterModel === 'string'
|
|
802
|
+
? manifest[ux_specification_types_1.ManifestSection.ovp].globalFilterModel
|
|
803
803
|
: '';
|
|
804
|
-
return typeof manifest?.[
|
|
805
|
-
? manifest[
|
|
804
|
+
return typeof manifest?.[ux_specification_types_1.ManifestSection.ui5]?.models?.[model]?.dataSource === 'string'
|
|
805
|
+
? manifest[ux_specification_types_1.ManifestSection.ui5].models[model].dataSource
|
|
806
806
|
: undefined;
|
|
807
807
|
}
|
|
808
808
|
/**
|
|
@@ -815,7 +815,7 @@ function getODataVersionFromManifest(manifest) {
|
|
|
815
815
|
if (!mainService) {
|
|
816
816
|
return ux_specification_types_1.OdataVersion.v2;
|
|
817
817
|
}
|
|
818
|
-
const dataSource = manifest[
|
|
818
|
+
const dataSource = manifest[ux_specification_types_1.ManifestSection.app].dataSources?.[mainService];
|
|
819
819
|
return dataSource?.settings?.odataVersion === '4.0' ? ux_specification_types_1.OdataVersion.v4 : ux_specification_types_1.OdataVersion.v2;
|
|
820
820
|
}
|
|
821
821
|
/**
|
|
@@ -826,27 +826,27 @@ function getODataVersionFromManifest(manifest) {
|
|
|
826
826
|
*/
|
|
827
827
|
function determineV2Template(manifest, logger) {
|
|
828
828
|
let templateType;
|
|
829
|
-
if (manifest[
|
|
830
|
-
const v2Pages = manifest[
|
|
829
|
+
if (manifest[ux_specification_types_1.ManifestSection.generic]) {
|
|
830
|
+
const v2Pages = manifest[ux_specification_types_1.ManifestSection.generic].pages;
|
|
831
831
|
if (!v2Pages) {
|
|
832
832
|
(0, extensionLogger_1.log)(logger, {
|
|
833
833
|
severity: "error" /* LogSeverity.Error */,
|
|
834
834
|
message: i18next_1.default.t('NOPAGES', { appId: manifest['sap.app']['id'] }),
|
|
835
835
|
location: {
|
|
836
|
-
path:
|
|
837
|
-
range: [
|
|
836
|
+
path: ux_specification_types_1.MANIFESTPATH,
|
|
837
|
+
range: [ux_specification_types_1.ManifestSection.generic]
|
|
838
838
|
}
|
|
839
839
|
});
|
|
840
840
|
return;
|
|
841
841
|
}
|
|
842
842
|
for (const pageKey in v2Pages) {
|
|
843
843
|
const v2Page = v2Pages[pageKey];
|
|
844
|
-
if (getPageTypeV2(v2Page.component?.name) ===
|
|
845
|
-
templateType =
|
|
844
|
+
if (getPageTypeV2(v2Page.component?.name) === ux_specification_types_1.PageTypeV2.AnalyticalListPage) {
|
|
845
|
+
templateType = ux_specification_types_1.TemplateType.AnalyticalListPageV2;
|
|
846
846
|
break;
|
|
847
847
|
}
|
|
848
|
-
else if (getPageTypeV2(v2Page.component?.name) ===
|
|
849
|
-
templateType =
|
|
848
|
+
else if (getPageTypeV2(v2Page.component?.name) === ux_specification_types_1.PageTypeV2.ListReport) {
|
|
849
|
+
templateType = ux_specification_types_1.TemplateType.ListReportObjectPageV2;
|
|
850
850
|
break;
|
|
851
851
|
}
|
|
852
852
|
}
|
|
@@ -855,10 +855,10 @@ function determineV2Template(manifest, logger) {
|
|
|
855
855
|
if (!templateType) {
|
|
856
856
|
(0, extensionLogger_1.log)(logger, {
|
|
857
857
|
severity: "error" /* LogSeverity.Error */,
|
|
858
|
-
message: i18next_1.default.t('NOTEMPLATE', { section:
|
|
858
|
+
message: i18next_1.default.t('NOTEMPLATE', { section: ux_specification_types_1.ManifestSection.generic }),
|
|
859
859
|
location: {
|
|
860
|
-
path:
|
|
861
|
-
range: [
|
|
860
|
+
path: ux_specification_types_1.MANIFESTPATH,
|
|
861
|
+
range: [ux_specification_types_1.ManifestSection.generic]
|
|
862
862
|
}
|
|
863
863
|
});
|
|
864
864
|
}
|
|
@@ -873,24 +873,24 @@ function determineV2Template(manifest, logger) {
|
|
|
873
873
|
function determineV4PageTemplateType(v4Page) {
|
|
874
874
|
let templateType;
|
|
875
875
|
const pageType = getPageTypeV4(v4Page);
|
|
876
|
-
if (pageType ===
|
|
877
|
-
templateType =
|
|
876
|
+
if (pageType === ux_specification_types_1.PageTypeV4.AnalyticalListPage) {
|
|
877
|
+
templateType = ux_specification_types_1.TemplateType.AnalyticalListPageV4;
|
|
878
878
|
}
|
|
879
|
-
else if (pageType ===
|
|
879
|
+
else if (pageType === ux_specification_types_1.PageTypeV4.ListReport) {
|
|
880
880
|
const viewPath = v4Page.options?.settings?.views?.paths?.[0];
|
|
881
|
-
if (viewPath && (viewPath[
|
|
882
|
-
templateType =
|
|
881
|
+
if (viewPath && (viewPath[ux_specification_types_1.ALPViewType.Primary] || viewPath[ux_specification_types_1.ALPViewType.Secondary])) {
|
|
882
|
+
templateType = ux_specification_types_1.TemplateType.AnalyticalListPageV4;
|
|
883
883
|
}
|
|
884
884
|
else {
|
|
885
|
-
templateType =
|
|
885
|
+
templateType = ux_specification_types_1.TemplateType.ListReportObjectPageV4;
|
|
886
886
|
}
|
|
887
887
|
}
|
|
888
|
-
else if (pageType ===
|
|
889
|
-
templateType =
|
|
888
|
+
else if (pageType === ux_specification_types_1.PageTypeV4.ObjectPage) {
|
|
889
|
+
templateType = ux_specification_types_1.TemplateType.ListReportObjectPageV4;
|
|
890
890
|
//fixed now for FEOP scenario, bit continue to check if LR/ALP exists
|
|
891
891
|
}
|
|
892
|
-
else if (pageType ===
|
|
893
|
-
templateType =
|
|
892
|
+
else if (pageType === ux_specification_types_1.PageTypeV4.CustomPage) {
|
|
893
|
+
templateType = ux_specification_types_1.TemplateType.FreestylePageV4;
|
|
894
894
|
}
|
|
895
895
|
return templateType;
|
|
896
896
|
}
|
|
@@ -917,29 +917,29 @@ function determineV4TemplateFromPages(v4Pages) {
|
|
|
917
917
|
* @returns {TemplateType} the template type
|
|
918
918
|
*/
|
|
919
919
|
function determineV4Template(manifest, logger) {
|
|
920
|
-
const v4Pages = manifest[
|
|
921
|
-
manifest[
|
|
920
|
+
const v4Pages = manifest[ux_specification_types_1.ManifestSection.ui5].routing &&
|
|
921
|
+
manifest[ux_specification_types_1.ManifestSection.ui5].routing.targets;
|
|
922
922
|
// if there are no pages in routing targets, we use LROPV4 as default template type
|
|
923
923
|
if (!v4Pages || Object.keys(v4Pages).length === 0) {
|
|
924
924
|
(0, extensionLogger_1.log)(logger, {
|
|
925
925
|
severity: "info" /* LogSeverity.Info */,
|
|
926
926
|
message: i18next_1.default.t('NOPAGES', { appId: manifest['sap.app']['id'] }),
|
|
927
927
|
location: {
|
|
928
|
-
path:
|
|
929
|
-
range: [
|
|
928
|
+
path: ux_specification_types_1.MANIFESTPATH,
|
|
929
|
+
range: [ux_specification_types_1.ManifestSection.ui5, 'routing']
|
|
930
930
|
}
|
|
931
931
|
});
|
|
932
|
-
return
|
|
932
|
+
return ux_specification_types_1.TemplateType.ListReportObjectPageV4;
|
|
933
933
|
}
|
|
934
934
|
// else try to determine template type from routing targets
|
|
935
935
|
const templateType = determineV4TemplateFromPages(v4Pages);
|
|
936
936
|
if (!templateType) {
|
|
937
937
|
(0, extensionLogger_1.log)(logger, {
|
|
938
938
|
severity: "error" /* LogSeverity.Error */,
|
|
939
|
-
message: i18next_1.default.t('NOTEMPLATE', { section:
|
|
939
|
+
message: i18next_1.default.t('NOTEMPLATE', { section: ux_specification_types_1.ManifestSection.ui5 }),
|
|
940
940
|
location: {
|
|
941
|
-
path:
|
|
942
|
-
range: [
|
|
941
|
+
path: ux_specification_types_1.MANIFESTPATH,
|
|
942
|
+
range: [ux_specification_types_1.ManifestSection.ui5, 'routing', 'targets']
|
|
943
943
|
}
|
|
944
944
|
});
|
|
945
945
|
}
|
|
@@ -954,13 +954,13 @@ function determineV4Template(manifest, logger) {
|
|
|
954
954
|
*/
|
|
955
955
|
function getTemplateTypeFromManifest(manifest, fioriElementsVersion, logger) {
|
|
956
956
|
let templateType;
|
|
957
|
-
if (manifest[
|
|
958
|
-
templateType =
|
|
957
|
+
if (manifest[ux_specification_types_1.ManifestSection.ovp]) {
|
|
958
|
+
templateType = ux_specification_types_1.TemplateType.OverviewPageV2;
|
|
959
959
|
}
|
|
960
|
-
else if (fioriElementsVersion ===
|
|
960
|
+
else if (fioriElementsVersion === ux_specification_types_1.FioriElementsVersion.v2) {
|
|
961
961
|
templateType = determineV2Template(manifest, logger);
|
|
962
962
|
}
|
|
963
|
-
else if (fioriElementsVersion ===
|
|
963
|
+
else if (fioriElementsVersion === ux_specification_types_1.FioriElementsVersion.v4) {
|
|
964
964
|
templateType = determineV4Template(manifest, logger);
|
|
965
965
|
}
|
|
966
966
|
return templateType;
|
|
@@ -973,12 +973,12 @@ function getTemplateTypeFromManifest(manifest, fioriElementsVersion, logger) {
|
|
|
973
973
|
*/
|
|
974
974
|
function addSectionTitleAndDescription(facet, section, facetKey) {
|
|
975
975
|
if (facet?.ID) {
|
|
976
|
-
section.title =
|
|
977
|
-
section[
|
|
976
|
+
section.title = ux_specification_types_1.FACETTITLEPREFIX + facet.ID;
|
|
977
|
+
section[ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.id, value: facet.ID }];
|
|
978
978
|
}
|
|
979
979
|
else {
|
|
980
980
|
section.title = facetKey.replace(/@com.sap/g, 'com.sap');
|
|
981
|
-
section[
|
|
981
|
+
section[ux_specification_types_1.SchemaTag.keys] = [{ name: ux_specification_types_1.SchemaKeyName.id, value: facetKey.replace(ux_specification_types_1.UIVOCABULARYALPHADOT, '') }];
|
|
982
982
|
}
|
|
983
983
|
// Description
|
|
984
984
|
if (facet?.Label) {
|
|
@@ -1023,8 +1023,8 @@ function createDefaultSection(appSchema, facet, facetKey) {
|
|
|
1023
1023
|
properties: {},
|
|
1024
1024
|
additionalProperties: false
|
|
1025
1025
|
};
|
|
1026
|
-
section[
|
|
1027
|
-
section[
|
|
1026
|
+
section[ux_specification_types_1.SchemaTag.isViewNode] = true;
|
|
1027
|
+
section[ux_specification_types_1.SchemaTag.annotationPath] = facet.annotationPath;
|
|
1028
1028
|
addTargetTitleAndSectionDescription(facet, section, facetKey);
|
|
1029
1029
|
return section;
|
|
1030
1030
|
}
|
|
@@ -1037,8 +1037,8 @@ function createDefaultSection(appSchema, facet, facetKey) {
|
|
|
1037
1037
|
* @param {boolean} [checkUnresolvableFacets=false] - Check and avoid facets and sections without ID and Target.
|
|
1038
1038
|
* @returns {FacetSection[]} - Array of facets or sections
|
|
1039
1039
|
*/
|
|
1040
|
-
function getObjectPageFacetSection(entityType, oDataServiceAVT, logger, oDataVersion =
|
|
1041
|
-
const alias = findAlias(
|
|
1040
|
+
function getObjectPageFacetSection(entityType, oDataServiceAVT, logger, oDataVersion = ux_specification_types_1.FioriElementsVersion.v2, checkUnresolvableFacets = false) {
|
|
1041
|
+
const alias = findAlias(ux_specification_types_1.UIVOCABULARY, oDataServiceAVT);
|
|
1042
1042
|
let sections = [];
|
|
1043
1043
|
if (entityType) {
|
|
1044
1044
|
const facetAnnotation = alias && entityType?.annotations?.[alias]?.Facets;
|
|
@@ -1074,11 +1074,16 @@ const deleteEmptyStructure = (manifest, path, deletionRequest, entityPathArray,
|
|
|
1074
1074
|
let manifestSection = manifest;
|
|
1075
1075
|
const pathArray = path.split('/');
|
|
1076
1076
|
pathArray.forEach(function (element) {
|
|
1077
|
-
|
|
1077
|
+
let decodedElement = targetAnnotationEncoded && targetAnnotationEncoded === element
|
|
1078
1078
|
? targetAnnotation
|
|
1079
1079
|
: element.replace('??', '/');
|
|
1080
1080
|
if (!manifestSection[decodedElement]) {
|
|
1081
|
-
|
|
1081
|
+
if (targetAnnotationEncoded === element) {
|
|
1082
|
+
decodedElement = targetAnnotationEncoded;
|
|
1083
|
+
}
|
|
1084
|
+
if (!manifestSection[decodedElement]) {
|
|
1085
|
+
return;
|
|
1086
|
+
}
|
|
1082
1087
|
}
|
|
1083
1088
|
if (Object.keys(manifestSection[decodedElement]).length === 0 ||
|
|
1084
1089
|
//deletion explicitly requested by using entityPath
|
|
@@ -1103,8 +1108,8 @@ exports.deleteEmptyStructure = deleteEmptyStructure;
|
|
|
1103
1108
|
* @return {string} File name of generic schema.
|
|
1104
1109
|
*/
|
|
1105
1110
|
const getGenericSchemaFileName = (schemaType) => {
|
|
1106
|
-
if (schemaType ===
|
|
1107
|
-
return
|
|
1111
|
+
if (schemaType === ux_specification_types_1.SchemaType.FreestylePage) {
|
|
1112
|
+
return ux_specification_types_1.PageTypeV2.CustomPage;
|
|
1108
1113
|
}
|
|
1109
1114
|
return `${schemaType}`;
|
|
1110
1115
|
};
|
|
@@ -1121,20 +1126,20 @@ const getSchemaFilePath = (schemaType, entitySet) => {
|
|
|
1121
1126
|
};
|
|
1122
1127
|
switch (schemaType) {
|
|
1123
1128
|
// Application schema
|
|
1124
|
-
case
|
|
1129
|
+
case ux_specification_types_1.SchemaType.Application: {
|
|
1125
1130
|
// File name
|
|
1126
1131
|
schemaFile.filename = `App`;
|
|
1127
1132
|
// Full path
|
|
1128
|
-
schemaFile.path = `./${
|
|
1133
|
+
schemaFile.path = `./${ux_specification_types_1.DirName.Schemas}/${schemaFile.filename}`;
|
|
1129
1134
|
break;
|
|
1130
1135
|
}
|
|
1131
1136
|
// List report and object page
|
|
1132
|
-
case
|
|
1133
|
-
case
|
|
1137
|
+
case ux_specification_types_1.SchemaType.ListReport:
|
|
1138
|
+
case ux_specification_types_1.SchemaType.ObjectPage: {
|
|
1134
1139
|
// File name
|
|
1135
1140
|
schemaFile.filename = entitySet ? `${schemaType}_${entitySet}` : getGenericSchemaFileName(schemaType);
|
|
1136
1141
|
// Full path
|
|
1137
|
-
schemaFile.path = `../${
|
|
1142
|
+
schemaFile.path = `../${ux_specification_types_1.DirName.Schemas}/${schemaFile.filename}`;
|
|
1138
1143
|
break;
|
|
1139
1144
|
}
|
|
1140
1145
|
// Other page configs
|
|
@@ -1142,7 +1147,7 @@ const getSchemaFilePath = (schemaType, entitySet) => {
|
|
|
1142
1147
|
// File name
|
|
1143
1148
|
schemaFile.filename = getGenericSchemaFileName(schemaType);
|
|
1144
1149
|
// Full path
|
|
1145
|
-
schemaFile.path = `../${
|
|
1150
|
+
schemaFile.path = `../${ux_specification_types_1.DirName.Schemas}/${schemaFile.filename}`;
|
|
1146
1151
|
break;
|
|
1147
1152
|
}
|
|
1148
1153
|
}
|
|
@@ -1160,7 +1165,7 @@ exports.getSchemaFilePath = getSchemaFilePath;
|
|
|
1160
1165
|
* @returns {string} Generated page id
|
|
1161
1166
|
*/
|
|
1162
1167
|
function generatePageId(pageType, entitySet, viewId, pageName) {
|
|
1163
|
-
if (pageType ===
|
|
1168
|
+
if (pageType === ux_specification_types_1.PageTypeV2.CustomPage) {
|
|
1164
1169
|
const names = viewId && viewId.split('.');
|
|
1165
1170
|
return names && names[names.length - 1] + 'Page';
|
|
1166
1171
|
}
|
|
@@ -1267,7 +1272,6 @@ function determineNextDefinitionFromDefinitionArray(definitionArray, appSchema,
|
|
|
1267
1272
|
const lastDefinition = definitionArray[definitionArray.length - 1];
|
|
1268
1273
|
nextDefinition.targetDefinition = appSchema['definitions'][lastDefinition];
|
|
1269
1274
|
if (nextDefinition?.targetDefinition?.['$ref'] || nextDefinition?.targetDefinition?.['type'] === 'array') {
|
|
1270
|
-
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
1271
1275
|
nextDefinition = getNextTargetDefinition(appSchema, title, currentConfigObject, nextDefinition.targetDefinition, key, factory, pageType);
|
|
1272
1276
|
return nextDefinition;
|
|
1273
1277
|
}
|
|
@@ -1405,7 +1409,7 @@ function updatePropertyIndices(schema, order) {
|
|
|
1405
1409
|
* @returns {string} modified string without namespace
|
|
1406
1410
|
*/
|
|
1407
1411
|
function removeNamespaces(sId) {
|
|
1408
|
-
sId = sId.replace(
|
|
1412
|
+
sId = sId.replace(ux_specification_types_1.UIVOCABULARYDOT, '');
|
|
1409
1413
|
sId = sId.replace('com.sap.vocabularies.Communication.v1.', '');
|
|
1410
1414
|
return sId;
|
|
1411
1415
|
}
|
|
@@ -1415,7 +1419,7 @@ function removeNamespaces(sId) {
|
|
|
1415
1419
|
* @returns {string} modified string with replaced namespaces
|
|
1416
1420
|
*/
|
|
1417
1421
|
function replaceNamespaces(sId) {
|
|
1418
|
-
sId = sId.replace(
|
|
1422
|
+
sId = sId.replace(ux_specification_types_1.UIVOCABULARY, 'UI');
|
|
1419
1423
|
sId = sId.replace('com.sap.vocabularies.Communication.v1', 'Communication');
|
|
1420
1424
|
return sId;
|
|
1421
1425
|
}
|