@sapui5/sap.suite.ui.generic.template 1.136.15 → 1.136.17
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/i18n/i18n_bg.properties +3 -3
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_da.properties +3 -3
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_id.properties +2 -2
- 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/IappStateHandler.js +2 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_de.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_id.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 +2 -2
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_de.properties +2 -2
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_id.properties +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pt.properties +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sl.properties +3 -3
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_uk.properties +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +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/genericUtilities/ControlStateWrapperFactory.js +12 -5
- package/src/sap/suite/ui/generic/template/genericUtilities/controlHelper.js +29 -29
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/PreliminaryWrapper.js +83 -76
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +9 -7
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/CRUDHelper.js +93 -55
- package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +4 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +2 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +1 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +5 -5
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +1 -1
- package/src/sap/suite/ui/generic/template/library.js +1 -1
package/package.json
CHANGED
|
@@ -104,11 +104,11 @@ CONTACT_FAX=\u0424\u0430\u043A\u0441
|
|
|
104
104
|
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
CONTAINER_VIEW_TABLE=\
|
|
107
|
+
CONTAINER_VIEW_TABLE=\u0422\u0430\u0431\u043B\u0438\u0447\u0435\u043D \u0438\u0437\u0433\u043B\u0435\u0434
|
|
108
108
|
|
|
109
|
-
CONTAINER_VIEW_CHART=\
|
|
109
|
+
CONTAINER_VIEW_CHART=\u0414\u0438\u0430\u0433\u0440\u0430\u043C\u0435\u043D \u0438\u0437\u0433\u043B\u0435\u0434
|
|
110
110
|
|
|
111
|
-
CONTAINER_VIEW_CHARTTABLE=\
|
|
111
|
+
CONTAINER_VIEW_CHARTTABLE=\u0418\u0437\u0433\u043B\u0435\u0434 \u043D\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043C\u0430 \u0438 \u0442\u0430\u0431\u043B\u0438\u0446\u0430
|
|
112
112
|
|
|
113
113
|
CONTAINER_VIEW_CROSSTAB=\u0410\u0441\u043F\u0435\u043A\u0442 \u0437\u0430 \u0432\u0441\u0438\u0447\u043A\u0438 \u0442\u0430\u0431\u043B\u0438\u0446\u0438
|
|
114
114
|
|
|
@@ -104,11 +104,11 @@ CONTACT_FAX=Fax
|
|
|
104
104
|
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
CONTAINER_VIEW_TABLE=
|
|
107
|
+
CONTAINER_VIEW_TABLE=Tabelvisning
|
|
108
108
|
|
|
109
|
-
CONTAINER_VIEW_CHART=
|
|
109
|
+
CONTAINER_VIEW_CHART=Diagramvisning
|
|
110
110
|
|
|
111
|
-
CONTAINER_VIEW_CHARTTABLE=Diagram- og
|
|
111
|
+
CONTAINER_VIEW_CHARTTABLE=Diagram- og tabelvisning
|
|
112
112
|
|
|
113
113
|
CONTAINER_VIEW_CROSSTAB=Krydstabelview
|
|
114
114
|
|
|
@@ -63,9 +63,9 @@ VISUAL_FILTER_CHART_TYPE_Donut=Bagan Donat
|
|
|
63
63
|
|
|
64
64
|
VISUAL_FILTER_SORTING=Pengurutan
|
|
65
65
|
|
|
66
|
-
VISUAL_FILTER_SORTING_ASCENDING=
|
|
66
|
+
VISUAL_FILTER_SORTING_ASCENDING=Menaik
|
|
67
67
|
|
|
68
|
-
VISUAL_FILTER_SORTING_DESCENDING=
|
|
68
|
+
VISUAL_FILTER_SORTING_DESCENDING=Menurun
|
|
69
69
|
|
|
70
70
|
VISUAL_FILTER_LINE_CHART_TIME_LINE=Tampilkan
|
|
71
71
|
|
|
@@ -223,7 +223,8 @@ sap.ui.define([
|
|
|
223
223
|
var oSmartVariantManagement = oState.oSmartFilterbar.getSmartVariant();
|
|
224
224
|
if (oSmartVariantManagement){
|
|
225
225
|
var oSmartVariantManagementWrapper = oTemplateUtils.oCommonUtils.getControlStateWrapper(oSmartVariantManagement, {
|
|
226
|
-
managedControlWrappers: aPageVariantControlStateWrappers.concat([oSmartFilterBarWrapper])
|
|
226
|
+
managedControlWrappers: aPageVariantControlStateWrappers.concat([oSmartFilterBarWrapper]),
|
|
227
|
+
smartFilterBarWrapper: oSmartFilterBarWrapper
|
|
227
228
|
});
|
|
228
229
|
aControlStateWrappers.push(oSmartVariantManagementWrapper);
|
|
229
230
|
} else {
|
|
@@ -96,7 +96,7 @@ LOCKED_OBJECT_FILTER=Dikunci oleh Pengguna Lain
|
|
|
96
96
|
|
|
97
97
|
UNSAVED_CHANGES=Perubahan Belum Disimpan
|
|
98
98
|
|
|
99
|
-
UNSAVED_CHANGES_FILTER=Perubahan oleh Pengguna Lain
|
|
99
|
+
UNSAVED_CHANGES_FILTER=Perubahan yang Belum Disimpan oleh Pengguna Lain
|
|
100
100
|
|
|
101
101
|
SHARE=Bagikan
|
|
102
102
|
|
|
@@ -1457,7 +1457,7 @@ sap.ui.define([
|
|
|
1457
1457
|
return null;
|
|
1458
1458
|
}
|
|
1459
1459
|
if (controlHelper.isSmartField(oControl)){ // check whether the SmartField is the correct target for focussing
|
|
1460
|
-
return controlHelper.getSmartFieldIsFocussableForInputPromise(oControl).then(function(bIsFocussable){
|
|
1460
|
+
return controlHelper.getSmartFieldIsFocussableForInputPromise(oControl, true).then(function(bIsFocussable){
|
|
1461
1461
|
return bIsFocussable && oControl; // If the SmartField has turned out to be focussable take it. Otherwise no need to investigate the subtree below it.
|
|
1462
1462
|
});
|
|
1463
1463
|
}
|
|
@@ -1517,7 +1517,7 @@ sap.ui.define([
|
|
|
1517
1517
|
//set the focus on the control passed by application
|
|
1518
1518
|
if (controlHelper.isSmartField(oFocusControl)) {
|
|
1519
1519
|
// check whether the SmartField is the correct target for focussing
|
|
1520
|
-
controlHelper.getSmartFieldIsFocussableForInputPromise(oFocusControl).then(function (bIsFocusable) {
|
|
1520
|
+
controlHelper.getSmartFieldIsFocussableForInputPromise(oFocusControl, true).then(function (bIsFocusable) {
|
|
1521
1521
|
if (bIsFocusable) {
|
|
1522
1522
|
controlHelper.focusUI5Control(oFocusControl);
|
|
1523
1523
|
} else {
|
|
@@ -5,7 +5,7 @@ DESCRIPTION=Stran objekta
|
|
|
5
5
|
|
|
6
6
|
EDIT=Obdelava
|
|
7
7
|
|
|
8
|
-
CREATE_OBJECT=
|
|
8
|
+
CREATE_OBJECT=Kreiraj
|
|
9
9
|
|
|
10
10
|
DISPLAY_ACTIVE_VERSION=Prikaz shranjene verzije
|
|
11
11
|
|
|
@@ -23,7 +23,7 @@ SAVE_AND_NEXT=Shrani in naprej
|
|
|
23
23
|
|
|
24
24
|
VALIDATE_DRAFT=Validacija
|
|
25
25
|
|
|
26
|
-
CREATE=
|
|
26
|
+
CREATE=Kreiraj
|
|
27
27
|
|
|
28
28
|
CLOSE=Zapiranje
|
|
29
29
|
|
|
@@ -33,7 +33,7 @@ ADD=Dodajanje
|
|
|
33
33
|
|
|
34
34
|
SEG_BUTTON_TEXT={0} ({1})
|
|
35
35
|
|
|
36
|
-
CREATE_DRAFT_MESSAGE_TEXT=
|
|
36
|
+
CREATE_DRAFT_MESSAGE_TEXT=Kreirajte objekt.
|
|
37
37
|
|
|
38
38
|
SAVE_DRAFT_MESSAGE_TEXT=Uporabite spremembe za shranjeno verzijo.
|
|
39
39
|
|
|
@@ -19,7 +19,7 @@ SAVE=\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438
|
|
|
19
19
|
|
|
20
20
|
SAVE_AND_EDIT=\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0456 \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438
|
|
21
21
|
|
|
22
|
-
SAVE_AND_NEXT=\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \
|
|
22
|
+
SAVE_AND_NEXT=\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0442\u0430 \u0434\u0430\u043B\u0456
|
|
23
23
|
|
|
24
24
|
VALIDATE_DRAFT=\u041F\u0435\u0440\u0435\u0432\u0456\u0440\u0438\u0442\u0438
|
|
25
25
|
|
|
@@ -93,15 +93,16 @@ sap.ui.define([
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
/**
|
|
96
|
-
* Private helper function to create the real wrapper based on
|
|
96
|
+
* Private helper function to create the real wrapper based on type and control.
|
|
97
97
|
* This function is injected into PreliminaryWrapper and not exposed in the factory's public API.
|
|
98
|
+
* Parameters are ordered to allow using .bind() for partial application.
|
|
98
99
|
*
|
|
99
|
-
* @param {sap.ui.core.Control} oControl - The control instance
|
|
100
100
|
* @param {string} sType - The type of control (e.g., "SmartTable", "SmartChart")
|
|
101
101
|
* @param {object} [mParams] - Additional parameters passed to constructor of wrapper
|
|
102
|
+
* @param {sap.ui.core.Control} oControl - The control instance (last to enable .bind())
|
|
102
103
|
* @return {object} The real wrapper object for the control with helper methods attached
|
|
103
104
|
*/
|
|
104
|
-
function fnCreateRealWrapper(
|
|
105
|
+
function fnCreateRealWrapper(sType, mParams, oControl) {
|
|
105
106
|
var oWrapper;
|
|
106
107
|
switch (sType) {
|
|
107
108
|
case "SmartFilterBar":
|
|
@@ -190,8 +191,11 @@ sap.ui.define([
|
|
|
190
191
|
return oDummyWrapper;
|
|
191
192
|
}
|
|
192
193
|
|
|
194
|
+
// Create bound function with type and params, leaving oControl to be provided later
|
|
195
|
+
var fnBoundCreator = fnCreateRealWrapper.bind(null, sType, mParams);
|
|
196
|
+
|
|
193
197
|
// Always create a PreliminaryWrapper
|
|
194
|
-
var oPreliminaryWrapper = new PreliminaryWrapper(sId,
|
|
198
|
+
var oPreliminaryWrapper = new PreliminaryWrapper(sId, fnBoundCreator);
|
|
195
199
|
|
|
196
200
|
// Since control is available, immediately set it
|
|
197
201
|
oPreliminaryWrapper.setControl(oControl);
|
|
@@ -225,8 +229,11 @@ sap.ui.define([
|
|
|
225
229
|
}
|
|
226
230
|
var sId = oController.getView().getLocalId(sControlId);
|
|
227
231
|
if (!mWrappers[sId]) {
|
|
232
|
+
// Create bound function with type and params, leaving oControl to be provided later
|
|
233
|
+
var fnBoundCreator = fnCreateRealWrapper.bind(null, sControlType, mParams);
|
|
234
|
+
|
|
228
235
|
// Create a PreliminaryWrapper (control will be set later)
|
|
229
|
-
var oPreliminaryWrapper = new PreliminaryWrapper(sId,
|
|
236
|
+
var oPreliminaryWrapper = new PreliminaryWrapper(sId, fnBoundCreator);
|
|
230
237
|
|
|
231
238
|
mWrappers[sId] = oPreliminaryWrapper;
|
|
232
239
|
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
sap.ui.define([
|
|
2
|
-
"sap/ui/dom/getFirstEditableInput",
|
|
2
|
+
"sap/ui/dom/getFirstEditableInput",
|
|
3
3
|
"sap/suite/ui/generic/template/genericUtilities/FeLogger",
|
|
4
4
|
"sap/ui/core/Element",
|
|
5
5
|
"sap/ui/table/plugins/MultiSelectionPlugin"
|
|
6
6
|
], function(getFirstEditableInput, FeLogger, Element, MultiSelectionPlugin) {
|
|
7
7
|
"use strict";
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
var oFeLogger = new FeLogger("genericUtilities.controlHelper");
|
|
10
10
|
var oLogger = oFeLogger.getLogger();
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
var byId = Element.getElementById;
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
function isControlOfType(sPathToType, oControl){
|
|
15
15
|
var FNClass = sap.ui.require(sPathToType);
|
|
16
16
|
return typeof FNClass === "function" && (oControl instanceof FNClass);
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
function getUI5ControlForDomElement(oDom){
|
|
20
20
|
for (; oDom; oDom = oDom.parentNode) {
|
|
21
21
|
if (oDom.hasAttribute && oDom.hasAttribute("data-sap-ui")) {
|
|
22
22
|
return byId(oDom.id);
|
|
23
23
|
}
|
|
24
|
-
}
|
|
24
|
+
}
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
function focusUI5Control(oControl, oFocusInfo){
|
|
28
28
|
if (oControl && oControl.focus) {
|
|
29
29
|
oLogger.debug("Set focus on control with id " + oControl.getId());
|
|
@@ -50,9 +50,9 @@ sap.ui.define([
|
|
|
50
50
|
if (oTest !== oControl){
|
|
51
51
|
oLogger.warning(oCurrentFocus ? ("Focus is now on control with id " + oCurrentFocus.getId()) : "There is no focus now");
|
|
52
52
|
}
|
|
53
|
-
}
|
|
53
|
+
}
|
|
54
54
|
}
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
function focusDom(oDom, oFocusInfo){
|
|
57
57
|
var oUi5Control = getUI5ControlForDomElement(oDom);
|
|
58
58
|
focusUI5Control(oUi5Control, oFocusInfo);
|
|
@@ -64,12 +64,12 @@ sap.ui.define([
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
// returns a Promise that resolves to the boolean information whether the SmartField is a possible focus target for input.
|
|
67
|
-
function getSmartFieldIsFocussableForInputPromise(oSmartField) {
|
|
67
|
+
function getSmartFieldIsFocussableForInputPromise(oSmartField, isSmartForm) {
|
|
68
68
|
return oSmartField._getComputedMetadata().then(function () {
|
|
69
69
|
return (oSmartField.getMode() === "edit") && (oSmartField._getICRenderedPromise() || Promise.resolve());
|
|
70
70
|
}).then(function () {
|
|
71
|
-
var oFirstFocusableInput = !oSmartField._bEdmBoolDetected && getFirstEditableInput(oSmartField.getDomRef());
|
|
72
|
-
return !(!oFirstFocusableInput || oFirstFocusableInput.type === "checkbox");
|
|
71
|
+
var oFirstFocusableInput = (!oSmartField._bEdmBoolDetected || isSmartForm) && getFirstEditableInput(oSmartField.getDomRef());
|
|
72
|
+
return !(!oFirstFocusableInput || (oFirstFocusableInput.type === "checkbox" && !isSmartForm));
|
|
73
73
|
}).catch(function () {
|
|
74
74
|
return false;
|
|
75
75
|
});
|
|
@@ -80,12 +80,12 @@ sap.ui.define([
|
|
|
80
80
|
function getControlWithFocus(){
|
|
81
81
|
return getUI5ControlForDomElement(document.activeElement);
|
|
82
82
|
}
|
|
83
|
-
|
|
83
|
+
|
|
84
84
|
// Returns the parent of a given sap.ui.core.Element, but considers that for Components the parent is to be found via the oContainer property.
|
|
85
85
|
function getParent(oElement){
|
|
86
86
|
return oElement.getParent() || oElement.oContainer;
|
|
87
87
|
}
|
|
88
|
-
|
|
88
|
+
|
|
89
89
|
// If oChild is identified to be invisible, null is returned. Otherwise its parent is returned.
|
|
90
90
|
// If the parent does not exist a faulty value is returned.
|
|
91
91
|
// This is a heuristic method.
|
|
@@ -111,7 +111,7 @@ sap.ui.define([
|
|
|
111
111
|
}
|
|
112
112
|
return vRet;
|
|
113
113
|
}
|
|
114
|
-
|
|
114
|
+
|
|
115
115
|
// Return a list of all children of the given control (in the 'correct' order). Only implemented for certain control types.
|
|
116
116
|
// For the other control types it returns null or an empty array depending on bAlwaysReturnAList.
|
|
117
117
|
function getChildren(oControl, bAlwaysReturnAList){
|
|
@@ -125,7 +125,7 @@ sap.ui.define([
|
|
|
125
125
|
return oControl.getBlocks().concat(oControl.getMoreBlocks());
|
|
126
126
|
}
|
|
127
127
|
if (isControlOfType("sap/ui/comp/smartform/Group", oControl)){
|
|
128
|
-
return oControl.getFormElements();
|
|
128
|
+
return oControl.getFormElements();
|
|
129
129
|
}
|
|
130
130
|
if (isControlOfType("sap/ui/table/Column", oControl)){
|
|
131
131
|
var aRet = oControl.getMultiLabels();
|
|
@@ -133,11 +133,11 @@ sap.ui.define([
|
|
|
133
133
|
if (oLabel){
|
|
134
134
|
aRet.push(oLabel);
|
|
135
135
|
}
|
|
136
|
-
return aRet;
|
|
137
|
-
}
|
|
136
|
+
return aRet;
|
|
137
|
+
}
|
|
138
138
|
return bAlwaysReturnAList ? [] : null;
|
|
139
139
|
}
|
|
140
|
-
|
|
140
|
+
|
|
141
141
|
// Sorter that compares the position of two child controls which have a common parent.
|
|
142
142
|
// Returns a positive integer when oChild1 is larger, a negative number if oChild2 is larger, and 0 if they are identical.
|
|
143
143
|
// Depends on getChildren() being implemented for commonParent. If this is not the case, at least a reproducable order is guaranteed.
|
|
@@ -158,13 +158,13 @@ sap.ui.define([
|
|
|
158
158
|
}
|
|
159
159
|
if (iPositionCompare & Node.DOCUMENT_POSITION_FOLLOWING){
|
|
160
160
|
return -1;
|
|
161
|
-
}
|
|
161
|
+
}
|
|
162
162
|
}
|
|
163
163
|
return 1 - 2 * (!oDomRef1 === !oDomRef2 ? oChild1.getId() < oChild2.getId() : !oDomRef2); // if we cannot determine a reasonable order we still want to have a reproducable order. Note that elements with DomRef must clearly be separated from those without.
|
|
164
164
|
}
|
|
165
165
|
return (iPos1 >= 0 && iPos2 >= 0) ? (iPos1 - iPos2) : (iPos2 - iPos1); // if only one child has been identified in the list of children it takes precedence.
|
|
166
166
|
}
|
|
167
|
-
|
|
167
|
+
|
|
168
168
|
// This function defines which instances of sap.ui.core.Element are relevant for investigation (Currently used in fnSearchInTree).
|
|
169
169
|
// They must posess a property 'visible' (which is guaranteed for all instances of sap.ui.core.Control) which is true.
|
|
170
170
|
// If they have a property 'enabled' this must be true as well.
|
|
@@ -174,7 +174,7 @@ sap.ui.define([
|
|
|
174
174
|
return checkForRelevance(oCell);
|
|
175
175
|
}) : (typeof oElement.getVisible === "function" && oElement.getVisible() && (typeof oElement.getEnabled !== "function" || oElement.getEnabled()));
|
|
176
176
|
}
|
|
177
|
-
|
|
177
|
+
|
|
178
178
|
// This function allows a depth-first search in an element tree starting with root oElement
|
|
179
179
|
// Thereby, the following logic is applied
|
|
180
180
|
// - Children of an element are determined by function getChildren in this class. If this provides an empty array method findElements of the element is used
|
|
@@ -186,14 +186,14 @@ sap.ui.define([
|
|
|
186
186
|
// Note that mAlreadyAnalyzed will be updated by this function
|
|
187
187
|
// fnHandleElement(oElement) is a function that will be called on all relevant elements of the tree.
|
|
188
188
|
// This function can work asynchronously (i.e. return a Promise) or synchronously (i.e. return something which is not a Promise) on a case-by-case basis.
|
|
189
|
-
// In the second case the return value will be considered as the result of the function. In the first case the value the Promise resolves to will be considered as the result.
|
|
189
|
+
// In the second case the return value will be considered as the result of the function. In the first case the value the Promise resolves to will be considered as the result.
|
|
190
190
|
// If the result is a truthy value for one element this value is considered as the result of fnSearchInTree and the processing is stopped.
|
|
191
191
|
// fnSearchInTree returns this result synchronously if all calls of fnHandleElement which have been performed until then have worked synchronously.
|
|
192
192
|
// If the result of fnHandleElement is faulty the depth-first search of the tree proceeds. Thereby the processing of the subtree of oElement is
|
|
193
193
|
// skipped if the result was exactly false. For other faulty values the subtree will be processed next.
|
|
194
194
|
// Note that this process will never work on two elements in parallel. If the processing of one element is asynchronous the process is interrupted until
|
|
195
195
|
// the result of this step is available. Only then the next element will be analyzed.
|
|
196
|
-
// If fnHandleElement never results in a truthy value then fnSearchInTree results in null.
|
|
196
|
+
// If fnHandleElement never results in a truthy value then fnSearchInTree results in null.
|
|
197
197
|
function fnSearchInTree(mAlreadyAnalyzed, oElement, fnHandleElement){
|
|
198
198
|
mAlreadyAnalyzed = mAlreadyAnalyzed || Object.create(null);
|
|
199
199
|
var sId = oElement.getId();
|
|
@@ -211,7 +211,7 @@ sap.ui.define([
|
|
|
211
211
|
if (!aChildren){ // if getChildren does not care for the control type of oElement
|
|
212
212
|
aChildren = oElement.findElements(false);
|
|
213
213
|
aChildren.sort(fnSortChildControls.bind(null, oElement));
|
|
214
|
-
}
|
|
214
|
+
}
|
|
215
215
|
aChildren.some(function(oChild){
|
|
216
216
|
vResult = fnSearchInTree(mAlreadyAnalyzed, oChild, fnHandleElement);
|
|
217
217
|
return vResult; // If vResult is truthy it is either a Promise (which makes the processing asynchronous) or the result of fnSearchInTree. In both cases we should stop now.
|
|
@@ -231,12 +231,12 @@ sap.ui.define([
|
|
|
231
231
|
}
|
|
232
232
|
// When coming here we have synchronously either found a node with a truthy result or have processed the whole tree without finding any truthy result
|
|
233
233
|
mAlreadyAnalyzed[sId] = 2;
|
|
234
|
-
return vResult || null;
|
|
234
|
+
return vResult || null;
|
|
235
235
|
}
|
|
236
236
|
|
|
237
237
|
/**
|
|
238
238
|
* Returns the selection plugin for the given UI table
|
|
239
|
-
* @param {sap.ui.table.Table} oUiTable
|
|
239
|
+
* @param {sap.ui.table.Table} oUiTable
|
|
240
240
|
* @returns {sap.ui.table.plugins.MultiSelectionPlugin|undefined}
|
|
241
241
|
*/
|
|
242
242
|
function fnGetSelectionPluginForUITable (oUiTable) {
|
|
@@ -284,10 +284,10 @@ sap.ui.define([
|
|
|
284
284
|
searchInTree: fnSearchInTree.bind(null, null),
|
|
285
285
|
getSelectionPluginForUITable: fnGetSelectionPluginForUITable
|
|
286
286
|
};
|
|
287
|
-
|
|
287
|
+
|
|
288
288
|
oControlHelper.isTable = function(oControl){
|
|
289
289
|
return oControlHelper.isSmartTable(oControl) || oControlHelper.isUiTable(oControl) || oControlHelper.isMTable(oControl);
|
|
290
290
|
};
|
|
291
|
-
|
|
291
|
+
|
|
292
292
|
return oControlHelper;
|
|
293
293
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
sap.ui.define([
|
|
2
|
-
|
|
2
|
+
"sap/base/util/extend"
|
|
3
|
+
], function(extend) {
|
|
3
4
|
"use strict";
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -11,13 +12,10 @@ sap.ui.define([
|
|
|
11
12
|
* real wrapper once the control is assigned via setControl().
|
|
12
13
|
*
|
|
13
14
|
* @param {string} sId - The local ID of the control
|
|
14
|
-
* @param {
|
|
15
|
-
* @param {function} fnCreateRealWrapper - Function to create the real wrapper, injected by factory
|
|
16
|
-
* @param {object} oController - The controller instance
|
|
17
|
-
* @param {object} mParams - Additional parameters to pass to the real wrapper constructor
|
|
15
|
+
* @param {function} fnCreateRealWrapper - Function to create the real wrapper, bound with type and params
|
|
18
16
|
* @returns {object} Preliminary wrapper object that will delegate to real wrapper once control is set
|
|
19
17
|
*/
|
|
20
|
-
function PreliminaryWrapper(sId,
|
|
18
|
+
function PreliminaryWrapper(sId, fnCreateRealWrapper) {
|
|
21
19
|
var oLatestState;
|
|
22
20
|
var oRealWrapper;
|
|
23
21
|
var fnResolveRealWrapperReady;
|
|
@@ -25,7 +23,7 @@ sap.ui.define([
|
|
|
25
23
|
fnResolveRealWrapperReady = resolve;
|
|
26
24
|
});
|
|
27
25
|
|
|
28
|
-
|
|
26
|
+
var oPublicInterface = {
|
|
29
27
|
/**
|
|
30
28
|
* Get the current state. Returns stored state before control is set,
|
|
31
29
|
* delegates to real wrapper afterwards.
|
|
@@ -48,55 +46,62 @@ sap.ui.define([
|
|
|
48
46
|
}
|
|
49
47
|
},
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Assign the actual control and create the real wrapper.
|
|
51
|
+
* This triggers the creation of the real wrapper, applies any stored state,
|
|
52
|
+
* extends the preliminary wrapper with all methods from the real wrapper,
|
|
53
|
+
* and resolves the promise that queues event handler attachments.
|
|
54
|
+
* @param {sap.ui.core.Control} oControl - The control instance
|
|
55
|
+
*/
|
|
56
|
+
setControl: function(oControl) {
|
|
57
|
+
// Create the real wrapper using bound function (already has type and params bound)
|
|
58
|
+
var oCreatedWrapper = fnCreateRealWrapper(oControl);
|
|
59
|
+
|
|
60
|
+
// Check if wrapper needs time to initialize
|
|
61
|
+
var oWrapperReadyPromise = oCreatedWrapper.oReadyPromise || Promise.resolve();
|
|
62
|
+
|
|
63
|
+
// Wait for wrapper to be ready before setting oRealWrapper
|
|
64
|
+
oWrapperReadyPromise.then(function() {
|
|
65
|
+
oRealWrapper = oCreatedWrapper;
|
|
66
|
+
|
|
67
|
+
// Apply stored state if any
|
|
68
|
+
if (oLatestState !== undefined) {
|
|
69
|
+
oRealWrapper.setState(oLatestState);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Extend the preliminary wrapper with all properties from the real wrapper
|
|
73
|
+
// This makes any additional methods (like setSVMWrapperCallbacks) available
|
|
74
|
+
// The nested extend ensures we keep our proxy methods (getState, setState, etc.)
|
|
75
|
+
// while adding new methods from the real wrapper
|
|
76
|
+
extend(oPublicInterface, extend({}, oRealWrapper, oPublicInterface));
|
|
77
|
+
|
|
78
|
+
// Resolve the promise - this triggers all queued attachStateChanged calls
|
|
79
|
+
fnResolveRealWrapperReady(oRealWrapper);
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Attach a state change handler. Uses promise to queue attachment
|
|
85
|
+
* until the real wrapper is available and ready.
|
|
86
|
+
* @param {function} fnHandler - The event handler function
|
|
87
|
+
*/
|
|
88
|
+
attachStateChanged: function(fnHandler) {
|
|
89
|
+
// Use promise to defer attachment until real wrapper is available and ready
|
|
90
|
+
oRealWrapperReadyPromise.then(function(oWrapper) {
|
|
91
|
+
oWrapper.attachStateChanged(fnHandler);
|
|
92
|
+
});
|
|
93
|
+
},
|
|
72
94
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
attachStateChanged: function(fnHandler) {
|
|
84
|
-
// Use promise to defer attachment until real wrapper is available and ready
|
|
85
|
-
oRealWrapperReadyPromise.then(function(oWrapper) {
|
|
86
|
-
oWrapper.attachStateChanged(fnHandler);
|
|
87
|
-
});
|
|
88
|
-
},
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Detach a state change handler. Forwards to real wrapper once available and ready.
|
|
92
|
-
* @param {function} fnHandler - The event handler function to detach
|
|
93
|
-
*/
|
|
94
|
-
detachStateChanged: function(fnHandler) {
|
|
95
|
-
// Forward to real wrapper once available and ready
|
|
96
|
-
oRealWrapperReadyPromise.then(function(oWrapper) {
|
|
97
|
-
oWrapper.detachStateChanged(fnHandler);
|
|
98
|
-
});
|
|
99
|
-
},
|
|
95
|
+
/**
|
|
96
|
+
* Detach a state change handler. Forwards to real wrapper once available and ready.
|
|
97
|
+
* @param {function} fnHandler - The event handler function to detach
|
|
98
|
+
*/
|
|
99
|
+
detachStateChanged: function(fnHandler) {
|
|
100
|
+
// Forward to real wrapper once available and ready
|
|
101
|
+
oRealWrapperReadyPromise.then(function(oWrapper) {
|
|
102
|
+
oWrapper.detachStateChanged(fnHandler);
|
|
103
|
+
});
|
|
104
|
+
},
|
|
100
105
|
|
|
101
106
|
/**
|
|
102
107
|
* Get the local ID of the control.
|
|
@@ -116,28 +121,30 @@ sap.ui.define([
|
|
|
116
121
|
JSON.stringify(oState) === JSON.stringify(oLatestState);
|
|
117
122
|
},
|
|
118
123
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
124
|
+
/**
|
|
125
|
+
* Called after variant is initialized (for SmartTable/SmartChart wrappers).
|
|
126
|
+
* Delegates to real wrapper once control is set and ready.
|
|
127
|
+
* Note: When this is called, the control always exists (event fired by control),
|
|
128
|
+
* so the promise will already be resolved.
|
|
129
|
+
*/
|
|
130
|
+
onAfterVariantInitialise: function() {
|
|
131
|
+
oRealWrapperReadyPromise.then(function(oWrapper) {
|
|
132
|
+
if (oWrapper.onAfterVariantInitialise) {
|
|
133
|
+
oWrapper.onAfterVariantInitialise();
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
},
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Promise that resolves to the bVMConnection flag value once the real wrapper is ready.
|
|
140
|
+
* This indicates whether the control is connected to page-wide variant management.
|
|
141
|
+
*/
|
|
142
|
+
oVMConnectionPromise: oRealWrapperReadyPromise.then(function(oWrapper) {
|
|
143
|
+
return oWrapper.bVMConnection;
|
|
144
|
+
})
|
|
140
145
|
};
|
|
146
|
+
|
|
147
|
+
return oPublicInterface;
|
|
141
148
|
}
|
|
142
149
|
|
|
143
150
|
return PreliminaryWrapper;
|
|
@@ -9,7 +9,7 @@ sap.ui.define([
|
|
|
9
9
|
* @param {object} oFactory - the controlStateWrapperFactory
|
|
10
10
|
* @param {object} mParams
|
|
11
11
|
* @param {array} mParams.managedControlWrappers - array of controlStateWrappers for controls handled by the SVM
|
|
12
|
-
*
|
|
12
|
+
* @param {object} mParams.smartFilterBarWrapper - explicit reference to SmartFilterBarWrapper for special handling
|
|
13
13
|
* @returns {object}
|
|
14
14
|
*/
|
|
15
15
|
|
|
@@ -53,13 +53,15 @@ sap.ui.define([
|
|
|
53
53
|
});
|
|
54
54
|
});
|
|
55
55
|
|
|
56
|
+
// Get SmartFilterBarWrapper explicitly from params.
|
|
57
|
+
// This connection is needed because SmartFilterBar provides special callbacks to store/restore state
|
|
58
|
+
// for controls that don't have a direct variant management connection (bVMConnection = false), such as:
|
|
59
|
+
// - Extension filters (custom filters added via app or adaptation extensions)
|
|
60
|
+
// - Multiple views state (selected tab in multi-table/chart scenarios)
|
|
61
|
+
// These controls need their state saved/restored with variants via the SFB's beforeVariantFetch/afterVariantLoad events.
|
|
62
|
+
var oSmartFilterBarWrapper = mParams.smartFilterBarWrapper;
|
|
56
63
|
|
|
57
|
-
|
|
58
|
-
var oSmartFilterBarWrapper = mParams.managedControlWrappers.find(function(oWrapper){
|
|
59
|
-
return oWrapper.setSVMWrapperCallbacks;
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
// provide callbacks needed for SFB wrapper to store/restore extension state with variant
|
|
64
|
+
// Provide callbacks needed for SFB wrapper to store/restore extension state with variant
|
|
63
65
|
if (oSmartFilterBarWrapper){
|
|
64
66
|
// Build array with wrapper + bVMConnection info once all wrappers are ready
|
|
65
67
|
Promise.all(mParams.managedControlWrappers.map(function(oWrapper){
|
|
@@ -964,7 +964,7 @@ sap.ui.define([
|
|
|
964
964
|
* @public
|
|
965
965
|
* @extends sap.ui.core.UIComponent
|
|
966
966
|
* @author SAP SE
|
|
967
|
-
* @version 1.136.
|
|
967
|
+
* @version 1.136.17
|
|
968
968
|
* @name sap.suite.ui.generic.template.lib.AppComponent
|
|
969
969
|
*/
|
|
970
970
|
var oAppComponent = UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
|
|
@@ -333,67 +333,105 @@ sap.ui.define(["sap/ui/model/Context", "sap/suite/ui/generic/template/lib/Messag
|
|
|
333
333
|
}
|
|
334
334
|
|
|
335
335
|
/*
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
336
|
+
* Initiates editing of a list entry directly (without navigating to the object page first).
|
|
337
|
+
* Unlike the 'edit' method above, the first editEntity call uses preserveChanges=true.
|
|
338
|
+
* If the backend responds with a 409 (conflict) the DraftAdministrativeData is read to
|
|
339
|
+
* distinguish between a locked record and a record with unsaved changes by another user.
|
|
340
|
+
* A corresponding dialog is shown to let the user decide how to proceed.
|
|
341
|
+
*
|
|
342
|
+
* @param {object} oTransactionController - transaction controller providing editEntity
|
|
343
|
+
* @param {string} sEntitySet - name of the entity set
|
|
344
|
+
* @param {object} oBindingContext - UI5 Context of the row being edited;
|
|
345
|
+
* the OData model and binding path are derived
|
|
346
|
+
* from it via .getModel() / .getPath()
|
|
347
|
+
* @param {object} oApplication - application proxy (busy helper, component utils, …)
|
|
348
|
+
* @param {string} sAppId - ID of the AppComponent; used as the localStorage cache
|
|
349
|
+
* key for the content-id batch optimisation
|
|
350
|
+
* @param {object} oCommonUtils - common utilities (getText, …)
|
|
351
|
+
* @param {object} oViewDependencyHelper - used to mark the root page as dirty
|
|
352
|
+
* @param {object} oViewProxy - used for navigateUp on cancellation
|
|
353
|
+
* @param {boolean} bOpenInEditMode - whether the page was opened directly in edit mode
|
|
354
|
+
*/
|
|
355
|
+
function directEdit(oTransactionController, sEntitySet, oBindingContext, oApplication, sAppId, oCommonUtils, oViewDependencyHelper, oViewProxy, bOpenInEditMode){
|
|
340
356
|
var oDraftContext = oTransactionController.getDraftController().getDraftContext();
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
});
|
|
374
|
-
var unSavedChangesDialogPromise = fnUnsavedChangesDialog(undefined, oResponse.DraftAdministrativeData,oCommonUtils, oViewProxy, bOpenInEditMode);
|
|
375
|
-
unSavedChangesDialogPromise.then(editConfirmation,editRejection);
|
|
376
|
-
}
|
|
377
|
-
},
|
|
378
|
-
function(oResponse) {
|
|
379
|
-
// DraftAdminData read failed
|
|
357
|
+
|
|
358
|
+
if (!oDraftContext.isDraftEnabled(sEntitySet)) {
|
|
359
|
+
return Promise.resolve({ context: oBindingContext });
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
var oModel = oBindingContext.getModel();
|
|
363
|
+
// Fetch sRootExpand for the content-id batch optimisation.
|
|
364
|
+
// getRootExpand is intentionally not provided: directEdit is always invoked from
|
|
365
|
+
// the List Report before the Object Page is active, so getRootExpand is not yet
|
|
366
|
+
// available. CacheHelper falls back to the localStorage cache, which is still
|
|
367
|
+
// much faster than fetching expands in a separate backend request.
|
|
368
|
+
var oInfoForContentIdPromise = CacheHelper.getInfoForContentIdPromise(sEntitySet, oModel, sAppId);
|
|
369
|
+
|
|
370
|
+
var oRet = oInfoForContentIdPromise.then(function(oInfoObject) {
|
|
371
|
+
var sRootExpand = oInfoObject.contentIdRequestPossible ? oInfoObject.parametersForContentIdRequest.sRootExpand : null;
|
|
372
|
+
|
|
373
|
+
return new Promise(function(resolve, reject) {
|
|
374
|
+
var oFirstEditPromise = oTransactionController.editEntity(oBindingContext, true, sRootExpand);
|
|
375
|
+
// Track the busy state against the individual network request so the busy
|
|
376
|
+
// indicator remains active for exactly as long as the request is in flight.
|
|
377
|
+
oApplication.getBusyHelper().setBusy(oFirstEditPromise, true);
|
|
378
|
+
oFirstEditPromise.then(function(oResponse) {
|
|
379
|
+
oModel.invalidateEntry(oBindingContext);
|
|
380
|
+
oViewDependencyHelper.setRootPageToDirty();
|
|
381
|
+
resolve({ context: oResponse.context });
|
|
382
|
+
}, function(oResponse) {
|
|
383
|
+
if (oResponse && oResponse.response && oResponse.response.statusCode === "409") {
|
|
384
|
+
//remove transient message associated with rc 409 in order to prevent message pop-up
|
|
385
|
+
oApplication.removeTransientMessages();
|
|
386
|
+
fnReadDraftAdministrativeData(oModel, oBindingContext.getPath(), oApplication.getBusyHelper()).then(
|
|
387
|
+
function(oResponse) {
|
|
388
|
+
if (oResponse.DraftAdministrativeData.InProcessByUser) {
|
|
380
389
|
reject({
|
|
381
|
-
|
|
390
|
+
lockedByUser: oResponse.DraftAdministrativeData.InProcessByUserDescription || oResponse.DraftAdministrativeData.InProcessByUser
|
|
382
391
|
});
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
+
} else { //unsaved changes
|
|
393
|
+
var editConfirmation = function() {
|
|
394
|
+
// Re-run editEntity without preserveChanges so the
|
|
395
|
+
// unsaved changes of another user are overwritten.
|
|
396
|
+
var oUnsavedChangesEditPromise = oTransactionController.editEntity(oBindingContext, false, sRootExpand).then(function(oResponse) {
|
|
397
|
+
oModel.invalidateEntry(oBindingContext);
|
|
398
|
+
oViewDependencyHelper.setRootPageToDirty();
|
|
399
|
+
resolve({ context: oResponse.context });
|
|
400
|
+
});
|
|
401
|
+
oApplication.getBusyHelper().setBusy(oUnsavedChangesEditPromise, true);
|
|
402
|
+
};
|
|
403
|
+
// editRejection is passed as the rejection handler of Promise.then(),
|
|
404
|
+
// so it must be a function reference; calling reject() inline here
|
|
405
|
+
// would execute it immediately instead of on dialog cancellation.
|
|
406
|
+
var editRejection = function() { reject({ cancelled: true }); };
|
|
407
|
+
var unSavedChangesDialogPromise = fnUnsavedChangesDialog(undefined, oResponse.DraftAdministrativeData, oCommonUtils, oViewProxy, bOpenInEditMode);
|
|
408
|
+
unSavedChangesDialogPromise.then(editConfirmation, editRejection);
|
|
409
|
+
}
|
|
410
|
+
},
|
|
411
|
+
function(oResponse) {
|
|
412
|
+
// DraftAdminData read failed
|
|
413
|
+
reject({ draftAdminReadResponse: oResponse });
|
|
414
|
+
}
|
|
415
|
+
);
|
|
416
|
+
} else {
|
|
417
|
+
reject(oResponse);
|
|
418
|
+
}
|
|
392
419
|
});
|
|
393
|
-
}
|
|
394
420
|
});
|
|
395
421
|
});
|
|
396
|
-
|
|
422
|
+
|
|
423
|
+
// Ensure the active context is registered in ContextBookkeeping before the edit
|
|
424
|
+
// resolves. This caches the draft sibling path so subsequent navigation can use
|
|
425
|
+
// the cached value without an additional /SiblingEntity request.
|
|
426
|
+
// editingStarted() notifies all listeners (e.g. the message button helper) that
|
|
427
|
+
// the editing phase has begun for this context.
|
|
428
|
+
var bContextRegistered = oApplication.checkContextData(oBindingContext);
|
|
429
|
+
if (!bContextRegistered) {
|
|
430
|
+
oApplication.registerContext(oBindingContext, 1, sEntitySet);
|
|
431
|
+
}
|
|
432
|
+
oApplication.editingStarted(oBindingContext, oRet);
|
|
433
|
+
|
|
434
|
+
return oRet;
|
|
397
435
|
}
|
|
398
436
|
|
|
399
437
|
function deleteEntity(oDraftController, fnExecuteDelete, oApplicationProxy, oContext, bIsActiveEntity, sActionType){
|
|
@@ -1677,7 +1677,10 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1677
1677
|
var bOpenInEditMode = !!oComponent.getEditFlow && oComponent.getEditFlow() === "direct";
|
|
1678
1678
|
if (bOpenInEditMode){
|
|
1679
1679
|
var sEntitySet = oTable.getEntitySet();
|
|
1680
|
-
|
|
1680
|
+
// oBindingContext is passed directly; the OData model and binding path are resolved inside directEdit.
|
|
1681
|
+
// sAppId is derived here because oController is not accessible inside CRUDHelper.
|
|
1682
|
+
var sAppId = oComponent.getAppComponent().getId();
|
|
1683
|
+
var oEditPromise = CRUDHelper.directEdit(oServices.oTransactionController, sEntitySet, oBindingContext, oServices.oApplication, sAppId, oCommonUtils, oServices.oViewDependencyHelper, oViewProxy, bOpenInEditMode);
|
|
1681
1684
|
oEditPromise.then(function(oResult){
|
|
1682
1685
|
oCommonUtils.navigateFromListItem(oResult.context, bReplace, true);
|
|
1683
1686
|
}, function(oError){
|
|
@@ -49,13 +49,13 @@ ST_STREAM_TYPE_MISMATCH=Le type de fichier s\u00E9lectionn\u00E9 n'est pas pris
|
|
|
49
49
|
|
|
50
50
|
ST_DRAFT_OWNER=par {0}
|
|
51
51
|
|
|
52
|
-
ST_DRAFT_ANOTHER_USER=
|
|
52
|
+
ST_DRAFT_ANOTHER_USER=par un autre utilisateur
|
|
53
53
|
|
|
54
54
|
DATA_PASTE_ERROR_MESSAGE=Impossible de coller. {0} \u00E9l\u00E9ments contiennent des donn\u00E9es non valides.
|
|
55
55
|
|
|
56
56
|
DATA_PASTE_ERROR_CORRECTION_MESSAGE=Corrigez les valeurs indiqu\u00E9es ci-dessous dans votre fichier source.
|
|
57
57
|
|
|
58
|
-
DATA_PASTE_ERROR_CORRECTION_NOTE=(Note \: ligne/colonne indique la position dans l'ensemble des donn\u00E9es
|
|
58
|
+
DATA_PASTE_ERROR_CORRECTION_NOTE=(Note \: La ligne/colonne indique la position dans l'ensemble des donn\u00E9es que vous avez copi\u00E9.)
|
|
59
59
|
|
|
60
60
|
DATA_PASTE_UNSUPPORTED_FORMAT_MESSAGE=Coller indisponible pour cette table.
|
|
61
61
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
ST_GENERIC_DRAFT_WITH_ACTIVE_DOCUMENT_DELETED=\u041F\u0440\u043E\u043C\u0435\u043D\u0438\u0442\u0435 \u0441\u0435 \
|
|
2
|
+
ST_GENERIC_DRAFT_WITH_ACTIVE_DOCUMENT_DELETED=\u041F\u0440\u043E\u043C\u0435\u043D\u0438\u0442\u0435 \u0441\u0435 \u0437\u0430\u043D\u0435\u043C\u0430\u0440\u0435\u043D\u0438
|
|
3
3
|
|
|
4
4
|
ST_GENERIC_DRAFT_WITHOUT_ACTIVE_DOCUMENT_DELETED=\u041D\u0430\u0446\u0440\u0442\u043E\u0442 \u0435 \u043E\u0442\u0444\u0440\u043B\u0435\u043D
|
|
5
5
|
|
|
@@ -9,7 +9,7 @@ ST_GENERIC_ERROR_LOAD_DATA_TEXT=\u0417\u0430\u043F\u0440\u043E\u0448\u0435\u043D
|
|
|
9
9
|
|
|
10
10
|
ST_GENERIC_NO_ITEM_SELECTED=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043F\u043E\u0437\u0438\u0446\u0438\u044E
|
|
11
11
|
|
|
12
|
-
ST_GENERIC_MULTIPLE_ITEMS_SELECTED=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\
|
|
12
|
+
ST_GENERIC_MULTIPLE_ITEMS_SELECTED=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u043D\u0443 \u043F\u043E\u0437\u0438\u0446\u0438\u044E.
|
|
13
13
|
|
|
14
14
|
ST_DATA_LOSS_TECHNICAL_ERROR_DISCARD=\u0418\u0437-\u0437\u0430 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u043E\u0439 \u043E\u0448\u0438\u0431\u043A\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u0431\u044B\u043B\u0438 \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u044B. \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0438 \u0432\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043D\u0430 \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0443\u044E \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443?
|
|
15
15
|
|
|
@@ -261,11 +261,11 @@ NEW_OBJECT=\u041D\u043E\u0432\u044B\u0439 \u043E\u0431\u044A\u0435\u043A\u0442
|
|
|
261
261
|
|
|
262
262
|
UNNAMED_OBJECT=\u041E\u0431\u044A\u0435\u043A\u0442 \u0431\u0435\u0437 \u0438\u043C\u0435\u043D\u0438
|
|
263
263
|
|
|
264
|
-
NOITEMS_SMARTTABLE=\
|
|
264
|
+
NOITEMS_SMARTTABLE=\u041F\u043E\u0437\u0438\u0446\u0438\u0438 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B.
|
|
265
265
|
|
|
266
|
-
NOITEMS_SMARTTABLE_WITH_FILTER=\
|
|
266
|
+
NOITEMS_SMARTTABLE_WITH_FILTER=\u041F\u043E\u0437\u0438\u0446\u0438\u0438 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u043F\u043E\u0438\u0441\u043A\u0430 \u0438\u043B\u0438 \u0444\u0438\u043B\u044C\u0442\u0440\u0430.
|
|
267
267
|
|
|
268
|
-
NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON=\u041D\u0435\u0442 \
|
|
268
|
+
NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON=\u041D\u0435\u0442 \u043F\u043E\u0437\u0438\u0446\u0438\u0439 \u0434\u043B\u044F \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u043A\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432 \u0444\u0438\u043B\u044C\u0442\u0440\u0430 \u0438 \u0440\u0430\u043A\u0443\u0440\u0441\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u044B.
|
|
269
269
|
|
|
270
270
|
NOITEMS_SMARTCHART=\u0414\u0430\u043D\u043D\u044B\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B.
|
|
271
271
|
|
|
@@ -287,7 +287,7 @@ ST_GENERIC_DELETE_WITH_WARNING_SUGGESTION_PLURAL=\u041F\u043E\u0434\u0441\u043A\
|
|
|
287
287
|
|
|
288
288
|
ST_GENERIC_NOT_DELETED_RECORDS=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0443\u0434\u0430\u043B\u0438\u0442\u044C {0} \u0438\u0437 {1} \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432.
|
|
289
289
|
|
|
290
|
-
ST_GENERIC_DELETE_ERROR_PLURAL=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \
|
|
290
|
+
ST_GENERIC_DELETE_ERROR_PLURAL=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435 \u043F\u043E\u0437\u0438\u0446\u0438\u0438. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u0438\u0445 \u043F\u043E \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438.
|
|
291
291
|
|
|
292
292
|
ST_GENERIC_NOT_PROCESSED_RECORDS=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C {0} \u0438\u0437 {1} \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432.
|
|
293
293
|
|
|
@@ -3206,7 +3206,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
3206
3206
|
* @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
|
|
3207
3207
|
* @public
|
|
3208
3208
|
* @extends sap.ui.base.Object
|
|
3209
|
-
* @version 1.136.
|
|
3209
|
+
* @version 1.136.17
|
|
3210
3210
|
* @since 1.30.0
|
|
3211
3211
|
* @alias sap.suite.ui.generic.template.lib.NavigationController
|
|
3212
3212
|
*/
|