@sapui5/sap.suite.ui.generic.template 1.130.1 → 1.130.3
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/controller/ControllerImplementation.js +5 -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/controller/ControllerImplementation.js +8 -13
- package/src/sap/suite/ui/generic/template/ListReport/controller/IappStateHandler.js +18 -2
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_th.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +21 -9
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es.properties +2 -2
- package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/QuickCreate/i18n/i18n_fr_CA.properties +1 -1
- 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/designtime/floorplans/AnalyticalListPage.designtime.js +1 -1
- package/src/sap/suite/ui/generic/template/designtime/floorplans/ListReport.designtime.js +1 -1
- package/src/sap/suite/ui/generic/template/detailTemplates/i18n/i18n_es.properties +1 -1
- package/src/sap/suite/ui/generic/template/fragments/MessagePopover.fragment.xml +1 -1
- package/src/sap/suite/ui/generic/template/fragments/SmartFormDataField.fragment.xml +3 -3
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +1 -1
- package/src/sap/suite/ui/generic/template/genericUtilities/polyFill.js +14 -0
- package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +3 -6
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/SideEffectUtil.js +22 -7
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +64 -28
- package/src/sap/suite/ui/generic/template/lib/ai/FioriAIHandler.js +30 -35
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +20 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +21 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +21 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +19 -0
- package/src/sap/suite/ui/generic/template/lib/insights/InsightsCardHelper.js +39 -23
- package/src/sap/suite/ui/generic/template/lib/multipleViews/MultipleTablesModeHelper.js +2 -1
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +27 -13
- package/src/sap/suite/ui/generic/template/library.js +1 -1
package/package.json
CHANGED
package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/ControllerImplementation.js
CHANGED
|
@@ -1050,7 +1050,11 @@ sap.ui.define(["sap/fe/navigation/SelectionVariant",
|
|
|
1050
1050
|
oState.oIappStateHandler.fnStoreCurrentAppStateAndAdjustURL();
|
|
1051
1051
|
},
|
|
1052
1052
|
onAfterApplyTableVariant: function() {
|
|
1053
|
-
|
|
1053
|
+
// Wait until the previous invocation of storing the app state is completed.
|
|
1054
|
+
// Then, proceed with storing the current app state.
|
|
1055
|
+
setTimeout(function () {
|
|
1056
|
+
oState.oIappStateHandler.fnStoreCurrentAppStateAndAdjustURL();
|
|
1057
|
+
}, 0);
|
|
1054
1058
|
},
|
|
1055
1059
|
onAfterChartVariantSave: function(ev) {
|
|
1056
1060
|
oState.oIappStateHandler.fnStoreCurrentAppStateAndAdjustURL();
|
|
@@ -547,13 +547,6 @@ sap.ui.define([
|
|
|
547
547
|
oState.oMultiEditHandler = new MultiEditHandler(oState, oController, oTemplateUtils);
|
|
548
548
|
oState.oInsightsHandler = new InsightsHandler(oState, oController, oTemplateUtils);
|
|
549
549
|
|
|
550
|
-
oTemplateUtils.oServices.oFioriAIHandler && oTemplateUtils.oServices.oFioriAIHandler.getFioriAIEnabledPromise().then(function() {
|
|
551
|
-
oState.oEasyFilterBarHandler = new EasyFilterBarHandler(oState, oController, oTemplateUtils);
|
|
552
|
-
oState.oEasyFilterBarHandler.initialiseEasyFilterBar();
|
|
553
|
-
});
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
550
|
var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
|
|
558
551
|
|
|
559
552
|
oTemplatePrivateModel.setProperty("/listReport/aMissingNavProperties", false);
|
|
@@ -696,12 +689,14 @@ sap.ui.define([
|
|
|
696
689
|
|
|
697
690
|
onSmartFilterBarInitialized: function () {
|
|
698
691
|
oState.oIappStateHandler.onSmartFilterBarInitialized();
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
oState.
|
|
692
|
+
// After the SFB is initialized, FE sets default values from different sources. So initialising the EasyFilterBar after the SFB and FE init appState is initialized.
|
|
693
|
+
oTemplateUtils.oServices.oFioriAIHandler && oTemplateUtils.oServices.oFioriAIHandler.getFioriAIEnabledPromise("EasyFilter").then(function() {
|
|
694
|
+
oState.oIappStateHandler.onFEStartupInitialized().then(function() {
|
|
695
|
+
oState.oEasyFilterBarHandler = new EasyFilterBarHandler(oState, oController, oTemplateUtils);
|
|
696
|
+
oState.oEasyFilterBarHandler.initialiseEasyFilterBar();
|
|
697
|
+
oState.oSmartFilterbar.attachFilterChange(function(oEvent) {
|
|
698
|
+
oState.oEasyFilterBarHandler.onFilterChange(oEvent);
|
|
699
|
+
});
|
|
705
700
|
});
|
|
706
701
|
});
|
|
707
702
|
},
|
|
@@ -64,6 +64,11 @@ sap.ui.define([
|
|
|
64
64
|
onSmartFilterBarInitialized = fnResolve;
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
+
// Resolve this only after the FE initializes all the filter values from different sources
|
|
68
|
+
var onFEStartupInitializedResolver;
|
|
69
|
+
var onFEStartupInitializedPromise = new Promise(function(fnResolve) {
|
|
70
|
+
onFEStartupInitializedResolver = fnResolve;
|
|
71
|
+
});
|
|
67
72
|
// *** setup wrappers for control states (start)
|
|
68
73
|
|
|
69
74
|
|
|
@@ -805,7 +810,11 @@ sap.ui.define([
|
|
|
805
810
|
// Remark: in case of an appState key in the URL, that could not be analyzed, we should NOT call navigationHandler to parse. In this case, we get an empty object
|
|
806
811
|
// (in contrast to undefined when there's no appstate key)
|
|
807
812
|
|
|
808
|
-
return oSmartFilterBarInitializedPromise.then(
|
|
813
|
+
return oSmartFilterBarInitializedPromise.then(function() {
|
|
814
|
+
var oStartupFinishedPromise = fnParseUrlAndApplyAppState();
|
|
815
|
+
oStartupFinishedPromise.then(onFEStartupInitializedResolver);
|
|
816
|
+
return oStartupFinishedPromise; // return promise to inform controller, when startup is finished
|
|
817
|
+
});
|
|
809
818
|
}
|
|
810
819
|
|
|
811
820
|
var sNavType;
|
|
@@ -824,6 +833,8 @@ sap.ui.define([
|
|
|
824
833
|
oSmartFilterBarInitializedPromise.then(function(){
|
|
825
834
|
// fallback to navType initial, if appState is given in URL, but could not be analyzed => oState is an empty Object
|
|
826
835
|
fnAdaptToAppState(oAppData, {} /* URLparameter are irrelevant if restoring from iAppState */, sNavType);
|
|
836
|
+
// Once the FE is initialized, the promise is resolved so that the SFB contains the updated list of filters
|
|
837
|
+
onFEStartupInitializedResolver();
|
|
827
838
|
});
|
|
828
839
|
return oSmartFilterBarInitializedPromise; // to inform controller, when startup is finished
|
|
829
840
|
}
|
|
@@ -1075,6 +1086,10 @@ sap.ui.define([
|
|
|
1075
1086
|
oDataLoadedWrapper.setState(!!bShouldDataBeLoaded);
|
|
1076
1087
|
}
|
|
1077
1088
|
|
|
1089
|
+
function onFEStartupInitialized(){
|
|
1090
|
+
return onFEStartupInitializedPromise;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1078
1093
|
return {
|
|
1079
1094
|
areDataShownInTable: areDataShownInTable,
|
|
1080
1095
|
setDataShownInTable: fnSetDataShownInTable,
|
|
@@ -1085,7 +1100,8 @@ sap.ui.define([
|
|
|
1085
1100
|
onAfterSFBVariantLoad: onAfterSFBVariantLoad,
|
|
1086
1101
|
applyState: applyState,
|
|
1087
1102
|
getCurrentAppState: getCurrentAppState, // separation of concerns - only provide state, statePreserver responsible for storing it
|
|
1088
|
-
setFiltersUsingUIState : fnSetFiltersUsingUIState
|
|
1103
|
+
setFiltersUsingUIState : fnSetFiltersUsingUIState,
|
|
1104
|
+
onFEStartupInitialized : onFEStartupInitialized
|
|
1089
1105
|
};
|
|
1090
1106
|
}
|
|
1091
1107
|
|
|
@@ -61,7 +61,7 @@ MESSAGE_MULTIPLE_VALUES_S_FORM=\u0E04\u0E38\u0E13\u0E44\u0E21\u0E48\u0E2A\u0E32\
|
|
|
61
61
|
|
|
62
62
|
OBJECT_NOT_EDITABLE=\u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E41\u0E01\u0E49\u0E44\u0E02\u0E2D\u0E2D\u0E1A\u0E40\u0E08\u0E04\u0E19\u0E35\u0E49\u0E44\u0E14\u0E49
|
|
63
63
|
|
|
64
|
-
NODATA_SMARTTABLE_LR=\u0E40\u0E21\u0E37\u0E48\u0E2D\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E40\u0E23\u0E34\u0E48\u0E21 \u0E43\u0E2B\u0E49\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E17\u0E35\u0E48\u0E40\u0E01\u0E35\u0E48\u0E22\u0E27\u0E02\u0E49\u0E2D\u0E07\u0E41\u0E25\
|
|
64
|
+
NODATA_SMARTTABLE_LR=\u0E40\u0E21\u0E37\u0E48\u0E2D\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E40\u0E23\u0E34\u0E48\u0E21\u0E15\u0E49\u0E19 \u0E43\u0E2B\u0E49\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E1F\u0E34\u0E25\u0E40\u0E15\u0E2D\u0E23\u0E4C\u0E17\u0E35\u0E48\u0E40\u0E01\u0E35\u0E48\u0E22\u0E27\u0E02\u0E49\u0E2D\u0E07\u0E41\u0E25\u0E49\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01 "\u0E44\u0E1B"
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
CANCEL_AND_DISCARD=\u0E04\u0E38\u0E13\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E25\u0E30\u0E17\u0E34\u0E49\u0E07\u0E41\u0E1A\u0E1A\u0E23\u0E48\u0E32\u0E07\u0E19\u0E35\u0E49\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48?
|
|
@@ -2410,7 +2410,7 @@ sap.ui.define([
|
|
|
2410
2410
|
},
|
|
2411
2411
|
|
|
2412
2412
|
onSummarize: function () {
|
|
2413
|
-
oTemplateUtils.oServices.oFioriAIHandler.fioriaiLib.summarize({view: oController.getView()});
|
|
2413
|
+
oTemplateUtils.oServices.oFioriAIHandler.fioriaiLib.summarize.summarize({view: oController.getView()});
|
|
2414
2414
|
},
|
|
2415
2415
|
|
|
2416
2416
|
onEdit: function (oEvent) {
|
|
@@ -98,18 +98,30 @@ sap.ui.define([
|
|
|
98
98
|
|
|
99
99
|
var oLinksPromise;
|
|
100
100
|
var bHasRelatedAppSettings = oRelatedAppsSettings && Object.keys(oRelatedAppsSettings).length > 0;
|
|
101
|
+
|
|
102
|
+
|
|
101
103
|
if (bHasRelatedAppSettings) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
+
|
|
110
|
+
// Iterate through oRelatedAppSettings and add all related apps into the set
|
|
111
|
+
for (const sKey in oRelatedAppsSettings) {
|
|
112
|
+
if (oRelatedAppsSettings.hasOwnProperty(sKey)) {
|
|
113
|
+
const sSemanticObject = oRelatedAppsSettings[sKey].semanticObject;
|
|
114
|
+
oSemanticObjectSet.add(sSemanticObject); // Set will handle duplicates
|
|
111
115
|
}
|
|
112
116
|
}
|
|
117
|
+
|
|
118
|
+
// Create an array from the set
|
|
119
|
+
let aSemanticObjects = Array.from(oSemanticObjectSet);
|
|
120
|
+
|
|
121
|
+
// Use the map method to convert the array of strings into an array of objects
|
|
122
|
+
aSemanticObjects = aSemanticObjects.map(sSemObj => ({ semanticObject: sSemObj }));
|
|
123
|
+
|
|
124
|
+
// aSemanticObjects now contains the desired format
|
|
113
125
|
oLinksPromise = oNavigationService.getLinks(aSemanticObjects);
|
|
114
126
|
} else {
|
|
115
127
|
var oAppComponent = oController.getOwnerComponent().getAppComponent();
|
|
@@ -157,9 +157,9 @@ HIDE_SIDE_CONTENT=Ocultar detalles
|
|
|
157
157
|
|
|
158
158
|
DELETE_SELECTED_ITEM=\u00BFDesea eliminar el elemento?
|
|
159
159
|
|
|
160
|
-
DELETE_SELECTED_ITEM_WITH_OBJECTINFO=\
|
|
160
|
+
DELETE_SELECTED_ITEM_WITH_OBJECTINFO=\u00BFBorrar el elemento {1} ({2})?
|
|
161
161
|
|
|
162
|
-
DELETE_SELECTED_ITEM_WITH_OBJECTTITLE=\
|
|
162
|
+
DELETE_SELECTED_ITEM_WITH_OBJECTTITLE=\u00BFBorrar el elemento {0}?
|
|
163
163
|
|
|
164
164
|
DELETE_SELECTED_ITEMS=\u00BFDesea eliminar los elementos seleccionados?
|
|
165
165
|
|
|
@@ -15,7 +15,7 @@ QuickCreate_No_Created_Object=L'objet a \u00E9t\u00E9 cr\u00E9\u00E9 mais il est
|
|
|
15
15
|
|
|
16
16
|
QuickCreate_CreateButtonText=Cr\u00E9er
|
|
17
17
|
|
|
18
|
-
Error_Severity_Error=Erreur\: {0}\n\n
|
|
18
|
+
Error_Severity_Error=Erreur\u00A0\: {0}\n\n
|
|
19
19
|
|
|
20
20
|
Error_Severity_Abort=Interruption\: {0}\n\n
|
|
21
21
|
|
package/src/sap/suite/ui/generic/template/designtime/floorplans/AnalyticalListPage.designtime.js
CHANGED
|
@@ -39,7 +39,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
|
|
|
39
39
|
properties: ["visible", "icon", "activeIcon", "type", "tooltip"]
|
|
40
40
|
},
|
|
41
41
|
"sap.ui.comp.smartfilterbar.SmartFilterBar": {
|
|
42
|
-
properties: ["liveMode", "showClearOnFB", "showFilterConfiguration", "showRestoreOnFB"]
|
|
42
|
+
properties: ["liveMode", "showClearOnFB", "showFilterConfiguration", "showRestoreOnFB", "considerPresentationVariant"]
|
|
43
43
|
},
|
|
44
44
|
"sap.m.Table": {
|
|
45
45
|
properties: ["growingThreshold"]
|
|
@@ -16,7 +16,7 @@ sap.ui.define(["sap/suite/ui/generic/template/designtime/utils/designtimeHelper"
|
|
|
16
16
|
properties: ["fitContent"]
|
|
17
17
|
},
|
|
18
18
|
"sap.ui.comp.smartfilterbar.SmartFilterBar": {
|
|
19
|
-
properties: ["liveMode"]
|
|
19
|
+
properties: ["liveMode", "considerPresentationVariant"]
|
|
20
20
|
},
|
|
21
21
|
"sap.ui.comp.smarttable.SmartTable": {
|
|
22
22
|
properties: ["useExportToExcel"],
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<MessageItem description="{msg>description}" type="{msg>type}" title="{msg>message}"
|
|
6
6
|
subtitle="{parts:[{path: 'msg>id'}, {path: 'msg>controlIds'}, {path: 'msg>additionalText'}, {path: 'helper>/isPopoverOpen'}, {path: 'helper>/heartBeat'}], formatter: '.getSubtitle'}"
|
|
7
7
|
longtextUrl="{msg>descriptionUrl}"
|
|
8
|
-
markupDescription="
|
|
8
|
+
markupDescription="{helper>/isAIErrorExplanationEnabled}"
|
|
9
9
|
activeTitle="{parts:[{path: 'msg>id'}, {path: 'msg>controlIds'}, {path: 'helper>/isPopoverOpen'}], formatter: '.isPositionable'}"
|
|
10
10
|
groupName="{= ${helper>/messageToGroupName}[${msg>id}] }">
|
|
11
11
|
<Link
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
xmlns:sfo="sap.ui.comp.smartform" xmlns:smartMultiInput="sap.ui.comp.smartmultiinput" xmlns:layoutData="sap.ui.layout" xmlns:fe="sap.suite.ui.generic.template.genericUtilities"
|
|
3
3
|
xmlns:custom="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1"
|
|
4
4
|
xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
|
|
5
|
-
template:require="{AH: 'sap/suite/ui/generic/template/js/AnnotationHelper', AHModel: 'sap/ui/model/odata/AnnotationHelper', StableIdHelper: 'sap/suite/ui/generic/template/js/StableIdHelper'}">
|
|
5
|
+
template:require="{AH: 'sap/suite/ui/generic/template/js/AnnotationHelper', AHModel: 'sap/ui/model/odata/AnnotationHelper', StableIdHelper: 'sap/suite/ui/generic/template/js/StableIdHelper', SideEffectUtil: 'sap/suite/ui/generic/template/lib/SideEffectUtil'}">
|
|
6
6
|
|
|
7
7
|
<!-- @classdesc @name: Name: sap.suite.ui.generic.template.fragments.SmartFormDataField.fragment.xml
|
|
8
8
|
@description: This fragment contains label value pairs for the smart form
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
visible="{path: 'dataField>', formatter: 'AH.getVisibiltyBasedOnImportanceAndHidden'}"
|
|
36
36
|
binding="{path: 'dataField>Target'}, formatter: 'AH.getNavigationPathWithExpand'}">
|
|
37
37
|
<fe:customData>
|
|
38
|
-
<core:CustomData key="SideEffects" value="{parts: [{path: 'entitySet>'}, {path: 'dataField>'}], formatter: '
|
|
38
|
+
<core:CustomData key="SideEffects" value="{parts: [{path: 'entitySet>'}, {path: 'dataField>'}, {path: 'contact>fn/Path'}], formatter: 'SideEffectUtil.getPropsForLinkFields'}"/>
|
|
39
39
|
<core:CustomData key="Location" value="Section" />
|
|
40
40
|
<core:CustomData key="contactDetails" value="{= ${path: 'contact>', formatter: 'AH.getCustomDataForContactPopup'}}"/>
|
|
41
41
|
</fe:customData>
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
press="._templateEventHandlers.onDataFieldWithIntentBasedNavigation"
|
|
122
122
|
wrapping="true">
|
|
123
123
|
<fe:customData>
|
|
124
|
-
<core:CustomData key="SideEffects" value="{parts: [{path: 'entitySet>'}, {path: 'dataField>'}], formatter: '
|
|
124
|
+
<core:CustomData key="SideEffects" value="{parts: [{path: 'entitySet>'}, {path: 'dataField>'}], formatter: 'SideEffectUtil.getPropsForLinkFields'}"/>
|
|
125
125
|
<core:CustomData key="SemanticObject" value="{path: 'dataField>SemanticObject', formatter: 'AHModel.format'}" />
|
|
126
126
|
<core:CustomData key="Action" value="{path: 'dataField>Action', formatter: 'AHModel.format'}" />
|
|
127
127
|
</fe:customData>
|
|
@@ -82,7 +82,7 @@ sap.ui.define([
|
|
|
82
82
|
getState: fnGetState,
|
|
83
83
|
setState: fnSetState,
|
|
84
84
|
getLocalId: fnGetLocalId,
|
|
85
|
-
bVMConnection:
|
|
85
|
+
bVMConnection: oControl && oControl.getSmartVariant && !!oControl.getSmartVariant(),
|
|
86
86
|
attachStateChanged: fnAttachStateChanged
|
|
87
87
|
};
|
|
88
88
|
}
|
|
@@ -28,6 +28,20 @@ sap.ui.define([
|
|
|
28
28
|
return null;
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* PolyFill for Promise.withResolvers
|
|
33
|
+
*/
|
|
34
|
+
if (!Promise.withResolvers) {
|
|
35
|
+
Promise.withResolvers = function() {
|
|
36
|
+
var resolvers = {};
|
|
37
|
+
var promise = new Promise(function(resolve, reject) {
|
|
38
|
+
resolvers.resolve = resolve;
|
|
39
|
+
resolvers.reject = reject;
|
|
40
|
+
});
|
|
41
|
+
Object.assign(promise, resolvers);
|
|
42
|
+
return promise;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
31
45
|
/**
|
|
32
46
|
* PolyFill for nextSiblingElement
|
|
33
47
|
*/
|
|
@@ -11,10 +11,10 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
|
|
|
11
11
|
"sap/ui/core/library",
|
|
12
12
|
"sap/suite/ui/generic/template/genericUtilities/metadataAnalyser",
|
|
13
13
|
"sap/ui/base/ManagedObject",
|
|
14
|
-
"sap/
|
|
15
|
-
"sap/suite/ui/generic/template/js/RuntimeFormatters"
|
|
14
|
+
"sap/base/util/isEmptyObject",
|
|
15
|
+
"sap/suite/ui/generic/template/js/RuntimeFormatters"// just to make sure that it is loaded
|
|
16
16
|
], function (AnnotationHelperModel, AnnotationHelperModelBasics, SmartField, FeLogger, formatMessage, deepExtend, StableIdHelper, utils, Device,
|
|
17
|
-
SapMLibrary, SapCoreLibrary, metadataAnalyser, ManagedObject,
|
|
17
|
+
SapMLibrary, SapCoreLibrary, metadataAnalyser, ManagedObject, isEmptyObject) {
|
|
18
18
|
"use strict";
|
|
19
19
|
|
|
20
20
|
// shortcut for sap.ui.core.ValueState
|
|
@@ -384,9 +384,6 @@ sap.ui.define(["sap/ui/model/odata/AnnotationHelper",
|
|
|
384
384
|
getCustomDataForContactPopup: function (oContactDetails) {
|
|
385
385
|
return ((JSON.stringify(oContactDetails)).replace(/\}/g, "\\}").replace(/\{/g, "\\{")); //check bindingParser.escape
|
|
386
386
|
},
|
|
387
|
-
getPropsForLinkFields: function(oEntitySet, oTarget) {
|
|
388
|
-
return SideEffectUtil.getPropsForLinkFields(oEntitySet, oTarget);
|
|
389
|
-
},
|
|
390
387
|
checkIsEmailAddress: function (oInterface, sEntityType, oDataField) {
|
|
391
388
|
var oMetaModel = oInterface.getInterface(1).getModel();
|
|
392
389
|
var sPath = oInterface.getInterface(1).getPath() + '/Value';
|
|
@@ -938,7 +938,7 @@ sap.ui.define([
|
|
|
938
938
|
* @public
|
|
939
939
|
* @extends sap.ui.core.UIComponent
|
|
940
940
|
* @author SAP SE
|
|
941
|
-
* @version 1.130.
|
|
941
|
+
* @version 1.130.3
|
|
942
942
|
* @name sap.suite.ui.generic.template.lib.AppComponent
|
|
943
943
|
*/
|
|
944
944
|
var oAppComponent = UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
|
|
@@ -138,11 +138,14 @@ sap.ui.define(["sap/suite/ui/generic/template/js/AnnotationHelper",
|
|
|
138
138
|
* Returns the EntitySet name, EntityType name, PropertyName for a given link field
|
|
139
139
|
* @param {sap.ui.model.odata.ODataMetaModel.EntitySet} oEntitySet
|
|
140
140
|
* @param {object} oTarget
|
|
141
|
+
* @param {string} sFieldName
|
|
141
142
|
*/
|
|
142
|
-
function fnGetPropsForLinkFields (oEntitySet, oTarget) {
|
|
143
|
-
var sLinkProperty
|
|
144
|
-
if (
|
|
145
|
-
|
|
143
|
+
function fnGetPropsForLinkFields (oEntitySet, oTarget, sFieldName) {
|
|
144
|
+
var sLinkProperty;
|
|
145
|
+
if (oTarget && oTarget.Value && oTarget.Value.Path){
|
|
146
|
+
sLinkProperty = oTarget.Value.Path;
|
|
147
|
+
} else {
|
|
148
|
+
sLinkProperty = oTarget.Target.AnnotationPath.split("/")[0] + "/" + sFieldName;
|
|
146
149
|
}
|
|
147
150
|
var oCustomData = {
|
|
148
151
|
"sEntitySetName": oEntitySet.name,
|
|
@@ -174,6 +177,7 @@ sap.ui.define(["sap/suite/ui/generic/template/js/AnnotationHelper",
|
|
|
174
177
|
return;
|
|
175
178
|
}
|
|
176
179
|
|
|
180
|
+
var oControl = oLink;
|
|
177
181
|
var oEntityType = oMetaModel.getODataEntityType(sEntityTypeName);
|
|
178
182
|
var oEntitySet = oMetaModel.getODataEntitySet(sEntitySetName);
|
|
179
183
|
var oProperty = metadataAnalyser.getPropertyMetadata(oMetaModel, sEntityTypeName, sLinkProperty);
|
|
@@ -186,9 +190,20 @@ sap.ui.define(["sap/suite/ui/generic/template/js/AnnotationHelper",
|
|
|
186
190
|
}
|
|
187
191
|
};
|
|
188
192
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
193
|
+
if (sLinkProperty.includes("/")){
|
|
194
|
+
while (!oControl.isA("sap.ui.comp.smartform.Group")) {
|
|
195
|
+
oControl = oControl.getParent();
|
|
196
|
+
}
|
|
197
|
+
//The method SharedUtil.applyFieldGroupIDs takes in the control and its metadata
|
|
198
|
+
//It then reads the Side Effect annotations configured for it, calculates fieldGroupIds and assigns them to the field
|
|
199
|
+
|
|
200
|
+
//For navigation path link fields, we pass the oLink's parent Group control's binding context when calculating the fieldGroupIds
|
|
201
|
+
//This makes sure the calculated fieldGroupIds are consistent with the other source fields
|
|
202
|
+
SharedUtil.applyFieldGroupIDs(oLink, oMetaData, null, oControl.getBindingContext());
|
|
203
|
+
} else {
|
|
204
|
+
//For non navigation path link fields, we just pass the oLink along with its metadata
|
|
205
|
+
SharedUtil.applyFieldGroupIDs(oLink, oMetaData);
|
|
206
|
+
}
|
|
192
207
|
}
|
|
193
208
|
}
|
|
194
209
|
|
|
@@ -2,8 +2,9 @@ sap.ui.define([
|
|
|
2
2
|
"sap/ui/base/Object",
|
|
3
3
|
"sap/base/util/extend",
|
|
4
4
|
"sap/suite/ui/generic/template/lib/filterHelper",
|
|
5
|
-
"sap/suite/ui/generic/template/genericUtilities/FeLogger"
|
|
6
|
-
|
|
5
|
+
"sap/suite/ui/generic/template/genericUtilities/FeLogger",
|
|
6
|
+
"sap/ui/model/FilterOperator"
|
|
7
|
+
], function(BaseObject, extend, filterHelper, FeLogger, FilterOperator) {
|
|
7
8
|
'use strict';
|
|
8
9
|
|
|
9
10
|
/*
|
|
@@ -32,19 +33,11 @@ sap.ui.define([
|
|
|
32
33
|
return Promise.resolve(oEasyFilterMetadata);
|
|
33
34
|
} else {
|
|
34
35
|
return new Promise(function(fnResolve) {
|
|
35
|
-
|
|
36
|
-
if (oState.oSmartFilterbar.isInitialised()) {
|
|
36
|
+
oState.oIappStateHandler.onFEStartupInitialized().then(function() {
|
|
37
37
|
fnPrepareSearchMetadata().then(function(oMetadata){
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
} else {
|
|
42
|
-
oState.oSmartFilterbar.attachInitialized(function() {
|
|
43
|
-
fnPrepareSearchMetadata().then(function(oMetadata) {
|
|
44
|
-
fnResolve(oMetadata);
|
|
45
|
-
});
|
|
46
|
-
},this);
|
|
47
|
-
}
|
|
38
|
+
fnResolve(oMetadata);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
48
41
|
});
|
|
49
42
|
}
|
|
50
43
|
}
|
|
@@ -56,33 +49,48 @@ sap.ui.define([
|
|
|
56
49
|
function fnPrepareSearchMetadata() {
|
|
57
50
|
|
|
58
51
|
var aPromise = [];
|
|
52
|
+
var oEditStateFilterItem;
|
|
53
|
+
var oDefaultValuesForEasyFilter = {};
|
|
59
54
|
var oOwnerFilterControl = oState.oSmartFilterbar;
|
|
60
55
|
var oSFBModel = oOwnerFilterControl.getModel();
|
|
61
56
|
var oSFBMetaModel = oSFBModel.getMetaModel();
|
|
62
|
-
|
|
57
|
+
|
|
63
58
|
var sEntitySet = oController.getOwnerComponent().getEntitySet();
|
|
64
|
-
var sTokenType = "ValueHelp"; // Other values are "Calendar" | "Time" | "MenuWithCheckBox"
|
|
65
59
|
|
|
66
60
|
var mFilterProperties = {}; // todo : Add the properties from navigation entites
|
|
67
61
|
var oEntityType = oTemplateUtils.oCommonUtils.getMetaModelEntityType(sEntitySet);
|
|
68
62
|
oEntityType.property.map(function (oProperty) {
|
|
63
|
+
var sTokenType = "ValueHelp"; // Other values are "Calendar" | "Time" | "MenuWithCheckBox"
|
|
69
64
|
if (filterHelper.isPropertyFilterable(oProperty)) {
|
|
70
|
-
|
|
65
|
+
|
|
66
|
+
var bIsCodeListRequired;
|
|
71
67
|
oProperty.extensions && oProperty.extensions.forEach(function(oExtension) {
|
|
72
68
|
if (oExtension.name === "value-list" && oExtension.value === "fixed-values") {
|
|
73
69
|
sTokenType = "MenuWithCheckBox";
|
|
74
70
|
bIsCodeListRequired = true;
|
|
75
71
|
}
|
|
76
72
|
});
|
|
73
|
+
|
|
74
|
+
// Calculate the token type based on the property type and display format
|
|
75
|
+
// It will be better if this is done at the control level
|
|
76
|
+
if ((oProperty.type === "Edm.DateTime" && oProperty["sap:display-format"] === "Date") ||
|
|
77
|
+
(oProperty.type === "Edm.String" && oProperty["com.sap.vocabularies.Common.v1.IsCalendarDate"] && oProperty["com.sap.vocabularies.Common.v1.IsCalendarDate"].Bool === "true")) {
|
|
78
|
+
sTokenType = "Calendar";
|
|
79
|
+
} else if (oProperty.type === "Edm.DateTimeOffset") {
|
|
80
|
+
sTokenType = "Time";
|
|
81
|
+
}
|
|
82
|
+
|
|
77
83
|
mFilterProperties[oProperty.name] = {
|
|
78
84
|
name: oProperty.name,
|
|
79
85
|
//label: oProperty.label, Name is added from the filter item control
|
|
80
86
|
dataType: oProperty.type,
|
|
87
|
+
defaultValue : {}, // Fill values from FLP user defaults , SV or other sources
|
|
81
88
|
filterable: true,
|
|
82
89
|
sortable: false,
|
|
83
90
|
codeList : bIsCodeListRequired,
|
|
84
91
|
type: sTokenType,
|
|
85
|
-
|
|
92
|
+
unit: oProperty["sap:unit"] || "",
|
|
93
|
+
required: oProperty["sap:required-in-filter"] === "true" ? true : false
|
|
86
94
|
};
|
|
87
95
|
}
|
|
88
96
|
});
|
|
@@ -92,12 +100,46 @@ sap.ui.define([
|
|
|
92
100
|
entitySet: sEntitySet,
|
|
93
101
|
fields : []
|
|
94
102
|
};
|
|
95
|
-
|
|
103
|
+
oDefaultValuesForEasyFilter = oOwnerFilterControl.getFilterData() || {};
|
|
96
104
|
oOwnerFilterControl.getAllFilterItems().forEach(function (oFilterItem) {
|
|
97
105
|
//check if the filter item from the filter control is a property of the entity type , if then push it to the easy filter metadata
|
|
98
106
|
// todo : Add the properties from navigation entites
|
|
99
107
|
var oFilterItemForQuery = mFilterProperties[oFilterItem.getName()];
|
|
100
108
|
if (oFilterItemForQuery) {
|
|
109
|
+
var oDefaultFilterValue = oDefaultValuesForEasyFilter[oFilterItem.getName()];
|
|
110
|
+
if (oDefaultFilterValue) {
|
|
111
|
+
var aValues = [];
|
|
112
|
+
if (oDefaultFilterValue.ranges) {
|
|
113
|
+
aValues = oDefaultFilterValue.ranges.map(function(oRange) {
|
|
114
|
+
if (oRange.exclude === false) {
|
|
115
|
+
if (oRange.operation === "BT") {
|
|
116
|
+
return {
|
|
117
|
+
operator: FilterOperator.BT,
|
|
118
|
+
selectedValues: [{ value1: oRange.value1, value2: oRange.value2 }]
|
|
119
|
+
};
|
|
120
|
+
} else {
|
|
121
|
+
return {
|
|
122
|
+
operator: oRange.operation,
|
|
123
|
+
selectedValues: [oRange.value1]
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
} else {
|
|
127
|
+
return {
|
|
128
|
+
operator: FilterOperator.NE,
|
|
129
|
+
selectedValues: [oRange.value1]
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
} else { // 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
|
|
134
|
+
aValues = [
|
|
135
|
+
{
|
|
136
|
+
operator: FilterOperator.EQ,
|
|
137
|
+
selectedValues: [oDefaultFilterValue]
|
|
138
|
+
}
|
|
139
|
+
];
|
|
140
|
+
}
|
|
141
|
+
oFilterItemForQuery.defaultValue = aValues;
|
|
142
|
+
}
|
|
101
143
|
oFilterItemForQuery.label = oFilterItem.getLabel();
|
|
102
144
|
// codeList is set to true for fixed value list and codelist is fetched
|
|
103
145
|
if (oFilterItemForQuery.codeList) {
|
|
@@ -127,7 +169,6 @@ sap.ui.define([
|
|
|
127
169
|
if (oTemplateUtils.oComponentUtils.isDraftEnabled()) {
|
|
128
170
|
var oEditStateControl = oController.byId("editStateFilter");
|
|
129
171
|
if (oEditStateControl) {
|
|
130
|
-
sTokenType = "MenuWithCheckBox";
|
|
131
172
|
var oEditingStatusCodeList = oEditStateControl.getItems().map(function(oItem) {
|
|
132
173
|
return {
|
|
133
174
|
value : oItem.getKey(),
|
|
@@ -141,7 +182,7 @@ sap.ui.define([
|
|
|
141
182
|
filterable: true,
|
|
142
183
|
required: false,
|
|
143
184
|
sortable: false,
|
|
144
|
-
type:
|
|
185
|
+
type: "MenuWithCheckBox",
|
|
145
186
|
codeList : oEditingStatusCodeList
|
|
146
187
|
};
|
|
147
188
|
oEasyFilterMetadata.fields.push(oEditStateFilterMetadata);
|
|
@@ -307,7 +348,7 @@ sap.ui.define([
|
|
|
307
348
|
var sEntitySet = oController.getOwnerComponent().getEntitySet();
|
|
308
349
|
oEasyFilterMetadataPromise.then((oEasyFilterMetadata) => {
|
|
309
350
|
oEasyFilter.setContextPath(sEntitySet);
|
|
310
|
-
oEasyFilter.setAppId(oController.getOwnerComponent().getAppComponent().getManifestEntry("sap.app")
|
|
351
|
+
oEasyFilter.setAppId(oController.getOwnerComponent().getAppComponent().getManifestEntry("sap.app").id);
|
|
311
352
|
oEasyFilter.setFilterBarMetadata(oEasyFilterMetadata.fields);
|
|
312
353
|
oEasyFilter.easyfilter = oTemplateUtils.oServices.oFioriAIHandler.fioriaiLib.EasyFilter;
|
|
313
354
|
});
|
|
@@ -372,13 +413,8 @@ sap.ui.define([
|
|
|
372
413
|
var oSmartFilterbar = oState.oSmartFilterbar;
|
|
373
414
|
fnValueHelpPromiseResolve = oEvent.getParameter("resolve");
|
|
374
415
|
oSmartFilterbar.associateValueLists();
|
|
375
|
-
var oInputField = oSmartFilterbar.getAllFilterItems().find(function(oFilterItem) {
|
|
376
|
-
if (oFilterItem.getName() === oEvent.getParameter("key")) {
|
|
377
|
-
return oFilterItem;
|
|
378
|
-
}
|
|
379
|
-
});
|
|
380
416
|
try {
|
|
381
|
-
|
|
417
|
+
oSmartFilterbar.openValueHelpRequestForFilterItem(oEvent.getParameter("key"));
|
|
382
418
|
} catch (error) {
|
|
383
419
|
oLogger.error("Value help cannot be triggered for the field " + oEvent.getParameter("key"));
|
|
384
420
|
}
|