@sapui5/sap.suite.ui.generic.template 1.130.1 → 1.131.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 +1 -1
- package/src/sap/suite/ui/generic/template/.library +1 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/ControllerImplementation.js +5 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_da.properties +2 -2
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_de.properties +2 -2
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ko.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/i18n/i18n_de.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_es.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hr.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ko.properties +2 -2
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sl.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_th.properties +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartTable.fragment.xml +6 -3
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +21 -9
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ar.properties +2 -2
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_da.properties +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es.properties +4 -4
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ko.properties +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_th.properties +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/Sections.fragment.xml +13 -13
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartForm.fragment.xml +5 -5
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTable.fragment.xml +6 -3
- package/src/sap/suite/ui/generic/template/QuickCreate/i18n/i18n_fr_CA.properties +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/designtime/controls/DynamicPage.designtime.js +317 -0
- package/src/sap/suite/ui/generic/template/designtime/controls/SmartTable.designtime.js +121 -32
- package/src/sap/suite/ui/generic/template/designtime/floorplans/AnalyticalListPage.designtime.js +13 -6
- package/src/sap/suite/ui/generic/template/designtime/floorplans/ListReport.designtime.js +12 -5
- package/src/sap/suite/ui/generic/template/designtime/floorplans/ObjectPage.designtime.js +13 -5
- package/src/sap/suite/ui/generic/template/designtime/utils/designtimeHelper.js +53 -81
- package/src/sap/suite/ui/generic/template/designtime/utils/designtimeUtils.js +63 -21
- package/src/sap/suite/ui/generic/template/detailTemplates/i18n/i18n_es.properties +1 -1
- package/src/sap/suite/ui/generic/template/fragments/MessagePopover.fragment.xml +1 -1
- package/src/sap/suite/ui/generic/template/fragments/SmartFormDataField.fragment.xml +1 -1
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +1 -1
- package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +6 -5
- package/src/sap/suite/ui/generic/template/js/AnnotationHelperStreamSupport.js +21 -8
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +227 -5
- package/src/sap/suite/ui/generic/template/lib/ComponentUtils.js +100 -67
- package/src/sap/suite/ui/generic/template/lib/FlexibleColumnLayoutHandler.js +9 -4
- package/src/sap/suite/ui/generic/template/lib/RetryAfterHandler.js +154 -54
- package/src/sap/suite/ui/generic/template/lib/SideEffectUtil.js +22 -7
- package/src/sap/suite/ui/generic/template/lib/StableIdDefinition.js +4 -1
- package/src/sap/suite/ui/generic/template/lib/TemplateAssembler.js +39 -41
- package/src/sap/suite/ui/generic/template/lib/ViewCreationHelper.js +39 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +2 -6
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +20 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +34 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +33 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +34 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +33 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +36 -4
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +34 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +33 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +34 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +33 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +33 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +34 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +33 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +33 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +32 -0
- package/src/sap/suite/ui/generic/template/lib/insights/InsightsCardHelper.js +39 -23
- package/src/sap/suite/ui/generic/template/lib/insights/InsightsFECardProvider.js +11 -2
- package/src/sap/suite/ui/generic/template/lib/multipleViews/MultipleTablesModeHelper.js +2 -1
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +95 -95
- package/src/sap/suite/ui/generic/template/library.js +1 -1
- package/src/sap/suite/ui/generic/template/listTemplates/fragments/DetailSmartTable.fragment.xml +6 -3
- package/src/sap/suite/ui/generic/template/themes/sap_horizon/ObjectPage.less +6 -0
- package/src/sap/suite/ui/generic/template/themes/sap_horizon_dark/ObjectPage.less +6 -0
|
@@ -228,7 +228,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
228
228
|
// - followUpNeeded: is truthy if the current navigation may not be sufficient to reach the target
|
|
229
229
|
// In this case there are two options for the follow-up navigation:
|
|
230
230
|
// oRoutingOptions.identity is set. Then we need to do the follow-up navigation if we have not yet reached the desired identity. It will be done as replace navigation.
|
|
231
|
-
// oRoutingOptions.identity is not set. In this case oRoutingOptions.followUpNeeded should contain the full specification for the navigation.
|
|
231
|
+
// oRoutingOptions.identity is not set. In this case oRoutingOptions.followUpNeeded should contain the full specification for the navigation.
|
|
232
232
|
var bUserHasAcceptedDataLoss; // This flag indicates whether the user has already acknowledgeed a possible data loss for the current (internal or external) navigation
|
|
233
233
|
|
|
234
234
|
var mMessagePageParams; // Is used as a buffer for input for the message page in case that we still need to find out in which column the error needs to be displayed.
|
|
@@ -298,7 +298,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
298
298
|
} else {
|
|
299
299
|
var oInitialNavigationPromise = oCrossAppNavigatorPromise.then(function(oCrossAppNavigator){
|
|
300
300
|
return oCrossAppNavigator.isInitialNavigation().then(function(bIsInitialNavigation){
|
|
301
|
-
isInitialNavigation = bIsInitialNavigation;
|
|
301
|
+
isInitialNavigation = bIsInitialNavigation;
|
|
302
302
|
});
|
|
303
303
|
});
|
|
304
304
|
aStartupPromises.push(oInitialNavigationPromise);
|
|
@@ -322,7 +322,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
322
322
|
}
|
|
323
323
|
});
|
|
324
324
|
});
|
|
325
|
-
|
|
325
|
+
|
|
326
326
|
oMyIntentPromise = oIntentFromShellPromise ? Promise.all([oIntentFromShellPromise, UShellContainer && UShellContainer.getServiceAsync("URLParsing")]).then(function(aResult){
|
|
327
327
|
var oIntent = extend({}, aResult[0]);
|
|
328
328
|
var oURLParsing = aResult[1];
|
|
@@ -330,14 +330,14 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
330
330
|
var sUrl = oURLParsing.constructShellHash(oIntent);
|
|
331
331
|
return "#" + sUrl;
|
|
332
332
|
}) : Promise.resolve("");
|
|
333
|
-
|
|
333
|
+
|
|
334
334
|
var oComponentData = oTemplateContract.oAppComponent.getComponentData();
|
|
335
|
-
|
|
335
|
+
|
|
336
336
|
oTemplateContract.myIntentPromise = (oComponentData && oComponentData.feEnvironment && oComponentData.feEnvironment.getIntent && Promise.resolve(oComponentData.feEnvironment.getIntent())) || oIntentFromShellPromise || Promise.resolve({
|
|
337
337
|
semanticObject: "",
|
|
338
338
|
action: ""
|
|
339
339
|
});
|
|
340
|
-
|
|
340
|
+
|
|
341
341
|
fnInitializeHistory();
|
|
342
342
|
var fnInitializeRouter = bIsFirst ? oNavigationControllerProxy.initialize : Function.prototype;
|
|
343
343
|
var oData = !bIsRestoring && !oNavigationControllerProxy.oHashChanger.getHash() && oComponentData;
|
|
@@ -355,9 +355,9 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
355
355
|
fnInitializeRouter(!!oMessageParameters);
|
|
356
356
|
});
|
|
357
357
|
} else {
|
|
358
|
-
fnInitializeRouter();
|
|
358
|
+
fnInitializeRouter();
|
|
359
359
|
}
|
|
360
|
-
|
|
360
|
+
|
|
361
361
|
return Promise.all(aStartupPromises);
|
|
362
362
|
}
|
|
363
363
|
|
|
@@ -387,7 +387,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
387
387
|
oLinksToUpperLayer = null;
|
|
388
388
|
mMessagePageParams = null;
|
|
389
389
|
}
|
|
390
|
-
|
|
390
|
+
|
|
391
391
|
function fnStoreFocusAndGetHistoryObject(sControlId){
|
|
392
392
|
var oHistoryObject = oHistoryState.getData() || {};
|
|
393
393
|
if (oHistoryObject.focus){ // focus already set
|
|
@@ -400,11 +400,11 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
400
400
|
if (sControlId){
|
|
401
401
|
oHistoryObject.focus = sControlId;
|
|
402
402
|
oHistoryState.setData(oHistoryObject);
|
|
403
|
-
oHistoryState.save();
|
|
404
|
-
}
|
|
403
|
+
oHistoryState.save();
|
|
404
|
+
}
|
|
405
405
|
return oHistoryObject;
|
|
406
406
|
}
|
|
407
|
-
|
|
407
|
+
|
|
408
408
|
function fnInitializeHistory(bKeepCurrentIdentity){
|
|
409
409
|
oCurrentHash = { // The initial instance represents the time before the app was started.
|
|
410
410
|
iHashChangeCount: 0,
|
|
@@ -423,7 +423,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
423
423
|
return fnPrepareHostView(oTemplateContract.mRoutingTree.root.sRouteName).then(function () {
|
|
424
424
|
// Make sure that the loading of the root component starts
|
|
425
425
|
return oTemplateContract.mRoutingTree.root.componentCreated;
|
|
426
|
-
});
|
|
426
|
+
});
|
|
427
427
|
}
|
|
428
428
|
|
|
429
429
|
function getAppTitle(){
|
|
@@ -431,7 +431,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
431
431
|
}
|
|
432
432
|
|
|
433
433
|
function isDiscardDraftConfirmationNeeded(){
|
|
434
|
-
return oNavigationControllerProxy.oAppComponent.getProperty('draftDiscardConfirmationSettings').enabled;
|
|
434
|
+
return oNavigationControllerProxy.oAppComponent.getProperty('draftDiscardConfirmationSettings').enabled;
|
|
435
435
|
}
|
|
436
436
|
|
|
437
437
|
// returns a promise from FLP shell which can be resolved to get information such as semantic object, action of the application
|
|
@@ -451,11 +451,11 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
451
451
|
return Promise.resolve();
|
|
452
452
|
}
|
|
453
453
|
var oComponentRegistryEntry = sComponentId && oTemplateContract.componentRegistry[sComponentId];
|
|
454
|
-
|
|
454
|
+
|
|
455
455
|
// preliminary: LR now uses appState implementation via statepreserver and has no own implementation of getUrlParameterInfo
|
|
456
456
|
// but ALP still has an own implementation
|
|
457
457
|
var aPromises = [];
|
|
458
|
-
|
|
458
|
+
|
|
459
459
|
var getUrlParameterInfo = oComponentRegistryEntry && oComponentRegistryEntry.methods.getUrlParameterInfo;
|
|
460
460
|
if (getUrlParameterInfo) { // own implementation of component
|
|
461
461
|
aPromises.push(oComponentRegistryEntry.viewRegistered.then(function(){
|
|
@@ -472,7 +472,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
472
472
|
return oStatePreserver.getUrlParameterInfo(sPathNormalized, oCurrentHash.componentsDisplayed[oComponentRegistryEntry.route] === 1).then(function(mNewPars){
|
|
473
473
|
extend(mAppStates, mNewPars);
|
|
474
474
|
});
|
|
475
|
-
|
|
475
|
+
|
|
476
476
|
}));
|
|
477
477
|
return Promise.all(aPromises);
|
|
478
478
|
}
|
|
@@ -483,7 +483,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
483
483
|
var mAppStates = oTargetIdentity.appStates;
|
|
484
484
|
return getApplicableStateForComponentAddedPromise(sComponentId, sPath, mAppStates);
|
|
485
485
|
}
|
|
486
|
-
|
|
486
|
+
|
|
487
487
|
// return a Promise that is resolved after the following has happened:
|
|
488
488
|
// The appStates part of oTargetIdentity is taken over from oIdentity but adapted to oTargetIdentity
|
|
489
489
|
function fnAdaptAppStates(oIdentity, oTargetIdentity){
|
|
@@ -491,7 +491,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
491
491
|
oTargetIdentity.appStates = oIdentity.appStates;
|
|
492
492
|
return Promise.resolve(); // no adaptation needed, if both identities belong to the same tree node
|
|
493
493
|
}
|
|
494
|
-
// tree nodes of both identities are different -> build new appStates for target identity and check what can be taken over.
|
|
494
|
+
// tree nodes of both identities are different -> build new appStates for target identity and check what can be taken over.
|
|
495
495
|
oTargetIdentity.appStates = Object.create(null);
|
|
496
496
|
if (oTargetIdentity.treeNode.fCLLevel === 0 || oTargetIdentity.treeNode.fCLLevel === 3){
|
|
497
497
|
return getApplicableStateForIdentityAddedPromise(oTargetIdentity);
|
|
@@ -545,7 +545,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
545
545
|
if (oTreeNode.isDraft){
|
|
546
546
|
aActiveDraftDetailTemplatePrivateModels.push(oTemplatePrivateModel);
|
|
547
547
|
}
|
|
548
|
-
}
|
|
548
|
+
}
|
|
549
549
|
aPageDataLoadedPromises.push(oRegistryEntry.oViewRenderedPromise);
|
|
550
550
|
if (oRegistryEntry.viewLevel > iMaxActiveViewLevel){
|
|
551
551
|
iMaxActiveViewLevel = oRegistryEntry.viewLevel;
|
|
@@ -621,7 +621,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
621
621
|
}
|
|
622
622
|
return vValue2 === vValue1;
|
|
623
623
|
}
|
|
624
|
-
|
|
624
|
+
|
|
625
625
|
function isIdentityEqualToHistoricIdentity(oHistoricIdentity, oIdentity){
|
|
626
626
|
// 1. check for treeNode
|
|
627
627
|
if (!oHistoricIdentity || oHistoricIdentity.treeNode !== oIdentity.treeNode){
|
|
@@ -644,7 +644,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
644
644
|
return false;
|
|
645
645
|
}
|
|
646
646
|
}
|
|
647
|
-
return true;
|
|
647
|
+
return true;
|
|
648
648
|
}
|
|
649
649
|
|
|
650
650
|
// Checks whether the specified identity is reached or another navitaion to this identity is necessary
|
|
@@ -700,7 +700,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
700
700
|
}
|
|
701
701
|
}
|
|
702
702
|
}
|
|
703
|
-
|
|
703
|
+
|
|
704
704
|
// This method is called whenever a back navigation by -iMode steps is going to be triggered.
|
|
705
705
|
// It returns a Promise that resolves to a possibly higher number of steps back (as the mode is negative it is consequently possibly lower) which really should be taken.
|
|
706
706
|
// The number is decreased in case that the number of steps that are defined will take the user back to the same page where he already is, as a zero navigation would be considered as an error.
|
|
@@ -721,7 +721,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
721
721
|
if (oHash.backTarget === 0){ // back navigation will take us out of the app
|
|
722
722
|
return Promise.resolve(oRoutingOptions.mode);
|
|
723
723
|
}
|
|
724
|
-
oHash = aPreviousHashes[oHash.backTarget];
|
|
724
|
+
oHash = aPreviousHashes[oHash.backTarget];
|
|
725
725
|
}
|
|
726
726
|
if (oHash.identity.treeNode.level === 0){
|
|
727
727
|
oRoutingOptions.identity = oHash.identity;
|
|
@@ -730,11 +730,11 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
730
730
|
return getAlternativeIdentityPromise(oHash.identity).then(function(oAlternativeIdentityInfo){
|
|
731
731
|
if (!oAlternativeIdentityInfo){
|
|
732
732
|
oRoutingOptions.identity = oHash.identity; // denote that we know where we want to navigate to -> no need to check this in routeMatched once more
|
|
733
|
-
return Promise.resolve(oRoutingOptions.mode);
|
|
733
|
+
return Promise.resolve(oRoutingOptions.mode);
|
|
734
734
|
}
|
|
735
735
|
if (isIdentityReached(oAlternativeIdentityInfo.identity)){ // back navigation would take us to the current page -> navigate one step more
|
|
736
736
|
oRoutingOptions.mode--;
|
|
737
|
-
return getBackNavigationPromise(oRoutingOptions.mode);
|
|
737
|
+
return getBackNavigationPromise(oRoutingOptions.mode);
|
|
738
738
|
}
|
|
739
739
|
oRoutingOptions.identity = oAlternativeIdentityInfo.identity; // denote that we know where we want to navigate to -> no need to check this is routeMatched once more
|
|
740
740
|
oRoutingOptions.followUpNeeded = true; // make sure that follow-up navigation will be done to navigate to the alternative page
|
|
@@ -803,7 +803,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
803
803
|
fnNavigateToRouteImpl(iMode === 1);
|
|
804
804
|
} else if (!oTemplateContract.ghostapp){
|
|
805
805
|
return getBackNavigationPromise(iMode).then(function(iRealMode){
|
|
806
|
-
window.history.go(iRealMode);
|
|
806
|
+
window.history.go(iRealMode);
|
|
807
807
|
});
|
|
808
808
|
}
|
|
809
809
|
}
|
|
@@ -907,7 +907,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
907
907
|
function getLinksToUpperLayers(){
|
|
908
908
|
return oLinksToUpperLayer.linkInfos;
|
|
909
909
|
}
|
|
910
|
-
|
|
910
|
+
|
|
911
911
|
function fnRouteConfigToIdentity(sRouteName, mArguments){
|
|
912
912
|
var oRet = Object.create(null);
|
|
913
913
|
var sRoute = removeQueryInRouteName(sRouteName);
|
|
@@ -953,7 +953,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
953
953
|
oOptions.identity.appStates[sQueryParam] = vValue;
|
|
954
954
|
} else {
|
|
955
955
|
delete oOptions.identity.appStates[sQueryParam];
|
|
956
|
-
}
|
|
956
|
+
}
|
|
957
957
|
var oNavPromise = oRouterBusyObserver.getProcessFinished(true).then(function(){
|
|
958
958
|
fnNavigateToRoute(oOptions);
|
|
959
959
|
});
|
|
@@ -962,7 +962,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
962
962
|
}
|
|
963
963
|
|
|
964
964
|
var oSpecialDraftCancellationInfo;
|
|
965
|
-
|
|
965
|
+
|
|
966
966
|
function fnNavigateToPartialIdentity(oTargetPromise, bReplace, iDisplayMode, oContext, oContextInfo, mAppStates){
|
|
967
967
|
var oRet = oTargetPromise.then(function(oTargetIdentity){
|
|
968
968
|
oTargetIdentity.appStates = mAppStates || Object.create(null);
|
|
@@ -986,7 +986,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
986
986
|
});
|
|
987
987
|
});
|
|
988
988
|
oTemplateContract.oBusyHelper.setBusy(oRet, undefined, undefined, true);
|
|
989
|
-
return oRet;
|
|
989
|
+
return oRet;
|
|
990
990
|
}
|
|
991
991
|
|
|
992
992
|
// This method navigates to the specified context. Thereby, the entity specified by this context must either belong to a root level entity set or its parent must be part of the
|
|
@@ -1000,7 +1000,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1000
1000
|
return fnNavigateToRoot(bReplace);
|
|
1001
1001
|
}
|
|
1002
1002
|
var aContext = Array.isArray(vContext) ? vContext : [vContext];
|
|
1003
|
-
|
|
1003
|
+
|
|
1004
1004
|
// If there is only one context we can try to derive the target directly. Do not do that in case we are currently at the root level, since in this case the navigation
|
|
1005
1005
|
// via the forward navigation property might apply.
|
|
1006
1006
|
var oNavigationInfo = (aContext.length === 1 && (!oCurrentIdentity || oCurrentIdentity.treeNode.level > 0)) && oDataModelHelper.analyseContext(aContext[0]);
|
|
@@ -1031,7 +1031,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1031
1031
|
oTemplateContract.oBusyHelper.setBusy(oTargetPromise, undefined, undefined, bWillShowPlaceholder);
|
|
1032
1032
|
return fnNavigateToPartialIdentity(oTargetPromise, bReplace, iDisplayMode, aContext[0], oContextInfo, mAppStates);
|
|
1033
1033
|
}
|
|
1034
|
-
|
|
1034
|
+
|
|
1035
1035
|
// This function navigates to the detail page represented by the given context if such a detail page exists. Otherwise it does nothing.
|
|
1036
1036
|
function fnNavigateToDetailContextIfPossible(oContext, bReplace, iDisplayMode, oContextInfo){
|
|
1037
1037
|
var oTargetInfo = getTargetIdentityInfoForContext(null, oContext, true, true);
|
|
@@ -1051,18 +1051,18 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1051
1051
|
var oTargetIdentity = {
|
|
1052
1052
|
treeNode: oCurrentIdentity.treeNode,
|
|
1053
1053
|
keys: ["", oDataModelHelper.analyseContext(oSiblingContext).key],
|
|
1054
|
-
appStates: oCurrentIdentity.appStates
|
|
1054
|
+
appStates: oCurrentIdentity.appStates
|
|
1055
1055
|
};
|
|
1056
1056
|
return {
|
|
1057
1057
|
identity: oTargetIdentity,
|
|
1058
1058
|
mode: 1,
|
|
1059
1059
|
displayMode: 1
|
|
1060
|
-
};
|
|
1060
|
+
};
|
|
1061
1061
|
}, function(){
|
|
1062
1062
|
var oTargetIdentity = {
|
|
1063
1063
|
treeNode: oTemplateContract.mRoutingTree.root,
|
|
1064
1064
|
keys: [""],
|
|
1065
|
-
appStates: Object.create(null)
|
|
1065
|
+
appStates: Object.create(null)
|
|
1066
1066
|
};
|
|
1067
1067
|
var oAppStatePromise = getApplicableStateForIdentityAddedPromise(oTargetIdentity);
|
|
1068
1068
|
return oAppStatePromise.then(function(){
|
|
@@ -1083,7 +1083,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1083
1083
|
};
|
|
1084
1084
|
for (var i = oSpecialDraftCancellationInfo.index + 1; i < aPreviousHashes.length; i++){
|
|
1085
1085
|
oTestHash = aPreviousHashes[i]; // one navigation step in between
|
|
1086
|
-
if (!oTestHash.identity.treeNode || oTestHash.identity.treeNode.level < oSpecialDraftCancellationInfo.identity.treeNode.level || oSpecialDraftCancellationInfo.identity.keys.some(fnDiffer)){
|
|
1086
|
+
if (!oTestHash.identity || !oTestHash.identity.treeNode || oTestHash.identity.treeNode.level < oSpecialDraftCancellationInfo.identity.treeNode.level || oSpecialDraftCancellationInfo.identity.keys.some(fnDiffer)){
|
|
1087
1087
|
return null; // this was a navigation step which was not a child of the cancelled draft
|
|
1088
1088
|
}
|
|
1089
1089
|
}
|
|
@@ -1113,12 +1113,12 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1113
1113
|
return oRet;
|
|
1114
1114
|
});
|
|
1115
1115
|
}
|
|
1116
|
-
|
|
1116
|
+
|
|
1117
1117
|
// Translates an option object (which can be passed to fnNavigateToRoute to a function that performs the corresponding navigation)
|
|
1118
1118
|
function getNavigationFunction(oNavigationOptions){
|
|
1119
1119
|
return fnNavigateToRoute.bind(null, oNavigationOptions);
|
|
1120
1120
|
}
|
|
1121
|
-
|
|
1121
|
+
|
|
1122
1122
|
// This function can be called before the app is being left by a forward navigation. If oOption is truthy it ensures that the navigation described by oOption will be executed if
|
|
1123
1123
|
// the app is reached again via back navigation.
|
|
1124
1124
|
// The function may also be called with a faulty oOption in order to reset the serializedBackOption.
|
|
@@ -1150,23 +1150,23 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1150
1150
|
return {
|
|
1151
1151
|
treeNode: oTargetNode,
|
|
1152
1152
|
keys: aSiblingKeys,
|
|
1153
|
-
appStates: mAppStates
|
|
1153
|
+
appStates: mAppStates
|
|
1154
1154
|
};
|
|
1155
1155
|
});
|
|
1156
|
-
});
|
|
1156
|
+
});
|
|
1157
1157
|
}
|
|
1158
|
-
|
|
1158
|
+
|
|
1159
1159
|
function getSwitchToSiblingFunctionPromise(bIsTargetEdit, sBatchGroup){
|
|
1160
1160
|
var iDisplayMode = 1 + bIsTargetEdit;
|
|
1161
1161
|
return getSiblingIdentityPromise(sBatchGroup).then(function(oTargetIdentity){
|
|
1162
1162
|
return oNavigationQueue.makeQueuable(fnNavigateToIdentity.bind(null, oTargetIdentity, true, iDisplayMode, false));
|
|
1163
1163
|
});
|
|
1164
1164
|
}
|
|
1165
|
-
|
|
1165
|
+
|
|
1166
1166
|
// This method is called, when we switch from active to inactive or the other way around
|
|
1167
1167
|
// oSiblingContext is the target context. It is assumed that we are currently displaying its sibling (and in FCL possibly descendants of that).
|
|
1168
1168
|
// oTargetInfo holds information about target treeNode and the known target keys, these keys are used to complete the final array of targetIdentity keys
|
|
1169
|
-
// The method returns a Promise that resolves to
|
|
1169
|
+
// The method returns a Promise that resolves to
|
|
1170
1170
|
// a) a function that should be used for navigating to the sibling (if bAsIdentity is faulty)
|
|
1171
1171
|
// b) an identity that should be used for navigating to the sibling (if bAsIdentity is truthy)
|
|
1172
1172
|
function getSwitchToSiblingPromise(oSiblingContext, iDisplayMode, oTargetInfo, bAsIdentity){
|
|
@@ -1296,7 +1296,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1296
1296
|
text: oDataLoadFailedTexts.dataLoadFailedText,
|
|
1297
1297
|
description: "",
|
|
1298
1298
|
viewLevel: oFailedNode.fCLLevel,
|
|
1299
|
-
messageType: IllustratedMessageType.NoData
|
|
1299
|
+
messageType: IllustratedMessageType.NoData
|
|
1300
1300
|
});
|
|
1301
1301
|
return Promise.resolve();
|
|
1302
1302
|
}
|
|
@@ -1362,7 +1362,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1362
1362
|
return getTargetTreeNodeInfoForContext(oParentNode, oNavigationContext, bWithNavProperty, true);
|
|
1363
1363
|
}
|
|
1364
1364
|
}
|
|
1365
|
-
|
|
1365
|
+
|
|
1366
1366
|
function getTargetIdentityPromiseForContext(oSourceNode, aSourceKeys, oNavigationContext, oTreeNodeInfo){
|
|
1367
1367
|
if (oTreeNodeInfo.navigationProperty){
|
|
1368
1368
|
return new Promise(function(fnResolve, fnReject){
|
|
@@ -1387,7 +1387,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1387
1387
|
keys: aTargetKeys
|
|
1388
1388
|
});
|
|
1389
1389
|
}
|
|
1390
|
-
|
|
1390
|
+
|
|
1391
1391
|
// This function returns the information whether navigation to oTreeNode will result in a placeholder to be shown
|
|
1392
1392
|
function fnWillNavigationToNodeShowPlaceholder(oTreeNode){
|
|
1393
1393
|
return oTemplateContract.bEnablePlaceholder &&
|
|
@@ -1454,7 +1454,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1454
1454
|
identity: oTargetIdentity,
|
|
1455
1455
|
mode: 1,
|
|
1456
1456
|
displayMode: 1
|
|
1457
|
-
};
|
|
1457
|
+
};
|
|
1458
1458
|
if (bAsNavigationOptions){
|
|
1459
1459
|
return oOptions;
|
|
1460
1460
|
}
|
|
@@ -1716,7 +1716,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1716
1716
|
}
|
|
1717
1717
|
//Encode the route
|
|
1718
1718
|
sTargetAppSpecificRoute = encodeURI(sTargetAppSpecificRoute);
|
|
1719
|
-
|
|
1719
|
+
|
|
1720
1720
|
var oUrlParsingPromise = UShellContainer.getServiceAsync("URLParsing");
|
|
1721
1721
|
var oFLPUrlPromise = UShellContainer.getFLPUrlAsync(true);
|
|
1722
1722
|
return Promise.all([oUrlParsingPromise, oFLPUrlPromise]).then(function (aResults) {
|
|
@@ -1737,7 +1737,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1737
1737
|
return oFLPUrl.toString();
|
|
1738
1738
|
});
|
|
1739
1739
|
}
|
|
1740
|
-
|
|
1740
|
+
|
|
1741
1741
|
// This function is called when only tables could be found as focus target for the message oMessage.
|
|
1742
1742
|
// sFullTarget is one of the full targets defined for this message.
|
|
1743
1743
|
// The function tries to identify a child page of the current page which is a better match for the message.
|
|
@@ -1755,12 +1755,12 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1755
1755
|
if (iLastSlash > 0){
|
|
1756
1756
|
var sTail = sFullTarget.substring(iLastSlash);
|
|
1757
1757
|
if (sTail.indexOf("(") < 0){
|
|
1758
|
-
sAssumedBindingPath = sFullTarget.substring(0, iLastSlash);
|
|
1758
|
+
sAssumedBindingPath = sFullTarget.substring(0, iLastSlash);
|
|
1759
1759
|
} else {
|
|
1760
1760
|
sAssumedBindingPath = sFullTarget;
|
|
1761
1761
|
}
|
|
1762
1762
|
} else {
|
|
1763
|
-
sAssumedBindingPath = sFullTarget;
|
|
1763
|
+
sAssumedBindingPath = sFullTarget;
|
|
1764
1764
|
}
|
|
1765
1765
|
var aKeys = []; // the keys for navigation (will be filled in reverse order one by one)
|
|
1766
1766
|
var oTargetNode, oTreeNode; // oTargetNode will be the candidate for navigation. oTreeNode will be used to run up the hierarchy starting at oTargetNode.
|
|
@@ -1809,7 +1809,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1809
1809
|
var oOptions = {
|
|
1810
1810
|
identity: oTargetIdentity,
|
|
1811
1811
|
mode: 0,
|
|
1812
|
-
displayMode: 6
|
|
1812
|
+
displayMode: 6
|
|
1813
1813
|
};
|
|
1814
1814
|
var oAppStatePromise;
|
|
1815
1815
|
if (oTargetNode === oCurrentIdentity.treeNode){ // we are already on the target page
|
|
@@ -1819,19 +1819,19 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1819
1819
|
return null; // and the keys are also already correct -> no navigation
|
|
1820
1820
|
}
|
|
1821
1821
|
// we have already reached the target page but need to exchange the keys
|
|
1822
|
-
extend(oTargetIdentity.appStates, oCurrentIdentity.appStates);
|
|
1822
|
+
extend(oTargetIdentity.appStates, oCurrentIdentity.appStates);
|
|
1823
1823
|
oAppStatePromise = Promise.resolve();
|
|
1824
1824
|
} else { // navigate to another page
|
|
1825
1825
|
oAppStatePromise = getApplicableStateForIdentityAddedPromise(oTargetIdentity).then(function(){ // determine app state
|
|
1826
1826
|
if (oTemplateContract.oFlexibleColumnLayoutHandler){ // in case of FCL make sure that navigation target is full screen
|
|
1827
|
-
oTemplateContract.oFlexibleColumnLayoutHandler.adaptBreadCrumbUrlParameters(oTargetIdentity.appStates, oTargetNode);
|
|
1827
|
+
oTemplateContract.oFlexibleColumnLayoutHandler.adaptBreadCrumbUrlParameters(oTargetIdentity.appStates, oTargetNode);
|
|
1828
1828
|
}
|
|
1829
1829
|
});
|
|
1830
1830
|
}
|
|
1831
1831
|
// Define a function that will focus on the control that belongs to oMessage after navigation to the corresponding page has happened
|
|
1832
1832
|
var fnFocusFunction = function(oBeforeData, fnFallback){
|
|
1833
1833
|
// oMessage is probably already removed from the message model. But there should be a replacement now, which has the same targets
|
|
1834
|
-
var oMessageManager = sap.ui.getCore().getMessageManager();
|
|
1834
|
+
var oMessageManager = sap.ui.getCore().getMessageManager();
|
|
1835
1835
|
var oMessageModel = oMessageManager.getMessageModel();
|
|
1836
1836
|
var oMessageBinding = oMessageModel.bindList("/"); // This binding needs to recreated every time, since UI5 will not update such an instance
|
|
1837
1837
|
var aTargets = oMessage.aTargets;
|
|
@@ -1854,7 +1854,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1854
1854
|
return;
|
|
1855
1855
|
}
|
|
1856
1856
|
fnFallback();
|
|
1857
|
-
};
|
|
1857
|
+
};
|
|
1858
1858
|
var oRet = oAppStatePromise.then(function(){
|
|
1859
1859
|
fnNavigateToRoute(oOptions);
|
|
1860
1860
|
return true;
|
|
@@ -1862,7 +1862,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1862
1862
|
oTemplateContract.oBusyHelper.setBusy(Promise.all([oRet, oTargetNode.componentCreated]));
|
|
1863
1863
|
oTemplateContract.oApplicationProxy.setNextFocus(fnFocusFunction);
|
|
1864
1864
|
return oRet;
|
|
1865
|
-
}
|
|
1865
|
+
}
|
|
1866
1866
|
|
|
1867
1867
|
// returns the information whether the app has started a navigation which is not yet finished.
|
|
1868
1868
|
// Note: Only navigation using the fnNavigateToRoute option will be considered
|
|
@@ -1942,7 +1942,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1942
1942
|
index: oCurrentHash.backTarget
|
|
1943
1943
|
};
|
|
1944
1944
|
}
|
|
1945
|
-
|
|
1945
|
+
|
|
1946
1946
|
// Returns a Promise that resolves to an identity which can currently be used to navigate to the root
|
|
1947
1947
|
function getRootIdentityPromise(){
|
|
1948
1948
|
var oTargetIdentity = {
|
|
@@ -2087,7 +2087,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2087
2087
|
function fnNavigateToMessagePage(mParameters) {
|
|
2088
2088
|
if (oTemplateContract.oAppComponent.isDestroyed()){
|
|
2089
2089
|
return; // do not try to navigate to Message page if app is already exited
|
|
2090
|
-
}
|
|
2090
|
+
}
|
|
2091
2091
|
if (oTemplateContract.oFlexibleColumnLayoutHandler){
|
|
2092
2092
|
oTemplateContract.oFlexibleColumnLayoutHandler.hidePlaceholder();
|
|
2093
2093
|
mParameters.viewLevel = mParameters.viewLevel || 0;
|
|
@@ -2125,7 +2125,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2125
2125
|
}
|
|
2126
2126
|
}
|
|
2127
2127
|
return aRet.sort(function(sId1, sId2){
|
|
2128
|
-
return oTemplateContract.componentRegistry[sId1].viewLevel - oTemplateContract.componentRegistry[sId2].viewLevel;
|
|
2128
|
+
return oTemplateContract.componentRegistry[sId1].viewLevel - oTemplateContract.componentRegistry[sId2].viewLevel;
|
|
2129
2129
|
});
|
|
2130
2130
|
}
|
|
2131
2131
|
|
|
@@ -2157,7 +2157,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2157
2157
|
function getAncestralNode(iTargetLevel){
|
|
2158
2158
|
return oTemplateContract.oApplicationProxy.getAncestralNode(oCurrentIdentity.treeNode, iTargetLevel);
|
|
2159
2159
|
}
|
|
2160
|
-
|
|
2160
|
+
|
|
2161
2161
|
// returns a Promise that resolves to the data which have been stored with the given key if this data could be retrieved. Otherwise it is rejected to null.
|
|
2162
2162
|
// The following edge cases are also rejected: sAppStateKey is faulty, or undefined has been stored with the key (note that CrossAppNav service also might provide undefined when it cannot retrieve the data).
|
|
2163
2163
|
function getAppStateFromShell(sAppStateKey, bApplyDeStringify){
|
|
@@ -2239,7 +2239,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2239
2239
|
for (var sRouteName in oTemplateContract.mRoutingTree) {
|
|
2240
2240
|
if (!mAncestors[sRouteName]) {
|
|
2241
2241
|
var oOtherTreeNode = oTemplateContract.mRoutingTree[sRouteName];
|
|
2242
|
-
oOtherTreeNode.unbindElement(oTemplateContract.oNavigationHost, true);
|
|
2242
|
+
oOtherTreeNode.unbindElement(oTemplateContract.oNavigationHost, true);
|
|
2243
2243
|
// Temporary solution (AncestorFeature)
|
|
2244
2244
|
if (oOtherTreeNode.contextTargets) {
|
|
2245
2245
|
oOtherTreeNode.contextTargets.forEach(oOtherTreeNode.unbindElement);
|
|
@@ -2261,8 +2261,8 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2261
2261
|
if (oReactivationPromise){
|
|
2262
2262
|
delete oRegistryEntry.reactivate;
|
|
2263
2263
|
oReactivationPromise.then(function(fnReactivate){
|
|
2264
|
-
fnReactivate();
|
|
2265
|
-
});
|
|
2264
|
+
fnReactivate();
|
|
2265
|
+
});
|
|
2266
2266
|
}
|
|
2267
2267
|
});
|
|
2268
2268
|
};
|
|
@@ -2322,7 +2322,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2322
2322
|
function getAlternativeIdentityPromise(oIdentity){
|
|
2323
2323
|
return oTemplateContract.oApplicationProxy.getAlternativeIdentityPromise(oIdentity);
|
|
2324
2324
|
}
|
|
2325
|
-
|
|
2325
|
+
|
|
2326
2326
|
|
|
2327
2327
|
var mRoutesToHostViews = Object.create(null);
|
|
2328
2328
|
function fnPrepareHostView(oTreeNode, isComponentPreloaded, bOnlyComponent){
|
|
@@ -2337,7 +2337,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2337
2337
|
if (mRoutesToHostViews[oTreeNode.sRouteName] || oTemplateContract.oAppComponent.isDestroyed()){
|
|
2338
2338
|
return Promise.resolve();
|
|
2339
2339
|
}
|
|
2340
|
-
|
|
2340
|
+
|
|
2341
2341
|
oLogger.debug("Prepare host view for route " + oTreeNode.sRouteName);
|
|
2342
2342
|
var oHostViewPromise = oNavigationControllerProxy.createHostView();
|
|
2343
2343
|
var oViews = oNavigationControllerProxy.oRouter.getViews();
|
|
@@ -2352,7 +2352,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2352
2352
|
if (bOnlyComponent) {
|
|
2353
2353
|
oTreeNode.createComponent = fnCreateTemplateComponent.bind(null, oComponentContainer, oTreeNode.sRouteName, isComponentPreloaded);
|
|
2354
2354
|
} else {
|
|
2355
|
-
fnCreateTemplateComponent(oComponentContainer, oTreeNode.sRouteName, isComponentPreloaded);
|
|
2355
|
+
fnCreateTemplateComponent(oComponentContainer, oTreeNode.sRouteName, isComponentPreloaded);
|
|
2356
2356
|
}
|
|
2357
2357
|
});
|
|
2358
2358
|
}
|
|
@@ -2365,14 +2365,14 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2365
2365
|
}
|
|
2366
2366
|
return Promise.resolve();
|
|
2367
2367
|
}
|
|
2368
|
-
|
|
2368
|
+
|
|
2369
2369
|
function fnHandleBeforeRouteMatched(oEvent){
|
|
2370
2370
|
bUserHasAcceptedDataLoss = false;
|
|
2371
2371
|
oNavigationQueue.stop(); // hold back any other navigation until this navigation is finished (redundant if navigation was triggered via fnNavigateToRoute)
|
|
2372
2372
|
oRouterBusyObserver.startProcess();
|
|
2373
2373
|
fnFillCurrentIdentity(oEvent);
|
|
2374
2374
|
fnPrepareHostView(oCurrentIdentity.treeNode);
|
|
2375
|
-
oCurrentIdentity.treeNode.display();
|
|
2375
|
+
oCurrentIdentity.treeNode.display();
|
|
2376
2376
|
if (oTemplateContract.oFlexibleColumnLayoutHandler){
|
|
2377
2377
|
oBeforeRouteMatchedPromise = oTemplateContract.oFlexibleColumnLayoutHandler.handleBeforeRouteMatched(oCurrentIdentity);
|
|
2378
2378
|
}
|
|
@@ -2449,7 +2449,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2449
2449
|
};
|
|
2450
2450
|
oRoutingOptions = null; // indicate that there is no pending navigation
|
|
2451
2451
|
fnNavigateToRoute(oFollowUpOptions); // execute the follow-up navigation
|
|
2452
|
-
return;
|
|
2452
|
+
return;
|
|
2453
2453
|
}
|
|
2454
2454
|
}
|
|
2455
2455
|
oTemplateContract.oBusyHelper.setBusyReason("HashChange", false, undefined, undefined, true);
|
|
@@ -2597,7 +2597,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2597
2597
|
oTargetIdentity = oAlternativeIdentityInfo.identity;
|
|
2598
2598
|
var oBackIdentity = oCurrentHash.backTarget && aPreviousHashes[oCurrentHash.backTarget];
|
|
2599
2599
|
iMode = (oBackIdentity && oBackIdentity.treeNode === oTargetIdentity.treeNode) ? -1 : 1;
|
|
2600
|
-
}
|
|
2600
|
+
}
|
|
2601
2601
|
var oOptions = {
|
|
2602
2602
|
identity: oTargetIdentity,
|
|
2603
2603
|
mode: iMode,
|
|
@@ -2686,7 +2686,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2686
2686
|
function fnHandleRouteMatched() {
|
|
2687
2687
|
// When target reached is indicated by the routematched event, UI5 sets a placeholder on the container of target(i.e NavContainer or FlexibleColumLayoutHandler).
|
|
2688
2688
|
// When the page is reached via back navigation this placeholder is unwanted.
|
|
2689
|
-
if (isBackwards()){
|
|
2689
|
+
if (isBackwards()){
|
|
2690
2690
|
fnHidePlaceholder();
|
|
2691
2691
|
}
|
|
2692
2692
|
if (bIsRestoring && !aPreviousHashes.length){ // restarted this app via back navigation without direct access to the history we have returned to
|
|
@@ -2743,11 +2743,11 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2743
2743
|
// Define a function that is passed to the application to reset the property /generic/currentActiveChildContex
|
|
2744
2744
|
// Note that oTreeNode, oSelectionInfo, and oTemplatePrivateModel will be set by the framework.
|
|
2745
2745
|
var fnSetPath = function(oTreeNode, oSelectionInfo, oTemplatePrivateModel, sPath){
|
|
2746
|
-
if (oTreeNode.selectionInfo === oSelectionInfo){ // is the child node still valid?
|
|
2746
|
+
if (oTreeNode.selectionInfo === oSelectionInfo){ // is the child node still valid?
|
|
2747
2747
|
oTemplatePrivateModel.setProperty("/generic/currentActiveChildContext", sPath);
|
|
2748
|
-
}
|
|
2748
|
+
}
|
|
2749
2749
|
};
|
|
2750
|
-
// Traverse the node hierarchy from the current identity node to the root node and
|
|
2750
|
+
// Traverse the node hierarchy from the current identity node to the root node and
|
|
2751
2751
|
// - inform each parent about the selected child
|
|
2752
2752
|
// - set the property /generic/currentActiveChildContext to the context path of the last selected child node
|
|
2753
2753
|
for (var oParentNode, oWorkingNode = oCurrentIdentity.treeNode; oWorkingNode; oWorkingNode = oParentNode){
|
|
@@ -2765,7 +2765,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2765
2765
|
// Note: For the current page the selectionInfo will have been set by earlier calls of fnUpdateParentModelsWithContext. For all other
|
|
2766
2766
|
// pages in the hierarchy it will be set within this call.
|
|
2767
2767
|
var oRegistryEntry = oWorkingNode.componentId && oTemplateContract.componentRegistry[oWorkingNode.componentId];
|
|
2768
|
-
if (oRegistryEntry){
|
|
2768
|
+
if (oRegistryEntry){
|
|
2769
2769
|
var oTemplatePrivateModel = oRegistryEntry.utils.getTemplatePrivateModel();
|
|
2770
2770
|
if (isSelectionInfoApplicableForNode(oWorkingNode)){ // did this node ever have a child instance and was this instance a child of the current one?
|
|
2771
2771
|
var oSelectionInfo = oWorkingNode.selectionInfo;
|
|
@@ -2801,7 +2801,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2801
2801
|
});
|
|
2802
2802
|
oNavigationControllerProxy.routerInitialized = Function.prototype;
|
|
2803
2803
|
}
|
|
2804
|
-
|
|
2804
|
+
|
|
2805
2805
|
// This method is called when the routing target corresponding to the TreeNode is displayed in the sense of the router.
|
|
2806
2806
|
// It checks whether this is really correct (In FCL fullscreen mode the call would also happen for the preceeding columns which are actually not displayed).
|
|
2807
2807
|
// If this turns out to be true oTemplateComponentsAvailablePromise will be modified that it also waits for the corresponding component to be ready.
|
|
@@ -2820,11 +2820,11 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2820
2820
|
var mModels = oSourceObject.getOwnModels();
|
|
2821
2821
|
for (var sModelName in mModels) {
|
|
2822
2822
|
var oModel = mModels[sModelName];
|
|
2823
|
-
var sTargetModelName = sModelName === "undefined" ? undefined : sModelName; // default model is contained with name "undefined" in mModels but should be set without name.
|
|
2823
|
+
var sTargetModelName = sModelName === "undefined" ? undefined : sModelName; // default model is contained with name "undefined" in mModels but should be set without name.
|
|
2824
2824
|
oTargetObject.setModel(oModel, sTargetModelName);
|
|
2825
2825
|
}
|
|
2826
2826
|
}
|
|
2827
|
-
|
|
2827
|
+
|
|
2828
2828
|
function fnCreateTemplateComponent(oComponentContainer, sRoute, isComponentPreloaded){
|
|
2829
2829
|
oLogger.debug("Create TemplateComponent for route " + sRoute);
|
|
2830
2830
|
var oTreeNode = oTemplateContract.mRoutingTree[sRoute];
|
|
@@ -2874,7 +2874,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2874
2874
|
return oComponentPromise.then(function(oComponent) {
|
|
2875
2875
|
oLogger.debug("Component for route " + sRoute + " was created");
|
|
2876
2876
|
if (isComponentPreloaded) {
|
|
2877
|
-
// UI5 does the Model propogation when the control is being rendered. When the
|
|
2877
|
+
// UI5 does the Model propogation when the control is being rendered. When the
|
|
2878
2878
|
// component is preloaded the Component container is not added to rendering queue
|
|
2879
2879
|
// therefore manually propogating the model.
|
|
2880
2880
|
fnPropogateModels(oComponentContainer, oTemplateContract.oAppComponent);
|
|
@@ -2886,7 +2886,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2886
2886
|
});
|
|
2887
2887
|
});
|
|
2888
2888
|
}
|
|
2889
|
-
|
|
2889
|
+
|
|
2890
2890
|
// This function should be called EXACTLY in the following situation:
|
|
2891
2891
|
// Some user action triggers an EXTERNAL navigation which is controlled by FE code.
|
|
2892
2892
|
// FE code has already checked whether this external navigation results in a dataloss.
|
|
@@ -2896,7 +2896,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2896
2896
|
function fnUserHasAcceptedDataLoss(){
|
|
2897
2897
|
bUserHasAcceptedDataLoss = true;
|
|
2898
2898
|
}
|
|
2899
|
-
|
|
2899
|
+
|
|
2900
2900
|
// This method can be called while the shell is performing a navigation.
|
|
2901
2901
|
// If this method returns false no additional data loss handling should be performed.
|
|
2902
2902
|
// If this method returns true it needs to be checked whether the user has any unchanged changes and, if yes,
|
|
@@ -2926,9 +2926,9 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2926
2926
|
/**
|
|
2927
2927
|
* From the given app route hash, returns the route information.
|
|
2928
2928
|
* Also takes nested app route hash as input
|
|
2929
|
-
* @param {sap.m.routing.Router|sap.f.routing.Router} oRouter
|
|
2930
|
-
* @param {string} sHash
|
|
2931
|
-
* @returns {sap.ui.core.routing.RouteInfo|undefined} An object containing the route <code>name</code> and the <code>arguments</code>
|
|
2929
|
+
* @param {sap.m.routing.Router|sap.f.routing.Router} oRouter
|
|
2930
|
+
* @param {string} sHash
|
|
2931
|
+
* @returns {sap.ui.core.routing.RouteInfo|undefined} An object containing the route <code>name</code> and the <code>arguments</code>
|
|
2932
2932
|
* or <code>undefined</code>
|
|
2933
2933
|
*/
|
|
2934
2934
|
function fnGetRouteInfoByHash(oRouter, sHash) {
|
|
@@ -2953,19 +2953,19 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2953
2953
|
|
|
2954
2954
|
function getEditScopeHeaderNode(oTreeNode){
|
|
2955
2955
|
var oMainNode = oTemplateContract.oApplicationProxy.getAncestralNode(oTreeNode, 1);
|
|
2956
|
-
return oMainNode.isDraft ? oMainNode : oTreeNode;
|
|
2956
|
+
return oMainNode.isDraft ? oMainNode : oTreeNode;
|
|
2957
2957
|
}
|
|
2958
|
-
|
|
2958
|
+
|
|
2959
2959
|
function isBackLeavingTheEditScope(){
|
|
2960
2960
|
if (oCurrentIdentity.treeNode.level === 0){
|
|
2961
2961
|
return false; // We are currently not on a detail page
|
|
2962
|
-
}
|
|
2962
|
+
}
|
|
2963
2963
|
var aHistoricalEntries = oHistoryState.getData().historicalEntries;
|
|
2964
2964
|
if (aHistoricalEntries.length === 1 || aHistoricalEntries[1].sRouteName === "root"){
|
|
2965
2965
|
return true; // back leaves the app resp. goes back to list page
|
|
2966
2966
|
}
|
|
2967
2967
|
|
|
2968
|
-
/* Case where the user navigates between main object pages of the same entity set such as an instance is copied to
|
|
2968
|
+
/* Case where the user navigates between main object pages of the same entity set such as an instance is copied to
|
|
2969
2969
|
create another instance and then moves back from the newly created instance to the previous/original instance. */
|
|
2970
2970
|
if (aHistoricalEntries[0].keys.length === 2 && aHistoricalEntries[1].keys.length === 2) {
|
|
2971
2971
|
// navigation is between main object pages
|
|
@@ -2981,7 +2981,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2981
2981
|
}
|
|
2982
2982
|
}
|
|
2983
2983
|
|
|
2984
|
-
// Check whether back leads to another main object node
|
|
2984
|
+
// Check whether back leads to another main object node
|
|
2985
2985
|
var oCurrentEditScopeNode = getEditScopeHeaderNode(oCurrentIdentity.treeNode);
|
|
2986
2986
|
var oPreviousNode = oTemplateContract.mRoutingTree[aHistoricalEntries[1].sRouteName];
|
|
2987
2987
|
var oPreviousEditScopeNode = getEditScopeHeaderNode(oPreviousNode);
|
|
@@ -3004,7 +3004,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
3004
3004
|
}
|
|
3005
3005
|
return oTemplateContract.oFlexibleColumnLayoutHandler.willBeOpenedInFullscreen(oTargetNode);
|
|
3006
3006
|
}
|
|
3007
|
-
|
|
3007
|
+
|
|
3008
3008
|
// Expose methods via NavigationController proxy
|
|
3009
3009
|
oNavigationControllerProxy.routerInitialized = fnRouterInitialized;
|
|
3010
3010
|
oNavigationControllerProxy.treeNodeFirstDisplay = fnTreeNodeFirstDisplay;
|
|
@@ -3058,7 +3058,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
3058
3058
|
oNavigationControllerProxy.preloadComponent = fnPreloadComponent;
|
|
3059
3059
|
oNavigationControllerProxy.navigateToMessagePage = fnNavigateToMessagePage;
|
|
3060
3060
|
oNavigationControllerProxy.getAppStateFromShell = getAppStateFromShell;
|
|
3061
|
-
|
|
3061
|
+
|
|
3062
3062
|
oNavigationControllerProxy.userHasAcceptedDataLoss = fnUserHasAcceptedDataLoss;
|
|
3063
3063
|
oNavigationControllerProxy.unwantedDataLossPossible = fnUnwantedDataLossPossible;
|
|
3064
3064
|
oNavigationControllerProxy.isBackLeavingTheEditScope = isBackLeavingTheEditScope;
|
|
@@ -3082,7 +3082,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
3082
3082
|
}, "setPrepareHostView");
|
|
3083
3083
|
/* eslint-enable */
|
|
3084
3084
|
|
|
3085
|
-
|
|
3085
|
+
|
|
3086
3086
|
oTemplateContract.oBusyHelper.setBusy((getParsedShellHashFromFLP() || Promise.resolve()).then(function(oResults){
|
|
3087
3087
|
var oParsedUrl = oResults && oResults.parseParameters(document.location.search);
|
|
3088
3088
|
oTemplateContract.bEnablePlaceholder = oTemplateContract.bEnablePlaceholder && !(oParsedUrl && oParsedUrl["sap-ui-xx-placeholder"] && oParsedUrl["sap-ui-xx-placeholder"][0] === "false");
|
|
@@ -3167,7 +3167,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
3167
3167
|
* @param {sap.suite.ui.generic.template.lib.AppComponent} oAppComponent The AppComponent instance
|
|
3168
3168
|
* @public
|
|
3169
3169
|
* @extends sap.ui.base.Object
|
|
3170
|
-
* @version 1.
|
|
3170
|
+
* @version 1.131.0
|
|
3171
3171
|
* @since 1.30.0
|
|
3172
3172
|
* @alias sap.suite.ui.generic.template.lib.NavigationController
|
|
3173
3173
|
*/
|