@sapui5/sap.suite.ui.generic.template 1.136.13 → 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.
Files changed (44) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/generic/template/.library +1 -1
  3. package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_it.properties +2 -2
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
  5. package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
  6. package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +93 -12
  7. package/src/sap/suite/ui/generic/template/ListReport/controller/IappStateHandler.js +19 -9
  8. package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_it.properties +1 -1
  9. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
  10. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartChart.fragment.xml +2 -1
  11. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartTable.fragment.xml +3 -2
  12. package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +5 -2
  13. package/src/sap/suite/ui/generic/template/ObjectPage/controller/RelatedAppsHandler.js +19 -27
  14. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cnr.properties +1 -1
  15. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_mk.properties +1 -1
  16. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pt.properties +1 -1
  17. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sh.properties +1 -1
  18. package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sr.properties +1 -1
  19. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  20. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartChart.fragment.xml +3 -2
  21. package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTable.fragment.xml +3 -2
  22. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  23. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  24. package/src/sap/suite/ui/generic/template/designtime/floorplans/ObjectPage.designtime.js +6 -1
  25. package/src/sap/suite/ui/generic/template/genericUtilities/ControlStateWrapperFactory.js +101 -67
  26. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/DynamicPageWrapper.js +19 -51
  27. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/ObjectPageLayoutWrapper.js +10 -32
  28. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/PreliminaryWrapper.js +144 -0
  29. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SearchFieldWrapper.js +8 -30
  30. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartFilterBarWrapper.js +49 -162
  31. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +99 -93
  32. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableWrapper.js +22 -3
  33. package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +82 -75
  34. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +1 -1
  35. package/src/sap/suite/ui/generic/template/lib/ContextMenuHandler.js +9 -0
  36. package/src/sap/suite/ui/generic/template/lib/PageLeaveHandler.js +36 -8
  37. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +2 -2
  38. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +1 -1
  39. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +1 -1
  40. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +1 -1
  41. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +1 -1
  42. package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +1 -1
  43. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +10 -25
  44. package/src/sap/suite/ui/generic/template/library.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.suite.ui.generic.template",
3
- "version": "1.136.13",
3
+ "version": "1.136.15",
4
4
  "description": "SAPUI5 Library sap.suite.ui.generic.template",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -7,7 +7,7 @@
7
7
 
8
8
  (c) Copyright 2009-2015 SAP SE. All rights reserved
9
9
  </copyright>
10
- <version>1.136.13</version>
10
+ <version>1.136.15</version>
11
11
 
12
12
  <documentation>Library with generic Suite UI templates.</documentation>
13
13
 
@@ -208,9 +208,9 @@ NODATA_ADAPTFILTERDIALOG=Nessun dato
208
208
 
209
209
 
210
210
 
211
- NODATA_SMARTCHART_ALP=Per iniziare, impostare i filtri e selezionare "Avvio".
211
+ NODATA_SMARTCHART_ALP=Per iniziare, imposta i filtri rilevanti e seleziona "Avvio".
212
212
 
213
- NODATA_SMARTTABLE_ALP=Per iniziare, impostare i filtri e selezionare "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
 
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.136.13"
11
+ "version": "1.136.15"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.136.13"
11
+ "version": "1.136.15"
12
12
  },
13
13
  "title": "Canvas",
14
14
  "description": "Canvas Page",
@@ -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
- // // Expose selected private functions to unit tests
558
- // var getDownloadUrl = testableHelper.testable(getDownloadUrl, "getDownloadUrl");
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
- var oSmartFilterBarId = oState.oSmartFilterbar.getId(),
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 = aMissingFilters.reduce(function(accumulator, currentValue) {
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
- aMissingFilters.forEach(function(oEntry) {
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
- oTemplateUtils.oCommonUtils.getControlStateWrapper(oController.byId(StableIdHelper.getStableId({type: "ListReportPage", subType: "DynamicPage"}))).setHeaderState(oController, true);
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
 
@@ -61,7 +61,7 @@ MESSAGE_MULTIPLE_VALUES_S_FORM=Non \u00E8 possibile utilizzare i seguenti filtri
61
61
 
62
62
  OBJECT_NOT_EDITABLE=Impossibile modificare questo oggetto.
63
63
 
64
- NODATA_SMARTTABLE_LR=Per iniziare, impostare i filtri e selezionare "Avvio".
64
+ NODATA_SMARTTABLE_LR=Per iniziare, imposta i filtri rilevanti e seleziona "Avvio".
65
65
 
66
66
  SEARCH_FILTERS_KEYBOARD_SHORTCUT_DESC=Avvio
67
67
 
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.136.13"
11
+ "version": "1.136.15"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -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
- <smarttable:SmartTable id="{smartControlId>id}" useDateRangeType="{= ${parameter>/settings/filterSettings/dateSettings/useDateRange} }"
21
- smartFilterId="{= ${parameter>/settings/quickVariantSelectionX} ? '' : 'listReportFilter'}"
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
- handlers: {
2400
- onEditAndActiveToggle: function () { // Implementation of draft toggle for static header
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
- oSemanticObjectSet.add(sSemanticObject); // Set will handle duplicates
114
+ aSemanticObjects.push(sSemanticObject);
118
115
  }
119
116
  }
120
-
121
- // Create an array from the set
122
- let aSemanticObjects = Array.from(oSemanticObjectSet);
123
-
124
- // Use the map method to convert the array of strings into an array of objects
125
- aSemanticObjects = aSemanticObjects.map(sSemObj => ({ semanticObject: sSemObj }));
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
- oLinksPromise.then(function (aResult) {
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=Sa\u010Duvaj
19
19
 
20
20
  SAVE_AND_EDIT=Sa\u010Duvaj i uredi
21
21
 
22
- SAVE_AND_NEXT=Sa\u010Duvaj i sljede\u0107e
22
+ SAVE_AND_NEXT=Sa\u010Duvaj i idi na sljede\u0107e
23
23
 
24
24
  VALIDATE_DRAFT=Validiraj
25
25
 
@@ -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
 
@@ -15,7 +15,7 @@ SAVED_VERSION=Vers\u00E3o gravada
15
15
 
16
16
  DRAFT_VERSION=Esbo\u00E7o
17
17
 
18
- SAVE=Gravar
18
+ SAVE=Salvar
19
19
 
20
20
  SAVE_AND_EDIT=Salvar e editar
21
21
 
@@ -19,7 +19,7 @@ SAVE=Sa\u010Duvaj
19
19
 
20
20
  SAVE_AND_EDIT=Sa\u010Duvaj i uredi
21
21
 
22
- SAVE_AND_NEXT=Sa\u010Duvaj i slede\u0107e
22
+ SAVE_AND_NEXT=Sa\u010Duvaj i idi na slede\u0107e
23
23
 
24
24
  VALIDATE_DRAFT=Validiraj
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
 
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.136.13"
9
+ "version": "1.136.15"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -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
- <smartChart:SmartChart
15
- id="{smartChartId>value}"
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
- <st:SmartTable id="{smartControlId>id}"
20
- initialise="._templateEventHandlers.onTableInit($event, '{facetId>id}')"
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"
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.136.13"
9
+ "version": "1.136.15"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -6,7 +6,7 @@
6
6
  "type": "component",
7
7
  "i18n": "i18n/i18n.properties",
8
8
  "applicationVersion": {
9
- "version": "1.136.13"
9
+ "version": "1.136.15"
10
10
  },
11
11
  "title": "{{TITLE}}",
12
12
  "description": "{{DESCRIPTION}}",
@@ -214,7 +214,12 @@ sap.ui.define([
214
214
  }
215
215
  },
216
216
  "sap.uxap.ObjectPageSubSection": {
217
- actions: ["rename", "remove", "reveal"]
217
+ actions: ["rename", "remove", "reveal"],
218
+ aggregations: {
219
+ actions: {
220
+ actions: ["remove"]
221
+ }
222
+ }
218
223
  },
219
224
  "sap.ui.comp.smartform.SmartForm": { // not documented in allow list, but checked by RTA OPA test
220
225
  actions: ["localReset", "annotation"],