@sapui5/sap.suite.ui.generic.template 1.108.48 → 1.108.50

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.
Files changed (36) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/generic/template/.library +1 -1
  3. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_bg.properties +3 -3
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_da.properties +3 -3
  5. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_id.properties +2 -2
  6. package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +15 -9
  7. package/src/sap/suite/ui/generic/template/ListReport/controller/IappStateHandler.js +18 -8
  8. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_id.properties +1 -1
  9. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartChart.fragment.xml +3 -2
  10. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartTable.fragment.xml +2 -1
  11. package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +4 -1
  12. package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +28 -26
  13. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pt.properties +1 -1
  14. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sh.properties +1 -1
  15. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sl.properties +3 -3
  16. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sr.properties +1 -1
  17. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartChart.fragment.xml +1 -0
  18. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTable.fragment.xml +2 -1
  19. package/src/sap/suite/ui/generic/template/genericUtilities/ControlStateWrapperFactory.js +109 -68
  20. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/DynamicPageWrapper.js +19 -51
  21. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/ObjectPageLayoutWrapper.js +10 -32
  22. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/PreliminaryWrapper.js +151 -0
  23. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SearchFieldWrapper.js +8 -30
  24. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartFilterBarWrapper.js +76 -99
  25. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +105 -91
  26. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableWrapper.js +10 -2
  27. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +98 -81
  28. package/src/sap/suite/ui/generic/template/js/AnnotationHelperStreamSupport.js +25 -6
  29. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
  30. package/src/sap/suite/ui/generic/template/lib/CommonUtils.js +5 -5
  31. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +2 -2
  32. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +2 -2
  33. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +5 -5
  34. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +1 -1
  35. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +7 -7
  36. package/src/sap/suite/ui/generic/template/library.js +1 -1
@@ -4,18 +4,24 @@ sap.ui.define([
4
4
 
5
5
  /**
6
6
  * Constructor for SmartVariantManagementWrapper
7
- * @param {sap.ui.comp.smartvariants.SmartVariantManagement} vTarget - The SmartVariantManagement control
8
- * or the Id of control for which this wrapper is created
7
+ * @param {sap.ui.comp.smartvariants.SmartVariantManagement} oControl - The SmartVariantManagement control
9
8
  * @param {object} oController - the controller of the current component
10
9
  * @param {object} oFactory - the controlStateWrapperFactory
11
10
  * @param {object} mParams
11
+ <<<<<<< HEAD (274a590a8af0bd77d9f27bbcd5f549d902fa60a9 Merge "[INTERNAL] Translation delivery: commit by LX Lab" in)
12
12
  * @param mParams.managedControlWrappers - array of controlStateWrappers for controls handled by the SVM
13
13
  * (currently also including SFB wrapper - to be removed)
14
- * @param mParams.dynamicPageWrapper - dynamicPageWrapper instance handled by SVM
15
- * @returns
14
+ ||||||| BASE (38a1067f0575c68f4f40a7766314c763b315cee1 [INTERNAL] Translation delivery: commit by LX Lab)
15
+ * @param {array} mParams.managedControlWrappers - array of controlStateWrappers for controls handled by the SVM
16
+ * (currently also including SFB wrapper - to be removed)
17
+ =======
18
+ * @param {array} mParams.managedControlWrappers - array of controlStateWrappers for controls handled by the SVM
19
+ * @param {object} mParams.smartFilterBarWrapper - explicit reference to SmartFilterBarWrapper for special handling
20
+ >>>>>>> CHANGE (61636f588a5388c738612b2d57855c25f45efd46 [FIX] LR: Extension filter values now stored/restored in var)
21
+ * @returns {object}
16
22
  */
17
23
 
18
- function SmartVariantManagementWrapper(vTarget, oController, oFactory, mParams) {
24
+ function SmartVariantManagementWrapper(oControl, oController, oFactory, mParams) {
19
25
  // Special handling of SmartFilterBarWrapper for several reasons:
20
26
  // - Suppress selection when restoring a variant. Selection is solely triggered according to information in appState. Otherwise, erroneous selection could be triggered in
21
27
  // a few situations:
@@ -26,14 +32,10 @@ sap.ui.define([
26
32
  // - Store and restore extension state (extension implemented in SFB instead of SVM, which would be more appropriate from architectural point of view)
27
33
  // flag to control whether we are currently in the process of applying a state to suppress the event to inform about a new state´
28
34
  // only needed when setting the variant itself - for managed controls, their wrappers should avoid firing the event themselves
29
- var oSmartVariantManagement, fnResolveControlAssigned, oPreliminaryState;
30
- var oControlAssignedPromise = new Promise(function (resolve) {
31
- fnResolveControlAssigned = resolve;
32
- });
33
-
34
- if (typeof vTarget !== "string") {
35
- fnSetControl(vTarget);
36
- }
35
+ var oSmartVariantManagement = oControl;
36
+ var oPreliminaryState;
37
+ var bIsApplyingVariant = false;
38
+ var bAllControlsInitialized = false;
37
39
 
38
40
  // Handles the state of the variant management itself (i.e. which variant is selected and whether it's dirty), including the state of the managed controls.
39
41
  // Is responsible esp. to restore this state with correct dependency resp. in correct order
@@ -50,69 +52,74 @@ sap.ui.define([
50
52
  // For these controls, a real user changes are already handled by the direct connection. On the other hand, these controls also fire their change events, if their state is
51
53
  // changed from SVM (by the same connection) - setting variant dirty here would be wrong.
52
54
  mParams.managedControlWrappers.forEach(function(oWrapper){
53
- if (!oWrapper.bVMConnection){
54
- oWrapper.attachStateChanged(function(){
55
- oSmartVariantManagement.currentVariantSetModified(true);
56
- });
57
- }
55
+ (oWrapper.oVMConnectionPromise || Promise.resolve(oWrapper.bVMConnection)).then(function(bVMConnection) {
56
+ if (!bVMConnection) {
57
+ oWrapper.attachStateChanged(function(){
58
+ oSmartVariantManagement.currentVariantSetModified(true);
59
+ });
60
+ }
61
+ });
58
62
  });
59
63
 
64
+ // Get SmartFilterBarWrapper explicitly from params.
65
+ // This connection is needed because SmartFilterBar provides special callbacks to store/restore state
66
+ // for controls that don't have a direct variant management connection (bVMConnection = false), such as:
67
+ // - Extension filters (custom filters added via app or adaptation extensions)
68
+ // - Multiple views state (selected tab in multi-table/chart scenarios)
69
+ // These controls need their state saved/restored with variants via the SFB's beforeVariantFetch/afterVariantLoad events.
70
+ var oSmartFilterBarWrapper = mParams.smartFilterBarWrapper;
60
71
 
61
-
62
- function fnSetControl(oControl) {
63
- oSmartVariantManagement = oControl;
64
- fnResolveControlAssigned(oSmartVariantManagement);
65
- }
66
-
67
- var oSmartFilterBarWrapper = mParams.managedControlWrappers.find(function(oWrapper){
68
- return oWrapper.setSVMWrapperCallbacks;
69
- });
70
-
71
- // provide callbacks needed for SFB wrapper to store/restore extnesion state with variant
72
+ // Provide callbacks needed for SFB wrapper to store/restore extension state with variant
72
73
  if (oSmartFilterBarWrapper){
73
- oSmartFilterBarWrapper.setSVMWrapperCallbacks({
74
- getManagedControlStates: function(){
75
- var mManagedControlStates = Object.create(null);
76
- mParams.managedControlWrappers.forEach(function(oWrapper){
77
- if (!oWrapper.bVMConnection){
78
- mManagedControlStates[oWrapper.getLocalId()] = oWrapper.getState();
79
- }
80
- });
81
- return mManagedControlStates;
82
- },
83
- setManagedControlStates: function(oState){
84
- mParams.managedControlWrappers.forEach(function(oWrapper){
85
- if (!oWrapper.bVMConnection){
86
- oWrapper.setState(oState[oWrapper.getLocalId()]);
87
- }
88
- });
89
- },
90
- setHeaderState: function(bHeaderToBeExpanded) {
91
- mParams.dynamicPageWrapper.setHeaderState(oController, bHeaderToBeExpanded);
92
- }
74
+ // Build array with wrapper + bVMConnection info once all wrappers are ready
75
+ Promise.all(mParams.managedControlWrappers.map(function(oWrapper){
76
+ return (oWrapper.oVMConnectionPromise || Promise.resolve(oWrapper.bVMConnection)).then(function(bVMConnection){
77
+ return {
78
+ wrapper: oWrapper,
79
+ bVMConnection: bVMConnection
80
+ };
81
+ });
82
+ })).then(function(aWrapperInfo) {
83
+ oSmartFilterBarWrapper.setSVMWrapperCallbacks({
84
+ getManagedControlStates: function(){
85
+ var mManagedControlStates = Object.create(null);
86
+ aWrapperInfo.forEach(function(oInfo){
87
+ if (!oInfo.bVMConnection) {
88
+ mManagedControlStates[oInfo.wrapper.getLocalId()] = oInfo.wrapper.getState();
89
+ }
90
+ });
91
+ return mManagedControlStates;
92
+ },
93
+ setManagedControlStates: function(oState){
94
+ aWrapperInfo.forEach(function(oInfo){
95
+ if (!oInfo.bVMConnection) {
96
+ oInfo.wrapper.setState(oState[oInfo.wrapper.getLocalId()]);
97
+ }
98
+ });
99
+ }
100
+ });
93
101
  });
94
102
  }
95
103
 
104
+ // Create promise that resolves when all managed controls' variant management is ready
105
+ // This ensures getState() can query controls even if setState() is never called (e.g., app starts from scratch)
106
+ var oAllControlsInitializedPromise = Promise.all(
107
+ mParams.managedControlWrappers.map(function(oWrapper){
108
+ return oWrapper.oVariantManagementInitializedPromise || Promise.resolve();
109
+ })
110
+ );
111
+
112
+ // Set flag when all controls are initialized
113
+ oAllControlsInitializedPromise.then(function() {
114
+ bAllControlsInitialized = true;
115
+ });
116
+
96
117
  // Wrapper is intended to set a state to the ui, but not to trigger a selection (which should happen only after all (relevant) parts of ui state is set to the correct state
97
118
  // are set correct. Therefore, setting variant from here should never trigger a selection.
98
119
  function fnSetVariant(sVariantId){
99
120
  if (oSmartFilterBarWrapper){
100
121
  oSmartFilterBarWrapper.suppressSelection(true);
101
122
  }
102
- var sId = mParams.managedControlWrappers[0].getLocalId();
103
- var oControl = oController.getView().byId(sId);
104
- if (oControl && oControl.isA("sap.ui.comp.smarttable.SmartTable")) {
105
- oControl.attachAfterVariantInitialise(function() {
106
- //set currentVariantId only when sVariantId is not standard (as it might be overriding existing
107
- //different currentVariantId) or smartTable's (oControl) currentVariantId is not equal to sVariantId.
108
- if (sVariantId !== '*standard*' && sVariantId !== '') {
109
- if (oControl.getCurrentVariantId && oControl.getCurrentVariantId() !== sVariantId) {
110
- oControl.setCurrentVariantId(sVariantId);
111
- }
112
- oSmartVariantManagement.setModified(false);
113
- }
114
- });
115
- }
116
123
  oSmartVariantManagement.setCurrentVariantId(sVariantId);
117
124
  if (oSmartFilterBarWrapper){
118
125
  oSmartFilterBarWrapper.suppressSelection(false);
@@ -133,7 +140,11 @@ sap.ui.define([
133
140
  }
134
141
 
135
142
  function getState() {
136
- if (!oSmartVariantManagement) {
143
+ // Return preliminary state if managed controls not fully initialized
144
+ // Note: If early getState() calls become an issue (controls not initialized yet), we could enhance this to:
145
+ // - Store only SVM-specific data (variantId, modified) in oPreliminaryState
146
+ // - Always query managed control wrappers directly (they handle their own preliminary state via PreliminaryWrapper)
147
+ if (!bAllControlsInitialized) {
137
148
  return oPreliminaryState;
138
149
  }
139
150
 
@@ -150,22 +161,23 @@ sap.ui.define([
150
161
 
151
162
  function setState(oState) {
152
163
  oPreliminaryState = oState;
153
- oControlAssignedPromise.then(function() {
164
+
165
+ // Wait for all managed controls to be initialized before applying state
166
+ oAllControlsInitializedPromise.then(function() {
167
+ bIsApplyingVariant = true;
154
168
  if (!oPreliminaryState) {
155
169
  // if no state is provided set default variant (not modified)
156
170
  // use cases:
157
171
  // - LR: if appStateKey in the URL that cannot be read
158
172
  // - OP: if switching to different object instance (in discovery mode always, in persistency mode when page was not shown)
159
173
  fnSetVariant(oSmartVariantManagement.getDefaultVariantId());
160
- return;
161
- }
162
- if (oPreliminaryState.modified) {
174
+ } else if (oPreliminaryState.modified) {
163
175
  // Special logic according to UX: If variant was modified anyway, there's no benefit for the user to see the name (but it could be confusing), so standard variant (not default!) should be
164
176
  // set (which is achieved by empty string)
165
177
  fnSetVariant("");
178
+ oSmartVariantManagement.currentVariantSetModified(true);
166
179
  // Usually restoring the state of any of the managed controls should mark the variant as dirty, but there might be edge cases (state from an old release not containing information for any
167
180
  // managed control now relevant), so to be on the safe side, we set modified=true explicitly.
168
- oSmartVariantManagement.currentVariantSetModified(true);
169
181
  fnSetManagedControlStates(oPreliminaryState);
170
182
  } else {
171
183
  fnSetVariant(oPreliminaryState.variantId);
@@ -183,6 +195,7 @@ sap.ui.define([
183
195
  }
184
196
  }
185
197
  }
198
+ bIsApplyingVariant = false;
186
199
  });
187
200
  }
188
201
 
@@ -190,26 +203,30 @@ sap.ui.define([
190
203
  // state of variant management itself can be changed directly (user selects a different variant or stores current state as (new) variant), or indirectly (user changes some
191
204
  // data of a control managed by VM, e.g. some filter values in SFB)
192
205
 
193
- oControlAssignedPromise.then(function() {
194
- // state change when user selects a different variant
195
- oSmartVariantManagement.attachSelect(fnHandler);
206
+ // Wrap the handler to suppress events when applying a variant
207
+ var fnSuppressibleHandler = function() {
208
+ if (!bIsApplyingVariant) {
209
+ fnHandler();
210
+ }
211
+ };
196
212
 
197
- // when user saves current state as a new variant, this is also a state change (as the variant id is part of the state)
198
- // note: Even if new (SFB) variant is marked as execute on select, and currently no data is selected, no need to select data here (and thus also not to collapse header).
199
- // This is one of the possible ways to get into a state with a clean variant with execute on select, but no data loaded - see also comment to identify SFB wrapper.
200
- oSmartVariantManagement.attachAfterSave(fnHandler);
213
+ // state change when user selects a different variant
214
+ oSmartVariantManagement.attachSelect(fnSuppressibleHandler);
201
215
 
202
- // any change of a managed control is state change
203
- mParams.managedControlWrappers.forEach(function(oWrapper){
204
- oWrapper.attachStateChanged(fnHandler);
205
- });
216
+ // when user saves current state as a new variant, this is also a state change (as the variant id is part of the state)
217
+ // note: Even if new (SFB) variant is marked as execute on select, and currently no data is selected, no need to select data here (and thus also not to collapse header).
218
+ // This is one of the possible ways to get into a state with a clean variant with execute on select, but no data loaded - see also comment to identify SFB wrapper.
219
+ oSmartVariantManagement.attachAfterSave(fnSuppressibleHandler);
220
+
221
+ // any change of a managed control is state change
222
+ mParams.managedControlWrappers.forEach(function(oWrapper){
223
+ oWrapper.attachStateChanged(fnSuppressibleHandler);
206
224
  });
207
225
  }
208
226
 
209
227
  return {
210
228
  getState : getState,
211
229
  setState : setState,
212
- setControl: fnSetControl,
213
230
  attachStateChanged : attachStateChanged
214
231
  };
215
232
  }
@@ -126,17 +126,36 @@ sap.ui.define([
126
126
  return sAcceptableMimeType.slice(0, -1);
127
127
  },
128
128
 
129
- getDeleteStreamVisibility: function(oInterface, oMediaType, bIsDraftEnabled, oEntitySet){
129
+ // funtion return the controlling binding path form by annotation/metadata/fieldcontrol path
130
+ getControlPath: function(oEntitySet, oFieldControl) {
131
+ var sPath = "";
132
+ var sAnnotationUpdatablePath = oEntitySet && oEntitySet["Org.OData.Capabilities.V1.UpdateRestrictions"] && oEntitySet["Org.OData.Capabilities.V1.UpdateRestrictions"]["Updatable"] && oEntitySet["Org.OData.Capabilities.V1.UpdateRestrictions"]["Updatable"].Path;
133
+ var sMetadataUpdatable = oEntitySet && (oEntitySet["sap:updatable"] || oEntitySet["sap:updatable-path"]);
134
+ if (sAnnotationUpdatablePath || sMetadataUpdatable) {
135
+ sPath = '${' + (sAnnotationUpdatablePath || sMetadataUpdatable) + '} !== false';
136
+ }
137
+ if (oFieldControl) {
138
+ var sFCPath = oFieldControl && oFieldControl.Path;
139
+ sPath += ' && ${' + sFCPath + '} > "1"';
140
+ }
141
+ return sPath;
142
+ },
143
+
144
+ getDeleteStreamVisibility: function (oInterface, oMediaType, bIsDraftEnabled, oEntitySet) {
130
145
  var oEntityType = oEntitySet && oInterface.getModel(0).getODataEntityType(oEntitySet.entityType);
131
- var sFCPath = oEntityType && oEntityType["com.sap.vocabularies.Common.v1.FieldControl"] && oEntityType["com.sap.vocabularies.Common.v1.FieldControl"].Path;
146
+ var oFieldControl = oEntityType && oEntityType["com.sap.vocabularies.Common.v1.FieldControl"];
147
+ if (oFieldControl && oFieldControl.EnumMember === "com.sap.vocabularies.Common.v1.FieldControlType/ReadOnly") {
148
+ return false;
149
+ }
150
+ var sPath = oAnnotationHelperStreamSupport.getControlPath(oEntitySet, oFieldControl);
132
151
  if (bIsDraftEnabled) {
133
- return sFCPath ? '{= ${' + oMediaType + '} !== "" && ${ui>/editable} && ${' + sFCPath + '} > "1"}' : '{= ${' + oMediaType + '} !== "" && ${ui>/editable}}';
152
+ return sPath ? '{= ${' + oMediaType + '} !== "" && ${ui>/editable} && ' + sPath + '}' : '{= ${' + oMediaType + '} !== "" && ${ui>/editable}}';
134
153
  } else {
135
- return sFCPath ? '{= ${' + oMediaType + '} !== "" && !${ui>/editable} && ${' + sFCPath + '} > "1"}' : '{= ${' + oMediaType + '} !== "" && !${ui>/editable}}';
154
+ return sPath ? '{= ${' + oMediaType + '} !== "" && !${ui>/editable} && ' + sPath + '}' : '{= ${' + oMediaType + '} !== "" && !${ui>/editable}}';
136
155
  }
137
156
  },
138
157
 
139
- getFileUploaderVisibility: function(oInterface, bIsDraftEnabled, oEntitySet){
158
+ getFileUploaderVisibility: function (oInterface, bIsDraftEnabled, oEntitySet) {
140
159
  var oEntityType = oEntitySet && oInterface.getModel(1).getODataEntityType(oEntitySet.entityType);
141
160
  var sFCPath = oEntityType && oEntityType["com.sap.vocabularies.Common.v1.FieldControl"] && oEntityType["com.sap.vocabularies.Common.v1.FieldControl"].Path;
142
161
  var bRestrictions = AnnotationHelper.getUpdateRestrictions(oEntitySet);
@@ -157,7 +176,7 @@ sap.ui.define([
157
176
  }
158
177
  }
159
178
  }
160
- };
179
+ };
161
180
 
162
181
  oAnnotationHelperStreamSupport.checkIfEntityOrAssociationHasStreamEnabled.requiresIContext = true;
163
182
  oAnnotationHelperStreamSupport.getFileName.requiresIContext = true;
@@ -856,7 +856,7 @@ sap.ui.define([
856
856
  * @extends sap.ui.core.UIComponent
857
857
  * @abstract
858
858
  * @author SAP SE
859
- * @version 1.108.48
859
+ * @version 1.108.50
860
860
  * @name sap.suite.ui.generic.template.lib.AppComponent
861
861
  */
862
862
  return UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
@@ -1336,16 +1336,16 @@ sap.ui.define(["sap/ui/base/Object",
1336
1336
 
1337
1337
  function setStreamData(oStreamData, sNavigationProperty){
1338
1338
  if (oStreamData && oStreamData.__metadata){
1339
- var edit_media = oStreamData.__metadata.edit_media;
1339
+ var media_url = oStreamData.__metadata.edit_media || oStreamData.__metadata.media_src;
1340
1340
  var content_type = oStreamData.__metadata.content_type;
1341
1341
  var urlPath = "";
1342
- if (edit_media) {
1343
- if (edit_media.startsWith("http:") || edit_media.startsWith("https:")) {
1342
+ if (media_url) {
1343
+ if (media_url.startsWith("http:") || media_url.startsWith("https:")) {
1344
1344
  //To ensure code is backward compatible with older versions of SAP Gateway
1345
- var url = edit_media && new URL(edit_media);
1345
+ var url = media_url && new URL(media_url);
1346
1346
  urlPath = url && url.pathname;
1347
1347
  } else {
1348
- urlPath = edit_media;
1348
+ urlPath = media_url;
1349
1349
  }
1350
1350
  }
1351
1351
  var bIcon = IconPool.getIconForMimeType(content_type);
@@ -283,9 +283,9 @@ NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON=EiRivej\u00E4ValSuodPerJaTaul
283
283
 
284
284
  NOITEMS_SMARTCHART=Tietoja ei l\u00F6ytynyt.
285
285
 
286
- NOITEMS_LR_SMARTCHART=EiTietValSuodPerJaKaavN\u00E4kVart
286
+ NOITEMS_LR_SMARTCHART=Ei tietoja valitulla suodatinperusteella ja kaavion\u00E4kym\u00E4ll\u00E4.
287
287
 
288
- NOITEMS_SMARTCHART_WITH_FILTER=TietEiL\u00F6ydy. YrS\u00E4\u00E4tSuodParam.
288
+ NOITEMS_SMARTCHART_WITH_FILTER=Tietoja ei l\u00F6ytynyt. Yrit\u00E4 s\u00E4\u00E4t\u00E4\u00E4 suodatusperusteita.
289
289
 
290
290
  SMARTCHART_INITIAL_NODATA=Aseta suodattimet ja aloita.
291
291
 
@@ -47,13 +47,13 @@ ST_STREAM_OPEN_FILE=Ouvrir fichier
47
47
 
48
48
  ST_DRAFT_OWNER=par {0}
49
49
 
50
- ST_DRAFT_ANOTHER_USER=d'un autre utilisateur
50
+ ST_DRAFT_ANOTHER_USER=par un autre utilisateur
51
51
 
52
52
  DATA_PASTE_ERROR_MESSAGE=Impossible de coller. {0} \u00E9l\u00E9ments contiennent des donn\u00E9es non valides.
53
53
 
54
54
  DATA_PASTE_ERROR_CORRECTION_MESSAGE=Corrigez les valeurs indiqu\u00E9es ci-dessous dans votre fichier source.
55
55
 
56
- DATA_PASTE_ERROR_CORRECTION_NOTE=(Note \: ligne/colonne indique la position dans l'ensemble des donn\u00E9es qu vous avez copi\u00E9.)
56
+ DATA_PASTE_ERROR_CORRECTION_NOTE=(Note \: La ligne/colonne indique la position dans l'ensemble des donn\u00E9es que vous avez copi\u00E9.)
57
57
 
58
58
  DATA_PASTE_UNSUPPORTED_FORMAT_MESSAGE=Coller indisponible pour cette table.
59
59
 
@@ -11,7 +11,7 @@ ST_GENERIC_ERROR_LOAD_DATA_TEXT=\u0417\u0430\u043F\u0440\u043E\u0448\u0435\u043D
11
11
 
12
12
  ST_GENERIC_NO_ITEM_SELECTED=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442.
13
13
 
14
- ST_GENERIC_MULTIPLE_ITEMS_SELECTED=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u0434\u0438\u043D \u044D\u043B\u0435\u043C\u0435\u043D\u0442.
14
+ 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.
15
15
 
16
16
  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?
17
17
 
@@ -275,11 +275,11 @@ ST_NAV_ERROR_MODEL_READ_FAILED=\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441
275
275
 
276
276
  NEW_OBJECT=\u041E\u0431\u044A\u0435\u043A\u0442 \u0431\u0435\u0437 \u0438\u043C\u0435\u043D\u0438
277
277
 
278
- NOITEMS_SMARTTABLE=\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B.
278
+ NOITEMS_SMARTTABLE=\u041F\u043E\u0437\u0438\u0446\u0438\u0438 \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B.
279
279
 
280
- NOITEMS_SMARTTABLE_WITH_FILTER=\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \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.
280
+ 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.
281
281
 
282
- NOITEMS_SMARTTABLE_WITH_FILTER_FOR_SEGMENTEDBUTTON=\u041D\u0435\u0442 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \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.
282
+ 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.
283
283
 
284
284
  NOITEMS_SMARTCHART=\u0414\u0430\u043D\u043D\u044B\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B.
285
285
 
@@ -307,7 +307,7 @@ ST_GENERIC_DELETE_WITH_WARNING_SUGGESTION_PLURAL=\u041F\u043E\u0434\u0441\u043A\
307
307
 
308
308
  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.
309
309
 
310
- 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 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0443\u0434\u0430\u043B\u0438\u0442\u044C \u0438\u0445 \u043A\u0430\u0436\u0434\u044B\u0439 \u043F\u043E \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438.
310
+ 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.
311
311
 
312
312
  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.
313
313
 
@@ -97,7 +97,7 @@ ST_GENERIC_DELETE_SUCCESS=\u6240\u9009\u5BF9\u8C61\u5DF2\u5220\u9664\u3002
97
97
 
98
98
  ST_GENERIC_LIST_TITLE=\u9879\u76EE
99
99
 
100
- ST_GENERIC_WARNING_TEXT=\u5C06\u4E0D\u4F1A\u5904\u7406\u6240\u9009\u9879\u76EE\u4E2D\u7684 {0} \u4E2A\u9879\u76EE\u3002
100
+ ST_GENERIC_WARNING_TEXT=\u6240\u9009\u9879\u76EE\u4E2D\u7684 {0} \u4E2A\u9879\u76EE\u5C06\u4E0D\u4F1A\u5904\u7406\u3002
101
101
 
102
102
  ST_GENERIC_DIALOG_CONTINUE_BUT=\u4ECD\u7136\u7EE7\u7EED
103
103
 
@@ -387,7 +387,7 @@ sap.ui.define(["sap/ui/base/Object",
387
387
  }
388
388
 
389
389
  function fnStoreFocusAndGetHistoryObject(sControlId){
390
- var oHistoryObject = oHistoryState.getData();
390
+ var oHistoryObject = oHistoryState.getData() || {};
391
391
  if (oHistoryObject.focus){ // focus already set
392
392
  return oHistoryObject;
393
393
  }
@@ -398,18 +398,18 @@ sap.ui.define(["sap/ui/base/Object",
398
398
  if (sControlId){
399
399
  oHistoryObject.focus = sControlId;
400
400
  oHistoryState.setData(oHistoryObject);
401
- oHistoryState.save();
402
- }
401
+ oHistoryState.save();
402
+ }
403
403
  return oHistoryObject;
404
404
  }
405
405
 
406
- function fnInitializeHistory(){
406
+ function fnInitializeHistory(bKeepCurrentIdentity){
407
407
  oCurrentHash = { // The initial instance represents the time before the app was started.
408
408
  iHashChangeCount: 0,
409
409
  backTarget: 0,
410
410
  componentsDisplayed: Object.create(null)
411
411
  };
412
- oCurrentIdentity = null;
412
+ oCurrentIdentity = bKeepCurrentIdentity ? oCurrentIdentity : null;
413
413
  aPreviousHashes = [];
414
414
  if (!bIsRestoring){
415
415
  oRoutingOptions = null;
@@ -2873,7 +2873,7 @@ sap.ui.define(["sap/ui/base/Object",
2873
2873
  fnMakeNavigationFunction("navigationContextNotFound", fnNavigationContextNotFound);
2874
2874
  fnMakeNavigationFunction("navigateToMessageTarget", fnNavigateToMessageTarget);
2875
2875
 
2876
- oNavigationControllerProxy.clearHistory = oNavigationQueue.makeQueuable(fnInitializeHistory);
2876
+ oNavigationControllerProxy.clearHistory = oNavigationQueue.makeQueuable(fnInitializeHistory.bind(null, true));
2877
2877
  oNavigationControllerProxy.suspend = fnSuspend;
2878
2878
  oNavigationControllerProxy.restore = fnInitSession.bind(null, false);
2879
2879
  oNavigationControllerProxy.leave = fnStoreFocusAndGetHistoryObject;
@@ -2981,7 +2981,7 @@ sap.ui.define(["sap/ui/base/Object",
2981
2981
  * @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
2982
2982
  * @public
2983
2983
  * @extends sap.ui.base.Object
2984
- * @version 1.108.48
2984
+ * @version 1.108.50
2985
2985
  * @since 1.30.0
2986
2986
  * @alias sap.suite.ui.generic.template.lib.NavigationController
2987
2987
  */
@@ -38,7 +38,7 @@ sap.ui.define(['sap/ui/core/Core', 'sap/ui/core/library','sap/fe/placeholder/lib
38
38
  interfaces: [],
39
39
  controls: [],
40
40
  elements: [],
41
- version: "1.108.48",
41
+ version: "1.108.50",
42
42
  extensions: {
43
43
  //Configuration used for rule loading of Support Assistant
44
44
  "sap.ui.support": {