@sapui5/sap.suite.ui.generic.template 1.129.0 → 1.130.1
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 +4 -3
- package/src/sap/suite/ui/generic/template/.library +5 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/Component.js +1 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/VisualFilterDialogController.js +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/Component.js +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +22 -11
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_bg.properties +3 -3
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hu.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_th.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/manifest.json +5 -2
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/DefaultVariant.fragment.xml +7 -8
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/MultipleViewsSingleTableMode.fragment.xml +4 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/Component.js +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/templateSpecificPreparationHelper.js +90 -42
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/MultipleViewsSingleTableMode.fragment.xml +3 -0
- 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/controls/SmartTable.designtime.js +379 -0
- package/src/sap/suite/ui/generic/template/designtime/{AnalyticalListPage.designtime.js → floorplans/AnalyticalListPage.designtime.js} +3 -3
- package/src/sap/suite/ui/generic/template/designtime/{ListReport.designtime.js → floorplans/ListReport.designtime.js} +3 -3
- package/src/sap/suite/ui/generic/template/designtime/{ObjectPage.designtime.js → floorplans/ObjectPage.designtime.js} +4 -5
- package/src/sap/suite/ui/generic/template/designtime/utils/designtimeHelper.js +119 -96
- package/src/sap/suite/ui/generic/template/designtime/utils/designtimeUtils.js +395 -0
- package/src/sap/suite/ui/generic/template/fragments/EasyFilter.fragment.xml +12 -17
- package/src/sap/suite/ui/generic/template/fragments/MessagePage.controller.js +16 -0
- package/src/sap/suite/ui/generic/template/fragments/MessagePopover.fragment.xml +16 -2
- package/src/sap/suite/ui/generic/template/fragments/SmartFormDataField.fragment.xml +2 -0
- package/src/sap/suite/ui/generic/template/genericUtilities/Link.js +9 -2
- package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +8 -4
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +10 -3
- package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +0 -42
- package/src/sap/suite/ui/generic/template/lib/CommonUtils.js +6 -1
- package/src/sap/suite/ui/generic/template/lib/MessageButtonHelper.js +11 -7
- package/src/sap/suite/ui/generic/template/lib/RetryAfterHandler.js +249 -0
- package/src/sap/suite/ui/generic/template/lib/ShareUtils.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/SideEffectUtil.js +64 -3
- package/src/sap/suite/ui/generic/template/lib/StableIdDefinition.js +7 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +210 -74
- package/src/sap/suite/ui/generic/template/lib/ai/ErrorExplanationHelper.js +47 -0
- package/src/sap/suite/ui/generic/template/lib/ai/FioriAIHandler.js +10 -3
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +31 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +3 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +1 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +4 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +3 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +2 -0
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +5 -3
- package/src/sap/suite/ui/generic/template/library.js +3 -1
- package/src/sap/suite/ui/generic/template/listTemplates/fragments/MultipleViewsSingleTableMode.fragment.xml +6 -2
- package/src/sap/suite/ui/generic/template/manifestMerger/ChangePageConfiguration.js +28 -23
- package/src/sap/suite/ui/generic/template/manifestMerger/MergerUtil.js +6 -6
- package/src/sap/suite/ui/generic/template/themes/base/base.less +0 -4
- package/ui5.yaml +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sapui5/sap.suite.ui.generic.template",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.130.1",
|
|
4
4
|
"description": "SAPUI5 Library sap.suite.ui.generic.template",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sapui5",
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"testsuite-qunit" : "ui5 serve --config ./ui5-local.yaml --open \"/test-resources/sap/suite/ui/generic/template/qunit/testsuite.qunit.html\""
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"sonarqube-scanner": "^2.8.1"
|
|
19
|
+
"sonarqube-scanner": "^2.8.1",
|
|
20
|
+
"@sap/ux-ui5-tooling": "latest"
|
|
20
21
|
}
|
|
21
|
-
}
|
|
22
|
+
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
(c) Copyright 2009-2015 SAP SE. All rights reserved
|
|
9
9
|
</copyright>
|
|
10
|
-
<version>1.
|
|
10
|
+
<version>1.130.1</version>
|
|
11
11
|
|
|
12
12
|
<documentation>Library with generic Suite UI templates.</documentation>
|
|
13
13
|
|
|
@@ -65,6 +65,9 @@
|
|
|
65
65
|
<dependency>
|
|
66
66
|
<libraryName>sap.fe.placeholder</libraryName>
|
|
67
67
|
</dependency>
|
|
68
|
+
<dependency>
|
|
69
|
+
<libraryName>sap.fe.controls</libraryName>
|
|
70
|
+
</dependency>
|
|
68
71
|
<dependency>
|
|
69
72
|
<libraryName>sap.cards.ap.common</libraryName>
|
|
70
73
|
</dependency>
|
|
@@ -94,6 +97,7 @@
|
|
|
94
97
|
<exclude name="sap.fe." external="true"/>
|
|
95
98
|
<exclude name="sap.tnt." external="true"/>
|
|
96
99
|
<exclude name="sap.insights." external="true"/>
|
|
100
|
+
<exclude name="sap.cards.ap." external="true"/>
|
|
97
101
|
<exclude name="*" external="true"/> <!-- exclude files within current folder -->
|
|
98
102
|
</jscoverage>
|
|
99
103
|
<releasenotes
|
|
@@ -59,7 +59,7 @@ sap.ui.define(["sap/ui/core/mvc/OverrideExecution",
|
|
|
59
59
|
},
|
|
60
60
|
oComponentData: { // data defined by component (i.e. not to be overridden by manifest
|
|
61
61
|
templateName: "sap.suite.ui.generic.template.AnalyticalListPage.view.AnalyticalListPage",
|
|
62
|
-
designtimePath: "sap/suite/ui/generic/template/designtime/AnalyticalListPage.designtime"
|
|
62
|
+
designtimePath: "sap/suite/ui/generic/template/designtime/floorplans/AnalyticalListPage.designtime"
|
|
63
63
|
},
|
|
64
64
|
init: function() {
|
|
65
65
|
var oTemplatePrivate = oComponent.getModel("_templPriv");
|
|
@@ -424,7 +424,7 @@ sap.ui.define([
|
|
|
424
424
|
oVisualFilterDialogModelClone.setProperty('/filterCompList/' + idx + '/searchVisible', bVisible);
|
|
425
425
|
oVisualFilterDialogModel.setData(oVisualFilterDialogModelClone.getData());
|
|
426
426
|
//update config object when VFConfig model is updated
|
|
427
|
-
this.oConfig = oVisualFilterDialogModel.
|
|
427
|
+
this.oConfig = oVisualFilterDialogModel.getData();
|
|
428
428
|
//to enable Restore button on change of chart type, sort order, measure field and show in filter bar changes
|
|
429
429
|
this.oState.oSmartFilterbar._oVariantManagement.currentVariantSetModified(true);
|
|
430
430
|
},
|
|
@@ -53,7 +53,7 @@ sap.ui.define(["sap/ui/core/mvc/OverrideExecution",
|
|
|
53
53
|
},
|
|
54
54
|
oComponentData: { // data defined by component (i.e. not to be overridden by manifest
|
|
55
55
|
templateName: "sap.suite.ui.generic.template.ListReport.view.ListReport",
|
|
56
|
-
designtimePath: "sap/suite/ui/generic/template/designtime/ListReport.designtime"
|
|
56
|
+
designtimePath: "sap/suite/ui/generic/template/designtime/floorplans/ListReport.designtime"
|
|
57
57
|
},
|
|
58
58
|
init: function() {
|
|
59
59
|
var oTemplatePrivate = oComponent.getModel("_templPriv");
|
|
@@ -549,6 +549,7 @@ sap.ui.define([
|
|
|
549
549
|
|
|
550
550
|
oTemplateUtils.oServices.oFioriAIHandler && oTemplateUtils.oServices.oFioriAIHandler.getFioriAIEnabledPromise().then(function() {
|
|
551
551
|
oState.oEasyFilterBarHandler = new EasyFilterBarHandler(oState, oController, oTemplateUtils);
|
|
552
|
+
oState.oEasyFilterBarHandler.initialiseEasyFilterBar();
|
|
552
553
|
});
|
|
553
554
|
|
|
554
555
|
|
|
@@ -699,28 +700,38 @@ sap.ui.define([
|
|
|
699
700
|
// oEasyFilterBarHandler is already initialized in the controller onInit
|
|
700
701
|
// Prepare the metadats upfront so that it is not triggered for each search
|
|
701
702
|
oState.oEasyFilterBarHandler && oState.oEasyFilterBarHandler.getEasyFilterSearchMetadata();
|
|
703
|
+
oState.oSmartFilterbar.attachFilterChange(function(oEvent) {
|
|
704
|
+
oState.oEasyFilterBarHandler.onFilterChange(oEvent);
|
|
705
|
+
});
|
|
702
706
|
});
|
|
703
707
|
},
|
|
704
|
-
|
|
705
708
|
onAfterSFBVariantLoad: function (oEvent) {
|
|
706
709
|
oState.oIappStateHandler.onAfterSFBVariantLoad(oEvent);
|
|
707
710
|
},
|
|
708
|
-
|
|
709
711
|
onSmartListDataReceived: function (oEvent) {
|
|
710
712
|
var oSmartList = oEvent.getSource();
|
|
711
713
|
fnOnDataReceived(oSmartList);
|
|
712
714
|
},
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
715
|
+
onEasyFilterExecuteSearch: function(oEvent) {
|
|
716
|
+
oState.oEasyFilterBarHandler.onExecuteSearch(oEvent);
|
|
717
|
+
},
|
|
718
|
+
onEasyFilterClearFilters: function(oEvent) {
|
|
719
|
+
oState.oEasyFilterBarHandler.onClearFilters(oEvent);
|
|
720
|
+
},
|
|
721
|
+
onEasyFilterAfterQueryProcessing: function(oEvent) {
|
|
722
|
+
oState.oEasyFilterBarHandler.onAfterQueryProcessing(oEvent);
|
|
723
|
+
},
|
|
724
|
+
onEasyFilterBeforeQueryProcessing: function(oEvent) {
|
|
725
|
+
oState.oEasyFilterBarHandler.onBeforeQueryProcessing(oEvent);
|
|
726
|
+
},
|
|
727
|
+
onEasyFilterTokensChanged: function(oEvent) {
|
|
728
|
+
oState.oEasyFilterBarHandler.onTokensChanged(oEvent);
|
|
716
729
|
},
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
oTemplateUtils.oCommonEventHandlers.onEasyFilterChange(oEasyFilter, oState);
|
|
730
|
+
onEasyFilterQueryChanged: function(oEvent) {
|
|
731
|
+
oState.oEasyFilterBarHandler.onQueryChanged(oEvent);
|
|
720
732
|
},
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
oEasyFilter.setValueState(sap.ui.core.ValueState.None);
|
|
733
|
+
onEasyFilterShowValueHelp: function(oEvent) {
|
|
734
|
+
oState.oEasyFilterBarHandler.onShowValueHelp(oEvent);
|
|
724
735
|
},
|
|
725
736
|
onFilterSwitch : function() {
|
|
726
737
|
var oSmartFilterbar = oState.oSmartFilterbar;
|
|
@@ -7,9 +7,9 @@ ALL_OBJECTS=\u0412\u0441\u0438\u0447\u043A\u0438
|
|
|
7
7
|
|
|
8
8
|
ALL_OBJECTS_HIDING_DRAFT=\u0412\u0441\u0438\u0447\u043A\u0438 (\u0441\u043A\u0440\u0438\u0432\u0430\u043D\u0435 \u043D\u0430 \u0447\u0435\u0440\u043D\u043E\u0432\u0438)
|
|
9
9
|
|
|
10
|
-
UNCHANGED=\
|
|
10
|
+
UNCHANGED=\u0411\u0435\u0437 \u043F\u0440\u043E\u043C\u0435\u043D\u0438
|
|
11
11
|
|
|
12
|
-
EDITING_STATUS=\u0421\u0442\u0430\u0442\u0443\u0441 \u043D\u0430 \u0440\u0435\u0434\u0430\u043A\
|
|
12
|
+
EDITING_STATUS=\u0421\u0442\u0430\u0442\u0443\u0441 \u043D\u0430 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0430\u043D\u0435
|
|
13
13
|
|
|
14
14
|
YES=\u0414\u0430
|
|
15
15
|
|
|
@@ -90,7 +90,7 @@ DRAFT_OBJECT_FILTER=\u0421\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u0430 \u044
|
|
|
90
90
|
|
|
91
91
|
LOCKED_OBJECT=\u0417\u0430\u043A\u043B\u044E\u0447\u0435\u043D
|
|
92
92
|
|
|
93
|
-
LOCKED_OBJECT_FILTER=\u0417\u0430\u043A\u043B\u044E\u0447\u0435\
|
|
93
|
+
LOCKED_OBJECT_FILTER=\u0417\u0430\u043A\u043B\u044E\u0447\u0435\u043Do \u043E\u0442 \u0434\u0440\u0443\u0433 \u043F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B
|
|
94
94
|
|
|
95
95
|
UNSAVED_CHANGES=\u041D\u0435\u0437\u0430\u043F\u0430\u0437\u0435\u043D\u0438 \u043F\u0440\u043E\u043C\u0435\u043D\u0438
|
|
96
96
|
|
|
@@ -94,7 +94,7 @@ LOCKED_OBJECT_FILTER=\u0E16\u0E39\u0E01\u0E25\u0E47\u0E2D\u0E04\u0E42\u0E14\u0E2
|
|
|
94
94
|
|
|
95
95
|
UNSAVED_CHANGES=\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01
|
|
96
96
|
|
|
97
|
-
UNSAVED_CHANGES_FILTER=\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\
|
|
97
|
+
UNSAVED_CHANGES_FILTER=\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E17\u0E35\u0E48\u0E22\u0E31\u0E07\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49\u0E40\u0E01\u0E47\u0E1A\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E42\u0E14\u0E22\u0E1C\u0E39\u0E49\u0E43\u0E0A\u0E49\u0E2D\u0E37\u0E48\u0E19
|
|
98
98
|
|
|
99
99
|
SHARE=\u0E41\u0E0A\u0E23\u0E4C
|
|
100
100
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"i18n": "i18n/i18n.properties",
|
|
9
9
|
"applicationVersion": {
|
|
10
10
|
"__comment": "applicationVersion oder componentversion??",
|
|
11
|
-
"version": "1.
|
|
11
|
+
"version": "1.130.1"
|
|
12
12
|
},
|
|
13
13
|
"title": "{{TITLE}}",
|
|
14
14
|
"description": "{{DESCRIPTION}}",
|
|
@@ -76,7 +76,10 @@
|
|
|
76
76
|
},
|
|
77
77
|
"sap.fe.placeholder":{
|
|
78
78
|
"minVersion":"1.86.0"
|
|
79
|
-
}
|
|
79
|
+
},
|
|
80
|
+
"sap.fe.controls":{
|
|
81
|
+
"minVersion":"1.130.0"
|
|
82
|
+
}
|
|
80
83
|
}
|
|
81
84
|
},
|
|
82
85
|
"commands": {
|
package/src/sap/suite/ui/generic/template/ListReport/view/fragments/DefaultVariant.fragment.xml
CHANGED
|
@@ -9,9 +9,13 @@
|
|
|
9
9
|
showShare="true" showExecuteOnSelection="{= !${parameter>/settings/isWorklist} }" displayTextForExecuteOnSelectionForStandardVariant="{= (${parameter>/settings/dataLoadSettings/loadDataOnAppLaunch} === 'ifAnyFilterExist' || ${parameter>/settings/dataLoadSettings/loadDataOnAppLaunch} === undefined) ? '{i18n>ST_LIST_DISPLAY_TEXT_FOR_EXECUTE_ON_SELECTION}' : undefined}" headerLevel="H2"/>
|
|
10
10
|
</f:heading>
|
|
11
11
|
<f:actions>
|
|
12
|
+
<ToolbarSpacer/>
|
|
13
|
+
<!-- global breakout actions-->
|
|
14
|
+
<template:repeat list="{parameter>/manifest/sap.ui5/extends/extensions/sap.ui.controllerExtensions/sap.suite.ui.generic.template.ListReport.view.ListReport/sap.ui.generic.app}" var="tmpEntitySet">
|
|
15
|
+
<core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.GlobalActions" type="XML"/>
|
|
16
|
+
</template:repeat>
|
|
12
17
|
<!--Enable the filter switch only if the easy filter is enabled-->
|
|
13
18
|
<FlexBox renderType="Bare" visible="{= ${_templPriv>/listReport/isHeaderExpanded} && ${_templPrivGlobal>/generic/fioriAI/isEasyFilterEnabled} }">
|
|
14
|
-
<Label text="{i18n>ST_EASY_FILTER_TITLE}" class="sapSmartTemplateEasyFilterInputPadding"></Label>
|
|
15
19
|
<SegmentedButton id = "template::FilterSwitchButton"
|
|
16
20
|
selectedKey="{_templPriv>/listReport/filterMode}"
|
|
17
21
|
selectionChange="._templateEventHandlers.onFilterSwitch">
|
|
@@ -19,16 +23,11 @@
|
|
|
19
23
|
<OverflowToolbarLayoutData priority="NeverOverflow"/>
|
|
20
24
|
</layoutData>
|
|
21
25
|
<items>
|
|
22
|
-
<SegmentedButtonItem
|
|
23
|
-
<SegmentedButtonItem
|
|
26
|
+
<SegmentedButtonItem icon="sap-icon://filter-fields" tooltip="{i18n>ST_MANUAL_FILTER}" key="classic"/>
|
|
27
|
+
<SegmentedButtonItem icon="sap-icon://ai" tooltip="{i18n>ST_EASY_FILTER}" key="easyFilter"/>
|
|
24
28
|
</items>
|
|
25
29
|
</SegmentedButton>
|
|
26
30
|
</FlexBox>
|
|
27
|
-
<ToolbarSpacer/>
|
|
28
|
-
<!-- global breakout actions-->
|
|
29
|
-
<template:repeat list="{parameter>/manifest/sap.ui5/extends/extensions/sap.ui.controllerExtensions/sap.suite.ui.generic.template.ListReport.view.ListReport/sap.ui.generic.app}" var="tmpEntitySet">
|
|
30
|
-
<core:Fragment fragmentName="sap.suite.ui.generic.template.fragments.GlobalActions" type="XML"/>
|
|
31
|
-
</template:repeat>
|
|
32
31
|
<MenuButton id="{= ${parameter>/stableId}.getStableId({type: 'ListReportAction', subType: 'Share'}) }"
|
|
33
32
|
icon="sap-icon://action"
|
|
34
33
|
type="Transparent"
|
|
@@ -26,7 +26,10 @@
|
|
|
26
26
|
</SegmentedButton>
|
|
27
27
|
</template:then>
|
|
28
28
|
<template:else>
|
|
29
|
-
|
|
29
|
+
<core:InvisibleText id="{:= ${parameter>/stableId}.getStableId({type: 'QuickVariantSelection', subType: 'InvisibleText'})}"
|
|
30
|
+
text="{i18n>CONTENT_SWITCH}"/>
|
|
31
|
+
<Select id="{:= ${parameter>/stableId}.getStableId({type: 'QuickVariantSelection', subType: 'VariantSelect'})}"
|
|
32
|
+
ariaLabelledBy="{:= ${parameter>/stableId}.getStableId({type: 'QuickVariantSelection', subType: 'InvisibleText'})}"
|
|
30
33
|
selectedKey="{_templPriv>/listReport/multipleViews/selectedKey}"
|
|
31
34
|
enabled="{= ${_templPriv>/generic/bDataAreShownInTable}}"
|
|
32
35
|
autoAdjustWidth="true"
|
|
@@ -43,7 +43,7 @@ sap.ui.define(["sap/suite/ui/generic/template/lib/TemplateAssembler",
|
|
|
43
43
|
},
|
|
44
44
|
oComponentData: { // data defined by component (i.e. not to be overridden by manifest
|
|
45
45
|
templateName: "sap.suite.ui.generic.template.ObjectPage.view.Details",
|
|
46
|
-
designtimePath: "sap/suite/ui/generic/template/designtime/ObjectPage.designtime"
|
|
46
|
+
designtimePath: "sap/suite/ui/generic/template/designtime/floorplans/ObjectPage.designtime"
|
|
47
47
|
},
|
|
48
48
|
getTemplateSpecificParameters: templateSpecificPreparationHelper.getTemplateSpecificParameters.bind(null, oComponentUtils),
|
|
49
49
|
refreshBinding: function (bUnconditional, mRefreshInfos, bWithoutAssociationsRefresh) {
|
|
@@ -320,62 +320,110 @@ sap.ui.define([
|
|
|
320
320
|
fnSetTargetEntity(oEntitySet);
|
|
321
321
|
|
|
322
322
|
var bToolbarButtonVisible = fnGetTableToolbarButtonVisibility(oSettings, oEntitySet, oResult.type);
|
|
323
|
-
var oPathforRestriction = fnGetRestrictionForPasteButton(oEntitySet);
|
|
324
323
|
/* Workaround fix for non draft apps with no section settings defined in the manifest. In UI5v1.93, the export to excel button is displayed by default because of a code gap in
|
|
325
324
|
FE which later got fixed with a change related to paste button in UI5v1.96 wherein the export button is not displayed by default. This looks like a regression issue to customers
|
|
326
325
|
for which we have provided this temporary solution which shall get removed soon. */
|
|
327
326
|
oResult.bExportToExcel = (!oComponentUtils.isDraftEnabled() && !oSettings.sections) || bToolbarButtonVisible;
|
|
328
|
-
|
|
329
|
-
var sPathforRestriction = "";
|
|
330
|
-
if (oPathforRestriction.insertable) {
|
|
331
|
-
sPathforRestriction = "${" + oPathforRestriction.insertable + "}";
|
|
332
|
-
}
|
|
333
|
-
if (oPathforRestriction.updatable) {
|
|
334
|
-
sPathforRestriction = sPathforRestriction ? sPathforRestriction + " || ${" + oPathforRestriction.updatable + "}" : "${" + oPathforRestriction.updatable + "}";
|
|
335
|
-
}
|
|
336
|
-
sPathforRestriction = sPathforRestriction && "(" + sPathforRestriction + ")";
|
|
337
|
-
oResult.vShowPasteButton = bToolbarButtonVisible ? "{= ${ui>/editable} && " + sPathforRestriction + "}" : false;
|
|
338
|
-
} else {
|
|
339
|
-
oResult.vShowPasteButton = bToolbarButtonVisible ? "{ui>/editable}" : false;
|
|
340
|
-
}
|
|
341
|
-
|
|
327
|
+
oResult.vShowPasteButton = fnGetPasteButtonVisibility(oEntitySet);
|
|
342
328
|
oResult.commandExecution = fnGetTableLevelStandardActions();
|
|
343
329
|
oResult.persistencyKeyState = fnGetPersistencyKeyState(oSettings.tableSettings);
|
|
344
330
|
|
|
345
331
|
return oResult;
|
|
346
332
|
}
|
|
347
|
-
|
|
348
|
-
// fnGetRestrictionForPasteButton return object contains updatable and insertable restriction for the given Entity Set.
|
|
349
|
-
function fnGetRestrictionForPasteButton(oEntitySet) {
|
|
350
|
-
var oLeadingEntitySet = oMetaModel.getODataEntitySet(sLeadingEntitySet);
|
|
351
|
-
var oInsertableAnnotation, oUpdatableAnnotation;
|
|
352
|
-
|
|
353
|
-
var oInsertRestrictionSetViaNavRestrictions = AnnotationHelper.handleNavigationRestrictions(oMetaModel, oLeadingEntitySet, oEntitySet, 'Insertable');
|
|
354
|
-
if (oInsertRestrictionSetViaNavRestrictions) {
|
|
355
|
-
oInsertableAnnotation = oInsertRestrictionSetViaNavRestrictions['Insertable'];
|
|
356
|
-
} else {
|
|
357
|
-
var oSectionInsertRestriction = oEntitySet['Org.OData.Capabilities.V1.InsertRestrictions'];
|
|
358
|
-
oInsertableAnnotation = oSectionInsertRestriction && oSectionInsertRestriction['Insertable'];
|
|
359
|
-
}
|
|
360
333
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
334
|
+
/**
|
|
335
|
+
* Finds out the paste button visibility. It can be visible when,
|
|
336
|
+
* 1. The object page is editable AND
|
|
337
|
+
* 2. Either the table should be insertable OR updatable
|
|
338
|
+
* @param {object} oEntitySet Table's entity set info
|
|
339
|
+
* @returns {boolean|string} Returns a boolean value for visibility or binding expression
|
|
340
|
+
*/
|
|
341
|
+
function fnGetPasteButtonVisibility (oEntitySet) {
|
|
342
|
+
var vInsertRestriction = fnGetRestrictionForPaste(oEntitySet, "Insertable");
|
|
343
|
+
var vUpdateRestriction = fnGetRestrictionForPaste(oEntitySet, "Updatable");
|
|
344
|
+
|
|
345
|
+
// If both the restrictions are boolean and falsy, paste button should be hidden.
|
|
346
|
+
// Hence, immediately return false
|
|
347
|
+
if (!(vInsertRestriction || vUpdateRestriction)) {
|
|
348
|
+
return false;
|
|
367
349
|
}
|
|
368
350
|
|
|
369
|
-
|
|
370
|
-
|
|
351
|
+
// As we are going to combine insertable and updatable by OR condition, if there's any boolean value "true" found, it will be always evaluated to true
|
|
352
|
+
// Hence, no need to include them in the binding and just return the binding expression "ui>/editable"
|
|
353
|
+
var bAnyBooleanTrue = [vInsertRestriction, vUpdateRestriction].some(function (vRestriction) {
|
|
354
|
+
return vRestriction === true;
|
|
355
|
+
});
|
|
356
|
+
if (bAnyBooleanTrue) {
|
|
357
|
+
return "{ui>/editable}";
|
|
358
|
+
}
|
|
371
359
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
360
|
+
// Now the remaining cases are either
|
|
361
|
+
// 1. Both are path expressions or
|
|
362
|
+
// 2. One path expression and one boolean value "false"
|
|
363
|
+
//
|
|
364
|
+
// While building OR expression, "${expression} || false" will always be evaluated to "${expression}"
|
|
365
|
+
// Hence, we can omit the "false" values and build binding expression with "Path" values
|
|
366
|
+
var sPathRestriction = [vInsertRestriction, vUpdateRestriction].filter(function (vRestriction) {
|
|
367
|
+
return (typeof vRestriction === "string");
|
|
368
|
+
}).map(function (sPath) {
|
|
369
|
+
return "${" + sPath + "}";
|
|
370
|
+
}).join(" || ");
|
|
371
|
+
|
|
372
|
+
// Add "editable" with "path" expression
|
|
373
|
+
return "{= ${ui>/editable} && ( " + sPathRestriction + " )}";
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Checks the navigation restriction on the parent entity set or current entity set
|
|
378
|
+
* and returns the boolean value or path for the restriction
|
|
379
|
+
*
|
|
380
|
+
* 1. If NavigationRestriction is available on parent entity set
|
|
381
|
+
* a. Restricted by boolean value - returns the boolean value
|
|
382
|
+
* b. Restricted by path - Checks the data type of path and returns it
|
|
383
|
+
*
|
|
384
|
+
* 2. If Restriction is available on table's entity set
|
|
385
|
+
* a. Restricted by boolean value - returns the boolean value
|
|
386
|
+
* b. Restricted by path - ignores it
|
|
387
|
+
* Important: Reason for ignoring the path. As path value refers to the individual records on the table, it can't control the whole table's paste functionality
|
|
388
|
+
*
|
|
389
|
+
* 3. If no restriction available, returns true
|
|
390
|
+
*
|
|
391
|
+
* @param {object} oEntitySet Table's entity set info
|
|
392
|
+
* @param {string} sRestrictionType "Insertable" or "Updatable"
|
|
393
|
+
* @returns {boolean|string} Boolean value or path for the restriction
|
|
394
|
+
*/
|
|
395
|
+
function fnGetRestrictionForPaste (oEntitySet, sRestrictionType) {
|
|
396
|
+
var mAnnotation = {
|
|
397
|
+
Insertable: "Org.OData.Capabilities.V1.InsertRestrictions",
|
|
398
|
+
Updatable: "Org.OData.Capabilities.V1.UpdateRestrictions"
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
// Navigation restriction on parent entity set
|
|
402
|
+
var oLeadingEntitySet = oMetaModel.getODataEntitySet(sLeadingEntitySet);
|
|
403
|
+
var oNavRestriction = AnnotationHelper.handleNavigationRestrictions(oMetaModel, oLeadingEntitySet, oEntitySet, sRestrictionType);
|
|
404
|
+
var oNavRestrictionAnnotation = oNavRestriction && oNavRestriction[sRestrictionType];
|
|
405
|
+
|
|
406
|
+
// Restriction on table entity set
|
|
407
|
+
var oSectionRestriction = oEntitySet[mAnnotation[sRestrictionType]];
|
|
408
|
+
var oSectionRestrictionAnnotation = oSectionRestriction && oSectionRestriction[sRestrictionType];
|
|
409
|
+
|
|
410
|
+
// Check for navigation restriction
|
|
411
|
+
if (oNavRestrictionAnnotation) {
|
|
412
|
+
if (oNavRestrictionAnnotation.Bool) {
|
|
413
|
+
return oNavRestrictionAnnotation.Bool !== "false";
|
|
414
|
+
} else if (oNavRestrictionAnnotation.Path) {
|
|
415
|
+
var bIsBooleanPath = AnnotationHelper._isPropertyPathBoolean(oMetaModel, oLeadingEntitySet.entityType, oNavRestrictionAnnotation.Path);
|
|
416
|
+
if (!bIsBooleanPath) {
|
|
417
|
+
oLogger.error("Service Broken: Restrictions annotations for entity type " + sLeadingEntitySet + " for section '" + sRestrictionType + "' are invalid.");
|
|
418
|
+
return false;
|
|
419
|
+
}
|
|
420
|
+
return oNavRestrictionAnnotation.Path;
|
|
421
|
+
}
|
|
422
|
+
} else if (oSectionRestrictionAnnotation && oSectionRestrictionAnnotation.Bool) {
|
|
423
|
+
return oSectionRestrictionAnnotation.Bool !== "false";
|
|
377
424
|
}
|
|
378
|
-
return
|
|
425
|
+
// If no annotation found, return true
|
|
426
|
+
return true;
|
|
379
427
|
}
|
|
380
428
|
|
|
381
429
|
// used in the process of determining the visibility of export to excel and paste button depending on certain restrictions/conditions.
|
|
@@ -29,7 +29,10 @@
|
|
|
29
29
|
</SegmentedButton>
|
|
30
30
|
</template:then>
|
|
31
31
|
<template:else>
|
|
32
|
+
<core:InvisibleText id="{:= ${parameter>/stableId}.getStableId({type: 'ObjectPageTable', subType: 'InvisibleText', sFacet: ${facetId>id}})}"
|
|
33
|
+
text="{i18n>CONTENT_SWITCH}"/>
|
|
32
34
|
<Select id="{:= ${parameter>/stableId}.getStableId({type: 'ObjectPageTable', subType: 'VariantSelection', sFacet: ${facetId>id}})}"
|
|
35
|
+
ariaLabelledBy="{:= ${parameter>/stableId}.getStableId({type: 'ObjectPageTable', subType: 'InvisibleText', sFacet: ${facetId>id}})}"
|
|
33
36
|
selectedKey="{path: 'facet>', formatter: 'AHMultipleViews.getSelectedKeyBinding'}"
|
|
34
37
|
autoAdjustWidth="true"
|
|
35
38
|
forceSelection="true">
|