@sapui5/sap.suite.ui.generic.template 1.136.14 → 1.136.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/suite/ui/generic/template/.library +1 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_it.properties +1 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +93 -12
- package/src/sap/suite/ui/generic/template/ListReport/controller/IappStateHandler.js +19 -9
- package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartChart.fragment.xml +2 -1
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartTable.fragment.xml +3 -2
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +5 -2
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +19 -27
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cnr.properties +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_mk.properties +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sh.properties +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sr.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/SmartChart.fragment.xml +3 -2
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTable.fragment.xml +3 -2
- package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/genericUtilities/ControlStateWrapperFactory.js +101 -67
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/DynamicPageWrapper.js +19 -51
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/ObjectPageLayoutWrapper.js +10 -32
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/PreliminaryWrapper.js +144 -0
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SearchFieldWrapper.js +8 -30
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartFilterBarWrapper.js +49 -162
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +99 -93
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableWrapper.js +22 -3
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +82 -75
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
- package/src/sap/suite/ui/generic/template/lib/ContextMenuHandler.js +9 -0
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +2 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +1 -1
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +1 -1
- package/src/sap/suite/ui/generic/template/library.js +1 -1
package/package.json
CHANGED
|
@@ -210,7 +210,7 @@ NODATA_ADAPTFILTERDIALOG=Nessun dato
|
|
|
210
210
|
|
|
211
211
|
NODATA_SMARTCHART_ALP=Per iniziare, imposta i filtri rilevanti e seleziona "Avvio".
|
|
212
212
|
|
|
213
|
-
NODATA_SMARTTABLE_ALP=Per iniziare, imposta i filtri rilevanti e seleziona "Avvio"
|
|
213
|
+
NODATA_SMARTTABLE_ALP=Per iniziare, imposta i filtri rilevanti e seleziona "Avvio".
|
|
214
214
|
|
|
215
215
|
MESSAGE_MULTIPLE_VALUES_L_FORM=Alcuni filtri non sono ril. per tab "{1}" ({0}). L\u2019impostazione di questi filtri non incide sui ris.
|
|
216
216
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
sap.ui.define([
|
|
2
2
|
"sap/ui/model/Filter",
|
|
3
|
+
"sap/ui/model/FilterOperator",
|
|
3
4
|
"sap/suite/ui/generic/template/ListReport/extensionAPI/ExtensionAPI",
|
|
4
5
|
"sap/suite/ui/generic/template/listTemplates/listUtils",
|
|
5
6
|
"sap/suite/ui/generic/template/listTemplates/controller/MessageStripHelper",
|
|
@@ -24,12 +25,12 @@ sap.ui.define([
|
|
|
24
25
|
"sap/suite/ui/generic/template/js/AnnotationHelperHiddenTermSupport",
|
|
25
26
|
"sap/m/IllustratedMessageType",
|
|
26
27
|
"sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler",
|
|
27
|
-
"sap/ui/model/FilterOperator",
|
|
28
28
|
"sap/ui/core/message/MessageType",
|
|
29
29
|
"sap/ui/core/Element",
|
|
30
30
|
"sap/suite/ui/generic/template/genericUtilities/testableHelper"
|
|
31
31
|
], function (
|
|
32
32
|
Filter,
|
|
33
|
+
FilterOperator,
|
|
33
34
|
ExtensionAPI,
|
|
34
35
|
listUtils,
|
|
35
36
|
MessageStripHelper,
|
|
@@ -54,7 +55,6 @@ sap.ui.define([
|
|
|
54
55
|
AnnotationHelperHiddenTermSupport,
|
|
55
56
|
IllustratedMessageType,
|
|
56
57
|
EasyFilterBarHandler,
|
|
57
|
-
FilterOperator,
|
|
58
58
|
MessageType,
|
|
59
59
|
Element,
|
|
60
60
|
testableHelper
|
|
@@ -554,10 +554,89 @@ sap.ui.define([
|
|
|
554
554
|
return restoreFocusHelper;
|
|
555
555
|
}
|
|
556
556
|
|
|
557
|
-
|
|
558
|
-
|
|
557
|
+
/**
|
|
558
|
+
* Helper function to get missing navigation properties from the current variant.
|
|
559
|
+
* This logic was moved from SmartFilterBarWrapper to avoid control-specific
|
|
560
|
+
* business logic in the wrapper layer.
|
|
561
|
+
* @param {object} oSmartFilterBar - The SmartFilterBar control
|
|
562
|
+
* @returns {Array} Array of missing navigation property filters
|
|
563
|
+
*/
|
|
564
|
+
function fnGetMissingNavProperties(oSmartFilterBar) {
|
|
565
|
+
//Fetch the navigation properties
|
|
566
|
+
const oMetaModel = oSmartFilterBar.getModel().getMetaModel(),
|
|
567
|
+
sEntitySet = oSmartFilterBar.getEntitySet(),
|
|
568
|
+
oDataEntitySet = oMetaModel.getODataEntitySet(sEntitySet),
|
|
569
|
+
oDataEntityType = oMetaModel.getODataEntityType(oDataEntitySet.entityType),
|
|
570
|
+
aNavigationProperties = oDataEntityType['navigationProperty'];
|
|
571
|
+
//Fetch the added filters in the current variant
|
|
572
|
+
const sCurrentVariantID = oSmartFilterBar.getVariantManagement().getCurrentVariantId(),
|
|
573
|
+
oCurrentVariant = oSmartFilterBar.getVariantManagement().getAllVariants().find(function(variant) {
|
|
574
|
+
return variant.getId() === sCurrentVariantID;
|
|
575
|
+
});
|
|
576
|
+
if (!oCurrentVariant
|
|
577
|
+
|| !oCurrentVariant.getContent()
|
|
578
|
+
|| !oCurrentVariant.getContent().searchListReportVariant
|
|
579
|
+
|| !oCurrentVariant.getContent().searchListReportVariant.filterBarVariant
|
|
580
|
+
|| !aNavigationProperties
|
|
581
|
+
|| !aNavigationProperties.length
|
|
582
|
+
) {
|
|
583
|
+
return [];
|
|
584
|
+
}
|
|
585
|
+
const oManifestNavigationProperties = oSmartFilterBar.getNavigationProperties() ?
|
|
586
|
+
oSmartFilterBar.getNavigationProperties().split(",").reduce(function(accumulator, currentValue){
|
|
587
|
+
accumulator[currentValue] = true;
|
|
588
|
+
return accumulator;
|
|
589
|
+
}, {}) : {},
|
|
590
|
+
oNavigationProperties = aNavigationProperties.reduce(function(accumulator, currentValue){
|
|
591
|
+
accumulator[currentValue.name] = true;
|
|
592
|
+
return accumulator;
|
|
593
|
+
}, {}),
|
|
594
|
+
oSmartFilterBarVariant = JSON.parse(oCurrentVariant.getContent().searchListReportVariant.filterBarVariant),
|
|
595
|
+
aMissing = [];
|
|
596
|
+
delete oSmartFilterBarVariant["_CUSTOM"];
|
|
597
|
+
|
|
598
|
+
// Compare the filter source and navigation properties
|
|
599
|
+
// Take into account if parameter is already specified in page setting in manifest.json - settings->filterSettings->navigationProperties
|
|
600
|
+
// If parameter exist in navigationProperties -> SFB will handle specific parameter and code ignore it
|
|
601
|
+
for (const sFilterKey in oSmartFilterBarVariant) {
|
|
602
|
+
const sParamName = sFilterKey.split(".")[0]; // take first part from navigation parameter. Example: to_Currency.Currency_Code -> to_Currency
|
|
603
|
+
if (!oNavigationProperties[sParamName] || oManifestNavigationProperties[sParamName]
|
|
604
|
+
) {
|
|
605
|
+
// Parameter is
|
|
606
|
+
// 1) not navigation property -> we don't process it
|
|
607
|
+
// 2) is defined in manifest.json - settings->filterSettings->navigationProperties -> value will be handled by SFB
|
|
608
|
+
continue;
|
|
609
|
+
}
|
|
610
|
+
if (oSmartFilterBarVariant[sFilterKey].items && oSmartFilterBarVariant[sFilterKey].items.length) {
|
|
611
|
+
aMissing.push(oSmartFilterBarVariant[sFilterKey].items.map(function(entry) {
|
|
612
|
+
return {
|
|
613
|
+
exclude: false,
|
|
614
|
+
field: sFilterKey,
|
|
615
|
+
operation: FilterOperator.EQ,
|
|
616
|
+
value1: entry.key
|
|
617
|
+
};
|
|
618
|
+
}));
|
|
619
|
+
continue;
|
|
620
|
+
}
|
|
621
|
+
if (oSmartFilterBarVariant[sFilterKey].ranges && oSmartFilterBarVariant[sFilterKey].ranges.length) {
|
|
622
|
+
aMissing.push(oSmartFilterBarVariant[sFilterKey].ranges.map(function(entry) {
|
|
623
|
+
return {
|
|
624
|
+
exclude: entry.exclude,
|
|
625
|
+
field: entry.keyField,
|
|
626
|
+
operation: entry.operation,
|
|
627
|
+
value1: entry.value1,
|
|
628
|
+
value2: entry.value2
|
|
629
|
+
};
|
|
630
|
+
}));
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
return aMissing;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
// Expose selected private functions to unit tests
|
|
559
637
|
/* eslint-enable */
|
|
560
638
|
testableHelper.testableStatic(onShareListReportActionButtonPressImpl, "ControllerImplementation_onShareListReportActionButtonPressImpl");
|
|
639
|
+
testableHelper.testable(fnGetMissingNavProperties, "fnGetMissingNavProperties");
|
|
561
640
|
|
|
562
641
|
// Generation of Event Handlers
|
|
563
642
|
return {
|
|
@@ -707,8 +786,11 @@ sap.ui.define([
|
|
|
707
786
|
onShareListReportActionButtonPressImpl(oMenuButton);
|
|
708
787
|
});
|
|
709
788
|
},
|
|
710
|
-
|
|
789
|
+
|
|
711
790
|
handlers: {
|
|
791
|
+
onAfterVariantInitialise: function(oEvent) {
|
|
792
|
+
oTemplateUtils.oCommonUtils.getControlStateWrapper(oEvent.getSource()).onAfterVariantInitialise();
|
|
793
|
+
},
|
|
712
794
|
addEntry: addEntry,
|
|
713
795
|
addEntryWithFilters: addEntryWithFilters,
|
|
714
796
|
deleteEntries: fnDeleteEntries,
|
|
@@ -754,6 +836,8 @@ sap.ui.define([
|
|
|
754
836
|
onAfterSFBVariantLoad: function (oEvent) {
|
|
755
837
|
oState.oIappStateHandler.onAfterSFBVariantLoad(oEvent);
|
|
756
838
|
oState.oEasyFilterBarHandler && oState.oEasyFilterBarHandler.handleVariantLoad(oEvent);
|
|
839
|
+
// Cache missing navigation property filters for performance
|
|
840
|
+
oState.aMissingNavFilters = fnGetMissingNavProperties(oState.oSmartFilterbar);
|
|
757
841
|
},
|
|
758
842
|
onSmartListDataReceived: function (oEvent) {
|
|
759
843
|
var oSmartList = oEvent.getSource();
|
|
@@ -802,11 +886,8 @@ sap.ui.define([
|
|
|
802
886
|
// However, this connection is not there in the multi view multi table scenario which is the only case in which this snapshot
|
|
803
887
|
// will be used later.
|
|
804
888
|
var aFiltersFromRebindEvent = oBindingParams.filters.slice(0);
|
|
805
|
-
// To get the missing navigation properties from the user variant
|
|
806
|
-
|
|
807
|
-
oSmartFilterBarWrapper = oTemplateUtils.oCommonUtils.getControlStateWrapperById(oSmartFilterBarId, "SmartFilterBar"),
|
|
808
|
-
aMissingFilters = oSmartFilterBarWrapper.getMissingNavProperties();
|
|
809
|
-
if (aMissingFilters.length) {
|
|
889
|
+
// To get the missing navigation properties from the user variant (cached from last variant load)
|
|
890
|
+
if (oState.aMissingNavFilters && oState.aMissingNavFilters.length) {
|
|
810
891
|
// Display message to the user, which filters currently are not visible
|
|
811
892
|
var sCurrentVariant = oState.oSmartFilterbar.getVariantManagement().getId(),
|
|
812
893
|
sCurrentVariantId = oState.oSmartFilterbar.getCurrentVariantId(),
|
|
@@ -822,7 +903,7 @@ sap.ui.define([
|
|
|
822
903
|
}
|
|
823
904
|
return accumulator;
|
|
824
905
|
}, {}),
|
|
825
|
-
aMissingPropertyNames =
|
|
906
|
+
aMissingPropertyNames = oState.aMissingNavFilters.reduce(function(accumulator, currentValue) {
|
|
826
907
|
var sName = currentValue[0].field.split(".")[0];
|
|
827
908
|
if (oMappedProperty[sName]) {
|
|
828
909
|
accumulator.push(oMappedProperty[sName]);
|
|
@@ -840,7 +921,7 @@ sap.ui.define([
|
|
|
840
921
|
// Generate filters and set them into binding parameters
|
|
841
922
|
// use same logic as in sap.ui.comp.smartfilterbar.FilterProviderUtils, method generateFilters()
|
|
842
923
|
var aFilters = [];
|
|
843
|
-
|
|
924
|
+
oState.aMissingNavFilters.forEach(function(oEntry) {
|
|
844
925
|
var aIncludeFilters = [],
|
|
845
926
|
aExcludeFilters = [];
|
|
846
927
|
oEntry.forEach(function(oFilterEntry) {
|
|
@@ -214,12 +214,6 @@ sap.ui.define([
|
|
|
214
214
|
// However, for iAppState case, SVM wrapper also needs to contain SFB wrapper (and not oCustomFiltersWrapper directly)
|
|
215
215
|
|
|
216
216
|
|
|
217
|
-
// DynamicPage state: header pinned
|
|
218
|
-
var oDynamicPage = oController.byId(StableIdHelper.getStableId({type: "ListReportPage", subType: "DynamicPage"}));
|
|
219
|
-
// TODO: Discuss: should this state (header pinned) be part of variant (only page variant or SFB variant)? Assumption: no
|
|
220
|
-
var oDynamicPageWrapper = oTemplateUtils.oCommonUtils.getControlStateWrapper(oDynamicPage);
|
|
221
|
-
aControlStateWrappers.push(oDynamicPageWrapper);
|
|
222
|
-
|
|
223
217
|
// SmartVariantManagement state: Selected Variant and whether it's dirty, including wrappers for managed controls (all controls, for which the corresponding state
|
|
224
218
|
// information should be part of the variant)
|
|
225
219
|
// Due to direct connection between SVM and SFB, also their wrappers need to each other directly. Remarks:
|
|
@@ -229,14 +223,19 @@ sap.ui.define([
|
|
|
229
223
|
var oSmartVariantManagement = oState.oSmartFilterbar.getSmartVariant();
|
|
230
224
|
if (oSmartVariantManagement){
|
|
231
225
|
var oSmartVariantManagementWrapper = oTemplateUtils.oCommonUtils.getControlStateWrapper(oSmartVariantManagement, {
|
|
232
|
-
managedControlWrappers: aPageVariantControlStateWrappers.concat([oSmartFilterBarWrapper])
|
|
233
|
-
dynamicPageWrapper: oDynamicPageWrapper
|
|
226
|
+
managedControlWrappers: aPageVariantControlStateWrappers.concat([oSmartFilterBarWrapper])
|
|
234
227
|
});
|
|
235
228
|
aControlStateWrappers.push(oSmartVariantManagementWrapper);
|
|
236
229
|
} else {
|
|
237
230
|
aControlStateWrappers.push(oSmartFilterBarWrapper);
|
|
238
231
|
}
|
|
239
232
|
|
|
233
|
+
// DynamicPage state: header pinned
|
|
234
|
+
var oDynamicPage = oController.byId(StableIdHelper.getStableId({type: "ListReportPage", subType: "DynamicPage"}));
|
|
235
|
+
// The DynamicPage state (header pinned) is intentionally stored only in iAppState and not included in any variant (neither page variant nor SFB variant).
|
|
236
|
+
var oDynamicPageWrapper = oTemplateUtils.oCommonUtils.getControlStateWrapper(oDynamicPage);
|
|
237
|
+
aControlStateWrappers.push(oDynamicPageWrapper);
|
|
238
|
+
|
|
240
239
|
|
|
241
240
|
// Wrapper to control whether data is loaded
|
|
242
241
|
|
|
@@ -774,7 +773,8 @@ sap.ui.define([
|
|
|
774
773
|
// For desktop devices, expand the header for Standard and Custom variants and for tablet and mobile devices,
|
|
775
774
|
// collapse the header only if search is triggered.
|
|
776
775
|
if (Device.system.desktop) {
|
|
777
|
-
|
|
776
|
+
var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
|
|
777
|
+
oTemplatePrivateModel.setProperty("/listReport/isHeaderExpanded", true);
|
|
778
778
|
} else {
|
|
779
779
|
collapseHeader();
|
|
780
780
|
}
|
|
@@ -909,6 +909,16 @@ sap.ui.define([
|
|
|
909
909
|
}
|
|
910
910
|
sap.ui.getCore().getMessageManager().removeMessages(removedMessages);
|
|
911
911
|
}
|
|
912
|
+
|
|
913
|
+
// Restore header collapse logic (originally removed in change 5641712)
|
|
914
|
+
// Collapse header when user manually selects a variant (context === undefined) that has executeOnSelect set to true
|
|
915
|
+
var oContext = oEvent.getParameter("context");
|
|
916
|
+
var bExecuteOnSelect = oEvent.getParameter("executeOnSelect");
|
|
917
|
+
|
|
918
|
+
if (oContext === undefined && bExecuteOnSelect) {
|
|
919
|
+
collapseHeader();
|
|
920
|
+
}
|
|
921
|
+
|
|
912
922
|
fnRestoreExtendedFilterDataOnAfterSFBVariantLoad(oEvent);
|
|
913
923
|
}
|
|
914
924
|
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
<template:with path="entityType>com.sap.vocabularies.UI.v1.HeaderInfo" var="header">
|
|
10
10
|
<smartChart:SmartChart
|
|
11
|
-
id="listReport{= ${parameter>/settings/quickVariantSelectionX} ? ${path: 'tabItem>', formatter: 'AH.getSuffixFromIconTabFilterKey'} : ''}"
|
|
11
|
+
id="listReport{= ${parameter>/settings/quickVariantSelectionX} ? ${path: 'tabItem>', formatter: 'AH.getSuffixFromIconTabFilterKey'} : ''}"
|
|
12
|
+
afterVariantInitialise="._templateEventHandlers.onAfterVariantInitialise"
|
|
12
13
|
visible="{path: 'tabItem>', formatter: 'AHMultipleViews.getVisibleForTableTabs'}"
|
|
13
14
|
smartFilterId=""
|
|
14
15
|
persistencyKey="listReportChart{= ${parameter>/settings/quickVariantSelectionX} ? ${path: 'tabItem>', formatter: 'AH.getSuffixFromIconTabFilterKey'} : ''}"
|
|
@@ -17,8 +17,9 @@
|
|
|
17
17
|
<template:with path="tableAnnotationPath>" helper="AH.searchForFirstSemKey_Title_Description" var="targetColumn">
|
|
18
18
|
<template:with path="parameter>/" helper="StableIdHelper.preparePathForStableId" var="smartControlId">
|
|
19
19
|
<template:if test="{= ${smartControlId>}.buildStableId({type: 'ListReportTable', subType: 'SmartTable', sQuickVariantKey: ${tabItem>key}})}" />
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
<smarttable:SmartTable id="{smartControlId>id}" useDateRangeType="{= ${parameter>/settings/filterSettings/dateSettings/useDateRange} }"
|
|
21
|
+
afterVariantInitialise="._templateEventHandlers.onAfterVariantInitialise"
|
|
22
|
+
smartFilterId="{= ${parameter>/settings/quickVariantSelectionX} ? '' : 'listReportFilter'}"
|
|
22
23
|
visible="{path: 'tabItem>', formatter: 'AHMultipleViews.getVisibleForTableTabs'}"
|
|
23
24
|
initialise="._templateEventHandlers.onTableInit"
|
|
24
25
|
persistencyKey="{= ${path: 'parameter>/settings/routeConfig/', formatter: 'AH.getPersistencyKeyForSmartTable'} }{= ${parameter>/settings/quickVariantSelectionX} ? ${path: 'tabItem>', formatter: 'AH.getSuffixFromIconTabFilterKey'} : ''}"
|
|
@@ -2396,8 +2396,11 @@ sap.ui.define([
|
|
|
2396
2396
|
});
|
|
2397
2397
|
}
|
|
2398
2398
|
},
|
|
2399
|
-
|
|
2400
|
-
|
|
2399
|
+
handlers: {
|
|
2400
|
+
onAfterVariantInitialise: function(oEvent) {
|
|
2401
|
+
oTemplateUtils.oCommonUtils.getControlStateWrapper(oEvent.getSource()).onAfterVariantInitialise();
|
|
2402
|
+
},
|
|
2403
|
+
onEditAndActiveToggle: function () { // Implementation of draft toggle for static header
|
|
2401
2404
|
var oUIModel = oObjectPage.getModel("ui");
|
|
2402
2405
|
var bIsEditable = oUIModel.getProperty("/editable");
|
|
2403
2406
|
|
|
@@ -91,7 +91,12 @@ sap.ui.define([
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
|
|
94
|
+
|
|
95
|
+
var oAppComponent = oController.getOwnerComponent().getAppComponent();
|
|
96
|
+
// Preparing the array of semantic objects to fetch links.
|
|
97
|
+
// Initialize the array with the current app's semantic object.
|
|
98
|
+
var aSemanticObjects = [sCurrentSemObj];
|
|
99
|
+
|
|
95
100
|
//Get all semantic object from manifest setting
|
|
96
101
|
var oSettings = oTemplateUtils.oComponentUtils.getSettings();
|
|
97
102
|
var oRelatedAppsSettings = oSettings.relatedAppsSettings;
|
|
@@ -99,42 +104,29 @@ sap.ui.define([
|
|
|
99
104
|
oRelatedAppsSettings = oController.modifyRelatedAppsSettings(oRelatedAppsSettings, sCurrentSemObj);
|
|
100
105
|
var bHasRelatedAppSettings = oRelatedAppsSettings && Object.keys(oRelatedAppsSettings).length > 0;
|
|
101
106
|
|
|
102
|
-
var oLinksPromise;
|
|
103
107
|
var bHasRelatedAppSettings = oRelatedAppsSettings && Object.keys(oRelatedAppsSettings).length > 0;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (bHasRelatedAppSettings) {
|
|
107
|
-
// Create a set to hold string data types
|
|
108
|
-
const oSemanticObjectSet = new Set();
|
|
109
|
-
|
|
110
|
-
// Add the current semantic object into the set
|
|
111
|
-
oSemanticObjectSet.add(sCurrentSemObj);
|
|
112
108
|
|
|
109
|
+
if (bHasRelatedAppSettings) {
|
|
113
110
|
// Iterate through oRelatedAppSettings and add all related apps into the set
|
|
114
111
|
for (const sKey in oRelatedAppsSettings) {
|
|
115
112
|
if (oRelatedAppsSettings.hasOwnProperty(sKey)) {
|
|
116
113
|
const sSemanticObject = oRelatedAppsSettings[sKey].semanticObject;
|
|
117
|
-
|
|
114
|
+
aSemanticObjects.push(sSemanticObject);
|
|
118
115
|
}
|
|
119
116
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
// aSemanticObjects now contains the desired format
|
|
128
|
-
oLinksPromise = oNavigationService.getLinks(aSemanticObjects);
|
|
129
|
-
} else {
|
|
130
|
-
var oAppComponent = oController.getOwnerComponent().getAppComponent();
|
|
131
|
-
oLinksPromise = oNavigationService.getLinks([{
|
|
132
|
-
semanticObject: sCurrentSemObj,
|
|
117
|
+
}
|
|
118
|
+
// Remove duplicates
|
|
119
|
+
aSemanticObjects = Array.from(new Set(aSemanticObjects));
|
|
120
|
+
// Add parameters to semantic objects
|
|
121
|
+
var aSemanticObjectsWithParams = aSemanticObjects.map(sSemanticObject => {
|
|
122
|
+
return {
|
|
123
|
+
semanticObject: sSemanticObject,
|
|
133
124
|
params: oParam,
|
|
134
125
|
ui5Component: oAppComponent
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
oNavigationService.getLinks(aSemanticObjectsWithParams).then(function (aResult) {
|
|
138
130
|
// Convert the response into a single dimension array by flattening it
|
|
139
131
|
var aLinks = aResult.flat(Infinity);
|
|
140
132
|
// Get structured links
|
|
@@ -19,7 +19,7 @@ SAVE=\u0417\u0430\u0447\u0443\u0432\u0430\u0458
|
|
|
19
19
|
|
|
20
20
|
SAVE_AND_EDIT=\u0417\u0430\u0447\u0443\u0432\u0430\u0458 \u0438 \u0443\u0440\u0435\u0434\u0438
|
|
21
21
|
|
|
22
|
-
SAVE_AND_NEXT=\u0417\u0430\u0447\u0443\u0432\u0430\u0458 \u0438 \u0441\u043B\u0435\u0434\u043D\u043E
|
|
22
|
+
SAVE_AND_NEXT=\u0417\u0430\u0447\u0443\u0432\u0430\u0458 \u0438 \u043E\u0434\u0438 \u0441\u043B\u0435\u0434\u043D\u043E
|
|
23
23
|
|
|
24
24
|
VALIDATE_DRAFT=\u041F\u043E\u0442\u0432\u0440\u0434\u0438
|
|
25
25
|
|
|
@@ -19,7 +19,7 @@ SAVE=\u0421\u0430\u0447\u0443\u0432\u0430\u0458
|
|
|
19
19
|
|
|
20
20
|
SAVE_AND_EDIT=\u0421\u0430\u0447\u0443\u0432\u0430\u0458 \u0438 \u0443\u0440\u0435\u0434\u0438
|
|
21
21
|
|
|
22
|
-
SAVE_AND_NEXT=\u0421\u0430\u0447\u0443\u0432\u0430\u0458 \u0438 \u0441\u043B\u0435\u0434\u0435\u045B\u0435
|
|
22
|
+
SAVE_AND_NEXT=\u0421\u0430\u0447\u0443\u0432\u0430\u0458 \u0438 \u0438\u0434\u0438 \u043D\u0430 \u0441\u043B\u0435\u0434\u0435\u045B\u0435
|
|
23
23
|
|
|
24
24
|
VALIDATE_DRAFT=\u0412\u0430\u043B\u0438\u0434\u0438\u0440\u0430\u0458
|
|
25
25
|
|
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
<template:if test="{:= ${smartChartId>}.set(AH.getStableIdPartFromFacet(${facet>}) + '::Chart') }"/>
|
|
12
12
|
<!-- Header Level for Smart Chart is hardcoded here with "H5" for fallback scenarios, After Section Title hiding logic, if required the level is calculated on the class /ObjectPage/controller/SectionTitleHandler.js-->
|
|
13
13
|
<!-- Header Style for Smart Chart is hardcoded here with "H5" for all Scenarios.-->
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
<smartChart:SmartChart
|
|
15
|
+
id="{smartChartId>value}"
|
|
16
|
+
afterVariantInitialise="._templateEventHandlers.onAfterVariantInitialise"
|
|
16
17
|
header="{chartAnnotation>Title/String}"
|
|
17
18
|
initialized="._templateEventHandlers.onChartInit"
|
|
18
19
|
requestAtLeastFields="{parts: [{path: 'chartAnnotation>'}, {path: 'entitySet>entityType'}], formatter: 'AH.getApplicablePathForChartToolbarActions'}"
|
|
@@ -16,8 +16,9 @@
|
|
|
16
16
|
<template:if test="{= ${smartControlId>}.buildStableId({type: 'ObjectPageTable', subType: 'SmartTable', sFacet: ${facetId>id}})}" />
|
|
17
17
|
<!-- Header Level for Smart Table is hardcoded here with "H5" for fallback scenarios, After Section Title hiding logic, if required the level is calculated on the class /ObjectPage/controller/SectionTitleHandler.js-->
|
|
18
18
|
<!-- Header Style for Smart Table is hardcoded here with "H5" for all Scenarios.-->
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
<st:SmartTable id="{smartControlId>id}"
|
|
20
|
+
afterVariantInitialise="._templateEventHandlers.onAfterVariantInitialise"
|
|
21
|
+
initialise="._templateEventHandlers.onTableInit($event, '{facetId>id}')"
|
|
21
22
|
persistencyKey="{parts: [{path: 'smartControlId>id'}, {path: 'objectPageTableSettings>value/persistencyKeyState'}], formatter: 'AH.getPersistencyKey'}"
|
|
22
23
|
tableBindingPath="{= ${path: 'target>AnnotationPath'}.slice(0, ${path: 'target>AnnotationPath'}.lastIndexOf('/')) }"
|
|
23
24
|
fitContainer="false"
|