@sapui5/sap.suite.ui.generic.template 1.114.0 → 1.114.2

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 (35) 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/Component.js +11 -7
  4. package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/ControllerImplementation.js +7 -33
  5. package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +1 -1
  6. package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
  7. package/src/sap/suite/ui/generic/template/ListReport/Component.js +13 -7
  8. package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +9 -37
  9. package/src/sap/suite/ui/generic/template/ListReport/controller/IappStateHandler.js +13 -5
  10. package/src/sap/suite/ui/generic/template/ListReport/manifest.json +1 -1
  11. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartTableToolbar.fragment.xml +4 -3
  12. package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +52 -57
  13. package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +1 -1
  14. package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
  15. package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
  16. package/src/sap/suite/ui/generic/template/designtime/ListReport.designtime.js +1 -1
  17. package/src/sap/suite/ui/generic/template/extensionAPI/NavigationController.js +47 -41
  18. package/src/sap/suite/ui/generic/template/fragments/SmartFormDataField.fragment.xml +3 -3
  19. package/src/sap/suite/ui/generic/template/js/AnnotationHelper.js +4 -0
  20. package/src/sap/suite/ui/generic/template/lib/AddCardsHelper.js +85 -47
  21. package/src/sap/suite/ui/generic/template/lib/AppComponent.js +14 -5
  22. package/src/sap/suite/ui/generic/template/lib/CRUDHelper.js +20 -16
  23. package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +1 -1
  24. package/src/sap/suite/ui/generic/template/lib/CommonUtils.js +11 -3
  25. package/src/sap/suite/ui/generic/template/lib/FlexibleColumnLayoutHandler.js +23 -25
  26. package/src/sap/suite/ui/generic/template/lib/PageLeaveHandler.js +2 -2
  27. package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +5 -17
  28. package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +1 -1
  29. package/src/sap/suite/ui/generic/template/lib/presentationControl/SmartTableHandler.js +4 -4
  30. package/src/sap/suite/ui/generic/template/library.js +1 -1
  31. package/src/sap/suite/ui/generic/template/listTemplates/controller/IappStateHandler.js +5 -0
  32. package/src/sap/suite/ui/generic/template/listTemplates/fragments/SmartChartToolbar.fragment.xml +2 -1
  33. package/src/sap/suite/ui/generic/template/listTemplates/semanticDateRangeTypeHelper.js +17 -1
  34. package/src/sap/suite/ui/generic/template/ListReport/view/fragments/CardMessages.fragment.xml +0 -18
  35. package/src/sap/suite/ui/generic/template/listTemplates/fragments/CardMessages.fragment.xml +0 -19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.suite.ui.generic.template",
3
- "version": "1.114.0",
3
+ "version": "1.114.2",
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.114.0</version>
10
+ <version>1.114.2</version>
11
11
 
12
12
  <documentation>Library with generic Suite UI templates.</documentation>
13
13
 
@@ -337,13 +337,17 @@ sap.ui.define(["sap/ui/core/mvc/OverrideExecution",
337
337
  }
338
338
 
339
339
  oAlpSettings.bInsightsEnabled = false;
340
- CardHelper.getServiceAsync("UIService").then(function(oInstance){
341
- oAlpSettings.bInsightsEnabled = true;
342
- var oTemplatePrivate = oComponent.getModel("_templPriv");
343
- oTemplatePrivate.setProperty("/oInsightsInstance", oInstance);
344
- }).catch(function(response) {
345
- oAlpSettings.bInsightsEnabled = false;
346
- });
340
+ // If app is running in Microsoft Teams environment then Insight should not execute
341
+ var oTemplatePrivateGlobal = oComponent.getModel("_templPrivGlobal");
342
+ if (!oTemplatePrivateGlobal.getProperty("/generic/isTeamsModeActive")) {
343
+ CardHelper.getServiceAsync("UIService").then(function(oInstance){
344
+ oAlpSettings.bInsightsEnabled = true;
345
+ var oTemplatePrivate = oComponent.getModel("_templPriv");
346
+ oTemplatePrivate.setProperty("/oInsightsInstance", oInstance);
347
+ }).catch(function(response) {
348
+ oAlpSettings.bInsightsEnabled = false;
349
+ });
350
+ }
347
351
 
348
352
  return oAlpSettings;
349
353
  },
@@ -32,12 +32,14 @@ sap.ui.define(["sap/ui/generic/app/navigation/service/SelectionVariant",
32
32
  "sap/ui/model/json/JSONModel",
33
33
  "sap/suite/ui/generic/template/listTemplates/controller/DetailController",
34
34
  "sap/ui/comp/personalization/Util",
35
- "sap/suite/ui/generic/template/lib/AddCardsHelper"
35
+ "sap/suite/ui/generic/template/lib/AddCardsHelper",
36
+ "sap/m/MessageBox",
37
+ "sap/suite/ui/generic/template/listTemplates/semanticDateRangeTypeHelper"
36
38
  ], function(SelectionVariant, ExtensionAPI,
37
39
  FilterBarController, ToolbarController, VisualFilterBarController, VisualFilterDialogController, AnalyticGridController, AnalyticalTable,
38
40
  ODataAnnotationHelper, Analytics, ContentAreaController, IappStateHandler, Device, SegmentedButtonItem, SegmentedButton,
39
41
  OverflowToolbar, ToolbarSpacer, SapMLibrary, Context, ALPHelper, controlHelper, FeLogger, FilterUtil, ObjectPath, ShareUtils, merge, deepExtend,
40
- ListUtils, MultipleViewsHandler, StableIdHelper, MessageStripHelper, JSONModel, DetailController, PersonalizationControllerUtil, AddCardsHelper) {
42
+ ListUtils, MultipleViewsHandler, StableIdHelper, MessageStripHelper, JSONModel, DetailController, PersonalizationControllerUtil, AddCardsHelper, MessageBox, semanticDateRangeTypeHelper) {
41
43
 
42
44
  "use strict";
43
45
 
@@ -334,20 +336,6 @@ sap.ui.define(["sap/ui/generic/app/navigation/service/SelectionVariant",
334
336
  // });
335
337
  }
336
338
 
337
- function fnOpenCardMessagesDialog(oModel){
338
- var oCardMessagesPromise = oTemplateUtils.oCommonUtils.getDialogFragmentAsync("sap.suite.ui.generic.template.listTemplates.fragments.CardMessages", {
339
- onClose: function(oEvent) {
340
- var oDialog = oEvent.getSource().getParent();
341
- oDialog.close();
342
- }
343
- }, "cardMessages");
344
-
345
- oCardMessagesPromise.then(function (oDialog) {
346
- oDialog.setModel(oModel, "list");
347
- oDialog.open();
348
- });
349
- }
350
-
351
339
  // Generation of Event Handlers
352
340
  return {
353
341
  onInit: function() {
@@ -905,13 +893,6 @@ sap.ui.define(["sap/ui/generic/app/navigation/service/SelectionVariant",
905
893
  onBeforeRebindChart: function(oEvent) {
906
894
  var oSmartChart = oEvent.getSource();
907
895
  setNoDataChartTextIfRequired(oSmartChart);
908
- var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
909
- var oChartSelectionVariant = oSmartChart.getUiState().getSelectionVariant();
910
- if (oChartSelectionVariant && oChartSelectionVariant.SelectOptions && oChartSelectionVariant.SelectOptions.length) {
911
- oTemplatePrivateModel.setProperty("/alp/chartFiltersActive", true);
912
- } else {
913
- oTemplatePrivateModel.setProperty("/alp/chartFiltersActive", false);
914
- }
915
896
  //oState.oSmartChart.oModels = oState.oSmartChart.getChart().oPropagatedProperties.oModels;
916
897
  var oBindingParams = oEvent.getParameters().bindingParams;
917
898
  oState.oMultipleViewsHandler.aTableFilters = deepExtend({}, oBindingParams.filters);
@@ -1224,18 +1205,10 @@ sap.ui.define(["sap/ui/generic/app/navigation/service/SelectionVariant",
1224
1205
  var oView = oState.oController.getView();
1225
1206
  var oEntitySet = oModel.getMetaModel().getODataEntitySet(sEntitySet);
1226
1207
  var oEntityType = oModel.getMetaModel().getODataEntityType(oEntitySet.entityType);
1227
- var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
1228
- var chartFiltersActive = oTemplatePrivateModel.getProperty("/alp/chartFiltersActive");
1229
1208
  var oRb = oComponent.getModel("i18n").getResourceBundle();
1230
1209
  var oCardDefinition = {};
1231
- if (oState.oSmartFilterbar.getUiState().getSemanticDates() || chartFiltersActive) {
1232
- var oModel = new JSONModel({
1233
- items: [
1234
- {text: oRb.getText("ST_CARDS_INFO_TEXT_2")},
1235
- {text: oRb.getText("ST_CARDS_INFO_TEXT_6")}
1236
- ]
1237
- });
1238
- fnOpenCardMessagesDialog(oModel);
1210
+ if (semanticDateRangeTypeHelper.hasSemanticDateValue(oState)) {
1211
+ MessageBox.error(oRb.getText("ST_CARD_CREATION_FAILURE_REASON_SEMANTIC_DATE_FILTERS"));
1239
1212
  } else {
1240
1213
  oCardDefinition['currentControlHandler'] = oPresentationControlHandler;
1241
1214
  oCardDefinition['component'] = oComponent;
@@ -1243,6 +1216,7 @@ sap.ui.define(["sap/ui/generic/app/navigation/service/SelectionVariant",
1243
1216
  oCardDefinition['entitySet'] = oEntitySet;
1244
1217
  oCardDefinition['entityType'] = oEntityType;
1245
1218
  oCardDefinition['oSmartFilterbar'] = oState.oSmartFilterbar;
1219
+ oCardDefinition['oTemplateUtils'] = oTemplateUtils;
1246
1220
  var oAnalyticalCardManifest = AddCardsHelper.createCardForPreview(oCardDefinition);
1247
1221
  var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
1248
1222
  var oInsightsInstance = oTemplatePrivateModel.getProperty("/oInsightsInstance");
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.114.0"
11
+ "version": "1.114.2"
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.114.0"
11
+ "version": "1.114.2"
12
12
  },
13
13
  "title": "Canvas",
14
14
  "description": "Canvas Page",
@@ -443,13 +443,19 @@ sap.ui.define(["sap/ui/core/mvc/OverrideExecution",
443
443
  oLrSettings.isIndicatorRequired = true;
444
444
  oLrSettings.isSemanticallyConnected = false;
445
445
  oLrSettings.bInsightsEnabled = false;
446
- CardHelper.getServiceAsync("UIService").then(function(oInstance){
447
- oLrSettings.bInsightsEnabled = true;
448
- var oTemplatePrivate = oComponent.getModel("_templPriv");
449
- oTemplatePrivate.setProperty("/listReport/oInsightsInstance", oInstance);
450
- }).catch(function(response) {
451
- oLrSettings.bInsightsEnabled = false;
452
- });
446
+ // If app is running in Microsoft Teams environment then Insight should not execute
447
+ if (oComponent && oComponent.oModels) {
448
+ var oTemplatePrivateGlobal = oComponent.getModel("_templPrivGlobal");
449
+ if (!oTemplatePrivateGlobal.getProperty("/generic/isTeamsModeActive")) {
450
+ CardHelper.getServiceAsync("UIService").then(function(oInstance){
451
+ oLrSettings.bInsightsEnabled = true;
452
+ var oTemplatePrivate = oComponent.getModel("_templPriv");
453
+ oTemplatePrivate.setProperty("/listReport/oInsightsInstance", oInstance);
454
+ }).catch(function(response) {
455
+ oLrSettings.bInsightsEnabled = false;
456
+ });
457
+ }
458
+ }
453
459
 
454
460
  return oLrSettings;
455
461
  },
@@ -18,9 +18,11 @@ sap.ui.define([
18
18
  "sap/ui/generic/app/navigation/service/SelectionVariant",
19
19
  "sap/suite/ui/generic/template/lib/AddCardsHelper",
20
20
  "sap/suite/ui/generic/template/listTemplates/filterSettingsPreparationHelper",
21
- "sap/ui/model/json/JSONModel"
21
+ "sap/ui/model/json/JSONModel",
22
+ "sap/m/MessageBox",
23
+ "sap/suite/ui/generic/template/listTemplates/semanticDateRangeTypeHelper"
22
24
  ], function (Filter, ExtensionAPI, listUtils, MessageStripHelper, IappStateHandler, MultipleViewsHandler,
23
- WorklistHandler, ShareUtils, controlHelper, FeLogger, ObjectPath, StableIdHelper, deepExtend, CreateWithDialogHandler, MultiEditHandler, SelectionVariant, AddCardsHelper, filterSettingsPreparationHelper, JSONModel) {
25
+ WorklistHandler, ShareUtils, controlHelper, FeLogger, ObjectPath, StableIdHelper, deepExtend, CreateWithDialogHandler, MultiEditHandler, SelectionVariant, AddCardsHelper, filterSettingsPreparationHelper, JSONModel, MessageBox, semanticDateRangeTypeHelper) {
24
26
  "use strict";
25
27
 
26
28
  var oLogger = new FeLogger("ListReport.controller.ControllerImplementation").getLogger();
@@ -446,9 +448,6 @@ sap.ui.define([
446
448
  return oState.oPresentationControlHandler.getVisibleProperties().some(function (oColumn) {
447
449
  var sColumnKey = oColumn.data("p13nData") && oColumn.data("p13nData").columnKey;
448
450
  var oProperty = oMetaModel.getODataProperty(oEntityType, oColumn.data("p13nData").leadingProperty);
449
- if (oProperty && (oProperty.type === 'Edm.Date' || oProperty.type === 'Edm.DateTime' || oProperty.type === 'Edm.DateTimeOffset')) {
450
- return;
451
- }
452
451
  if (oProperty && oProperty["sap:label"]) {
453
452
  if (oColumn.getVisible() && ((sColumnKey.indexOf("DataFieldForAnnotation") < 0) && !oColumn.data("p13nData").actionButton && !!oColumn.data("p13nData").leadingProperty)) {
454
453
  return true;
@@ -457,20 +456,6 @@ sap.ui.define([
457
456
  });
458
457
  }
459
458
 
460
- function fnOpenCardMessagesDialog(oModel){
461
- var oCardMessagesPromise = oTemplateUtils.oCommonUtils.getDialogFragmentAsync("sap.suite.ui.generic.template.ListReport.view.fragments.CardMessages", {
462
- onClose: function(oEvent) {
463
- var oDialog = oEvent.getSource().getParent();
464
- oDialog.close();
465
- }
466
- }, "cardMessages");
467
-
468
- oCardMessagesPromise.then(function (oDialog) {
469
- oDialog.setModel(oModel, "list");
470
- oDialog.open();
471
- });
472
- }
473
-
474
459
  // Generation of Event Handlers
475
460
  return {
476
461
  onInit: function () {
@@ -644,13 +629,6 @@ sap.ui.define([
644
629
  //which can be set directly on the table under 'settings'
645
630
  // we have to remember these filters in order to exclude them later for counts
646
631
  var oBindingParams = oEvent.getParameters().bindingParams;
647
- var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
648
- var oTableSelectionVariant = oSmartTable.getUiState().getSelectionVariant();
649
- if (oTableSelectionVariant && oTableSelectionVariant.SelectOptions && oTableSelectionVariant.SelectOptions.length) {
650
- oTemplatePrivateModel.setProperty("/listReport/tableFiltersActive", true);
651
- } else {
652
- oTemplatePrivateModel.setProperty("/listReport/tableFiltersActive", false);
653
- }
654
632
  oState.oMultipleViewsHandler.aTableFilters = deepExtend({}, oBindingParams.filters);
655
633
  // initial filters from smarttable, a copy
656
634
  var aFiltersFromSmartTable = oBindingParams.filters.slice(0);
@@ -690,7 +668,7 @@ sap.ui.define([
690
668
  onListNavigate: function (oEvent) {
691
669
  // Create a copy of oEvent that can be used asynchronously
692
670
  var oListNavigateEvent = deepExtend({}, oEvent);
693
- oTemplateUtils.oServices.oApplicationController.synchronizeDraftAsync().then(function() {
671
+ (oTemplateUtils.oComponentUtils.isDraftEnabled() ? oTemplateUtils.oServices.oApplicationController.synchronizeDraftAsync() : Promise.resolve()).then(function() {
694
672
  oTemplateUtils.oCommonEventHandlers.onListNavigate(oListNavigateEvent, oState);
695
673
  });
696
674
  },
@@ -749,16 +727,9 @@ sap.ui.define([
749
727
  var oRb = oComponent.getModel("i18n").getResourceBundle();
750
728
  var bIsSimpleColumnsApplied = checkSimpleTableColumns(oEntityType);
751
729
  var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
752
- var tableFiltersActive = oTemplatePrivateModel.getProperty("/listReport/tableFiltersActive");
753
- if (oState.oSmartFilterbar.getUiState().getSemanticDates() || tableFiltersActive || !bIsSimpleColumnsApplied) {
754
- var oModel = new JSONModel({
755
- items: [
756
- {text: oRb.getText("ST_CARDS_INFO_TEXT_2")},
757
- {text: oRb.getText("ST_CARDS_INFO_TEXT_3")},
758
- {text: oRb.getText("ST_CARDS_INFO_TEXT_4")}
759
- ]
760
- });
761
- fnOpenCardMessagesDialog(oModel);
730
+ if ( semanticDateRangeTypeHelper.hasSemanticDateValue(oState) || !bIsSimpleColumnsApplied) {
731
+ MessageBox.error(oRb.getText("ST_CARD_CREATION_FAILURE") + "\n" + oRb.getText("ST_CARD_CREATION_FAILURE_INFO") +
732
+ "\n" + oRb.getText("ST_CARD_FAILURE_REASON_SEMANTIC_DATE_FILTERS") + "\n" + oRb.getText("ST_CARD_FAILURE_TABLE_REASON_UNSUPPORTED_COLUMNS"));
762
733
  } else {
763
734
  var oView = oController.getView();
764
735
  var oCardDefinition = {};
@@ -768,6 +739,7 @@ sap.ui.define([
768
739
  oCardDefinition.entitySet = oEntitySet;
769
740
  oCardDefinition.entityType = oEntityType;
770
741
  oCardDefinition.oSmartFilterbar = oState.oSmartFilterbar;
742
+ oCardDefinition.oTemplateUtils = oTemplateUtils;
771
743
  var oInsightsInstance = oTemplatePrivateModel.getProperty("/listReport/oInsightsInstance");
772
744
  var vDraftState = oTemplatePrivateModel.getProperty("/listReport/vDraftState");
773
745
  if (vDraftState && Number(vDraftState)) {
@@ -599,25 +599,27 @@ sap.ui.define([
599
599
 
600
600
  function fnAdaptToAppStateStartUpWithParameters(oAppData, oURLParameters, sPreferredQuickVariantSelectionKey){
601
601
  handleVariantIdPassedViaURLParams(oURLParameters);
602
-
602
+
603
+ var oSFBUiState = oState.oSmartFilterbar.getUiState();
604
+ var oSFBSemanticDates = oSFBUiState.getSemanticDates();
603
605
  //oStartupObject to be passed to the extension where urlParameters and selectedQuickVariantSelectionKey are optional
604
606
  var oStartupObject = {
605
607
  viaExternalNavigation: false,
606
608
  selectionVariant: oAppData.oSelectionVariant,
607
609
  urlParameters: oURLParameters,
608
610
  selectedQuickVariantSelectionKey: sPreferredQuickVariantSelectionKey,
609
- // incase semantic date field is present, parseNavigation returns semanticDates in stringified format and otherwise an empty object
610
- semanticDates: (typeof oAppData.semanticDates === "string" ? JSON.parse(oAppData.semanticDates) : oAppData.semanticDates) || {}
611
+ // In case semantic date field is present, parseNavigation returns semanticDates in stringified format and otherwise an empty object.
612
+ // Moreover, if there is no semanticDates retrieved from NavigationHandler, then the existing values of semantic
613
+ // dates properties considered by smartfilterbar (from annotation, change handler etc) should be taken into consideration.
614
+ semanticDates: (typeof oAppData.semanticDates === "string" ? JSON.parse(oAppData.semanticDates) : oAppData.semanticDates) || oSFBSemanticDates || {}
611
615
  };
612
616
  //Apply sort order coming from the XAppState to the smart table.
613
617
  if (oAppData.presentationVariant !== undefined) {
614
618
  setControlSortOrder(oAppData.presentationVariant);
615
619
  }
616
- var oSFBUiState = oState.oSmartFilterbar.getUiState();
617
620
  var oSFBSelectionVariant = new SelectionVariant(JSON.stringify(oSFBUiState.getSelectionVariant()));
618
621
  fnRemoveCustomAndGenericData(oSFBSelectionVariant);
619
622
  var oSFBSelectionVariantCopy = JSON.parse(JSON.stringify(oSFBSelectionVariant));
620
- var oSFBSemanticDates = oSFBUiState.getSemanticDates();
621
623
  if ((oAppData.oSelectionVariant.getSelectOptionsPropertyNames().indexOf("DisplayCurrency") === -1) && (oAppData.oSelectionVariant.getSelectOptionsPropertyNames().indexOf("P_DisplayCurrency") === -1) && (oAppData.oSelectionVariant.getParameterNames().indexOf("P_DisplayCurrency") === -1)) {
622
624
  addDisplayCurrency(oAppData);
623
625
  }
@@ -703,6 +705,12 @@ sap.ui.define([
703
705
  // Remark: within SVM Wrapper, setSuppressSelection is also used - be aware, that this must not be overlapping (as in both cases we set back to fixed-value false)
704
706
  oState.oSmartFilterbar.setSuppressSelection(false);
705
707
  bInitialisation = false;
708
+ if (sNavType === sap.ui.generic.app.navigation.service.NavType.hybrid){ // incase of hybrid -> take everything from IappState
709
+ oAppData = oAppData.iAppState;
710
+ oAppData.controlStates = oAppData.data.permanentEntries.permanentState.data.controlStates;
711
+ fnAdaptToAppStateIappState(oAppData);
712
+ return;
713
+ }
706
714
  // separate 3 different cases
707
715
  // - restore from iAppState
708
716
  // - adapt to navigation parameters
@@ -8,7 +8,7 @@
8
8
  "i18n": "i18n/i18n.properties",
9
9
  "applicationVersion": {
10
10
  "__comment": "applicationVersion oder componentversion??",
11
- "version": "1.114.0"
11
+ "version": "1.114.2"
12
12
  },
13
13
  "title": "{{TITLE}}",
14
14
  "description": "{{DESCRIPTION}}",
@@ -35,9 +35,10 @@
35
35
  </template:if>
36
36
  </template:with>
37
37
 
38
- <!-- add Add to cards repository Button-->
39
- <template:if test="{= !${parameter>/settings/tableSettings/addCardtoInsightsHidden} &amp;&amp; ${parameter>/templateSpecific/isResponsiveTable} &amp;&amp; !${parameter>/settings/quickVariantSelectionX} }">
40
- <Button id="{:= ${parameter>/stableId}.getStableId({type: 'ListReportAction', subType: 'AddCardtoInsights'})}" icon="sap-icon://add-folder" press="._templateEventHandlers.onAddCardsToRepository" text="{i18n>ST_ADD_CARDS_TO_INSIGHTS}" enabled="{= ${_templPriv>/generic/bDataAreShownInTable}}" visible="{= ${parameter>/templateSpecific/bInsightsEnabled} }">
38
+ <!-- Add to cards repository Button-->
39
+ <template:if test="{= !${parameter>/settings/tableSettings/addCardtoInsightsHidden} &amp;&amp; ${parameter>/templateSpecific/isResponsiveTable} &amp;&amp; !${parameter>/settings/quickVariantSelectionX} &amp;&amp; !${parameter>/settings/quickVariantSelection} }">
40
+ <Button id="{:= ${parameter>/stableId}.getStableId({type: 'ListReportAction', subType: 'AddCardtoInsights'})}" icon="sap-icon://add-folder" press="._templateEventHandlers.onAddCardsToRepository" text="{i18n>ST_ADD_CARDS_TO_INSIGHTS}" enabled="{= ${_templPriv>/generic/bDataAreShownInTable}}"
41
+ visible="{parts: [{path: 'parameter>/templateSpecific/bInsightsEnabled'}], formatter: 'AH.getInsightsButtonVisibility'}">
41
42
  <layoutData>
42
43
  <OverflowToolbarLayoutData priority="AlwaysOverflow"/>
43
44
  </layoutData>
@@ -91,14 +91,14 @@ sap.ui.define([
91
91
  // processing is completed
92
92
  var fnInitialStateAppliedResolve = null; // resolve function for oStateAppliedAfterBindPromise
93
93
 
94
- var mTablesWithSelectionChangeDuringDraftEdit = Object.create(null); // initialized in draft edit; collects the ids of all tables that have a selction change during the edit session
94
+ var mTablesWithSelectionChangeDuringDraftEdit = Object.create(null); // initialized in draft edit; collects the ids of all tables that have a selection change during the edit session
95
95
 
96
96
  // This represents the global state of object page. There are different things, for which object page sub-sections might be waiting for,
97
97
  // We use this variable to check whether those things have completed or not. This state can only be changed by method fnHandleStateChangeForAllSubSections,
98
98
  // this method changes the flag of state and trigger a side-effect to tell all the subsections that if they are listening for any state value, they can
99
99
  // update themselves.
100
- // This state is reset in every rebind cycle and set appropriatly whenever some events happen like, headerdata available, stateApplied, layoutFinished.
101
- // currently structre of this state looks like
100
+ // This state is reset in every rebind cycle and set appropriately whenever some events happen like, headerdata available, stateApplied, layoutFinished.
101
+ // currently structure of this state looks like
102
102
  // oWaitForState = {
103
103
  // bLayoutFinished: boolean,
104
104
  // bStateApplied: boolean,
@@ -190,7 +190,7 @@ sap.ui.define([
190
190
  null,
191
191
  oController.getOwnerComponent().getAppComponent().getForceGlobalRefresh(),
192
192
  {
193
- draftRootContext : oTemplateUtils.oComponentUtils.getMainComponentDetails().bindingContext, // send the root component binding for exexuting preparation action
193
+ draftRootContext : oTemplateUtils.oComponentUtils.getMainComponentDetails().bindingContext, // send the root component binding for executing preparation action
194
194
  callPreparationOnDraftRoot : true
195
195
  }
196
196
  );
@@ -373,7 +373,7 @@ sap.ui.define([
373
373
  * would always be true. Thus, we have to add
374
374
  * "or (HasActiveEntity = false and IsActiveEntity = false)".
375
375
  * However, this condition is not evaluated correctly by gateway, so we have to transform it to
376
- * (IsActvieEntity = true and x) or (Is ActvieEntity = false and (x or HasActvieEntity = false)),
376
+ * (IsActiveEntity = true and x) or (Is ActiveEntity = false and (x or HasActiveEntity = false)),
377
377
  * where x is the condition provided by the user
378
378
  */
379
379
  var oUserFilter = FilterProcessor.groupFilters(oBindingParams.filters);
@@ -554,8 +554,7 @@ sap.ui.define([
554
554
  var fnDeleteConfirmationOnDelete;
555
555
 
556
556
  function getObjectPageDeleteDialog() {
557
- fnDeleteConfirmationOnDelete = function (oEvent) {
558
- var oDialog = oEvent.getSource().getParent();
557
+ fnDeleteConfirmationOnDelete = function (oDialog) {
559
558
  var oBusyHelper = oTemplateUtils.oServices.oApplication.getBusyHelper();
560
559
  if (oBusyHelper.isBusy()) {
561
560
  return;
@@ -585,9 +584,10 @@ sap.ui.define([
585
584
  var oDialog = oEvent.getSource().getParent();
586
585
  oDialog.close();
587
586
  },
588
- // to be called within a function to asure that fnDeleteConfirmationOnDelete contains correct coding (see below function getTableDeleteDialog)
587
+ // to be called within a function to assure that fnDeleteConfirmationOnDelete contains correct coding (see below function getTableDeleteDialog)
589
588
  onDelete: function (oEvent) {
590
- fnDeleteConfirmationOnDelete(oEvent);
589
+ var oDialog = oEvent.getSource().getParent();
590
+ (oTemplateUtils.oComponentUtils.isDraftEnabled() ? oTemplateUtils.oServices.oApplicationController.synchronizeDraftAsync() : Promise.resolve()).then(fnDeleteConfirmationOnDelete.bind(null, oDialog));
591
591
  }
592
592
  }, "delete", Function.prototype, true);
593
593
  }
@@ -642,7 +642,7 @@ sap.ui.define([
642
642
  }
643
643
  index -= 1;
644
644
  }
645
- //Using seperate loops to work on the array without ignored fields.
645
+ //Using separate loops to work on the array without ignored fields.
646
646
  var aUnsupportedColumns = aColumnData.reduce(function (aColumns, oColumn) {
647
647
  // Data formats for which paste is not yet supported.
648
648
  if (!oColumn.type && !oColumn.customParseFunction) {
@@ -710,7 +710,7 @@ sap.ui.define([
710
710
  var DraftSavedState = sap.m.DraftIndicatorState.Saved; //Indicator for the footer
711
711
 
712
712
  for (var i = 0; i < iParsedDataLength; i++) {
713
- bIgnoreTableRefresh = i < iParsedDataLength - 1; //Flag to overcome multiple table refreshs when records are pasted.
713
+ bIgnoreTableRefresh = i < iParsedDataLength - 1; //Flag to overcome multiple table refreshes when records are pasted.
714
714
  oAddEntryPromise = oTemplateUtils.oCommonEventHandlers.addEntry(oEventSource, true, undefined, aParsedData[i], bIgnoreTableRefresh);
715
715
  aAddEntryPromises.push(oAddEntryPromise);
716
716
  }
@@ -750,7 +750,7 @@ sap.ui.define([
750
750
 
751
751
  // END - Functions related to the copy-paste from Excel
752
752
 
753
- function onDelete(oEvent) {
753
+ function onDelete() {
754
754
  oTemplateUtils.oCommonUtils.executeIfControlReady(onDeleteImpl, "delete");
755
755
  }
756
756
 
@@ -947,9 +947,8 @@ sap.ui.define([
947
947
  */
948
948
  function getTableDeleteDialog(oSmartTable, aContexts, sUiElementId) {
949
949
  var aPath = [];
950
- fnTableDeleteConfirmationOnDelete = function (oEventSource) {
950
+ fnTableDeleteConfirmationOnDelete = function (oDialog) {
951
951
  var oBusyHelper = oTemplateUtils.oServices.oApplication.getBusyHelper();
952
- var oDialog = oEventSource.getParent();
953
952
  aPath = [];
954
953
  var iSuccessfullyDeletedCount;
955
954
  var iFailedToDeleteCount;
@@ -1005,7 +1004,7 @@ sap.ui.define([
1005
1004
  sMessage += sMessage && sMessage + "\n";
1006
1005
  sMessage += oTemplateUtils.oCommonUtils.getContextText("DELETE_ERROR_PLURAL_WITH_COUNT", oSmartTable.getId(), null, [iFailedToDeleteCount]);
1007
1006
  } else if (iSuccessfullyDeletedCount > 0) {
1008
- //CASE: There is record failed for delete but some records got deleted succefully
1007
+ //CASE: There is record failed for delete but some records got deleted successfully
1009
1008
  sMessage += "\n";
1010
1009
  sMessage += oTemplateUtils.oCommonUtils.getContextText("DELETE_ERROR_WITH_COUNT", oSmartTable.getId(), null, [iFailedToDeleteCount]);
1011
1010
  } else {
@@ -1045,10 +1044,10 @@ sap.ui.define([
1045
1044
  var oDialog = oEvent.getSource().getParent();
1046
1045
  oDialog.close();
1047
1046
  },
1048
- // to be called within a function to asure that fnTableDeleteConfirmationOnDelete contains correct coding (see above function getObjectPageDeleteDialog)
1047
+ // to be called within a function to assure that fnTableDeleteConfirmationOnDelete contains correct coding (see above function getObjectPageDeleteDialog)
1049
1048
  onDelete: function (oEvent) {
1050
- var oEventSource = oEvent.getSource();
1051
- oTemplateUtils.oServices.oApplicationController.synchronizeDraftAsync().then(fnTableDeleteConfirmationOnDelete.bind(null, oEventSource));
1049
+ var oDialog = oEvent.getSource().getParent();
1050
+ (oTemplateUtils.oComponentUtils.isDraftEnabled() ? oTemplateUtils.oServices.oApplicationController.synchronizeDraftAsync() : Promise.resolve()).then(fnTableDeleteConfirmationOnDelete.bind(null, oDialog));
1052
1051
  }
1053
1052
  }, "delete", Function.prototype, true);
1054
1053
  }
@@ -1180,15 +1179,15 @@ sap.ui.define([
1180
1179
  }
1181
1180
  };
1182
1181
  };
1183
- // Loop over customData and attach changeHandler (if necesary)
1182
+ // Loop over customData and attach changeHandler (if necessary)
1184
1183
  oObjectPage.getCustomData().forEach(function (oCustomDataElement) {
1185
1184
  var sKey = oCustomDataElement.getKey();
1186
1185
  if (sKey === "objectTitle" || sKey === "objectSubtitle") { // check for the two properties handled in the headerInfo segment
1187
1186
  var oBinding = oCustomDataElement.getBinding("value");
1188
- // UI5 does not gurantee the binding to be already available at this point in time.
1187
+ // UI5 does not guarantee the binding to be already available at this point in time.
1189
1188
  // If the binding is not available, we access the binding info as a fallback
1190
1189
  var oBindingInfo = !oBinding && oCustomDataElement.getBindingInfo("value");
1191
- if (!oBinding && !oBindingInfo) { // constant -> No change handler needed, but the value must be transfered to the template private model once
1190
+ if (!oBinding && !oBindingInfo) { // constant -> No change handler needed, but the value must be transferred to the template private model once
1192
1191
  oTemplatePrivateModel.setProperty("/objectPage/headerInfo/" + sKey, oCustomDataElement.getValue());
1193
1192
  return; // done
1194
1193
  }
@@ -1445,7 +1444,7 @@ sap.ui.define([
1445
1444
  if (sSelectedSubSection){ // sSelectedSubSection was not yet processed, but we want to get only subsections that come after that
1446
1445
  return false;
1447
1446
  }
1448
- // Scroll to thwe given subsection and make sure that controls and bindings for this subsection are initialized (necessary because of lazy loading)
1447
+ // Scroll to the given subsection and make sure that controls and bindings for this subsection are initialized (necessary because of lazy loading)
1449
1448
  oSelectedSection.setSelectedSubSection(oControl);
1450
1449
  fnSubSectionEntered(oControl);
1451
1450
  return null;
@@ -1805,11 +1804,11 @@ sap.ui.define([
1805
1804
  var sCategory = bWaitForViewPort ? "subSectionNotWaitingForViewPort" : "subSection";
1806
1805
  var oView = oController.getView();
1807
1806
  oTemplateUtils.oInfoObjectHandler.executeForAllInformationObjects(sCategory, function (oSubSectionInfoObj) {
1808
- // Checking whether a subSection Entered into view port or not is something local state compared to global state. Thus it is tested seperate to
1807
+ // Checking whether a subSection Entered into view port or not is something local state compared to global state. Thus it is tested separate to
1809
1808
  // to global state
1810
1809
  var sSubSectionId = oSubSectionInfoObj.getId();
1811
1810
  var bExecuteNow = (bWaitForViewPort || controlHelper.isElementVisibleOnView(sSubSectionId, oView)) && checkGlobalWaitState(oSubSectionInfoObj.getLoadingStrategy());
1812
- // Checking whether a subSection Entered into view port or not is something local state compared to global state. Thus it is tested seperate to
1811
+ // Checking whether a subSection Entered into view port or not is something local state compared to global state. Thus it is tested separate to
1813
1812
  // to global state
1814
1813
  var oStrategy = oSubSectionInfoObj.getLoadingStrategy();
1815
1814
  bExecuteNow = checkGlobalWaitState(oStrategy);
@@ -2170,7 +2169,7 @@ sap.ui.define([
2170
2169
  var bHeaderContent = oObjectPage.getShowHeaderContent();
2171
2170
  var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
2172
2171
  oTemplatePrivateModel.setProperty("/objectPage/headerContentVisible", bHeaderContent);
2173
- // Create a wrapper around the objectpage
2172
+ // Create a wrapper around the object page
2174
2173
  // Use this wrapper to store/restore the pinned status of the header.
2175
2174
  oObjectPageLayoutWrapper = oTemplateUtils.oCommonUtils.getControlStateWrapper(oObjectPage);
2176
2175
  oObjectPageLayoutWrapper.attachStateChanged(oTemplateUtils.oComponentUtils.stateChanged);
@@ -2238,7 +2237,7 @@ sap.ui.define([
2238
2237
  oObjectPage._triggerVisibleSubSectionsEvents();
2239
2238
  };
2240
2239
 
2241
- // This is the falback implementation. Note that certain scenarios are already covered inplace (Edit, Save, Cancel)
2240
+ // This is the fallback implementation. Note that certain scenarios are already covered inplace (Edit, Save, Cancel)
2242
2241
  oViewProxy.setFocus = function(oBeforeData, oAdditionalData){
2243
2242
  var aActiveComponentsBefore = oBeforeData.activeComponents;
2244
2243
  if (aActiveComponentsBefore.length > 0 && !(oAdditionalData && (oAdditionalData.isCreate || oAdditionalData.ignorePersistence))){
@@ -2281,11 +2280,11 @@ sap.ui.define([
2281
2280
  var oTemplatePrivateModel = oTemplateUtils.oComponentUtils.getTemplatePrivateModel();
2282
2281
  oTemplatePrivateModel.setProperty("/objectPage/aPasteAttachedTables", []);
2283
2282
  oTemplateUtils.oComponentUtils.attach(oController, "PageDataLoaded", function (oEvent) {
2284
- var aStreamEnabledAsscoiatedEntites = oTemplateUtils.oComponentUtils.getParameterModelForTemplating().getObject("/templateSpecific/streamEnabledAssociatedEntites");
2285
- if (aStreamEnabledAsscoiatedEntites && aStreamEnabledAsscoiatedEntites.length > 0) {
2286
- for (var i = 0; i < aStreamEnabledAsscoiatedEntites.length; i++) {
2287
- var oStreamData = oTemplateUtils.oCommonUtils.getStreamData(aStreamEnabledAsscoiatedEntites[i], oEvent.context);
2288
- oTemplateUtils.oCommonUtils.setStreamData(oStreamData, aStreamEnabledAsscoiatedEntites[i]);
2283
+ var aStreamEnabledAssociatedEntities = oTemplateUtils.oComponentUtils.getParameterModelForTemplating().getObject("/templateSpecific/streamEnabledAssociatedEntites");
2284
+ if (aStreamEnabledAssociatedEntities && aStreamEnabledAssociatedEntities.length > 0) {
2285
+ for (var i = 0; i < aStreamEnabledAssociatedEntities.length; i++) {
2286
+ var oStreamData = oTemplateUtils.oCommonUtils.getStreamData(aStreamEnabledAssociatedEntities[i], oEvent.context);
2287
+ oTemplateUtils.oCommonUtils.setStreamData(oStreamData, aStreamEnabledAssociatedEntities[i]);
2289
2288
  }
2290
2289
  }
2291
2290
  var oStreamDataSelf = oTemplateUtils.oCommonUtils.getStreamData(null, oEvent.context);
@@ -2340,31 +2339,27 @@ sap.ui.define([
2340
2339
  oTemplateUtils.oCommonEventHandlers.submitChangesForSmartMultiInput(oEvent);
2341
2340
  }
2342
2341
  },
2343
-
2344
- contextEditableChanged: function (oEvent) {
2342
+ onModeToggled: function (oEvent) {
2345
2343
  /* Set the FieldGroupIds of the SmartField(s) which are 1:1 associated with the object page entity set so that side effect annotation targeting
2346
2344
  the object entity set would work. Assigning FieldGroupIds to other SmartFields is already taken care by the SmartFields */
2347
- if (oEvent.getParameter("editable")) {
2348
- var oSmartField = oEvent.getSource();
2349
- oSmartField._getComputedMetadata().then(function (oComputedMetaData) {
2350
- if (oComputedMetaData && oComputedMetaData.navigationPath && !!oSmartField.getBindingContext()) {
2351
- var oClonedMetaData = deepExtend({}, oComputedMetaData);
2352
- var oMetaModel = oController.getOwnerComponent().getModel().getMetaModel();
2353
-
2354
- /* EntitySet and EntityType of the cloned metamodel of smartfield needs to be changed to the parent entity so that when
2355
- _calculateFieldGroupIDs looks through the passed metamodel, it should be able to find the corresponding side effect annotation */
2356
- oClonedMetaData.entitySet = oMetaModel.getODataEntitySet(oController.getOwnerComponent().getEntitySet());
2357
- oClonedMetaData.entityType = oMetaModel.getODataEntityType(oClonedMetaData.entitySet.entityType);
2358
-
2359
- var aIDs = oSmartField._calculateFieldGroupIDs(oClonedMetaData);
2360
- if (aIDs) {
2361
- oSmartField._setInternalFieldGroupIds(aIDs);
2362
- }
2345
+ var oSmartField = oEvent.getSource();
2346
+ oSmartField._getComputedMetadata().then(function (oComputedMetaData) {
2347
+ if (oComputedMetaData && oComputedMetaData.navigationPath && !!oSmartField.getBindingContext()) {
2348
+ var oClonedMetaData = deepExtend({}, oComputedMetaData);
2349
+ var oMetaModel = oController.getOwnerComponent().getModel().getMetaModel();
2350
+
2351
+ /* EntitySet and EntityType of the cloned metamodel of smartfield needs to be changed to the parent entity so that when
2352
+ _calculateFieldGroupIDs looks through the passed metamodel, it should be able to find the corresponding side effect annotation */
2353
+ oClonedMetaData.entitySet = oMetaModel.getODataEntitySet(oController.getOwnerComponent().getEntitySet());
2354
+ oClonedMetaData.entityType = oMetaModel.getODataEntityType(oClonedMetaData.entitySet.entityType);
2355
+
2356
+ var aIDs = oSmartField._calculateFieldGroupIDs(oClonedMetaData);
2357
+ if (aIDs) {
2358
+ oSmartField._setInternalFieldGroupIds(aIDs);
2363
2359
  }
2364
- });
2365
- }
2360
+ }
2361
+ });
2366
2362
  },
2367
-
2368
2363
  deleteEntry: function (oEvent) {
2369
2364
  var oListItem = oEvent.getParameter("listItem");
2370
2365
  var oListItemContext = oListItem.getBindingContext();
@@ -2387,7 +2382,7 @@ sap.ui.define([
2387
2382
 
2388
2383
  checkUpdateFinished: function (oEvent) {
2389
2384
  // in case of the table get refreshed through table filter or sort
2390
- // onDataRecieved may not be called
2385
+ // onDataReceived may not be called
2391
2386
  oTemplateUtils.oCommonUtils.setEnabledToolbarButtons(oEvent.getSource());
2392
2387
  },
2393
2388
  // selectionChange for MultiSelectionPlugin
@@ -2531,9 +2526,9 @@ sap.ui.define([
2531
2526
  onBeforeRebindDetailTable: function (oEvent) {
2532
2527
  var oSmartTable = oEvent.getSource();
2533
2528
  if (!oSmartTable.getModel()) {
2534
- return; // In Scenarion when Table is not bound on the initial load (Ex. When table is inside moreBlocks sections)
2529
+ return; // In scenario when Table is not bound on the initial load (Ex. When table is inside moreBlocks sections)
2535
2530
  }
2536
- // Attach dataRecieved event
2531
+ // Attach dataReceived event
2537
2532
  oEvent.mParameters.bindingParams.events["dataReceived"] = onDataReceivedForTable.bind(null, oSmartTable);
2538
2533
  oState.oInlineCreationRowsHelper.onBeforeRebindControl(oEvent);
2539
2534
 
@@ -2641,7 +2636,7 @@ sap.ui.define([
2641
2636
  onBeforeRebindChart: function (oEvent) {
2642
2637
  var oSmartChart = oEvent.getSource();
2643
2638
  if (!oSmartChart.getModel()) {
2644
- return; // In Scenarion when Chart is not bound on the initial load (Ex. When chart is inside moreBlocks sections)
2639
+ return; // In scenario when Chart is not bound on the initial load (Ex. When chart is inside moreBlocks sections)
2645
2640
  }
2646
2641
  adjustAndProvideBindingParamsForSmartTableOrChart(oEvent);
2647
2642
  //setNoDataChartTextIfRequired(oSmartChart);
@@ -2764,7 +2759,7 @@ sap.ui.define([
2764
2759
  },
2765
2760
 
2766
2761
  /*
2767
- Formats the Text to be shown in the segmented button used for multple views in object page tables
2762
+ Formats the Text to be shown in the segmented button used for multiple views in object page tables
2768
2763
  */
2769
2764
  formatItemTextForMultipleView: function (oItem) {
2770
2765
  return oItem && oMultipleViewsHandler ? oMultipleViewsHandler.formatItemTextForMultipleView(oItem) : "";