@sapui5/sap.ushell_abap 1.145.1 → 1.147.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 +4 -4
- package/src/main/js/sap/ushell_abap/.library +8 -7
- package/src/main/js/sap/ushell_abap/adapters/abap/AdapterContainer.js +4 -5
- package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +143 -69
- package/src/main/js/sap/ushell_abap/adapters/abap/CommonDataModelAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +7 -4
- package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +19 -10
- package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +148 -109
- package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.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 +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +9 -10
- package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +1 -1
- 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 +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/PrepareDirectAppStart.js +20 -0
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/RequestGroups.js +51 -0
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/RequestTargetMappings.js +29 -0
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask.js +47 -0
- package/src/main/js/sap/ushell_abap/bootstrap/ConfigurationProvider.js +87 -0
- package/src/main/js/sap/ushell_abap/bootstrap/DirectAppStart.js +231 -0
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/CreateRenderer.js +43 -0
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/InitXhrLogon.js +148 -0
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/RequestPages.js +86 -0
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad.js +63 -0
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpadModule.js +11 -0
- package/src/main/js/sap/ushell_abap/bootstrap/PageSetsRequestHandler.js +247 -0
- package/src/main/js/sap/ushell_abap/bootstrap/PlatformConfig.js +385 -0
- package/src/main/js/sap/ushell_abap/bootstrap/{evo/SAPCompanionConditionSetter.js → SAPCompanionConditionSetter.js} +6 -4
- package/src/main/js/sap/ushell_abap/bootstrap/StartupRequestHandler.js +145 -0
- package/src/main/js/sap/ushell_abap/bootstrap/ThemeHandler.js +276 -0
- package/src/main/js/sap/ushell_abap/bootstrap/XhrFactory.js +69 -0
- package/src/main/js/sap/ushell_abap/bootstrap/{evo/XhrLogonEventHandler.js → XhrLogonEventHandler.js} +13 -7
- package/src/main/js/sap/ushell_abap/bootstrap/XhrLogonLibLoader.js +51 -0
- package/src/main/js/sap/ushell_abap/bootstrap/abap-def-dev.js +20 -0
- package/src/main/js/sap/ushell_abap/bootstrap/{evo/abap-def-loader.js → abap-def-loader.js} +2 -2
- package/src/main/js/sap/ushell_abap/bootstrap/abap-def.js +22 -0
- package/src/main/js/sap/ushell_abap/bootstrap/{evo/abap.constants.js → abapConstants.js} +8 -2
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.js +1 -1
- package/src/main/js/sap/ushell_abap/components/TCodeNavigation/MessageCode.js +18 -1
- package/src/main/js/sap/ushell_abap/components/TCodeNavigation.js +27 -16
- package/src/main/js/sap/ushell_abap/library.js +1 -1
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Contracts.js +33 -0
- package/ui5.yaml +7 -6
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap-def-dev.js +0 -42
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap-def.js +0 -45
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.bootstrap.utils.js +0 -172
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.configure.theme.js +0 -28
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.configure.ushell.js +0 -176
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.load.launchpad.js +0 -72
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.pageset.js +0 -219
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.request.startup.js +0 -154
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.theme.handler.js +0 -75
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.xhrlogon.LibLoader.js +0 -21
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.xhrlogon.configure.js +0 -62
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.xhrlogon.handler.js +0 -82
- package/src/main/js/sap/ushell_abap/bootstrap/evo/boottask.js +0 -948
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sapui5/sap.ushell_abap",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.147.0",
|
|
4
4
|
"description": "SAPUI5 Library sap.ushell_abap",
|
|
5
|
+
"author": "SAP SE (https://www.sap.com)",
|
|
6
|
+
"license": "SEE LICENSE IN LICENSE.txt",
|
|
5
7
|
"homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
|
|
6
8
|
"keywords": [
|
|
7
9
|
"sapui5",
|
|
8
10
|
"ui5"
|
|
9
11
|
],
|
|
10
|
-
"author": "SAP SE (https://www.sap.com)",
|
|
11
|
-
"license": "SEE LICENSE IN LICENSE.txt",
|
|
12
12
|
"scripts": {
|
|
13
13
|
"build": "cross-env-shell ui5 build --exclude-task=generateLibraryPreload --framework-version $npm_package_version",
|
|
14
14
|
"build-all": "cross-env-shell ui5 build --all --framework-version $npm_package_version",
|
|
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": "^4.0.
|
|
18
|
+
"@ui5/cli": "^4.0.50",
|
|
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.147.0</version>
|
|
6
6
|
<copyright>Copyright (c) 2009-2026 SAP SE, All Rights Reserved</copyright>
|
|
7
7
|
<documentation>SAP library: sap.ushell_abap</documentation>
|
|
8
8
|
|
|
@@ -54,13 +54,14 @@
|
|
|
54
54
|
<exclude name="sap.ushell_abap.bootstrap.evo.abap-dbg" />
|
|
55
55
|
</jsdoc>
|
|
56
56
|
<jscoverage xmlns="http://www.sap.com/ui5/buildext/jscoverage" >
|
|
57
|
-
<!-- excludes for JScoverage -->
|
|
58
57
|
<!-- Bundles -->
|
|
59
|
-
<exclude name="
|
|
60
|
-
<exclude name="
|
|
61
|
-
<exclude name="sap
|
|
62
|
-
<exclude name="sap
|
|
63
|
-
<exclude name="sap
|
|
58
|
+
<exclude name="**/*-preload" />
|
|
59
|
+
<exclude name="**/preload-bundles/**/*" />
|
|
60
|
+
<exclude name="sap/ushell_abap/bootstrap/appruntime-min*" />
|
|
61
|
+
<exclude name="sap/ushell_abap/bootstrap/evo/abap*" />
|
|
62
|
+
<exclude name="sap/ushell_abap/bootstrap/evo/core-min*" />
|
|
63
|
+
<exclude name="sap/ushell_abap/bootstrap/evo/core-ext-light*" />
|
|
64
|
+
<exclude name="sap/ushell_abap/thirdparty/sap-xhrlib-esm*" />
|
|
64
65
|
</jscoverage>
|
|
65
66
|
<releasenotes xmlns="http://www.sap.com/ui5/buildext/releasenotes"
|
|
66
67
|
url="../../../test-resources/sap/ushell_abap/relnotes/changes-{major}.{minor}.json"
|
|
@@ -6,7 +6,7 @@ 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/
|
|
9
|
+
"sap/ushell/services/PersonalizationV2/constants",
|
|
10
10
|
"sap/ushell/utils/LaunchpadError"
|
|
11
11
|
], (
|
|
12
12
|
ObjectPath,
|
|
@@ -14,7 +14,7 @@ sap.ui.define([
|
|
|
14
14
|
jQuery,
|
|
15
15
|
DateFormat,
|
|
16
16
|
ODataService,
|
|
17
|
-
|
|
17
|
+
PersonalizationV2Constants,
|
|
18
18
|
LaunchpadError
|
|
19
19
|
) => {
|
|
20
20
|
"use strict";
|
|
@@ -368,9 +368,8 @@ sap.ui.define([
|
|
|
368
368
|
if (!oScope) {
|
|
369
369
|
return "U";
|
|
370
370
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
oScope.writeFrequency && oScope.writeFrequency === oConstants.writeFrequency.LOW &&
|
|
371
|
+
if (oScope.keyCategory && oScope.keyCategory === PersonalizationV2Constants.keyCategory.FIXED_KEY &&
|
|
372
|
+
oScope.writeFrequency && oScope.writeFrequency === PersonalizationV2Constants.writeFrequency.LOW &&
|
|
374
373
|
oScope.clientStorageAllowed && oScope.clientStorageAllowed === true) {
|
|
375
374
|
return "P";
|
|
376
375
|
}
|
|
@@ -9,12 +9,13 @@
|
|
|
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.147.0
|
|
13
13
|
*/
|
|
14
14
|
sap.ui.define([
|
|
15
15
|
"sap/base/util/ObjectPath",
|
|
16
16
|
"sap/base/util/isPlainObject",
|
|
17
17
|
"sap/base/util/deepExtend",
|
|
18
|
+
"sap/ushell/base/SAPBusinessClientEnablement",
|
|
18
19
|
"sap/ushell/utils",
|
|
19
20
|
"sap/ushell/utils/UrlParsing",
|
|
20
21
|
"sap/base/Log",
|
|
@@ -26,6 +27,7 @@ sap.ui.define([
|
|
|
26
27
|
ObjectPath,
|
|
27
28
|
isPlainObject,
|
|
28
29
|
deepExtend,
|
|
30
|
+
SAPBusinessClientEnablement,
|
|
29
31
|
ushellUtils,
|
|
30
32
|
UrlParsing,
|
|
31
33
|
Log,
|
|
@@ -70,7 +72,6 @@ sap.ui.define([
|
|
|
70
72
|
* @property {string} postParameters The post parameters of the source.
|
|
71
73
|
* @property {string} url The URL of the source.
|
|
72
74
|
* @property {string} systemAlias The system alias of the source.
|
|
73
|
-
* @property {sap.ushell.services.ClientSideTargetResolution.DeviceTypes} [formfactors] The form factors of the source.
|
|
74
75
|
* @property {sap.ushell.services.ClientSideTargetResolution.DeviceTypes} [formFactors] The form factors of the source.
|
|
75
76
|
* @property {sap.ushell.services.ClientSideTargetResolution.Signature} signature The signature of the source.
|
|
76
77
|
* @property {object} parameterMappings The parameter mappings of the source.
|
|
@@ -80,9 +81,6 @@ sap.ui.define([
|
|
|
80
81
|
* @property {string} catalogId The catalog ID of the source.
|
|
81
82
|
* @property {string} tmChipId The TM chip ID of the source.
|
|
82
83
|
* @property {string} tcode The transaction code of the LADI/Target Mapping.
|
|
83
|
-
* @property {string} isDefaultLadi Indicates whether the LADI/Target Mapping is default.
|
|
84
|
-
* @property {string} ladiHasTiles Indicates whether the LADI/Target Mapping has tiles.
|
|
85
|
-
* @property {string} defaultTileParams The default tile parameters of the LADI/Target Mapping.
|
|
86
84
|
*
|
|
87
85
|
* @since 1.135.0
|
|
88
86
|
* @private
|
|
@@ -309,10 +307,10 @@ sap.ui.define([
|
|
|
309
307
|
if (oAppDependencies.url.toUpperCase().indexOf(oUri.path().toUpperCase()) !== 0) {
|
|
310
308
|
// No applicationDependencies in this case as they belong to the wrong app
|
|
311
309
|
Log.debug("Component URL defined in target mapping "
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
310
|
+
+ "does not match the URL retrieved from application index. "
|
|
311
|
+
+ "The URL of the application index is used for further processing.",
|
|
312
|
+
`Target mapping URL: ${oResult.url}\nApplication index URL: ${oAppDependencies.url}`,
|
|
313
|
+
"sap.ushell_abap.bootstrap.abap");
|
|
316
314
|
}
|
|
317
315
|
oUri.path(oAppDependencies.url);
|
|
318
316
|
sUrl = oUri.toString();
|
|
@@ -326,8 +324,7 @@ sap.ui.define([
|
|
|
326
324
|
oAdjustedResult.applicationDependencies = oAppDependencies;
|
|
327
325
|
} catch (oError) {
|
|
328
326
|
Log.error(
|
|
329
|
-
`Parsing of applicationDependencies attribute in resolveLink result failed for SAPUI5 component '${
|
|
330
|
-
sComponentName}'`,
|
|
327
|
+
`Parsing of applicationDependencies attribute in resolveLink result failed for SAPUI5 component '${sComponentName}'`,
|
|
331
328
|
oError,
|
|
332
329
|
"sap.ushell_abap.bootstrap.abap"
|
|
333
330
|
);
|
|
@@ -401,8 +398,8 @@ sap.ui.define([
|
|
|
401
398
|
return new Promise((fnResolve, fnReject) => {
|
|
402
399
|
this._oInitialSegmentPromise.then((aInitialSegmentAndTargetMappings) => {
|
|
403
400
|
if (aInitialSegmentAndTargetMappings === null) {
|
|
404
|
-
|
|
405
|
-
|
|
401
|
+
// When this promise resolved with null it means that target mappings won't be taken from an initial segment ever
|
|
402
|
+
// in the future (mostly likely because this is not needed, e.g., no direct start).
|
|
406
403
|
return;
|
|
407
404
|
}
|
|
408
405
|
|
|
@@ -412,7 +409,9 @@ sap.ui.define([
|
|
|
412
409
|
"",
|
|
413
410
|
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
|
|
414
411
|
);
|
|
415
|
-
|
|
412
|
+
|
|
413
|
+
({ aResult: this._aInbounds, oResultABAP: this._oInboundsABAP } = this._formatDirectStart(this._aTargetMappings));
|
|
414
|
+
|
|
416
415
|
fnResolve(this._aInbounds);
|
|
417
416
|
} else {
|
|
418
417
|
Log.debug(
|
|
@@ -432,8 +431,7 @@ sap.ui.define([
|
|
|
432
431
|
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
|
|
433
432
|
);
|
|
434
433
|
|
|
435
|
-
|
|
436
|
-
this._aInbounds = this._formatDirectStart(this._aTargetMappings);
|
|
434
|
+
({ aResult: this._aInbounds, oResultABAP: this._oInboundsABAP } = this._formatDirectStart(this._aTargetMappings));
|
|
437
435
|
|
|
438
436
|
// we don't want to check for the initial segment in the future anymore, since we've got all the inbounds now.
|
|
439
437
|
this.getInbounds = function () {
|
|
@@ -447,6 +445,60 @@ sap.ui.define([
|
|
|
447
445
|
});
|
|
448
446
|
};
|
|
449
447
|
|
|
448
|
+
/**
|
|
449
|
+
* Creates a new array of inbound objects enriched with ABAP-specific properties.
|
|
450
|
+
*
|
|
451
|
+
* This method merges the ABAP-specific properties (stored in `this._oInboundsABAP`)
|
|
452
|
+
* into the corresponding inbound objects within the main `this._aInbounds` array.
|
|
453
|
+
* The merge is performed by matching the `id` of each inbound.
|
|
454
|
+
*
|
|
455
|
+
* @param {sap.ushell.services.ClientSideTargetResolution.Inbound[]} aBasicInbounds Array of basic inbound objects
|
|
456
|
+
* @param {object} oABAPInboundParams Object containing ABAP-specific properties indexed by inbound ID
|
|
457
|
+
* @returns {sap.ushell.services.NavigationDataProvider.ABAPInbound[]} Array of enriched inbound objects
|
|
458
|
+
* @since 1.146.0
|
|
459
|
+
* @private
|
|
460
|
+
*/
|
|
461
|
+
ClientSideTargetResolutionAdapter.prototype._createEnhancedInbounds = function (aBasicInbounds, oABAPInboundParams) {
|
|
462
|
+
return aBasicInbounds.map((oInbound) => {
|
|
463
|
+
const sInboundId = oInbound.id;
|
|
464
|
+
const oMatchingAbapProps = oABAPInboundParams[sInboundId];
|
|
465
|
+
|
|
466
|
+
if (oMatchingAbapProps) {
|
|
467
|
+
return {
|
|
468
|
+
...oInbound,
|
|
469
|
+
...oMatchingAbapProps
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
return oInbound;
|
|
473
|
+
});
|
|
474
|
+
};
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* Enriches the main inbounds array with ABAP-specific properties.
|
|
478
|
+
*
|
|
479
|
+
* This function should be called after `getInbounds` has resolved, as `getInbounds`
|
|
480
|
+
* is responsible for initially populating both `_aInbounds` and `_oInboundsABAP`.
|
|
481
|
+
*
|
|
482
|
+
* @returns {Promise<sap.ushell.services.NavigationDataProvider.ABAPInbound[]> | Promise<sap.ushell.services.ClientSideTargetResolution.Inbound[]>}
|
|
483
|
+
* A Promise that resolves with the newly created array of enriched inbounds.
|
|
484
|
+
* @private
|
|
485
|
+
* @since 1.146.0
|
|
486
|
+
*/
|
|
487
|
+
ClientSideTargetResolutionAdapter.prototype.getEnhancedInbounds = async function () {
|
|
488
|
+
if (this._aInboundsEnhanced) {
|
|
489
|
+
return this._aInboundsEnhanced;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
const aBasicInbounds = await this.getInbounds();
|
|
493
|
+
if (this._oInboundsABAP && Object.keys(this._oInboundsABAP).length > 0) {
|
|
494
|
+
this._aInboundsEnhanced = this._createEnhancedInbounds(aBasicInbounds, this._oInboundsABAP);
|
|
495
|
+
return this._aInboundsEnhanced;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
Log.warning("getEnhancedInbounds called but no ABAP-specific properties are available. Basic Inbounds are used.", null, S_COMPONENT);
|
|
499
|
+
return aBasicInbounds;
|
|
500
|
+
};
|
|
501
|
+
|
|
450
502
|
/**
|
|
451
503
|
* Test whether aSubSegment is completely contained in aSegment
|
|
452
504
|
*
|
|
@@ -537,9 +589,6 @@ sap.ui.define([
|
|
|
537
589
|
oTarget.title = oSrc.text;
|
|
538
590
|
oTarget.permanentKey = `X-SAP-UI2-PAGE:${oSrc.catalogId}:${oSrc.tmChipId}`;
|
|
539
591
|
oTarget.contentProviderId = "";
|
|
540
|
-
oTarget.isDefaultLadi = oSrc.isDefaultLadi || false;
|
|
541
|
-
oTarget.ladiHasTiles = oSrc.ladiHasTiles || false;
|
|
542
|
-
oTarget.defaultTileParams = oSrc.defaultTileParams || "";
|
|
543
592
|
|
|
544
593
|
// resolution result
|
|
545
594
|
const oFakeResolutionResult = {};
|
|
@@ -573,7 +622,6 @@ sap.ui.define([
|
|
|
573
622
|
// ClientSideTargetResolution will de-interpolate the URL before applying sap-system
|
|
574
623
|
oTarget.resolutionResult.systemAlias = oSrc.systemAlias || ""; // NOTE: "" is the local system alias
|
|
575
624
|
|
|
576
|
-
oTarget.deviceTypes = oSrc.formfactors;
|
|
577
625
|
oTarget.resolutionResult["sap.ui"] = {};
|
|
578
626
|
oTarget.resolutionResult["sap.ui"].technology = oTarget.resolutionResult.applicationType;
|
|
579
627
|
if (oTarget.resolutionResult["sap.ui"].technology === "SAPUI5") {
|
|
@@ -679,27 +727,56 @@ sap.ui.define([
|
|
|
679
727
|
|
|
680
728
|
if (oSrc.tcode) {
|
|
681
729
|
oTarget.resolutionResult.appInfo = {
|
|
682
|
-
|
|
730
|
+
transaction: oSrc.tcode
|
|
683
731
|
};
|
|
684
732
|
}
|
|
685
733
|
|
|
686
734
|
return oTarget;
|
|
687
735
|
}
|
|
688
736
|
|
|
689
|
-
|
|
737
|
+
function mapABAPAttributes (sSrcId, oSrc) {
|
|
738
|
+
const oABAPAttributes = {};
|
|
739
|
+
const aMatch = sSrcId.match(/^([^-]+)-([^~]+)/);
|
|
740
|
+
if (!aMatch) {
|
|
741
|
+
Log.warning(
|
|
742
|
+
`The target mapping id ${sSrcId} is not valid`,
|
|
743
|
+
"this target mapping will be discarded",
|
|
744
|
+
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter"
|
|
745
|
+
);
|
|
746
|
+
return undefined;
|
|
747
|
+
}
|
|
748
|
+
oABAPAttributes.id = sSrcId;
|
|
749
|
+
oABAPAttributes.isDefaultLadi = oSrc.isDefaultLadi || false;
|
|
750
|
+
oABAPAttributes.ladiHasTiles = oSrc.ladiHasTiles || false;
|
|
751
|
+
oABAPAttributes.defaultTileParams =
|
|
752
|
+
oSrc.defaultTileParams || "";
|
|
753
|
+
return oABAPAttributes;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
// main processing of inbounds and inbounds with ABAP specific attributes returning all results
|
|
757
|
+
const aResult = [];
|
|
758
|
+
let oInbound = {};
|
|
759
|
+
const oResultABAP = {};
|
|
760
|
+
let oInboundABAP = {};
|
|
690
761
|
Object.keys(oDirectStartResponse).forEach((sKey) => {
|
|
691
|
-
|
|
692
|
-
if (
|
|
693
|
-
|
|
762
|
+
oInbound = mapOne(sKey, oDirectStartResponse[sKey]);
|
|
763
|
+
if (oInbound) {
|
|
764
|
+
aResult.push(oInbound);
|
|
765
|
+
|
|
766
|
+
oInboundABAP = mapABAPAttributes(sKey, oDirectStartResponse[sKey]);
|
|
767
|
+
if (oInboundABAP) {
|
|
768
|
+
oResultABAP[oInboundABAP.id] = oInboundABAP;
|
|
769
|
+
}
|
|
694
770
|
}
|
|
695
771
|
});
|
|
696
|
-
|
|
772
|
+
|
|
773
|
+
return { aResult, oResultABAP };
|
|
697
774
|
};
|
|
698
775
|
|
|
699
776
|
/**
|
|
700
777
|
* Extracts a valid <code>applicationType</code> field for ClientSideTargetResolution from the given object.
|
|
701
778
|
*
|
|
702
|
-
* @param {string} sTargetMappingId A unique
|
|
779
|
+
* @param {string} sTargetMappingId A unique identifier
|
|
703
780
|
* @param {object} oResolutionResult The (pre-resolution) resolutionResult of the navigation target.
|
|
704
781
|
* @returns {string} One of the following application types compatible with ClientSideTargetResolution service:
|
|
705
782
|
* "TR", "SAPUI5", "WDA", "URL".
|
|
@@ -1104,52 +1181,49 @@ sap.ui.define([
|
|
|
1104
1181
|
}
|
|
1105
1182
|
|
|
1106
1183
|
return new Promise((fnResolve, fnReject) => {
|
|
1107
|
-
this._oODataWrapper.read(`ResolveLink?linkId='${
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1184
|
+
this._oODataWrapper.read(`ResolveLink?linkId='${encodeODataQueryParameter(sFragmentNoHash)}'&shellType='${SAPBusinessClientEnablement.getShellType()}'${sFormFactor ?
|
|
1185
|
+
`&formFactor='${encodeODataQueryParameter(sFormFactor)}'` : ""}`,
|
|
1186
|
+
(oResult) => {
|
|
1187
|
+
let i;
|
|
1188
|
+
let sDetails = "";
|
|
1189
|
+
let oAdjustedResult;
|
|
1190
|
+
|
|
1191
|
+
if (oResult.results.length) {
|
|
1192
|
+
if (oResult.results.length > 1) {
|
|
1193
|
+
// console log because of multiple targets
|
|
1194
|
+
for (i = 0; i < oResult.results.length; i += 1) {
|
|
1195
|
+
delete oResult.results[i].__metadata; // simplify output
|
|
1196
|
+
sDetails += (i === 0 ? "used target: " : "\nignored target: ")
|
|
1197
|
+
+ JSON.stringify(oResult.results[i]);
|
|
1198
|
+
}
|
|
1199
|
+
Log.error("INTEROP service's ResolveLink operation "
|
|
1200
|
+
+ `returned ${oResult.results.length} targets for hash '#${sFragmentNoHash}', first one is used.`,
|
|
1201
|
+
sDetails,
|
|
1202
|
+
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter");
|
|
1123
1203
|
}
|
|
1124
|
-
Log.error("INTEROP service's ResolveLink operation "
|
|
1125
|
-
+ `returned ${oResult.results.length} targets for hash '#${
|
|
1126
|
-
sFragmentNoHash}', first one is used.`,
|
|
1127
|
-
sDetails,
|
|
1128
|
-
"sap.ushell_abap.adapters.abap.ClientSideTargetResolutionAdapter");
|
|
1129
|
-
}
|
|
1130
1204
|
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1205
|
+
oResult = oResult.results[0];
|
|
1206
|
+
oAdjustedResult = ClientSideTargetResolutionAdapter.prototype._adjustNavTargetResult(oResult);
|
|
1207
|
+
oAdjustedResult.url = _addPostParametersToNavTargetResultUrl(
|
|
1208
|
+
oResult.postParameters, oAdjustedResult.url);
|
|
1135
1209
|
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1210
|
+
// Fix application type to ensure backward compatible behavior after incompatible server-side change.
|
|
1211
|
+
if (oAdjustedResult && oAdjustedResult.applicationType === "SAPUI5") {
|
|
1212
|
+
oAdjustedResult.applicationType = "URL";
|
|
1213
|
+
}
|
|
1140
1214
|
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1215
|
+
that._compactTooLongWdaUrl(oAdjustedResult).then((oCompactedResult) => {
|
|
1216
|
+
fnResolve(oCompactedResult);
|
|
1217
|
+
}).catch((oError) => {
|
|
1218
|
+
Log.error(`Could not resolve link '${sFragmentNoHash}' due to compactation failure`, oError);
|
|
1219
|
+
fnReject(oError);
|
|
1220
|
+
});
|
|
1221
|
+
} else {
|
|
1222
|
+
fnReject(new Error(`Could not resolve link '${sFragmentNoHash}'`));
|
|
1223
|
+
}
|
|
1224
|
+
}, (sErrorMessage) => {
|
|
1225
|
+
fnReject(new Error(sErrorMessage));
|
|
1226
|
+
});
|
|
1153
1227
|
|
|
1154
1228
|
if (bBatchQueueOpened) {
|
|
1155
1229
|
that._getODataWrapper().submitBatchQueue(() => { }, (sErrorMessage) => {
|
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @fileOverview The ConfigurationDefaults adapter for the ABAP platform.
|
|
5
|
-
* @version 1.
|
|
5
|
+
* @version 1.147.0
|
|
6
6
|
*/
|
|
7
7
|
sap.ui.define([
|
|
8
|
-
"sap/ushell_abap/bootstrap/
|
|
8
|
+
"sap/ushell_abap/bootstrap/abapConstants",
|
|
9
9
|
"sap/base/util/deepClone"
|
|
10
|
-
], (
|
|
10
|
+
], (
|
|
11
|
+
abapConstants,
|
|
12
|
+
deepClone
|
|
13
|
+
) => {
|
|
11
14
|
"use strict";
|
|
12
15
|
|
|
13
16
|
/**
|
|
@@ -18,7 +21,7 @@ sap.ui.define([
|
|
|
18
21
|
* @returns {Promise} Resolved promise contains all default configuration for abap platform
|
|
19
22
|
*/
|
|
20
23
|
this.getDefaultConfig = function () {
|
|
21
|
-
return Promise.resolve(
|
|
24
|
+
return Promise.resolve(deepClone(abapConstants.defaultUshellConfig));
|
|
22
25
|
};
|
|
23
26
|
};
|
|
24
27
|
});
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @fileOverview The Unified Shell's container adapter for the ABAP platform.
|
|
4
4
|
*
|
|
5
|
-
* @version 1.
|
|
5
|
+
* @version 1.147.0
|
|
6
6
|
*/
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/ui/thirdparty/jquery",
|
|
9
|
+
"sap/ushell/base/SAPBusinessClientEnablement",
|
|
9
10
|
"sap/ushell/System",
|
|
10
11
|
"sap/ushell/User",
|
|
11
12
|
"sap/ushell/utils",
|
|
12
|
-
"sap/ushell_abap/bootstrap/
|
|
13
|
+
"sap/ushell_abap/bootstrap/XhrFactory",
|
|
13
14
|
"sap/ushell_abap/pbServices/ui2/ODataWrapper",
|
|
14
15
|
"sap/ui/thirdparty/URI",
|
|
15
16
|
"sap/ui/thirdparty/datajs",
|
|
@@ -19,10 +20,11 @@ sap.ui.define([
|
|
|
19
20
|
"sap/ushell/Container"
|
|
20
21
|
], (
|
|
21
22
|
jQuery,
|
|
23
|
+
SAPBusinessClientEnablement,
|
|
22
24
|
System,
|
|
23
25
|
User,
|
|
24
26
|
utils,
|
|
25
|
-
|
|
27
|
+
XhrFactory,
|
|
26
28
|
ODataWrapper,
|
|
27
29
|
URI,
|
|
28
30
|
datajs,
|
|
@@ -190,6 +192,7 @@ sap.ui.define([
|
|
|
190
192
|
return;
|
|
191
193
|
}
|
|
192
194
|
oUserProfileIdHistory[oUserProfileParameter.id] = oUserProfileParameter.id;
|
|
195
|
+
|
|
193
196
|
if (oUserProfileParameter.id === "CONTENT_DENSITY") {
|
|
194
197
|
oStartupResult.contentDensity = oUserProfileParameter.value;
|
|
195
198
|
oStartupResult.setContentDensityPermitted = (
|
|
@@ -197,6 +200,7 @@ sap.ui.define([
|
|
|
197
200
|
oUserProfileParameter.editState === 3
|
|
198
201
|
) || false;
|
|
199
202
|
}
|
|
203
|
+
|
|
200
204
|
if (oUserProfileParameter.id === "TRACKING_USAGE_ANALYTICS") {
|
|
201
205
|
if (typeof oUserProfileParameter.value === "string") {
|
|
202
206
|
// check if string is 'true' OR 'false' -> if 'yes' set the explicit boolean value
|
|
@@ -213,10 +217,12 @@ sap.ui.define([
|
|
|
213
217
|
oStartupResult.trackUsageAnalytics = undefined;
|
|
214
218
|
}
|
|
215
219
|
}
|
|
220
|
+
|
|
216
221
|
// FLP Spaces MyHome - whether the user has opted not to import bookmarks from classical FLP
|
|
217
222
|
if (oUserProfileParameter.id === "MYHOME_IMPORT_FROM_CLASSIC") {
|
|
218
223
|
oStartupResult.importBookmarks = oUserProfileParameter.value;
|
|
219
224
|
}
|
|
225
|
+
|
|
220
226
|
// FLP Spaces MyHome - whether the user has opted not to show the My Home page
|
|
221
227
|
if (oUserProfileParameter.id === "MYHOME_ENABLEMENT") {
|
|
222
228
|
switch (oUserProfileParameter.value) {
|
|
@@ -231,6 +237,7 @@ sap.ui.define([
|
|
|
231
237
|
break;
|
|
232
238
|
}
|
|
233
239
|
}
|
|
240
|
+
|
|
234
241
|
// Dark Mode Auto Detection - whether the user has disabled it
|
|
235
242
|
if (oUserProfileParameter.id === "THEME_DARKMODE_AUTO_DETECTION") {
|
|
236
243
|
switch (oUserProfileParameter.value) {
|
|
@@ -245,6 +252,11 @@ sap.ui.define([
|
|
|
245
252
|
break;
|
|
246
253
|
}
|
|
247
254
|
}
|
|
255
|
+
|
|
256
|
+
// The theme set the user has chosen
|
|
257
|
+
if (oUserProfileParameter.id === "THEME_SET") {
|
|
258
|
+
oStartupResult.bootThemeSet = oUserProfileParameter.value || "";
|
|
259
|
+
}
|
|
248
260
|
});
|
|
249
261
|
}
|
|
250
262
|
};
|
|
@@ -283,6 +295,7 @@ sap.ui.define([
|
|
|
283
295
|
"setAccessibilityPermitted",
|
|
284
296
|
"bootTheme",
|
|
285
297
|
"themeRoot",
|
|
298
|
+
"bootThemeSet",
|
|
286
299
|
"ranges",
|
|
287
300
|
"setThemePermitted",
|
|
288
301
|
"importBookmarks",
|
|
@@ -419,7 +432,7 @@ sap.ui.define([
|
|
|
419
432
|
*/
|
|
420
433
|
this.sessionKeepAlive = function () {
|
|
421
434
|
const sPageSetsUrl = "/sap/opu/odata/UI2/PAGE_BUILDER_PERS";
|
|
422
|
-
const oXHR =
|
|
435
|
+
const oXHR = XhrFactory.createAndOpen(sPageSetsUrl, null, "HEAD");
|
|
423
436
|
oXHR.onreadystatechange = function () {
|
|
424
437
|
if (this.readyState === /* DONE */4) {
|
|
425
438
|
Log.debug("server session was extended");
|
|
@@ -438,12 +451,8 @@ sap.ui.define([
|
|
|
438
451
|
*/
|
|
439
452
|
this.logout = async function (bLogonSystem) {
|
|
440
453
|
if (bLogonSystem) {
|
|
441
|
-
if (
|
|
442
|
-
|
|
443
|
-
.absoluteTo(this.getCurrentUrl())
|
|
444
|
-
.search("") // NOTE: remove query parameters
|
|
445
|
-
.toString();
|
|
446
|
-
window.external.getPrivateEpcm().doLogOff(sFullLogOffUrl);
|
|
454
|
+
if (SAPBusinessClientEnablement.hasNativeLogoutCapability()) {
|
|
455
|
+
SAPBusinessClientEnablement.doLogout(S_LOGOFF_URL);
|
|
447
456
|
} else {
|
|
448
457
|
this.logoutRedirect();
|
|
449
458
|
}
|