@sapui5/sap.ushell_abap 1.139.0 → 1.141.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/main/js/sap/ushell_abap/.library +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/AdapterContainer.js +19 -13
- package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +11 -11
- package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +81 -81
- package/src/main/js/sap/ushell_abap/adapters/abap/CommonDataModelAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +1 -2
- package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +15 -17
- package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +230 -167
- package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/MenuAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionInternalAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +10 -12
- package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +20 -17
- package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +5 -5
- package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +2 -2
- package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/UserInfoAdapter.js +34 -28
- package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/bootstrap/evo/SAPCompanionConditionSetter.js +5 -5
- package/src/main/js/sap/ushell_abap/bootstrap/evo/XhrLogonEventHandler.js +5 -2
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.bootstrap.utils.js +2 -2
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.configure.ushell.js +1 -1
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.pageset.js +54 -31
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.startup.js +17 -13
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.theme.handler.js +2 -1
- package/src/main/js/sap/ushell_abap/bootstrap/evo/boottask.js +85 -74
- package/src/main/js/sap/ushell_abap/components/TCodeNavigation/MessageCode.js +47 -0
- package/src/main/js/sap/ushell_abap/components/TCodeNavigation/TCodeNavigationError.js +59 -0
- package/src/main/js/sap/ushell_abap/components/TCodeNavigation.js +163 -0
- package/src/main/js/sap/ushell_abap/integration/fileshares/AppRuntimeFileShareSupport.js +4 -4
- package/src/main/js/sap/ushell_abap/library.js +8 -1
- package/src/main/js/sap/ushell_abap/pbServices/ui2/AllCatalogs.js +2 -2
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Bag.js +15 -19
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Catalog.js +19 -17
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Chip.js +14 -23
- package/src/main/js/sap/ushell_abap/pbServices/ui2/ChipDefinition.js +4 -5
- package/src/main/js/sap/ushell_abap/pbServices/ui2/ChipInstance.js +8 -13
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Error.js +2 -2
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Factory.js +12 -20
- package/src/main/js/sap/ushell_abap/pbServices/ui2/ODataService.js +9 -12
- package/src/main/js/sap/ushell_abap/pbServices/ui2/ODataWrapper.js +45 -33
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Page.js +3 -5
- package/src/main/js/sap/ushell_abap/pbServices/ui2/PageBuildingService.js +19 -22
- package/src/main/js/sap/ushell_abap/pbServices/ui2/PageSet.js +9 -10
- package/src/main/js/sap/ushell_abap/pbServices/ui2/RemoteCatalogService.js +2 -2
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Utils.js +19 -69
- package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/actions.js +3 -4
- package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/configuration.js +1 -1
- package/src/main/js/sap/ushell_abap/pbServices/ui2/contracts/visible.js +2 -2
- package/src/main/js/sap/ushell_abap/ui5appruntime/AppInfoAdapter.js +2 -2
- package/ui5.yaml +33 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sapui5/sap.ushell_abap",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.141.0",
|
|
4
4
|
"description": "SAPUI5 Library sap.ushell_abap",
|
|
5
5
|
"homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
|
|
6
6
|
"keywords": [
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"build-themes": "cross-env-shell ui5 build --exclude-task=* --include-task=buildThemes --framework-version $npm_package_version"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@ui5/cli": "^
|
|
18
|
+
"@ui5/cli": "^4.0.24",
|
|
19
19
|
"cross-env": "^7.0.3"
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<library xmlns="http://www.sap.com/sap.ui.library.xsd">
|
|
3
3
|
<name>sap.ushell_abap</name>
|
|
4
4
|
<vendor>SAP SE</vendor>
|
|
5
|
-
<version>1.
|
|
5
|
+
<version>1.141.0</version>
|
|
6
6
|
<copyright>Copyright (c) 2009-2025 SAP SE, All Rights Reserved</copyright>
|
|
7
7
|
<documentation>SAP library: sap.ushell_abap</documentation>
|
|
8
8
|
|
|
@@ -6,14 +6,16 @@ sap.ui.define([
|
|
|
6
6
|
"sap/ui/thirdparty/jquery",
|
|
7
7
|
"sap/ui/core/format/DateFormat",
|
|
8
8
|
"sap/ushell_abap/pbServices/ui2/ODataService",
|
|
9
|
-
"sap/ushell/services/_Personalization/constants"
|
|
9
|
+
"sap/ushell/services/_Personalization/constants",
|
|
10
|
+
"sap/ushell/utils/LaunchpadError"
|
|
10
11
|
], (
|
|
11
12
|
ObjectPath,
|
|
12
13
|
Log,
|
|
13
14
|
jQuery,
|
|
14
15
|
DateFormat,
|
|
15
16
|
ODataService,
|
|
16
|
-
constants
|
|
17
|
+
constants,
|
|
18
|
+
LaunchpadError
|
|
17
19
|
) => {
|
|
18
20
|
"use strict";
|
|
19
21
|
|
|
@@ -34,7 +36,7 @@ sap.ui.define([
|
|
|
34
36
|
return sContainerKey.substring(sCONTAINER_KEY_PREFIX.length, sCONTAINER_KEY_PREFIX.length + 40);
|
|
35
37
|
}
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
function AdapterContainer (sContainerKey, oService, oScope, sAppName) {
|
|
38
40
|
this._oService = oService;
|
|
39
41
|
this._oScope = oScope;
|
|
40
42
|
this["sap-cache-id"] = ObjectPath.get("_oService._oConfig.services.personalization.cacheId", this);
|
|
@@ -55,7 +57,7 @@ sap.ui.define([
|
|
|
55
57
|
};
|
|
56
58
|
this._oPropertyBag = {};
|
|
57
59
|
this._aOperationQueue = [];
|
|
58
|
-
}
|
|
60
|
+
}
|
|
59
61
|
|
|
60
62
|
/**
|
|
61
63
|
* Resets the container item values to initial ( retaining key, validity, etc!)
|
|
@@ -92,11 +94,12 @@ sap.ui.define([
|
|
|
92
94
|
// response contains items.results (!)
|
|
93
95
|
that._oJSONContainer.PersContainerItems = (that._oJSONContainer.PersContainerItems && that._oJSONContainer.PersContainerItems.results) || [];
|
|
94
96
|
oDeferred.resolve(that);
|
|
95
|
-
}, (sErrorMessage) => {
|
|
97
|
+
}, (sErrorMessage, oParsedError) => {
|
|
96
98
|
// this error handler used to resolve with an empty personalization container
|
|
97
99
|
// but was changed to reject the promise so that the caller can react to the error
|
|
98
100
|
Log.error(sErrorMessage);
|
|
99
|
-
|
|
101
|
+
|
|
102
|
+
oDeferred.reject(new LaunchpadError(sErrorMessage, oParsedError));
|
|
100
103
|
});
|
|
101
104
|
return oDeferred.promise();
|
|
102
105
|
};
|
|
@@ -114,8 +117,8 @@ sap.ui.define([
|
|
|
114
117
|
|
|
115
118
|
oDataWrapper.create(sRelativeURL, this._oJSONContainer, (/* response */) => {
|
|
116
119
|
oDeferred.resolve(that);
|
|
117
|
-
}, (sErrorMessage) => {
|
|
118
|
-
oDeferred.reject(sErrorMessage);
|
|
120
|
+
}, (sErrorMessage, oParsedError) => {
|
|
121
|
+
oDeferred.reject(new LaunchpadError(sErrorMessage, oParsedError));
|
|
119
122
|
});
|
|
120
123
|
return oDeferred.promise();
|
|
121
124
|
};
|
|
@@ -132,8 +135,8 @@ sap.ui.define([
|
|
|
132
135
|
|
|
133
136
|
oDataWrapper.del(sRelativeURL, (response) => {
|
|
134
137
|
oDeferred.resolve(that);
|
|
135
|
-
}, (sErrorMessage) => {
|
|
136
|
-
oDeferred.reject(sErrorMessage);
|
|
138
|
+
}, (sErrorMessage, oParsedError) => {
|
|
139
|
+
oDeferred.reject(new LaunchpadError(sErrorMessage, oParsedError));
|
|
137
140
|
});
|
|
138
141
|
this._reset();
|
|
139
142
|
return oDeferred.promise();
|
|
@@ -200,8 +203,8 @@ sap.ui.define([
|
|
|
200
203
|
};
|
|
201
204
|
|
|
202
205
|
/**
|
|
203
|
-
*
|
|
204
|
-
* returns {
|
|
206
|
+
* @param {string} sItemKey - The item key.
|
|
207
|
+
* @returns {{index: int, TrueItemKey: string, containerProperty: string}} An object containing match details.
|
|
205
208
|
* either trueKey xor containerProperty is set.
|
|
206
209
|
* index is filled iff it is a present item
|
|
207
210
|
*/
|
|
@@ -276,7 +279,7 @@ sap.ui.define([
|
|
|
276
279
|
sItemValue = this._oJSONContainer.PersContainerItems[oItemRef.index].value;
|
|
277
280
|
try {
|
|
278
281
|
oItemValue = JSON.parse(sItemValue);
|
|
279
|
-
} catch
|
|
282
|
+
} catch {
|
|
280
283
|
// Workaround for
|
|
281
284
|
// GW Bug "true" => "X" and false => "" at the backend
|
|
282
285
|
// can be removed once Correction of Note 2013368 is implemented in landscape
|
|
@@ -299,6 +302,8 @@ sap.ui.define([
|
|
|
299
302
|
/**
|
|
300
303
|
* set oItemValue under sItemKey
|
|
301
304
|
* returns undefined
|
|
305
|
+
* @param {string} sItemKey the item key
|
|
306
|
+
* @param {object} oItemValue the item value to be set
|
|
302
307
|
*/
|
|
303
308
|
AdapterContainer.prototype.setItemValue = function (sItemKey, oItemValue) {
|
|
304
309
|
const sItemValue = JSON.stringify(oItemValue);
|
|
@@ -332,6 +337,7 @@ sap.ui.define([
|
|
|
332
337
|
|
|
333
338
|
/**
|
|
334
339
|
* delete (1st) item with key sItemKey
|
|
340
|
+
* @param {string} sItemKey the item key
|
|
335
341
|
*/
|
|
336
342
|
AdapterContainer.prototype.delItem = function (sItemKey) {
|
|
337
343
|
const oItemRef = this._locateItem(sItemKey);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @fileOverview The Unified Shell's AppStateAdapter for the ABAP platform.
|
|
5
|
-
* @version 1.
|
|
5
|
+
* @version 1.141.0
|
|
6
6
|
*/
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/base/util/ObjectPath",
|
|
@@ -38,7 +38,7 @@ sap.ui.define([
|
|
|
38
38
|
*
|
|
39
39
|
* @private
|
|
40
40
|
*/
|
|
41
|
-
|
|
41
|
+
function AppStateAdapter (oSystem, sParameters, oConfig) {
|
|
42
42
|
this._oConfig = oConfig && oConfig.config;
|
|
43
43
|
const sAppStateServiceURL = `${ObjectPath.get("services.appState.baseUrl", oConfig) || "/sap/opu/odata/UI2/INTEROP"}/`;
|
|
44
44
|
const oODataWrapperSettings = {
|
|
@@ -47,11 +47,11 @@ sap.ui.define([
|
|
|
47
47
|
"sap-client": Container.getLogonSystem().getClient()
|
|
48
48
|
};
|
|
49
49
|
this._oWrapper = ODataWrapper.createODataWrapper(oODataWrapperSettings);
|
|
50
|
-
function fnDefaultFailure (
|
|
51
|
-
throw new SrvcError(
|
|
50
|
+
function fnDefaultFailure (sErrorMessage) {
|
|
51
|
+
throw new SrvcError(sErrorMessage, "sap.ushell_abap.adapters.abap.AppStateAdapter");
|
|
52
52
|
}
|
|
53
53
|
ODataService.call(this, this._oWrapper, fnDefaultFailure);
|
|
54
|
-
}
|
|
54
|
+
}
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
57
|
* Save the given data sValue for the given key at the persistence layer
|
|
@@ -83,8 +83,8 @@ sap.ui.define([
|
|
|
83
83
|
this._oWrapper.create(sRelativeUrl, oPayload, (/* response */) => {
|
|
84
84
|
oDeferred.resolve();
|
|
85
85
|
}, (sErrorMessage) => {
|
|
86
|
-
|
|
87
|
-
|
|
86
|
+
Log.error(`AppState save failed: ${sErrorMessage}`);
|
|
87
|
+
oDeferred.reject(new Error(sErrorMessage));
|
|
88
88
|
});
|
|
89
89
|
|
|
90
90
|
return oDeferred.promise();
|
|
@@ -111,12 +111,12 @@ sap.ui.define([
|
|
|
111
111
|
this._oWrapper.read(sRelativeUrl, (response) => {
|
|
112
112
|
oDeferredRead.resolve(response.id, response.value);
|
|
113
113
|
}, (sErrorMessage) => {
|
|
114
|
-
Log.error(sErrorMessage);
|
|
115
|
-
oDeferredRead.reject(sErrorMessage);
|
|
114
|
+
Log.error(`AppState load failed: ${sErrorMessage}`);
|
|
115
|
+
oDeferredRead.reject(new Error(sErrorMessage));
|
|
116
116
|
}, false);
|
|
117
117
|
this._oWrapper.submitBatchQueue(() => { }, (sErrorMessage) => {
|
|
118
|
-
Log.error(sErrorMessage);
|
|
119
|
-
oDeferredRead.reject(sErrorMessage);
|
|
118
|
+
Log.error(`AppState load failed: ${sErrorMessage}`);
|
|
119
|
+
oDeferredRead.reject(new Error(sErrorMessage));
|
|
120
120
|
});
|
|
121
121
|
|
|
122
122
|
return oDeferredRead.promise();
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* <li>provide the resolveHashFragmentFallback function, a fallback method called by ClientSideTargetResolution service.</li>
|
|
10
10
|
* </ul>
|
|
11
11
|
*
|
|
12
|
-
* @version 1.
|
|
12
|
+
* @version 1.141.0
|
|
13
13
|
*/
|
|
14
14
|
sap.ui.define([
|
|
15
15
|
"sap/base/util/ObjectPath",
|
|
@@ -106,7 +106,7 @@ sap.ui.define([
|
|
|
106
106
|
* @since 1.34.0
|
|
107
107
|
* @private
|
|
108
108
|
*/
|
|
109
|
-
|
|
109
|
+
function ClientSideTargetResolutionAdapter (oSystem, sParameters, oAdapterConfig) {
|
|
110
110
|
const that = this;
|
|
111
111
|
// as the method getProductVersion returns the product name, the following holds true.
|
|
112
112
|
const oContainer = Container;
|
|
@@ -214,8 +214,8 @@ sap.ui.define([
|
|
|
214
214
|
that._storeFromFullStartupResponse(oFullStartupResult);
|
|
215
215
|
fnResolve(); // resolve the full promise
|
|
216
216
|
})
|
|
217
|
-
.catch((
|
|
218
|
-
fnReject(
|
|
217
|
+
.catch((oError) => {
|
|
218
|
+
fnReject(oError); // reject the full promise
|
|
219
219
|
});
|
|
220
220
|
};
|
|
221
221
|
|
|
@@ -271,10 +271,10 @@ sap.ui.define([
|
|
|
271
271
|
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
|
|
272
272
|
);
|
|
273
273
|
}
|
|
274
|
-
}).catch((
|
|
274
|
+
}).catch((oError) => {
|
|
275
275
|
Log.error(
|
|
276
276
|
"Initial segment promise was rejected.",
|
|
277
|
-
|
|
277
|
+
oError,
|
|
278
278
|
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
|
|
279
279
|
);
|
|
280
280
|
});
|
|
@@ -287,7 +287,7 @@ sap.ui.define([
|
|
|
287
287
|
);
|
|
288
288
|
that._storeFromFullStartupResponse(oFullStartupResult);
|
|
289
289
|
});
|
|
290
|
-
}
|
|
290
|
+
}
|
|
291
291
|
|
|
292
292
|
/**
|
|
293
293
|
* Checks the Resolve Link/Start Up result for Application Dependencies and if present modifies the results
|
|
@@ -450,26 +450,26 @@ sap.ui.define([
|
|
|
450
450
|
});
|
|
451
451
|
|
|
452
452
|
// must wait on the full target mappings promise to complete before returning
|
|
453
|
-
this._oNavTargetPromise
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
453
|
+
this._oNavTargetPromise
|
|
454
|
+
.then(() => {
|
|
455
|
+
Log.debug(
|
|
456
|
+
"Got inbounds from full start_up response",
|
|
457
|
+
"",
|
|
458
|
+
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
|
|
459
|
+
);
|
|
459
460
|
|
|
460
|
-
|
|
461
|
-
|
|
461
|
+
// convert (once) when needed
|
|
462
|
+
this._aInbounds = this._formatDirectStart(this._aTargetMappings);
|
|
462
463
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
464
|
+
// we don't want to check for the initial segment in the future anymore, since we've got all the inbounds now.
|
|
465
|
+
this.getInbounds = function () {
|
|
466
|
+
// replace implementation of this method (no conversion in future calls anymore!)
|
|
467
|
+
return Promise.resolve(this._aInbounds);
|
|
468
|
+
};
|
|
468
469
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
fnReject
|
|
472
|
-
});
|
|
470
|
+
fnResolve(this._aInbounds);
|
|
471
|
+
})
|
|
472
|
+
.catch(fnReject);
|
|
473
473
|
});
|
|
474
474
|
};
|
|
475
475
|
|
|
@@ -528,12 +528,12 @@ sap.ui.define([
|
|
|
528
528
|
(sNavTargetDataResult) => {
|
|
529
529
|
const oNavTargetDataResult = JSON.parse(sNavTargetDataResult);
|
|
530
530
|
if (!oNavTargetDataResult) {
|
|
531
|
-
fnReject("Malformed Full TM Result");
|
|
531
|
+
fnReject(new Error("Malformed Full TM Result"));
|
|
532
532
|
}
|
|
533
533
|
fnResolve(oNavTargetDataResult);
|
|
534
534
|
},
|
|
535
|
-
(
|
|
536
|
-
fnReject(
|
|
535
|
+
(sErrorMessage) => {
|
|
536
|
+
fnReject(new Error(sErrorMessage));
|
|
537
537
|
}
|
|
538
538
|
);
|
|
539
539
|
});
|
|
@@ -871,9 +871,7 @@ sap.ui.define([
|
|
|
871
871
|
}
|
|
872
872
|
|
|
873
873
|
oODataResponse.results.forEach((oEntry) => {
|
|
874
|
-
let oParam;
|
|
875
874
|
const sEntryName = oEntry.name;
|
|
876
|
-
let sEntryValue;
|
|
877
875
|
let sUserDefaultValue;
|
|
878
876
|
|
|
879
877
|
if (Object.prototype.hasOwnProperty.call(oRes.parameters, sEntryName)) {
|
|
@@ -886,8 +884,8 @@ sap.ui.define([
|
|
|
886
884
|
required: that._getObjectDefaulting(oEntry, "required", false)
|
|
887
885
|
};
|
|
888
886
|
|
|
889
|
-
oParam = oRes.parameters[sEntryName];
|
|
890
|
-
sEntryValue = that._getObjectDefaulting(oEntry, "value", "");
|
|
887
|
+
const oParam = oRes.parameters[sEntryName];
|
|
888
|
+
const sEntryValue = that._getObjectDefaulting(oEntry, "value", "");
|
|
891
889
|
|
|
892
890
|
if (oEntry.regexp === true) {
|
|
893
891
|
oParam.filter = {
|
|
@@ -1131,7 +1129,6 @@ sap.ui.define([
|
|
|
1131
1129
|
*/
|
|
1132
1130
|
ClientSideTargetResolutionAdapter.prototype._resolveHashFragmentBE = function (sFragmentNoHash) {
|
|
1133
1131
|
const that = this;
|
|
1134
|
-
let bBatchQueueOpened;
|
|
1135
1132
|
const sFormFactor = Utils.getFormFactor();
|
|
1136
1133
|
|
|
1137
1134
|
/**
|
|
@@ -1147,7 +1144,7 @@ sap.ui.define([
|
|
|
1147
1144
|
return encodeURIComponent(sUnencoded).replace(/'/g, "''");
|
|
1148
1145
|
}
|
|
1149
1146
|
|
|
1150
|
-
bBatchQueueOpened = this._openBatchQueueUnlessOpen(this._getODataWrapper());
|
|
1147
|
+
const bBatchQueueOpened = this._openBatchQueueUnlessOpen(this._getODataWrapper());
|
|
1151
1148
|
|
|
1152
1149
|
/**
|
|
1153
1150
|
* Adds the given post parameters to a url
|
|
@@ -1207,18 +1204,21 @@ sap.ui.define([
|
|
|
1207
1204
|
|
|
1208
1205
|
that._compactTooLongWdaUrl(oAdjustedResult).then((oCompactedResult) => {
|
|
1209
1206
|
fnResolve(oCompactedResult);
|
|
1210
|
-
}).catch((
|
|
1211
|
-
|
|
1207
|
+
}).catch((oError) => {
|
|
1208
|
+
Log.error(`Could not resolve link '${sFragmentNoHash}' due to compactation failure`, oError);
|
|
1209
|
+
fnReject(oError);
|
|
1212
1210
|
});
|
|
1213
1211
|
} else {
|
|
1214
|
-
fnReject(`Could not resolve link '${sFragmentNoHash}'`);
|
|
1212
|
+
fnReject(new Error(`Could not resolve link '${sFragmentNoHash}'`));
|
|
1215
1213
|
}
|
|
1216
|
-
}, (
|
|
1217
|
-
fnReject(
|
|
1214
|
+
}, (sErrorMessage) => {
|
|
1215
|
+
fnReject(new Error(sErrorMessage));
|
|
1218
1216
|
});
|
|
1219
1217
|
|
|
1220
1218
|
if (bBatchQueueOpened) {
|
|
1221
|
-
that._getODataWrapper().submitBatchQueue(() => { },
|
|
1219
|
+
that._getODataWrapper().submitBatchQueue(() => { }, (sErrorMessage) => {
|
|
1220
|
+
fnReject(new Error(sErrorMessage));
|
|
1221
|
+
});
|
|
1222
1222
|
}
|
|
1223
1223
|
});
|
|
1224
1224
|
};
|
|
@@ -1324,6 +1324,45 @@ sap.ui.define([
|
|
|
1324
1324
|
|
|
1325
1325
|
// check if we have it already
|
|
1326
1326
|
return new Promise((fnResolve, fnReject) => {
|
|
1327
|
+
/*
|
|
1328
|
+
* Trigger call to front-end server. This case may occur, for example, during application direct start with
|
|
1329
|
+
* a system alias that is not sent by the backend. Backend only sends data about the system aliases that are
|
|
1330
|
+
* mentioned in the systemAlias fields of the target mappings (or for virtual target mappings).
|
|
1331
|
+
*/
|
|
1332
|
+
function fnRetryBufferOrUseInterop () {
|
|
1333
|
+
oSystemAliasData = that._readSystemAliasFromBuffer(sSystemAlias); // note: already in ClientSideTargetResolutionAdapter format
|
|
1334
|
+
if (oSystemAliasData) {
|
|
1335
|
+
Log.debug(
|
|
1336
|
+
`System alias '${sSystemAlias}' is now in buffer`,
|
|
1337
|
+
"Skipping INTEROP service call",
|
|
1338
|
+
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
|
|
1339
|
+
);
|
|
1340
|
+
fnResolve(oSystemAliasData);
|
|
1341
|
+
} else {
|
|
1342
|
+
Log.debug(
|
|
1343
|
+
`System alias '${sSystemAlias}' still not in buffer`,
|
|
1344
|
+
"Resolving via INTEROP service",
|
|
1345
|
+
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
|
|
1346
|
+
);
|
|
1347
|
+
that._readSystemAliasViaInterop(sSystemAlias)
|
|
1348
|
+
.catch((oError) => {
|
|
1349
|
+
fnReject(oError);
|
|
1350
|
+
})
|
|
1351
|
+
.then((oOdataSystemAliasData) => {
|
|
1352
|
+
oSystemAliasData = that._fixSystemAlias(oOdataSystemAliasData);
|
|
1353
|
+
|
|
1354
|
+
if (oSystemAliasData && oSystemAliasData.id) {
|
|
1355
|
+
that._writeSystemAliasToBuffer(oSystemAliasData);
|
|
1356
|
+
fnResolve(oSystemAliasData);
|
|
1357
|
+
} else {
|
|
1358
|
+
sMessage = "Data returned for system alias is not valid. Has no 'id'. System alias data will not be cached.";
|
|
1359
|
+
Log.warning(`ClientSideTargetResolutionAdapter: ${sMessage}`);
|
|
1360
|
+
fnResolve(oSystemAliasData);
|
|
1361
|
+
}
|
|
1362
|
+
});
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
|
|
1327
1366
|
oSystemAliasData = this._readSystemAliasFromBuffer(sSystemAlias); // note: already in ClientSideTargetResolutionAdapter format
|
|
1328
1367
|
if (oSystemAliasData) {
|
|
1329
1368
|
Log.debug(
|
|
@@ -1343,46 +1382,7 @@ sap.ui.define([
|
|
|
1343
1382
|
|
|
1344
1383
|
// must wait at least on the small start_up response before using INTEROP
|
|
1345
1384
|
|
|
1346
|
-
|
|
1347
|
-
* Trigger call to front-end server. This case may occur, for example, during application direct start with
|
|
1348
|
-
* a system alias that is not sent by the backend. Backend only sends data about the system aliases that are
|
|
1349
|
-
* mentioned in the systemAlias fields of the target mappings (or for virtual target mappings).
|
|
1350
|
-
*/
|
|
1351
|
-
const fnRetryBufferOrUseInterop = function () {
|
|
1352
|
-
oSystemAliasData = that._readSystemAliasFromBuffer(sSystemAlias); // note: already in ClientSideTargetResolutionAdapter format
|
|
1353
|
-
if (oSystemAliasData) {
|
|
1354
|
-
Log.debug(
|
|
1355
|
-
`System alias '${sSystemAlias}' is now in buffer`,
|
|
1356
|
-
"Skipping INTEROP service call",
|
|
1357
|
-
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
|
|
1358
|
-
);
|
|
1359
|
-
fnResolve(oSystemAliasData);
|
|
1360
|
-
} else {
|
|
1361
|
-
Log.debug(
|
|
1362
|
-
`System alias '${sSystemAlias}' still not in buffer`,
|
|
1363
|
-
"Resolving via INTEROP service",
|
|
1364
|
-
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
|
|
1365
|
-
);
|
|
1366
|
-
that._readSystemAliasViaInterop(sSystemAlias)
|
|
1367
|
-
.catch((sError) => {
|
|
1368
|
-
fnReject(sError);
|
|
1369
|
-
})
|
|
1370
|
-
.then((oOdataSystemAliasData) => {
|
|
1371
|
-
oSystemAliasData = that._fixSystemAlias(oOdataSystemAliasData);
|
|
1372
|
-
|
|
1373
|
-
if (oSystemAliasData && oSystemAliasData.id) {
|
|
1374
|
-
that._writeSystemAliasToBuffer(oSystemAliasData);
|
|
1375
|
-
fnResolve(oSystemAliasData);
|
|
1376
|
-
} else {
|
|
1377
|
-
sMessage = "Data returned for system alias is not valid. Has no 'id'. System alias data will not be cached.";
|
|
1378
|
-
Log.warning(`ClientSideTargetResolutionAdapter: ${sMessage}`);
|
|
1379
|
-
fnResolve(oSystemAliasData);
|
|
1380
|
-
}
|
|
1381
|
-
});
|
|
1382
|
-
}
|
|
1383
|
-
};
|
|
1384
|
-
|
|
1385
|
-
this._oInitialSegmentPromise.then(fnRetryBufferOrUseInterop, fnRetryBufferOrUseInterop);
|
|
1385
|
+
this._oInitialSegmentPromise.finally(fnRetryBufferOrUseInterop);
|
|
1386
1386
|
}
|
|
1387
1387
|
});
|
|
1388
1388
|
};
|
|
@@ -1520,8 +1520,8 @@ sap.ui.define([
|
|
|
1520
1520
|
(oSystemAliasData) => {
|
|
1521
1521
|
fnResolve(oSystemAliasData);
|
|
1522
1522
|
},
|
|
1523
|
-
(
|
|
1524
|
-
fnReject(
|
|
1523
|
+
(sErrorMessage) => {
|
|
1524
|
+
fnReject(new Error(sErrorMessage));
|
|
1525
1525
|
}
|
|
1526
1526
|
);
|
|
1527
1527
|
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @fileOverview The ConfigurationDefaults adapter for the ABAP platform.
|
|
5
|
-
* @version 1.
|
|
5
|
+
* @version 1.141.0
|
|
6
6
|
*/
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/ushell_abap/bootstrap/evo/abap.constants",
|
|
@@ -11,7 +11,6 @@ sap.ui.define([
|
|
|
11
11
|
"use strict";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* @returns {sap.ushell_abap.adapters.abap.ConfigurationDefaultsAdapter}
|
|
15
14
|
* @private
|
|
16
15
|
*/
|
|
17
16
|
return function () {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @fileOverview The Unified Shell's container adapter for the ABAP platform.
|
|
4
4
|
*
|
|
5
|
-
* @version 1.
|
|
5
|
+
* @version 1.141.0
|
|
6
6
|
*/
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/ui/thirdparty/jquery",
|
|
@@ -25,7 +25,7 @@ sap.ui.define([
|
|
|
25
25
|
abapUtils,
|
|
26
26
|
ODataWrapper,
|
|
27
27
|
URI,
|
|
28
|
-
|
|
28
|
+
datajs,
|
|
29
29
|
deepClone,
|
|
30
30
|
ObjectPath,
|
|
31
31
|
Log,
|
|
@@ -42,6 +42,8 @@ sap.ui.define([
|
|
|
42
42
|
* Constructs a new instance of the container adapter for the ABAP platform.
|
|
43
43
|
*
|
|
44
44
|
* @param {sap.ushell.System} oSystem the logon system (alias, platform, base URL)
|
|
45
|
+
* @param {string} sParameter the parameter to be passed to the container adapter
|
|
46
|
+
* @param {object} oProperties the properties to be passed to the container adapter, e.g. the configuration
|
|
45
47
|
*
|
|
46
48
|
* @hideconstructor
|
|
47
49
|
* @see sap.ushell.services.initializeContainer
|
|
@@ -49,7 +51,7 @@ sap.ui.define([
|
|
|
49
51
|
* @since 1.11.0
|
|
50
52
|
* @private
|
|
51
53
|
*/
|
|
52
|
-
|
|
54
|
+
function ContainerAdapter (oSystem, sParameter, oProperties) {
|
|
53
55
|
let oUser;
|
|
54
56
|
const S_LOGOFF_URL = "/sap/public/bc/icf/logoff";
|
|
55
57
|
|
|
@@ -78,7 +80,7 @@ sap.ui.define([
|
|
|
78
80
|
oFrame.setAttribute("src", sUrl);
|
|
79
81
|
|
|
80
82
|
function onload () {
|
|
81
|
-
parent.postMessage(sSafeUrl, "*");
|
|
83
|
+
window.parent.postMessage(sSafeUrl, "*");
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
oFrame.addEventListener("load", onload);
|
|
@@ -129,9 +131,7 @@ sap.ui.define([
|
|
|
129
131
|
// startup result (modified!)
|
|
130
132
|
this._setThemeAccessibilityFlags = function (oStartupResult) {
|
|
131
133
|
if (oStartupResult.userProfile && oStartupResult.userProfile.length) {
|
|
132
|
-
|
|
133
|
-
let oUserProfileDataAccessibility;
|
|
134
|
-
oUserProfileDataTheme = oStartupResult.userProfile.filter((profileProperty) => {
|
|
134
|
+
const oUserProfileDataTheme = oStartupResult.userProfile.filter((profileProperty) => {
|
|
135
135
|
return profileProperty.id && profileProperty.id === "THEME";
|
|
136
136
|
})[0];
|
|
137
137
|
// Theme
|
|
@@ -145,7 +145,7 @@ sap.ui.define([
|
|
|
145
145
|
}
|
|
146
146
|
// AccessibilityPermitted: Note: we only register whether editing the Accessibility is allowed on the
|
|
147
147
|
// ABAP Platform, we don't test whether accessibility is available!
|
|
148
|
-
oUserProfileDataAccessibility = oStartupResult.userProfile.filter((profileProperty) => {
|
|
148
|
+
const oUserProfileDataAccessibility = oStartupResult.userProfile.filter((profileProperty) => {
|
|
149
149
|
return profileProperty.id && profileProperty.id === "ACCESSIBILITY";
|
|
150
150
|
})[0];
|
|
151
151
|
if (oUserProfileDataAccessibility && oUserProfileDataAccessibility.id) {
|
|
@@ -391,11 +391,9 @@ sap.ui.define([
|
|
|
391
391
|
});
|
|
392
392
|
}
|
|
393
393
|
oDeferred.resolve();
|
|
394
|
-
}, (
|
|
395
|
-
Log.error(
|
|
396
|
-
|
|
397
|
-
"sap.ushell_abap.adapters.abap.ContainerAdapter");
|
|
398
|
-
oDeferred.reject();
|
|
394
|
+
}, (sErrorMessage) => { // error handler
|
|
395
|
+
Log.error("Reading REMOTE catalogs failed:", sErrorMessage, "sap.ushell_abap.adapters.abap.ContainerAdapter");
|
|
396
|
+
oDeferred.reject(new Error(sErrorMessage));
|
|
399
397
|
});
|
|
400
398
|
})
|
|
401
399
|
.catch(oDeferred.reject);
|
|
@@ -513,13 +511,13 @@ sap.ui.define([
|
|
|
513
511
|
}
|
|
514
512
|
|
|
515
513
|
if (isUserImageEnabled() && oUser && oUser.isJamActive && oUser.isJamActive()) {
|
|
516
|
-
|
|
514
|
+
datajs.read("/sap/bc/ui2/smi/rest_tunnel/Jam/api/v1/OData/Self?$format=json", (oResponseData) => {
|
|
517
515
|
const sJamUserId = oResponseData.results.Id;
|
|
518
516
|
const sJamUserImageUrl = `/sap/bc/ui2/smi/rest_tunnel/Jam/api/v1/OData/Members('${sJamUserId}')/ProfilePhoto/$value`;
|
|
519
517
|
|
|
520
518
|
oUser.setImage(sJamUserImageUrl);
|
|
521
|
-
}, () => {
|
|
522
|
-
Log.error("Could not
|
|
519
|
+
}, (oDataJsError) => {
|
|
520
|
+
Log.error("Could not receive JAM user data");
|
|
523
521
|
});
|
|
524
522
|
}
|
|
525
523
|
};
|
|
@@ -540,7 +538,7 @@ sap.ui.define([
|
|
|
540
538
|
}
|
|
541
539
|
return sUrl;
|
|
542
540
|
};
|
|
543
|
-
}
|
|
541
|
+
}
|
|
544
542
|
|
|
545
543
|
return ContainerAdapter;
|
|
546
544
|
});
|