@sapui5/sap.suite.ui.generic.template 1.136.3 → 1.138.0
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/package.json +1 -1
- package/src/sap/suite/ui/generic/template/.library +1 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_en_US_saprigi.properties +0 -2
- package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/MessageSortingHandler.js +3 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +18 -27
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n.properties +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/Actions.fragment.xml +1 -2
- package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/detailTemplates/detailUtils.js +2 -1
- package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +9 -1
- package/src/sap/suite/ui/generic/template/js/AnnotationHelperStreamSupport.js +6 -3
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +8 -8
- package/src/sap/suite/ui/generic/template/lib/CRUDActionHandler.js +1 -0
- package/src/sap/suite/ui/generic/template/lib/CRUDManager.js +12 -0
- package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/MessageUtils.js +76 -5
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +17 -7
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +1 -108
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +1 -1
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/presentationControl/SmartTableHandler.js +6 -6
- package/src/sap/suite/ui/generic/template/library.js +1 -1
package/package.json
CHANGED
|
@@ -63,8 +63,6 @@ OBJECT_NOT_EDITABLE=\u206A\u206A\u206A\u200C\u200D\u200B\u200B\u200C\u200D\u200D
|
|
|
63
63
|
|
|
64
64
|
NODATA_SMARTTABLE_LR=\u206A\u206A\u206A\u200C\u200C\u200B\u200D\u200B\u200B\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200B\u200D\u200C\u200C\u200B\u200D\u200C\u200B\u200B\u200C\u200D\u200B\u200B\u200B\u200D\u200D\u200D\u200B\u200B\u200D\u200B\u200D\u200B\u200C\u200C\u200B\u200B\u200C\u206ATo start, set the relevant filters and choose "Go".\u206A\u206A
|
|
65
65
|
|
|
66
|
-
SEARCH_FILTERS_KEYBOARD_SHORTCUT_DESC=\u206A\u206A\u206A\u200D\u200B\u200B\u200C\u200B\u200C\u200B\u200B\u200B\u200B\u200D\u200B\u200B\u200D\u200C\u200B\u200C\u200C\u200D\u200D\u200D\u200C\u200B\u200C\u200D\u200C\u200B\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200B\u200D\u200C\u200B\u200C\u206AGo\u206A\u206A
|
|
67
|
-
|
|
68
66
|
|
|
69
67
|
CANCEL_AND_DISCARD=\u206A\u206A\u206A\u200D\u200C\u200B\u200D\u200B\u200B\u200C\u200B\u200B\u200B\u200D\u200D\u200D\u200D\u200C\u200D\u200B\u200B\u200C\u200D\u200D\u200C\u200C\u200B\u200B\u200D\u200D\u200D\u200C\u200B\u200D\u200B\u200D\u200B\u200C\u200D\u200D\u200B\u200D\u200B\u206ADo you want to discard this draft?\u206A\u206A
|
|
70
68
|
|
|
@@ -92,46 +92,37 @@ sap.ui.define([
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
var oAppComponent = oController.getOwnerComponent().getAppComponent();
|
|
96
|
+
// Preparing the array of semantic objects to fetch links.
|
|
97
|
+
// Initialize the array with the current app's semantic object.
|
|
98
|
+
var aSemanticObjects = [sCurrentSemObj];
|
|
99
|
+
|
|
95
100
|
//Get all semantic object from manifest setting
|
|
96
101
|
var oSettings = oTemplateUtils.oComponentUtils.getSettings();
|
|
97
102
|
var oRelatedAppsSettings = oSettings.relatedAppsSettings;
|
|
98
|
-
|
|
99
|
-
var oLinksPromise;
|
|
100
103
|
var bHasRelatedAppSettings = oRelatedAppsSettings && Object.keys(oRelatedAppsSettings).length > 0;
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (bHasRelatedAppSettings) {
|
|
104
|
-
// Create a set to hold string data types
|
|
105
|
-
const oSemanticObjectSet = new Set();
|
|
106
|
-
|
|
107
|
-
// Add the current semantic object into the set
|
|
108
|
-
oSemanticObjectSet.add(sCurrentSemObj);
|
|
109
104
|
|
|
105
|
+
if (bHasRelatedAppSettings) {
|
|
110
106
|
// Iterate through oRelatedAppSettings and add all related apps into the set
|
|
111
107
|
for (const sKey in oRelatedAppsSettings) {
|
|
112
108
|
if (oRelatedAppsSettings.hasOwnProperty(sKey)) {
|
|
113
109
|
const sSemanticObject = oRelatedAppsSettings[sKey].semanticObject;
|
|
114
|
-
|
|
110
|
+
aSemanticObjects.push(sSemanticObject);
|
|
115
111
|
}
|
|
116
112
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
// aSemanticObjects now contains the desired format
|
|
125
|
-
oLinksPromise = oNavigationService.getLinks(aSemanticObjects);
|
|
126
|
-
} else {
|
|
127
|
-
var oAppComponent = oController.getOwnerComponent().getAppComponent();
|
|
128
|
-
oLinksPromise = oNavigationService.getLinks([{
|
|
129
|
-
semanticObject: sCurrentSemObj,
|
|
113
|
+
}
|
|
114
|
+
// Remove duplicates
|
|
115
|
+
aSemanticObjects = Array.from(new Set(aSemanticObjects));
|
|
116
|
+
// Add parameters to semantic objects
|
|
117
|
+
var aSemanticObjectsWithParams = aSemanticObjects.map(sSemanticObject => {
|
|
118
|
+
return {
|
|
119
|
+
semanticObject: sSemanticObject,
|
|
130
120
|
params: oParam,
|
|
131
121
|
ui5Component: oAppComponent
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
oNavigationService.getLinks(aSemanticObjectsWithParams).then(function (aResult) {
|
|
135
126
|
// Convert the response into a single dimension array by flattening it
|
|
136
127
|
var aLinks = aResult.flat(Infinity);
|
|
137
128
|
// Get structured links
|
|
@@ -192,7 +192,7 @@ NAVIGATE_FORWARD_KEYBOARD_SHORTCUT_DESC=Navigate Forward
|
|
|
192
192
|
#XTIT, 50: Description for the Navigate Backward keyboard shortcut
|
|
193
193
|
NAVIGATE_BACKWARD_KEYBOARD_SHORTCUT_DESC=Navigate Backward
|
|
194
194
|
|
|
195
|
-
#XBUT,
|
|
195
|
+
#XBUT, 50: Description for the Message Popover keyboard shortcut
|
|
196
196
|
OPEN_MESSAGE_BUTTON_MENU_KEYBOARD_SHORTCUT_DESC=Open Details in Message Box
|
|
197
197
|
|
|
198
198
|
#------------template controller reuse texts---------------------
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:uxap="sap.uxap"
|
|
1
|
+
<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:uxap="sap.uxap"
|
|
2
2
|
xmlns:fesr="http://schemas.sap.com/sapui5/extension/sap.ui.core.FESR/1"
|
|
3
3
|
xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
|
|
4
4
|
template:require="{
|
|
@@ -130,7 +130,6 @@
|
|
|
130
130
|
ariaHasPopup="Dialog"
|
|
131
131
|
fesr:press="fe:sum:summarize"
|
|
132
132
|
type="Ghost"
|
|
133
|
-
dt:designtime="not-adaptable"
|
|
134
133
|
visible="{_templPrivGlobal>/generic/fioriAI/isSummarizationEnabled}" />
|
|
135
134
|
|
|
136
135
|
<template:if test="{parameter>/settings/showRelatedApps}">
|
|
@@ -331,7 +331,7 @@ sap.ui.define([ "sap/suite/ui/generic/template/genericUtilities/FeLogger", "sap/
|
|
|
331
331
|
sAncestorsTitle += sSeperator;
|
|
332
332
|
}
|
|
333
333
|
sHeaderText = `${sObjectTitle} ${sObjectSubtitle} ${sAncestorsTitle} ${sTitle}`;
|
|
334
|
-
return {
|
|
334
|
+
return {headerText : sHeaderText};
|
|
335
335
|
}
|
|
336
336
|
|
|
337
337
|
return {
|
|
@@ -339,4 +339,5 @@ sap.ui.define([ "sap/suite/ui/generic/template/genericUtilities/FeLogger", "sap/
|
|
|
339
339
|
getControllerBase: getControllerBase,
|
|
340
340
|
fnConstructTitleAdditionalInfo: fnConstructTitleAdditionalInfo
|
|
341
341
|
};
|
|
342
|
+
|
|
342
343
|
});
|
|
@@ -3017,7 +3017,7 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
|
|
|
3017
3017
|
};
|
|
3018
3018
|
}
|
|
3019
3019
|
},
|
|
3020
|
-
|
|
3020
|
+
getTextArrangementFromAnnotations: function (oEntityType, oField) {
|
|
3021
3021
|
var sTextArrangement;
|
|
3022
3022
|
// 1. check TextArrangement definition for property directly - has prio 1
|
|
3023
3023
|
if (oField["com.sap.vocabularies.UI.v1.TextArrangement"] && oField["com.sap.vocabularies.UI.v1.TextArrangement"].EnumMember) {
|
|
@@ -3036,11 +3036,19 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
|
|
|
3036
3036
|
sTextArrangement = oAnnotationHelper._mapTextArrangement4smartControl(oEntityType["com.sap.vocabularies.UI.v1.TextArrangement"].EnumMember);
|
|
3037
3037
|
}
|
|
3038
3038
|
}
|
|
3039
|
+
return sTextArrangement;
|
|
3040
|
+
},
|
|
3041
|
+
getTextArrangement: function(oEntityType, oField) {
|
|
3042
|
+
var sTextArrangement = this.getTextArrangementFromAnnotations(oEntityType, oField);
|
|
3039
3043
|
if (!sTextArrangement) { //coming from the title should get a readable description and underneath is the id - the default
|
|
3040
3044
|
sTextArrangement = "descriptionAndId";
|
|
3041
3045
|
}
|
|
3042
3046
|
return sTextArrangement;
|
|
3043
3047
|
},
|
|
3048
|
+
getTextArrangementForEasyFilter: function (oEntityType, oField) {
|
|
3049
|
+
var sTextArrangement = this.getTextArrangementFromAnnotations(oEntityType, oField) || "idAndDescription";
|
|
3050
|
+
return sTextArrangement;
|
|
3051
|
+
},
|
|
3044
3052
|
getTextArrangementPath: function (oField) {
|
|
3045
3053
|
return oField["com.sap.vocabularies.Common.v1.Text"] && oField["com.sap.vocabularies.Common.v1.Text"].Path;
|
|
3046
3054
|
},
|
|
@@ -126,13 +126,16 @@ sap.ui.define([
|
|
|
126
126
|
|
|
127
127
|
// funtion return the controlling binding path form by annotation/metadata/fieldcontrol path
|
|
128
128
|
getControlPath: function(oEntitySet, oFieldControl) {
|
|
129
|
+
var sPath = "";
|
|
129
130
|
var sAnnotationUpdatablePath = oEntitySet && oEntitySet["Org.OData.Capabilities.V1.UpdateRestrictions"] && oEntitySet["Org.OData.Capabilities.V1.UpdateRestrictions"]["Updatable"] && oEntitySet["Org.OData.Capabilities.V1.UpdateRestrictions"]["Updatable"].Path;
|
|
130
131
|
var sMetadataUpdatable = oEntitySet && (oEntitySet["sap:updatable"] || oEntitySet["sap:updatable-path"]);
|
|
131
132
|
if (sAnnotationUpdatablePath || sMetadataUpdatable) {
|
|
132
|
-
|
|
133
|
-
} else if (oFieldControl) {
|
|
134
|
-
return '${' + oFieldControl && oFieldControl.Path + '} > "1"';
|
|
133
|
+
sPath = '${' + (sAnnotationUpdatablePath || sMetadataUpdatable) + '} !== false';
|
|
135
134
|
}
|
|
135
|
+
if (oFieldControl) {
|
|
136
|
+
sPath += '&& ${' + oFieldControl && oFieldControl.Path + '} > "1"';
|
|
137
|
+
}
|
|
138
|
+
return sPath;
|
|
136
139
|
},
|
|
137
140
|
|
|
138
141
|
getDeleteStreamVisibility: function(oInterface, oMediaType, bIsDraftEnabled, oEntitySet){
|
|
@@ -32,7 +32,6 @@ sap.ui.define([
|
|
|
32
32
|
"sap/ui/model/json/JSONModel",
|
|
33
33
|
"sap/ui/model/odata/MessageScope",
|
|
34
34
|
"sap/ui/model/resource/ResourceModel",
|
|
35
|
-
"sap/ui/rta/RuntimeAuthoring",
|
|
36
35
|
"sap/ui/generic/app/ApplicationController",
|
|
37
36
|
"sap/suite/ui/generic/template/genericUtilities/ProcessObserver",
|
|
38
37
|
"sap/suite/ui/generic/template/designtime/utils/DesigntimeHandler",
|
|
@@ -76,7 +75,6 @@ sap.ui.define([
|
|
|
76
75
|
JSONModel,
|
|
77
76
|
MessageScope,
|
|
78
77
|
ResourceModel,
|
|
79
|
-
RuntimeAuthoring,
|
|
80
78
|
ApplicationController,
|
|
81
79
|
ProcessObserver,
|
|
82
80
|
DesigntimeHandler,
|
|
@@ -421,10 +419,6 @@ sap.ui.define([
|
|
|
421
419
|
oLogger.info("Init called for AppComponent " + sAppComponentId);
|
|
422
420
|
var oDesigntimeHandler = new DesigntimeHandler(oTemplateContract);
|
|
423
421
|
mDesigntimeHandlers[sAppComponentId] = oDesigntimeHandler;
|
|
424
|
-
if (RuntimeAuthoring.willRTAStartAfterReload()){
|
|
425
|
-
oLogger.info("AppComponent " + sAppComponentId + " has been restarted for RTA");
|
|
426
|
-
oDesigntimeHandler.start(true);
|
|
427
|
-
}
|
|
428
422
|
var oAppRegistryEntry = {
|
|
429
423
|
appComponent: oAppComponent,
|
|
430
424
|
oTemplateContract: oTemplateContract,
|
|
@@ -950,7 +944,7 @@ sap.ui.define([
|
|
|
950
944
|
* @public
|
|
951
945
|
* @extends sap.ui.core.UIComponent
|
|
952
946
|
* @author SAP SE
|
|
953
|
-
* @version 1.
|
|
947
|
+
* @version 1.138.0
|
|
954
948
|
* @name sap.suite.ui.generic.template.lib.AppComponent
|
|
955
949
|
*/
|
|
956
950
|
var oAppComponent = UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
|
|
@@ -1073,10 +1067,16 @@ sap.ui.define([
|
|
|
1073
1067
|
designtime: {
|
|
1074
1068
|
tool : {
|
|
1075
1069
|
start: function(oAppComponent) {
|
|
1070
|
+
var RuntimeAuthoring = sap.ui.require("sap/ui/rta/RuntimeAuthoring");
|
|
1076
1071
|
var sAppComponentId = oAppComponent.getId();
|
|
1077
1072
|
oLogger.info("Ui Adaptation started for AppComponent " + sAppComponentId);
|
|
1078
1073
|
var oDesigntimeHandler = mDesigntimeHandlers[sAppComponentId];
|
|
1079
|
-
|
|
1074
|
+
if (RuntimeAuthoring && RuntimeAuthoring.willRTAStartAfterReload()){
|
|
1075
|
+
oLogger.info("AppComponent " + sAppComponentId + " has been restarted for RTA");
|
|
1076
|
+
oDesigntimeHandler.start(true);
|
|
1077
|
+
} else {
|
|
1078
|
+
oDesigntimeHandler.start();
|
|
1079
|
+
}
|
|
1080
1080
|
},
|
|
1081
1081
|
stop: function(oAppComponent) {
|
|
1082
1082
|
var sAppComponentId = oAppComponent.getId();
|
|
@@ -760,6 +760,14 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
760
760
|
aSuccess = aSuccess.concat(mapToArray(oParsedResult.mSuccess));
|
|
761
761
|
aWarningIndex = Object.keys(oParsedResult.mWarning);
|
|
762
762
|
aWarning = mapToArray(oParsedResult.mWarning);
|
|
763
|
+
aWarning.forEach((oWarning) => {
|
|
764
|
+
// Check if the response has a status code 412 (Precondition Failed)
|
|
765
|
+
if (oWarning?.response?.statusCode === "412"){
|
|
766
|
+
const oErrorReponse = JSON.parse(oWarning?.response?.responseText);
|
|
767
|
+
// Cache the error message to avoid duplicate display later
|
|
768
|
+
MessageUtils.cacheWarningMessage(oErrorReponse.error);
|
|
769
|
+
}
|
|
770
|
+
});
|
|
763
771
|
fnShowWarningPopupIfRequired(oParsedResult.aMessagesForUserDecision, fnDone.bind(null, aResponse));
|
|
764
772
|
};
|
|
765
773
|
var fnDone = function(aResponses){
|
|
@@ -811,6 +819,8 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
811
819
|
|
|
812
820
|
if (oResponseContext && oResponseContext !== oActionContext && oResponseContext.getPath() !== "/undefined"){
|
|
813
821
|
oServices.oApplication.setNextFocus(function(oBeforeData, fnFallback){
|
|
822
|
+
// Clear any cached error messages since the action has completed
|
|
823
|
+
MessageUtils.clearWarningCache();
|
|
814
824
|
fnFallback({
|
|
815
825
|
ignorePersistence: true
|
|
816
826
|
});
|
|
@@ -819,6 +829,8 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
819
829
|
} else {
|
|
820
830
|
// Restore focus, because we don't navigate out
|
|
821
831
|
oServices.oApplication.setNextFocus(function(oBeforeData, fnFallback){
|
|
832
|
+
// Clear any cached error messages since the action has completed
|
|
833
|
+
MessageUtils.clearWarningCache();
|
|
822
834
|
fnFallback();
|
|
823
835
|
});
|
|
824
836
|
}
|
|
@@ -1103,7 +1103,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1103
1103
|
var vValue = oControl.getBinding("text").getValue(); // could be array or string
|
|
1104
1104
|
if (Array.isArray(vValue)){
|
|
1105
1105
|
var oTexts = FormatUtil.getTextsFromDisplayBehaviour(sTextArrangement, vValue[0], vValue[1]);
|
|
1106
|
-
if (
|
|
1106
|
+
if (oMainNavigation) {
|
|
1107
1107
|
oMainNavigation.setDescription(oTexts.secondText);
|
|
1108
1108
|
}
|
|
1109
1109
|
sTitle = oTexts.firstText;
|
|
@@ -26,6 +26,7 @@ sap.ui.define([
|
|
|
26
26
|
*/
|
|
27
27
|
var oLogger = new FeLogger("lib.MessageUtils").getLogger();
|
|
28
28
|
var oMessageManager = sap.ui.getCore().getMessageManager();
|
|
29
|
+
const aWarningCache = [];
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Handles errors for all of Smart Templates.
|
|
@@ -400,14 +401,14 @@ sap.ui.define([
|
|
|
400
401
|
*/
|
|
401
402
|
function fnHandleTransientMessages(oTemplateContract, sActionLabel, oActionButtonConfig) {
|
|
402
403
|
var fnFilter = oTemplateContract.oApplicationProxy.isTransientMessageNoCustomMessage;
|
|
404
|
+
var sState; // Only one message which is a success (or info/None) message -> show as message toast
|
|
405
|
+
// Remove transient messages that already exist in the error cache
|
|
406
|
+
fnRemoveTransientMessages(isDuplicateMessage.bind(this));
|
|
403
407
|
var aTransientMessages = fnGetTransientMessages(false, fnFilter);
|
|
404
408
|
if (aTransientMessages.length === 0) { // no transient messages -> immediate return
|
|
405
409
|
return Promise.resolve();
|
|
406
410
|
}
|
|
407
411
|
fnRemoveTransientMessages(fnFilter); // remove transient messages from the message model. We can use aTransientMessages now.
|
|
408
|
-
|
|
409
|
-
var sState;
|
|
410
|
-
// Only one message which is a success (or info/None) message -> show as message toast
|
|
411
412
|
if (aTransientMessages.length === 1) {
|
|
412
413
|
sState = aTransientMessages[0].type;
|
|
413
414
|
if (sState === ValueState.Success || sState === ValueState.Information || sState === ValueState.None) {
|
|
@@ -418,7 +419,6 @@ sap.ui.define([
|
|
|
418
419
|
|
|
419
420
|
var oMsgDialogHeaderInfo = getMessageDialogTitleAndSeverity(aTransientMessages, oTemplateContract);
|
|
420
421
|
sState = oMsgDialogHeaderInfo.sSeverity;
|
|
421
|
-
|
|
422
422
|
// Now we know that we need to send a popup -> return a Promise that is resolved when the popup is closed
|
|
423
423
|
return new Promise(function(fnResolve){
|
|
424
424
|
// Now we prepare the controller of the dialog which will display the messages. However, we have to be careful.
|
|
@@ -604,6 +604,73 @@ sap.ui.define([
|
|
|
604
604
|
oMessageManager.removeMessages(aMessagesToBeDeleted);
|
|
605
605
|
}
|
|
606
606
|
|
|
607
|
+
/**
|
|
608
|
+
* Caches the error detail from a warning message, if available.
|
|
609
|
+
* This helps in tracking previously shown warnings to avoid duplicates.
|
|
610
|
+
*
|
|
611
|
+
* @param {object} oWarning - The warning object possibly containing error details.
|
|
612
|
+
*/
|
|
613
|
+
function cacheWarningMessage(oWarning){
|
|
614
|
+
const oError = oWarning?.innererror?.errordetails?.[0];
|
|
615
|
+
if (oError){
|
|
616
|
+
aWarningCache.push(oError);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
/**
|
|
621
|
+
* Compares two message objects to check if they are equivalent.
|
|
622
|
+
* Only considers specific parameters in the comparison.
|
|
623
|
+
*
|
|
624
|
+
* @param {object} oMessageDetailsOld - The first error message object
|
|
625
|
+
* @param {object} oMessageDetailsNew - The second error message object.
|
|
626
|
+
* @returns {boolean} - True if both errors are the same, false otherwise.
|
|
627
|
+
*/
|
|
628
|
+
function areMessagesSame (oMessageDetailsOld, oMessageDetailsNew) {
|
|
629
|
+
// These are the properties used for comparison
|
|
630
|
+
// We have removed properties numericSeverity, additionalTargets, longtextUrl since they are only relevant for V4
|
|
631
|
+
const aParameters = ["code", "message", "severity", "target", "transition"];
|
|
632
|
+
for (const sParam of aParameters){
|
|
633
|
+
const bIsParamInOldMessage = sParam in oMessageDetailsOld;
|
|
634
|
+
const bIsParamInNewMessage = sParam in oMessageDetailsNew;
|
|
635
|
+
if (bIsParamInOldMessage && bIsParamInNewMessage) {
|
|
636
|
+
// Compare values if property exists in both objects
|
|
637
|
+
if (oMessageDetailsOld[sParam] !== oMessageDetailsNew[sParam]) {
|
|
638
|
+
return false;
|
|
639
|
+
}
|
|
640
|
+
} else if (bIsParamInOldMessage || bIsParamInNewMessage) {
|
|
641
|
+
// Property exists in only one object, not equal
|
|
642
|
+
return false;
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
return true;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
/**
|
|
649
|
+
* Checks whether the given transient message is a duplicate of any cached error message.
|
|
650
|
+
*
|
|
651
|
+
* @param {object} oTransientMessage - The transient message containing technical details.
|
|
652
|
+
* @returns {boolean} - True if it's a duplicate, false otherwise.
|
|
653
|
+
*/
|
|
654
|
+
function isDuplicateMessage (oTransientMessage) {
|
|
655
|
+
const rawMessage = oTransientMessage?.technicalDetails?.headers?.["sap-message"];
|
|
656
|
+
if (!rawMessage) {
|
|
657
|
+
return false;
|
|
658
|
+
}
|
|
659
|
+
let oError;
|
|
660
|
+
oError = JSON.parse(rawMessage);
|
|
661
|
+
// Check if any cached error matches the parsed error
|
|
662
|
+
return aWarningCache.some((oCachedError) => this.areMessagesSame(oCachedError, oError));
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* Clears the stored cache of warning messages.
|
|
667
|
+
* Should be called when a fresh state is needed (e.g.,action completion).
|
|
668
|
+
*/
|
|
669
|
+
function clearWarningCache() {
|
|
670
|
+
// Empty the cache array in-place
|
|
671
|
+
aWarningCache.length = 0;
|
|
672
|
+
}
|
|
673
|
+
|
|
607
674
|
return {
|
|
608
675
|
operations: GenericMessageUtil.operations,
|
|
609
676
|
handleTransientMessages: fnHandleTransientMessages,
|
|
@@ -620,6 +687,10 @@ sap.ui.define([
|
|
|
620
687
|
getSeverityIconFromIconPool: getSeverityIconFromIconPool,
|
|
621
688
|
getIconColor: getIconColor,
|
|
622
689
|
getMessageDialogTitleAndSeverity: getMessageDialogTitleAndSeverity,
|
|
623
|
-
deleteMessages: deleteMessages
|
|
690
|
+
deleteMessages: deleteMessages,
|
|
691
|
+
cacheWarningMessage: cacheWarningMessage,
|
|
692
|
+
areMessagesSame: areMessagesSame,
|
|
693
|
+
isDuplicateMessage: isDuplicateMessage,
|
|
694
|
+
clearWarningCache: clearWarningCache
|
|
624
695
|
};
|
|
625
696
|
});
|
|
@@ -137,12 +137,22 @@ sap.ui.define([
|
|
|
137
137
|
});
|
|
138
138
|
});
|
|
139
139
|
} else if (oDefaultFilterValue) { // In cases where the default value is coming from the FLP user defaults and does not have ranges and the value is a single value
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
140
|
+
if (oFilterItemForQuery.dataType === "Edm.Boolean") {
|
|
141
|
+
var boolFilterValue = JSON.parse(oDefaultFilterValue);
|
|
142
|
+
aValues = [
|
|
143
|
+
{
|
|
144
|
+
operator: FilterOperator.EQ,
|
|
145
|
+
selectedValues: [{ value: boolFilterValue, description: boolFilterValue }]
|
|
146
|
+
}
|
|
147
|
+
];
|
|
148
|
+
} else {
|
|
149
|
+
aValues = [
|
|
150
|
+
{
|
|
151
|
+
operator: FilterOperator.EQ,
|
|
152
|
+
selectedValues: [oDefaultFilterValue]
|
|
153
|
+
}
|
|
154
|
+
];
|
|
155
|
+
}
|
|
146
156
|
}
|
|
147
157
|
oFilterItemForQuery.defaultValue = aValues;
|
|
148
158
|
}
|
|
@@ -574,7 +584,7 @@ sap.ui.define([
|
|
|
574
584
|
var oValueHelpProperty = oSFBMetaModel.getODataProperty(oValueHelpEntity, key);
|
|
575
585
|
var aResults = oResponse.results;
|
|
576
586
|
var sTextArrangementPath = AnnotationHelper.getTextArrangementPath(oValueHelpProperty);
|
|
577
|
-
var sTextArrangement = AnnotationHelper.
|
|
587
|
+
var sTextArrangement = AnnotationHelper.getTextArrangementForEasyFilter(oValueHelpEntity,oValueHelpProperty);
|
|
578
588
|
var navigationProperty = null;
|
|
579
589
|
var sEntityForTextDescription = null;
|
|
580
590
|
|
|
@@ -257,9 +257,7 @@ DRAFT_LOCK_EXPIRED=\u206A\u206A\u206A\u200D\u200C\u200B\u200B\u200C\u200C\u200C\
|
|
|
257
257
|
|
|
258
258
|
ST_NAV_ERROR_NOT_AUTHORIZED_DESC=\u206A\u206A\u206A\u200C\u200B\u200C\u200D\u200C\u200C\u200D\u200B\u200C\u200D\u200C\u200B\u200D\u200C\u200C\u200D\u200B\u200B\u200D\u200B\u200B\u200D\u200C\u200D\u200B\u200B\u200D\u200B\u200B\u200C\u200D\u200C\u200C\u200C\u200B\u200B\u200B\u200B\u200D\u200D\u200B\u206ANavigation to this application is not supported.\u206A\u206A
|
|
259
259
|
|
|
260
|
-
NEW_OBJECT=\u206A\u206A\u206A\u200C\u200C\u200B\u200C\u200B\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200B\u200D\u200D\u200C\u200C\u200C\u200D\u200B\u200D\u200D\u200C\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200B\
|
|
261
|
-
|
|
262
|
-
UNNAMED_OBJECT=\u206A\u206A\u206A\u200D\u200D\u200D\u200B\u200D\u200B\u200B\u200D\u200B\u200C\u200B\u200D\u200D\u200C\u200B\u200C\u200B\u200D\u200D\u200D\u200B\u200D\u200D\u200B\u200D\u200B\u200B\u200C\u200D\u200D\u200B\u200B\u200D\u200D\u200C\u200C\u200D\u200C\u200B\u200B\u206AUnnamed Object\u206A\u206A
|
|
260
|
+
NEW_OBJECT=\u206A\u206A\u206A\u200C\u200C\u200B\u200C\u200B\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200B\u200D\u200D\u200C\u200C\u200C\u200D\u200B\u200D\u200D\u200C\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200B\u206AUnnamed Object\u206A\u206A
|
|
263
261
|
|
|
264
262
|
NOITEMS_SMARTTABLE=\u206A\u206A\u206A\u200C\u200B\u200C\u200C\u200C\u200C\u200D\u200C\u200C\u200B\u200C\u200C\u200D\u200D\u200B\u200C\u200B\u200B\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200C\u200D\u200B\u200B\u200B\u200C\u200D\u200B\u200D\u200B\u200B\u200D\u200D\u200B\u206ANo items available.\u206A\u206A
|
|
265
263
|
|
|
@@ -350,108 +348,3 @@ RTA_CONFIGURATION_CANCEL=\u206A\u206A\u206A\u200C\u200B\u200B\u200D\u200B\u200C\
|
|
|
350
348
|
|
|
351
349
|
RTA_CONFIGURATION_APPLY=\u206A\u206A\u206A\u200C\u200C\u200B\u200B\u200B\u200D\u200C\u200D\u200C\u200C\u200C\u200B\u200C\u200B\u200B\u200D\u200B\u200D\u200C\u200B\u200B\u200D\u200D\u200D\u200D\u200C\u200D\u200D\u200C\u200D\u200D\u200B\u200C\u200D\u200B\u200C\u200D\u200C\u200C\u200D\u200B\u206AApply\u206A\u206A
|
|
352
350
|
|
|
353
|
-
RTA_CONDENSED_TABLE_LAYOUT=\u206A\u206A\u206A\u200D\u200C\u200D\u200B\u200B\u200D\u200D\u200B\u200B\u200C\u200B\u200C\u200C\u200B\u200C\u200B\u200C\u200D\u200B\u200C\u200D\u200D\u200D\u200C\u200D\u200C\u200C\u200D\u200C\u200D\u200B\u200D\u200D\u200D\u200C\u200B\u200B\u200B\u200B\u200C\u206ACondensed Table Layout\u206A\u206A
|
|
354
|
-
|
|
355
|
-
RTA_CONDENSED_TABLE_LAYOUT_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200D\u200B\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200B\u200D\u200D\u200D\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200D\u200B\u200C\u200B\u200D\u200C\u200B\u200D\u200C\u200C\u200B\u200D\u200B\u200C\u200B\u200B\u200B\u200B\u206ADefine if the table has a condensed layout\u206A\u206A
|
|
356
|
-
|
|
357
|
-
RTA_WIDTH_INCLUDING_COLUMN_HEADER=\u206A\u206A\u206A\u200C\u200B\u200D\u200D\u200B\u200B\u200B\u200D\u200C\u200D\u200C\u200D\u200D\u200C\u200B\u200B\u200D\u200C\u200C\u200D\u200D\u200B\u200D\u200C\u200D\u200B\u200C\u200C\u200D\u200C\u200D\u200D\u200D\u200D\u200B\u200D\u200B\u200B\u200C\u200D\u200C\u206AWidth Including Column Header\u206A\u206A
|
|
358
|
-
|
|
359
|
-
RTA_WIDTH_INCLUDING_COLUMN_HEADER_DESC=\u206A\u206A\u206A\u200D\u200D\u200C\u200D\u200C\u200C\u200D\u200D\u200C\u200B\u200C\u200D\u200C\u200D\u200D\u200B\u200C\u200C\u200C\u200B\u200B\u200B\u200C\u200D\u200B\u200D\u200B\u200D\u200C\u200C\u200B\u200D\u200C\u200D\u200B\u200C\u200D\u200C\u200C\u200B\u206ADefine if the table has width included in the column header\u206A\u206A
|
|
360
|
-
|
|
361
|
-
RTA_SELECT_ALL=\u206A\u206A\u206A\u200C\u200C\u200C\u200D\u200C\u200C\u200D\u200C\u200B\u200C\u200C\u200D\u200C\u200D\u200B\u200B\u200D\u200C\u200C\u200D\u200C\u200B\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200D\u200C\u200B\u200D\u200C\u200B\u200B\u200C\u200B\u206AEnable Select All\u206A\u206A
|
|
362
|
-
|
|
363
|
-
RTA_SELECT_ALL_DESC=\u206A\u206A\u206A\u200C\u200D\u200D\u200C\u200D\u200D\u200D\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u200D\u200D\u200C\u200C\u200B\u200B\u200B\u200C\u200C\u200C\u200D\u200D\u200B\u200D\u200C\u200B\u206ADefine if the table should support select all\u206A\u206A
|
|
364
|
-
|
|
365
|
-
RTA_CREATE_MODE=\u206A\u206A\u206A\u200C\u200B\u200C\u200D\u200B\u200D\u200B\u200B\u200D\u200D\u200B\u200C\u200D\u200C\u200C\u200C\u200B\u200C\u200D\u200C\u200D\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200C\u200C\u200B\u200D\u200C\u200C\u200B\u200C\u200C\u200D\u200B\u200D\u206ACreate Mode\u206A\u206A
|
|
366
|
-
|
|
367
|
-
RTA_CREATE_MODE_DESC=\u206A\u206A\u206A\u200C\u200C\u200B\u200B\u200D\u200B\u200B\u200D\u200C\u200D\u200D\u200C\u200B\u200B\u200C\u200B\u200D\u200D\u200D\u200D\u200D\u200D\u200B\u200D\u200B\u200B\u200D\u200B\u200D\u200D\u200C\u200D\u200B\u200C\u200D\u200C\u200B\u200B\u200D\u200B\u200C\u206ADefine the create mode\u206A\u206A
|
|
368
|
-
|
|
369
|
-
RTA_SELECTION_LIMIT=\u206A\u206A\u206A\u200C\u200C\u200C\u200B\u200D\u200B\u200B\u200D\u200B\u200B\u200D\u200D\u200C\u200B\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u200D\u200C\u200B\u200B\u200C\u200B\u200B\u200C\u200D\u200D\u200D\u200D\u200B\u200C\u200D\u200D\u200C\u200D\u200D\u200C\u206ASelection Limit\u206A\u206A
|
|
370
|
-
|
|
371
|
-
RTA_SELECTION_LIMIT_DESC=\u206A\u206A\u206A\u200C\u200D\u200C\u200C\u200C\u200B\u200B\u200D\u200B\u200D\u200B\u200B\u200C\u200C\u200C\u200D\u200D\u200B\u200B\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200B\u200D\u200D\u200D\u200D\u200C\u200B\u200B\u200D\u200D\u200D\u200C\u200C\u206ADefine the selection limit\u206A\u206A
|
|
372
|
-
|
|
373
|
-
RTA_ENABLE_ADD_CARD_TO_INSIGHTS=\u206A\u206A\u206A\u200D\u200D\u200B\u200B\u200D\u200B\u200C\u200C\u200D\u200B\u200C\u200D\u200D\u200D\u200D\u200B\u200B\u200D\u200D\u200B\u200B\u200D\u200D\u200B\u200D\u200D\u200B\u200D\u200B\u200D\u200D\u200D\u200B\u200B\u200C\u200D\u200D\u200D\u200D\u200D\u206AEnable "Add Card to Insights"\u206A\u206A
|
|
374
|
-
|
|
375
|
-
RTA_DISABLE_ADD_CARD_TO_INSIGHTS=\u206A\u206A\u206A\u200C\u200B\u200C\u200B\u200C\u200D\u200B\u200C\u200C\u200C\u200B\u200B\u200D\u200B\u200D\u200C\u200D\u200D\u200D\u200C\u200C\u200B\u200B\u200C\u200C\u200D\u200D\u200C\u200D\u200C\u200D\u200C\u200C\u200C\u200C\u200C\u200D\u200C\u200C\u200D\u200C\u206AHide "Add Card to Insights"\u206A\u206A
|
|
376
|
-
|
|
377
|
-
RTA_DISABLE_ADD_CARD_TO_INSIGHTS_DESC=\u206A\u206A\u206A\u200D\u200B\u200B\u200B\u200C\u200C\u200C\u200D\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200C\u200C\u200B\u200D\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200B\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200D\u200D\u200B\u206ADefine if the table should have an Insights button\u206A\u206A
|
|
378
|
-
|
|
379
|
-
RTA_OP_VARIANT_MANAGEMENT_TABLE=\u206A\u206A\u206A\u200C\u200B\u200B\u200C\u200B\u200D\u200D\u200B\u200D\u200D\u200D\u200C\u200C\u200B\u200B\u200D\u200D\u200B\u200C\u200B\u200B\u200C\u200D\u200D\u200B\u200D\u200B\u200C\u200B\u200C\u200B\u200D\u200D\u200C\u200C\u200C\u200D\u200B\u200B\u206ATable Variant Management\u206A\u206A
|
|
380
|
-
|
|
381
|
-
RTA_OP_VARIANT_MANAGEMENT_TABLE_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200B\u200C\u200D\u200C\u200B\u200D\u200D\u200D\u200C\u200C\u200C\u200C\u200D\u200D\u200C\u200C\u200C\u200C\u200C\u200B\u200D\u200B\u200D\u200C\u200D\u200D\u200C\u200B\u200D\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u200B\u206ATable Variant Management\u206A\u206A
|
|
382
|
-
|
|
383
|
-
RTA_OP_VARIANT_MANAGEMENT_CHART=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200D\u200D\u200C\u200C\u200C\u200C\u200B\u200C\u200B\u200D\u200C\u200D\u200B\u200B\u200D\u200C\u200B\u200C\u200B\u200C\u200C\u200C\u200B\u200B\u200D\u200C\u200D\u200C\u200C\u200B\u200D\u206AChart Variant Management\u206A\u206A
|
|
384
|
-
|
|
385
|
-
RTA_OP_VARIANT_MANAGEMENT_CHART_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200D\u200C\u200C\u200D\u200D\u200D\u200C\u200B\u200D\u200C\u200B\u200C\u200B\u200C\u200D\u200B\u200B\u200B\u200C\u200C\u200C\u200C\u200B\u200B\u200D\u200B\u200B\u200B\u200D\u200C\u200D\u200D\u200C\u200D\u200C\u200C\u200B\u206AChart Variant Management\u206A\u206A
|
|
386
|
-
|
|
387
|
-
RTA_INITIAL_LOAD=\u206A\u206A\u206A\u200D\u200D\u200B\u200C\u200B\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u200B\u200C\u200D\u200B\u200D\u200D\u200D\u200C\u200D\u200C\u200B\u200B\u200B\u200C\u200D\u200D\u200D\u200D\u200C\u200D\u200C\u200D\u200B\u200B\u200C\u200D\u200B\u200C\u206AInitial Load\u206A\u206A
|
|
388
|
-
|
|
389
|
-
RTA_INITIAL_LOAD_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200C\u200D\u200D\u200D\u200C\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200C\u200B\u200B\u200D\u200B\u200D\u200D\u200B\u200D\u200B\u200B\u200D\u200D\u200B\u200C\u200D\u200C\u200B\u200C\u200D\u200B\u200C\u200D\u200C\u206AInitial Load\u206A\u206A
|
|
390
|
-
|
|
391
|
-
RTA_SMART_VARIANT_MANAGEMENT=\u206A\u206A\u206A\u200C\u200B\u200B\u200C\u200C\u200B\u200C\u200C\u200C\u200C\u200D\u200B\u200B\u200C\u200B\u200B\u200C\u200B\u200D\u200D\u200B\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200D\u200D\u200C\u200C\u200B\u200D\u200B\u200B\u200B\u200B\u206AVariant Management\u206A\u206A
|
|
392
|
-
|
|
393
|
-
RTA_SMART_VARIANT_MANAGEMENT_DESC=\u206A\u206A\u206A\u200D\u200C\u200D\u200B\u200D\u200B\u200C\u200D\u200D\u200C\u200D\u200B\u200C\u200C\u200C\u200B\u200D\u200C\u200D\u200D\u200D\u200B\u200C\u200C\u200D\u200C\u200B\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200D\u200B\u200D\u200D\u200D\u206AEnable Smart Variant Management\u206A\u206A
|
|
394
|
-
|
|
395
|
-
RTA_HIDE_VARIANT_MANAGEMENT=\u206A\u206A\u206A\u200D\u200D\u200B\u200C\u200B\u200C\u200D\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200D\u200C\u200D\u200B\u200C\u200D\u200C\u200D\u200D\u200C\u200B\u200B\u200C\u200C\u200B\u200D\u200B\u200D\u200D\u200D\u200D\u200D\u200C\u206AHide Variant Management\u206A\u206A
|
|
396
|
-
|
|
397
|
-
RTA_HIDE_VARIANT_MANAGEMENT_DESC=\u206A\u206A\u206A\u200C\u200B\u200B\u200D\u200B\u200C\u200B\u200C\u200B\u200C\u200B\u200B\u200C\u200B\u200C\u200D\u200C\u200D\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200B\u200B\u200B\u200D\u200D\u200C\u200C\u200C\u200D\u200C\u200B\u200B\u200C\u200C\u200C\u206AHide Variant Management\u206A\u206A
|
|
398
|
-
|
|
399
|
-
RTA_OPEN_IN_EDIT_MODE=\u206A\u206A\u206A\u200D\u200D\u200C\u200B\u200B\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200C\u200D\u200C\u200D\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200C\u200C\u200D\u200B\u200D\u200B\u200D\u200C\u200C\u200D\u200B\u200B\u200B\u200B\u200D\u200D\u206AOpen in Edit Mode\u206A\u206A
|
|
400
|
-
|
|
401
|
-
RTA_OPEN_IN_EDIT_MODE_DESC=\u206A\u206A\u206A\u200D\u200D\u200C\u200C\u200C\u200B\u200B\u200C\u200D\u200D\u200D\u200D\u200B\u200D\u200C\u200B\u200B\u200B\u200D\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200C\u200D\u200C\u200C\u200C\u200D\u200B\u200B\u200D\u200B\u200B\u200B\u200B\u200D\u206ADefine the selection limit\u206A\u206A
|
|
402
|
-
|
|
403
|
-
RTA_DEFAULT_CONTENT_VIEW=\u206A\u206A\u206A\u200C\u200C\u200D\u200D\u200D\u200C\u200B\u200C\u200C\u200D\u200C\u200B\u200C\u200B\u200B\u200B\u200C\u200B\u200B\u200D\u200B\u200B\u200B\u200D\u200C\u200C\u200C\u200C\u200C\u200B\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200D\u206ADefault Content View\u206A\u206A
|
|
404
|
-
|
|
405
|
-
RTA_DEFAULT_CONTENT_VIEW_DESC=\u206A\u206A\u206A\u200C\u200C\u200B\u200C\u200B\u200B\u200D\u200D\u200C\u200C\u200D\u200C\u200D\u200D\u200B\u200C\u200C\u200D\u200C\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200B\u200B\u200B\u200B\u200B\u200B\u200C\u200D\u200B\u200B\u200B\u200D\u200D\u200C\u200C\u206ADefault Content View\u206A\u206A
|
|
406
|
-
|
|
407
|
-
RTA_ENABLE_TABLE_FILTER_IN_PAGE_VARIANT=\u206A\u206A\u206A\u200D\u200C\u200C\u200C\u200D\u200B\u200C\u200D\u200C\u200D\u200C\u200C\u200D\u200C\u200D\u200D\u200C\u200D\u200D\u200D\u200B\u200C\u200C\u200C\u200C\u200C\u200C\u200B\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u200D\u200D\u200B\u206AEnable Table Filter in Page Variant\u206A\u206A
|
|
408
|
-
|
|
409
|
-
RTA_ENABLE_TABLE_FILTER_IN_PAGE_VARIANT_DESC=\u206A\u206A\u206A\u200D\u200D\u200C\u200B\u200B\u200C\u200B\u200C\u200B\u200D\u200C\u200B\u200B\u200B\u200C\u200C\u200B\u200D\u200C\u200B\u200D\u200D\u200B\u200C\u200D\u200B\u200B\u200B\u200D\u200D\u200B\u200C\u200B\u200B\u200C\u200B\u200D\u200D\u200C\u200B\u206AEnable Table Filter in Page Variant\u206A\u206A
|
|
410
|
-
|
|
411
|
-
RTA_NAVIGATION_PROPERTIES_LIST_REPORT_FILTER=\u206A\u206A\u206A\u200C\u200B\u200C\u200B\u200D\u200B\u200B\u200B\u200D\u200C\u200D\u200C\u200B\u200B\u200B\u200B\u200D\u200D\u200C\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200B\u200B\u200C\u200D\u200C\u200B\u200D\u200B\u200C\u200D\u200C\u200D\u200C\u200C\u200D\u206ANavigation Properties\u206A\u206A
|
|
412
|
-
|
|
413
|
-
RTA_NAVIGATION_PROPERTIES_LIST_REPORT_FILTER_DESC=\u206A\u206A\u206A\u200C\u200B\u200B\u200B\u200B\u200C\u200C\u200D\u200B\u200C\u200B\u200C\u200C\u200D\u200C\u200B\u200C\u200B\u200C\u200B\u200C\u200C\u200B\u200B\u200C\u200C\u200D\u200B\u200D\u200B\u200B\u200B\u200C\u200C\u200C\u200D\u200B\u200C\u200B\u200C\u200C\u206ANavigation Properties\u206A\u206A
|
|
414
|
-
|
|
415
|
-
RTA_SHOW_GO_BUTTON_ON_FILTER_BAR_ANALYTICAL_PAGE=\u206A\u206A\u206A\u200C\u200C\u200B\u200C\u200B\u200B\u200C\u200D\u200B\u200D\u200D\u200B\u200C\u200B\u200C\u200D\u200B\u200D\u200D\u200B\u200D\u200C\u200B\u200D\u200D\u200C\u200C\u200D\u200C\u200D\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u200C\u200B\u200C\u200B\u206AShow Go Button on Filter Bar\u206A\u206A
|
|
416
|
-
|
|
417
|
-
RTA_SHOW_GO_BUTTON_ON_FILTER_BAR_DESC_ANALYTICAL_PAGE_DESC=\u206A\u206A\u206A\u200C\u200B\u200C\u200B\u200B\u200C\u200C\u200B\u200D\u200C\u200B\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200B\u200C\u200C\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200C\u200D\u200C\u200C\u200C\u200D\u200B\u200D\u200B\u200B\u200C\u206AShow Go Button on Filter Bar\u206A\u206A
|
|
418
|
-
|
|
419
|
-
RTA_HIDE_VISUAL_FILTER=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200B\u200D\u200D\u200C\u200C\u200B\u200C\u200D\u200C\u200D\u200D\u200D\u200D\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200B\u200B\u200C\u200D\u200C\u200C\u200C\u200C\u200D\u200B\u200D\u200B\u200D\u206AHide Visual Filter\u206A\u206A
|
|
420
|
-
|
|
421
|
-
RTA_HIDE_VISUAL_FILTER_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200D\u200C\u200D\u200C\u200B\u200D\u200D\u200D\u200C\u200C\u200B\u200C\u200B\u200C\u200B\u200B\u200D\u200B\u200C\u200D\u200B\u200D\u200B\u200C\u200C\u200D\u200B\u200C\u200C\u200D\u200D\u200B\u200C\u200C\u200C\u206AHide Visual Filter\u206A\u206A
|
|
422
|
-
|
|
423
|
-
RTA_DEFAULT_FILTER_MODE=\u206A\u206A\u206A\u200C\u200B\u200C\u200B\u200D\u200C\u200B\u200B\u200C\u200D\u200B\u200B\u200D\u200D\u200D\u200C\u200B\u200C\u200C\u200C\u200C\u200D\u200D\u200D\u200C\u200B\u200D\u200B\u200B\u200D\u200C\u200C\u200C\u200D\u200B\u200C\u200C\u200B\u200B\u200B\u206ADefault Filter Mode\u206A\u206A
|
|
424
|
-
|
|
425
|
-
RTA_DEFAULT_FILTER_MODE_DESC=\u206A\u206A\u206A\u200C\u200C\u200B\u200B\u200B\u200B\u200D\u200D\u200D\u200B\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200B\u200B\u200B\u200C\u200B\u200D\u200B\u200D\u200C\u200D\u200C\u200C\u200C\u200D\u200B\u200C\u200B\u200B\u200D\u200B\u200B\u200B\u200D\u206ADefault Filter Mode\u206A\u206A
|
|
426
|
-
|
|
427
|
-
RTA_SELECTION_MODE=\u206A\u206A\u206A\u200C\u200C\u200D\u200D\u200D\u200C\u200C\u200B\u200D\u200B\u200C\u200D\u200D\u200C\u200D\u200B\u200D\u200B\u200D\u200B\u200D\u200B\u200C\u200D\u200C\u200B\u200D\u200D\u200B\u200C\u200B\u200B\u200B\u200B\u200C\u200B\u200D\u200C\u200D\u200B\u206ASelection Mode\u206A\u206A
|
|
428
|
-
|
|
429
|
-
RTA_SELECTION_MODE_DESC=\u206A\u206A\u206A\u200D\u200D\u200D\u200D\u200C\u200C\u200D\u200B\u200C\u200B\u200C\u200B\u200B\u200B\u200D\u200D\u200D\u200B\u200D\u200D\u200D\u200C\u200D\u200D\u200D\u200B\u200B\u200C\u200C\u200B\u200D\u200B\u200B\u200B\u200D\u200D\u200C\u200B\u200B\u200B\u206ADefine the selection mode\u206A\u206A
|
|
430
|
-
|
|
431
|
-
RTA_OP_EDITABLE_HEADER_CONTENT=\u206A\u206A\u206A\u200D\u200D\u200B\u200C\u200B\u200D\u200C\u200B\u200B\u200C\u200D\u200D\u200B\u200D\u200C\u200C\u200D\u200C\u200B\u200B\u200C\u200D\u200C\u200C\u200D\u200C\u200D\u200D\u200C\u200C\u200B\u200B\u200C\u200B\u200C\u206AEditable Header Content\u206A\u206A
|
|
432
|
-
|
|
433
|
-
RTA_OP_EDITABLE_HEADER_CONTENT_DESC=\u206A\u206A\u206A\u200C\u200C\u200D\u200B\u200D\u200D\u200B\u200C\u200B\u200C\u200B\u200C\u200B\u200C\u200C\u200C\u200D\u200C\u200D\u200D\u200D\u200B\u200C\u200C\u200D\u200C\u200B\u200D\u200B\u200D\u200C\u200C\u200B\u200B\u200D\u200C\u200C\u200B\u200C\u206AEditable Header Content\u206A\u206A
|
|
434
|
-
|
|
435
|
-
RTA_OP_SHOW_RELATED_APPS=\u206A\u206A\u206A\u200C\u200B\u200D\u200D\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200B\u200D\u200D\u200B\u200B\u200B\u200D\u200D\u200D\u200C\u200D\u200C\u200C\u200D\u200C\u200D\u200B\u200C\u200D\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200D\u200C\u206AShow Related Apps\u206A\u206A
|
|
436
|
-
|
|
437
|
-
RTA_OP_SHOW_RELATED_APPS_DESC=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200D\u200B\u200C\u200D\u200D\u200D\u200D\u200D\u200B\u200B\u200D\u200C\u200B\u200C\u200B\u200B\u200D\u200C\u200D\u200D\u200B\u200D\u200D\u200D\u200C\u200B\u200B\u200C\u200C\u200D\u200C\u200D\u200C\u200D\u200C\u200C\u200B\u206AShow Related Apps\u206A\u206A
|
|
438
|
-
|
|
439
|
-
RTA_SCOPE_OF_THE_CHANGES=\u206A\u206A\u206A\u200D\u200B\u200C\u200C\u200D\u200B\u200D\u200D\u200B\u200C\u200D\u200B\u200C\u200B\u200C\u200C\u200D\u200D\u200C\u200C\u200C\u200B\u200D\u200C\u200C\u200B\u200C\u200B\u200D\u200D\u200D\u200D\u200C\u200B\u200B\u200B\u200C\u200D\u200D\u206AScope of the Changes\u206A\u206A
|
|
440
|
-
|
|
441
|
-
RTA_SCOPE_OF_THE_CHANGES_TOOLTIP=\u206A\u206A\u206A\u200C\u200B\u200B\u200D\u200D\u200B\u200D\u200B\u200C\u200C\u200D\u200D\u200C\u200C\u200B\u200B\u200D\u200D\u200B\u200B\u200C\u200B\u200C\u200C\u200B\u200B\u200D\u200D\u200D\u200B\u200C\u200B\u200D\u200C\u200D\u200B\u200D\u200B\u200C\u200C\u200C\u206AScope of the Changes\u206A\u206A
|
|
442
|
-
|
|
443
|
-
RTA_SCROLLTHRESHOLD_FOR_TABLE_CONFIG=\u206A\u206A\u206A\u200C\u200C\u200D\u200D\u200C\u200C\u200C\u200B\u200D\u200C\u200C\u200D\u200D\u200B\u200C\u200D\u200B\u200D\u200C\u200B\u200B\u200C\u200C\u200D\u200C\u200B\u200D\u200D\u200D\u200D\u200D\u200B\u200B\u200C\u200C\u200B\u200B\u200C\u200C\u200B\u206AScroll Threshold\u206A\u206A
|
|
444
|
-
|
|
445
|
-
RTA_SCROLLTHRESHOLD_DESC_FOR_TABLE_CONFIG=\u206A\u206A\u206A\u200C\u200C\u200D\u200C\u200B\u200C\u200C\u200B\u200D\u200B\u200D\u200C\u200D\u200D\u200B\u200C\u200C\u200B\u200C\u200C\u200C\u200D\u200C\u200B\u200B\u200D\u200D\u200C\u200B\u200C\u200D\u200C\u200C\u200D\u200D\u200C\u200B\u200D\u200C\u206ADefine the Scroll Threshold\u206A\u206A
|
|
446
|
-
|
|
447
|
-
RTA_THRESHOLD_FOR_TABLE_CONFIG=\u206A\u206A\u206A\u200C\u200D\u200D\u200B\u200D\u200B\u200D\u200C\u200B\u200C\u200C\u200B\u200C\u200C\u200D\u200B\u200D\u200D\u200C\u200B\u200D\u200C\u200B\u200C\u200D\u200D\u200C\u200C\u200B\u200C\u200B\u200B\u200C\u200C\u200B\u200D\u200C\u200B\u200B\u200D\u206AThreshold\u206A\u206A
|
|
448
|
-
|
|
449
|
-
RTA_THRESHOLD_DESC_FOR_TABLE_CONFIG=\u206A\u206A\u206A\u200C\u200B\u200B\u200C\u200D\u200B\u200C\u200C\u200C\u200C\u200C\u200C\u200C\u200C\u200C\u200D\u200C\u200D\u200B\u200D\u200B\u200B\u200C\u200C\u200C\u200C\u200B\u200D\u200C\u200D\u200B\u200D\u200C\u200B\u200C\u200C\u200B\u200D\u200B\u206ADefine the Threshold\u206A\u206A
|
|
450
|
-
|
|
451
|
-
RTA_TABLE_TYPE_CONFIG=\u206A\u206A\u206A\u200C\u200C\u200C\u200B\u200B\u200C\u200D\u200D\u200B\u200B\u200C\u200C\u200D\u200D\u200B\u200D\u200C\u200D\u200C\u200C\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200C\u200D\u200D\u200C\u200B\u200D\u200D\u200B\u200D\u200B\u200B\u200B\u200B\u206ATable Type\u206A\u206A
|
|
452
|
-
|
|
453
|
-
RTA_TABLE_TYPE_DESC_CONFIG=\u206A\u206A\u206A\u200C\u200B\u200B\u200B\u200D\u200C\u200C\u200C\u200C\u200B\u200D\u200B\u200C\u200B\u200C\u200D\u200B\u200B\u200C\u200C\u200D\u200B\u200D\u200D\u200D\u200C\u200B\u200B\u200B\u200C\u200C\u200B\u200C\u200C\u200D\u200D\u200D\u200D\u200C\u200D\u200B\u206ADefine which table type should be used\u206A\u206A
|
|
454
|
-
|
|
455
|
-
RTA_ENABLE_DATE_RANGE_FILTER=\u206A\u206A\u206A\u200D\u200B\u200D\u200C\u200D\u200C\u200D\u200B\u200B\u200C\u200D\u200C\u200B\u200C\u200C\u200B\u200B\u200C\u200D\u200B\u200B\u200D\u200D\u200D\u200D\u200C\u200B\u200B\u200B\u200B\u200C\u200B\u200C\u200D\u200C\u200B\u200D\u200C\u200B\u200B\u206AEnable Date Range\u206A\u206A
|
|
456
|
-
|
|
457
|
-
RTA_ENABLE_DATE_RANGE_FILTER_DESC=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200D\u200C\u200C\u200C\u200C\u200D\u200B\u200B\u200D\u200C\u200B\u200D\u200C\u200B\u200C\u200D\u200C\u200B\u200D\u200D\u200C\u200B\u200C\u200B\u200C\u200D\u200C\u200D\u200D\u200D\u200D\u200B\u200C\u200C\u200B\u200C\u200D\u206AEnable Date Range\u206A\u206A
|
|
@@ -444,7 +444,7 @@ RTA_SCROLLTHRESHOLD_FOR_TABLE_CONFIG=Ambang Batas Gulir
|
|
|
444
444
|
|
|
445
445
|
RTA_SCROLLTHRESHOLD_DESC_FOR_TABLE_CONFIG=Tentukan Ambang Batas Gulir
|
|
446
446
|
|
|
447
|
-
RTA_THRESHOLD_FOR_TABLE_CONFIG=Ambang
|
|
447
|
+
RTA_THRESHOLD_FOR_TABLE_CONFIG=Ambang Batas
|
|
448
448
|
|
|
449
449
|
RTA_THRESHOLD_DESC_FOR_TABLE_CONFIG=Tentukan Ambang Batas
|
|
450
450
|
|
|
@@ -3216,7 +3216,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
3216
3216
|
* @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
|
|
3217
3217
|
* @public
|
|
3218
3218
|
* @extends sap.ui.base.Object
|
|
3219
|
-
* @version 1.
|
|
3219
|
+
* @version 1.138.0
|
|
3220
3220
|
* @since 1.30.0
|
|
3221
3221
|
* @alias sap.suite.ui.generic.template.lib.NavigationController
|
|
3222
3222
|
*/
|
|
@@ -588,18 +588,18 @@ sap.ui.define([
|
|
|
588
588
|
const filterIgnoredFields = function (sField) {
|
|
589
589
|
return !aIgnoreFields.has(sField);
|
|
590
590
|
};
|
|
591
|
-
const
|
|
592
|
-
return !!mPropertyByFieldName[sField]["com.sap.vocabularies.UI.v1.Hidden"];
|
|
591
|
+
const hasUIHiddenOrUndefined = function(sField) {
|
|
592
|
+
return !!mPropertyByFieldName[sField]["com.sap.vocabularies.UI.v1.Hidden"] || oItemContext.getProperty(sField) === undefined;
|
|
593
593
|
};
|
|
594
594
|
for (const oProperty of aProperties){
|
|
595
595
|
mPropertyByFieldName[oProperty.name] = oProperty;
|
|
596
596
|
}
|
|
597
597
|
//Filter unwanted fields ("IsActiveEntity", "DraftUUID") from technical keys
|
|
598
598
|
aTechnicalKeys = aTechnicalKeys.filter(key => filterIgnoredFields(key.name));
|
|
599
|
-
//Check for UI.Hidden fields, even if one of the field
|
|
600
|
-
aSemanticKeys = aSemanticKeys.some(key =>
|
|
601
|
-
aTechnicalKeys = aTechnicalKeys.some(key =>
|
|
602
|
-
if (oHeaderInfoField && oHeaderInfoField?.Title?.Value?.Path && !
|
|
599
|
+
//Check for UI.Hidden fields or undefined fields, even if one of the field satisfies these conditions we discard all the keys
|
|
600
|
+
aSemanticKeys = aSemanticKeys.some(key => hasUIHiddenOrUndefined(key.PropertyPath)) ? [] : aSemanticKeys;
|
|
601
|
+
aTechnicalKeys = aTechnicalKeys.some(key => hasUIHiddenOrUndefined(key.name)) ? [] : aTechnicalKeys;
|
|
602
|
+
if (oHeaderInfoField && oHeaderInfoField?.Title?.Value?.Path && !hasUIHiddenOrUndefined(oHeaderInfoField.Title.Value.Path)) { //HeaderInfoField is available
|
|
603
603
|
aRelevantColumns.push(getFieldProps(oHeaderInfoField.Title.Value.Path));
|
|
604
604
|
} else if (aSemanticKeys.length > 0){ //HeaderInfoField is not available, but SemanticKey is available
|
|
605
605
|
aRelevantColumns = aSemanticKeys.map(key => getFieldProps(key.PropertyPath));
|