@sapui5/sap.fe.templates 1.99.0 → 1.101.1

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 (137) hide show
  1. package/package.json +6 -5
  2. package/src/sap/fe/templates/.library +1 -2
  3. package/src/sap/fe/templates/AnalyticalListPage/Component.js +24 -12
  4. package/src/sap/fe/templates/AnalyticalListPage/Component.ts +6 -0
  5. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +30 -32
  6. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.ts +25 -0
  7. package/src/sap/fe/templates/Feedback.js +80 -0
  8. package/src/sap/fe/templates/Feedback.ts +67 -0
  9. package/src/sap/fe/templates/ListComponent.js +156 -118
  10. package/src/sap/fe/templates/ListComponent.ts +105 -0
  11. package/src/sap/fe/templates/ListReport/Component.js +82 -47
  12. package/src/sap/fe/templates/ListReport/Component.ts +39 -0
  13. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +123 -112
  14. package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +100 -0
  15. package/src/sap/fe/templates/ListReport/ListReport.view.xml +24 -22
  16. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +1111 -1086
  17. package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +1009 -0
  18. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +54 -53
  19. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +55 -0
  20. package/src/sap/fe/templates/ListReport/overrides/Share.js +134 -137
  21. package/src/sap/fe/templates/ListReport/overrides/Share.ts +134 -0
  22. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +443 -428
  23. package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +413 -0
  24. package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +25 -25
  25. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +72 -0
  26. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +62 -0
  27. package/src/sap/fe/templates/ListReport/view/fragments/MultipleModeOld.fragment.xml +50 -0
  28. package/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +478 -473
  29. package/src/sap/fe/templates/ObjectPage/AnnotationHelper.ts +511 -0
  30. package/src/sap/fe/templates/ObjectPage/Component.js +169 -149
  31. package/src/sap/fe/templates/ObjectPage/Component.ts +131 -0
  32. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +140 -142
  33. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +116 -0
  34. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +6 -8
  35. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1530 -1414
  36. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +1442 -0
  37. package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +136 -95
  38. package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.ts +84 -0
  39. package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +24 -21
  40. package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.ts +10 -0
  41. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +98 -53
  42. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.ts +50 -0
  43. package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +20 -16
  44. package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.ts +15 -0
  45. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +50 -47
  46. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.ts +47 -0
  47. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +34 -34
  48. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.ts +34 -0
  49. package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +15 -15
  50. package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.ts +13 -0
  51. package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +11 -11
  52. package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.ts +7 -0
  53. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +55 -52
  54. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +57 -0
  55. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +15 -17
  56. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.ts +13 -0
  57. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +13 -17
  58. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +14 -0
  59. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +23 -21
  60. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.ts +21 -0
  61. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +310 -317
  62. package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +316 -0
  63. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +66 -57
  64. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +65 -0
  65. package/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +1 -1
  66. package/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +1 -1
  67. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +18 -24
  68. package/src/sap/fe/templates/ObjectPage/view/fragments/CollaborationDraft.fragment.xml +38 -0
  69. package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +1 -1
  70. package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +4 -4
  71. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -0
  72. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +1 -0
  73. package/src/sap/fe/templates/ObjectPage/view/fragments/SwitchDraftAndActiveObjectPopOver.fragment.xml +27 -0
  74. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +851 -815
  75. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +795 -0
  76. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +205 -187
  77. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.ts +178 -0
  78. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +484 -459
  79. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +438 -0
  80. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +16 -14
  81. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.ts +20 -0
  82. package/src/sap/fe/templates/TableScroller.js +45 -53
  83. package/src/sap/fe/templates/TableScroller.ts +48 -0
  84. package/src/sap/fe/templates/controls/Chart.fragment.xml +18 -17
  85. package/src/sap/fe/templates/controls/MacroChart.fragment.xml +22 -0
  86. package/src/sap/fe/templates/library.js +49 -63
  87. package/src/sap/fe/templates/library.ts +57 -0
  88. package/src/sap/fe/templates/messagebundle.properties +19 -7
  89. package/src/sap/fe/templates/messagebundle_ar.properties +6 -17
  90. package/src/sap/fe/templates/messagebundle_bg.properties +6 -17
  91. package/src/sap/fe/templates/messagebundle_ca.properties +6 -17
  92. package/src/sap/fe/templates/messagebundle_cs.properties +6 -17
  93. package/src/sap/fe/templates/messagebundle_cy.properties +6 -17
  94. package/src/sap/fe/templates/messagebundle_da.properties +6 -17
  95. package/src/sap/fe/templates/messagebundle_de.properties +6 -17
  96. package/src/sap/fe/templates/messagebundle_el.properties +6 -17
  97. package/src/sap/fe/templates/messagebundle_en.properties +6 -17
  98. package/src/sap/fe/templates/messagebundle_en_GB.properties +6 -17
  99. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +0 -15
  100. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +6 -17
  101. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +6 -17
  102. package/src/sap/fe/templates/messagebundle_es.properties +6 -17
  103. package/src/sap/fe/templates/messagebundle_es_MX.properties +6 -17
  104. package/src/sap/fe/templates/messagebundle_et.properties +6 -17
  105. package/src/sap/fe/templates/messagebundle_fi.properties +6 -17
  106. package/src/sap/fe/templates/messagebundle_fr.properties +6 -17
  107. package/src/sap/fe/templates/messagebundle_fr_CA.properties +6 -17
  108. package/src/sap/fe/templates/messagebundle_hi.properties +6 -17
  109. package/src/sap/fe/templates/messagebundle_hr.properties +6 -17
  110. package/src/sap/fe/templates/messagebundle_hu.properties +6 -17
  111. package/src/sap/fe/templates/messagebundle_id.properties +6 -17
  112. package/src/sap/fe/templates/messagebundle_it.properties +6 -17
  113. package/src/sap/fe/templates/messagebundle_iw.properties +6 -17
  114. package/src/sap/fe/templates/messagebundle_ja.properties +6 -17
  115. package/src/sap/fe/templates/messagebundle_kk.properties +6 -17
  116. package/src/sap/fe/templates/messagebundle_ko.properties +6 -17
  117. package/src/sap/fe/templates/messagebundle_lt.properties +6 -17
  118. package/src/sap/fe/templates/messagebundle_lv.properties +6 -17
  119. package/src/sap/fe/templates/messagebundle_ms.properties +6 -17
  120. package/src/sap/fe/templates/messagebundle_nl.properties +6 -17
  121. package/src/sap/fe/templates/messagebundle_no.properties +6 -17
  122. package/src/sap/fe/templates/messagebundle_pl.properties +6 -17
  123. package/src/sap/fe/templates/messagebundle_pt.properties +6 -17
  124. package/src/sap/fe/templates/messagebundle_pt_PT.properties +6 -17
  125. package/src/sap/fe/templates/messagebundle_ro.properties +6 -17
  126. package/src/sap/fe/templates/messagebundle_ru.properties +6 -17
  127. package/src/sap/fe/templates/messagebundle_sh.properties +6 -17
  128. package/src/sap/fe/templates/messagebundle_sk.properties +6 -17
  129. package/src/sap/fe/templates/messagebundle_sl.properties +6 -17
  130. package/src/sap/fe/templates/messagebundle_sv.properties +6 -17
  131. package/src/sap/fe/templates/messagebundle_th.properties +6 -17
  132. package/src/sap/fe/templates/messagebundle_tr.properties +6 -17
  133. package/src/sap/fe/templates/messagebundle_uk.properties +6 -17
  134. package/src/sap/fe/templates/messagebundle_vi.properties +6 -17
  135. package/src/sap/fe/templates/messagebundle_zh_CN.properties +6 -17
  136. package/src/sap/fe/templates/messagebundle_zh_TW.properties +6 -17
  137. package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.xml +0 -49
@@ -1,56 +1,57 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
5
4
  */
6
- sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/filter/FilterUtils"], function(CommonUtils, FilterUtils) {
7
- "use strict";
8
- return {
9
- adaptNavigationContext: function(oSelectionVariant, oTargetInfo) {
10
- var oView = this.getView(),
11
- oController = oView.getController(),
12
- oFilterBar = oController._getFilterBarControl();
13
- // Adding filter bar values to the navigation does not make sense if no context has been selected.
14
- // Hence only consider filter bar values when SelectionVariant is not empty
15
- if (oFilterBar && !oSelectionVariant.isEmpty()) {
16
- var oViewData = oView.getViewData(),
17
- sRootPath = oViewData.fullContextPath + oViewData.entitySet,
18
- oFilterBarConditions = Object.assign({}, this.base.getView().getController().filterBarConditions),
19
- aParameters = [];
20
-
21
- if (oViewData.contextPath) {
22
- var oMetaModel = oView.getModel().getMetaModel(),
23
- oParameterInfo = CommonUtils.getParameterInfo(oMetaModel, oViewData.contextPath),
24
- oParamProperties = oParameterInfo.parameterProperties;
25
- aParameters = (oParamProperties && Object.keys(oParamProperties)) || [];
26
- }
27
-
28
- oFilterBarConditions = oController._intentBasedNavigation.prepareFiltersForExternalNavigation(
29
- oFilterBarConditions,
30
- sRootPath,
31
- aParameters
32
- );
33
- var oFilterInfo = FilterUtils.getFilterInfo(oFilterBar, {
34
- targetControl: oController._getTable()
35
- }).filters;
36
- var oInternalModelContext = oView.getBindingContext("internal");
37
- var mTabs = oInternalModelContext && oInternalModelContext.getProperty("tabs");
38
- // Do we need to exclude Fields (mutli tables mode)?
39
- if (mTabs) {
40
- var aIgnoredFieldsForTab = mTabs.ignoredFields[mTabs.selected];
41
- if (Array.isArray(aIgnoredFieldsForTab) && aIgnoredFieldsForTab.length > 0) {
42
- aIgnoredFieldsForTab.forEach(function(sProperty) {
43
- delete oFilterBarConditions.filterConditions[sProperty];
44
- });
45
- }
46
- }
47
- // TODO: move this also into the intent based navigation controller extension
48
- CommonUtils.addExternalStateFiltersToSelectionVariant(oSelectionVariant, oFilterBarConditions, oTargetInfo, oFilterInfo);
49
- delete oTargetInfo.propertiesWithoutConflict;
50
- }
51
- },
52
- getEntitySet: function() {
53
- return this.base.getCurrentEntitySet();
54
- }
55
- };
56
- });
5
+ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/filter/FilterUtils"], function (CommonUtils, FilterUtils) {
6
+ "use strict";
7
+
8
+ var IntentBasedNavigationOverride = {
9
+ adaptNavigationContext: function (oSelectionVariant, oTargetInfo) {
10
+ var oView = this.getView(),
11
+ oController = oView.getController(),
12
+ oFilterBar = oController._getFilterBarControl(); // Adding filter bar values to the navigation does not make sense if no context has been selected.
13
+ // Hence only consider filter bar values when SelectionVariant is not empty
14
+
15
+
16
+ if (oFilterBar && !oSelectionVariant.isEmpty()) {
17
+ var oViewData = oView.getViewData(),
18
+ sRootPath = oViewData.fullContextPath + oViewData.entitySet;
19
+ var oFilterBarConditions = Object.assign({}, this.base.getView().getController().filterBarConditions);
20
+ var aParameters = [];
21
+
22
+ if (oViewData.contextPath) {
23
+ var oMetaModel = oView.getModel().getMetaModel(),
24
+ oParameterInfo = CommonUtils.getParameterInfo(oMetaModel, oViewData.contextPath),
25
+ oParamProperties = oParameterInfo.parameterProperties;
26
+ aParameters = oParamProperties && Object.keys(oParamProperties) || [];
27
+ }
28
+
29
+ oFilterBarConditions = oController._intentBasedNavigation.prepareFiltersForExternalNavigation(oFilterBarConditions, sRootPath, aParameters);
30
+ var oFilterInfo = FilterUtils.getFilterInfo(oFilterBar, {
31
+ targetControl: oController._getTable()
32
+ }).filters;
33
+ var oInternalModelContext = oView.getBindingContext("internal");
34
+ var mTabs = oInternalModelContext && oInternalModelContext.getProperty("tabs"); // Do we need to exclude Fields (mutli tables mode)?
35
+
36
+ if (mTabs) {
37
+ var aIgnoredFieldsForTab = mTabs.ignoredFields[mTabs.selected];
38
+
39
+ if (Array.isArray(aIgnoredFieldsForTab) && aIgnoredFieldsForTab.length > 0) {
40
+ aIgnoredFieldsForTab.forEach(function (sProperty) {
41
+ delete oFilterBarConditions.filterConditions[sProperty];
42
+ });
43
+ }
44
+ } // TODO: move this also into the intent based navigation controller extension
45
+
46
+
47
+ CommonUtils.addExternalStateFiltersToSelectionVariant(oSelectionVariant, oFilterBarConditions, oTargetInfo, oFilterInfo);
48
+ delete oTargetInfo.propertiesWithoutConflict;
49
+ }
50
+ },
51
+ getEntitySet: function () {
52
+ return this.base.getCurrentEntitySet();
53
+ }
54
+ };
55
+ return IntentBasedNavigationOverride;
56
+ }, false);
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkludGVudEJhc2VkTmF2aWdhdGlvbi50cyJdLCJuYW1lcyI6WyJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsImFkYXB0TmF2aWdhdGlvbkNvbnRleHQiLCJvU2VsZWN0aW9uVmFyaWFudCIsIm9UYXJnZXRJbmZvIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckJhciIsIl9nZXRGaWx0ZXJCYXJDb250cm9sIiwiaXNFbXB0eSIsIm9WaWV3RGF0YSIsImdldFZpZXdEYXRhIiwic1Jvb3RQYXRoIiwiZnVsbENvbnRleHRQYXRoIiwiZW50aXR5U2V0Iiwib0ZpbHRlckJhckNvbmRpdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJiYXNlIiwiZmlsdGVyQmFyQ29uZGl0aW9ucyIsImFQYXJhbWV0ZXJzIiwiY29udGV4dFBhdGgiLCJvTWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJvUGFyYW1ldGVySW5mbyIsIkNvbW1vblV0aWxzIiwiZ2V0UGFyYW1ldGVySW5mbyIsIm9QYXJhbVByb3BlcnRpZXMiLCJwYXJhbWV0ZXJQcm9wZXJ0aWVzIiwia2V5cyIsIl9pbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJwcmVwYXJlRmlsdGVyc0ZvckV4dGVybmFsTmF2aWdhdGlvbiIsIm9GaWx0ZXJJbmZvIiwiRmlsdGVyVXRpbHMiLCJnZXRGaWx0ZXJJbmZvIiwidGFyZ2V0Q29udHJvbCIsIl9nZXRUYWJsZSIsImZpbHRlcnMiLCJvSW50ZXJuYWxNb2RlbENvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsIm1UYWJzIiwiZ2V0UHJvcGVydHkiLCJhSWdub3JlZEZpZWxkc0ZvclRhYiIsImlnbm9yZWRGaWVsZHMiLCJzZWxlY3RlZCIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImZvckVhY2giLCJzUHJvcGVydHkiLCJmaWx0ZXJDb25kaXRpb25zIiwiYWRkRXh0ZXJuYWxTdGF0ZUZpbHRlcnNUb1NlbGVjdGlvblZhcmlhbnQiLCJwcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0IiwiZ2V0RW50aXR5U2V0IiwiZ2V0Q3VycmVudEVudGl0eVNldCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUdBLE1BQU1BLDZCQUE2QixHQUFHO0FBQ3JDQyxJQUFBQSxzQkFBc0IsRUFBRSxVQUF1Q0MsaUJBQXZDLEVBQStEQyxXQUEvRCxFQUFpRjtBQUN4RyxVQUFNQyxLQUFLLEdBQUcsS0FBS0MsT0FBTCxFQUFkO0FBQUEsVUFDQ0MsV0FBVyxHQUFHRixLQUFLLENBQUNHLGFBQU4sRUFEZjtBQUFBLFVBRUNDLFVBQVUsR0FBR0YsV0FBVyxDQUFDRyxvQkFBWixFQUZkLENBRHdHLENBSXhHO0FBQ0E7OztBQUNBLFVBQUlELFVBQVUsSUFBSSxDQUFDTixpQkFBaUIsQ0FBQ1EsT0FBbEIsRUFBbkIsRUFBZ0Q7QUFDL0MsWUFBTUMsU0FBUyxHQUFHUCxLQUFLLENBQUNRLFdBQU4sRUFBbEI7QUFBQSxZQUNDQyxTQUFTLEdBQUdGLFNBQVMsQ0FBQ0csZUFBVixHQUE0QkgsU0FBUyxDQUFDSSxTQURuRDtBQUVBLFlBQUlDLG9CQUFvQixHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQW1CLEtBQUtDLElBQUwsQ0FBVWQsT0FBVixHQUFvQkUsYUFBcEIsRUFBRCxDQUE2Q2EsbUJBQS9ELENBQTNCO0FBQ0EsWUFBSUMsV0FBVyxHQUFHLEVBQWxCOztBQUVBLFlBQUlWLFNBQVMsQ0FBQ1csV0FBZCxFQUEyQjtBQUMxQixjQUFNQyxVQUFVLEdBQUduQixLQUFLLENBQUNvQixRQUFOLEdBQWlCQyxZQUFqQixFQUFuQjtBQUFBLGNBQ0NDLGNBQWMsR0FBR0MsV0FBVyxDQUFDQyxnQkFBWixDQUE2QkwsVUFBN0IsRUFBeUNaLFNBQVMsQ0FBQ1csV0FBbkQsQ0FEbEI7QUFBQSxjQUVDTyxnQkFBZ0IsR0FBR0gsY0FBYyxDQUFDSSxtQkFGbkM7QUFHQVQsVUFBQUEsV0FBVyxHQUFJUSxnQkFBZ0IsSUFBSVosTUFBTSxDQUFDYyxJQUFQLENBQVlGLGdCQUFaLENBQXJCLElBQXVELEVBQXJFO0FBQ0E7O0FBRURiLFFBQUFBLG9CQUFvQixHQUFHVixXQUFXLENBQUMwQixzQkFBWixDQUFtQ0MsbUNBQW5DLENBQ3RCakIsb0JBRHNCLEVBRXRCSCxTQUZzQixFQUd0QlEsV0FIc0IsQ0FBdkI7QUFLQSxZQUFNYSxXQUFXLEdBQUdDLFdBQVcsQ0FBQ0MsYUFBWixDQUEwQjVCLFVBQTFCLEVBQXNDO0FBQ3pENkIsVUFBQUEsYUFBYSxFQUFFL0IsV0FBVyxDQUFDZ0MsU0FBWjtBQUQwQyxTQUF0QyxFQUVqQkMsT0FGSDtBQUdBLFlBQU1DLHFCQUFxQixHQUFHcEMsS0FBSyxDQUFDcUMsaUJBQU4sQ0FBd0IsVUFBeEIsQ0FBOUI7QUFDQSxZQUFNQyxLQUFLLEdBQUdGLHFCQUFxQixJQUFJQSxxQkFBcUIsQ0FBQ0csV0FBdEIsQ0FBa0MsTUFBbEMsQ0FBdkMsQ0F0QitDLENBdUIvQzs7QUFDQSxZQUFJRCxLQUFKLEVBQVc7QUFDVixjQUFNRSxvQkFBb0IsR0FBR0YsS0FBSyxDQUFDRyxhQUFOLENBQW9CSCxLQUFLLENBQUNJLFFBQTFCLENBQTdCOztBQUNBLGNBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjSixvQkFBZCxLQUF1Q0Esb0JBQW9CLENBQUNLLE1BQXJCLEdBQThCLENBQXpFLEVBQTRFO0FBQzNFTCxZQUFBQSxvQkFBb0IsQ0FBQ00sT0FBckIsQ0FBNkIsVUFBVUMsU0FBVixFQUEwQjtBQUN0RCxxQkFBT25DLG9CQUFvQixDQUFDb0MsZ0JBQXJCLENBQXNDRCxTQUF0QyxDQUFQO0FBQ0EsYUFGRDtBQUdBO0FBQ0QsU0EvQjhDLENBZ0MvQzs7O0FBQ0F4QixRQUFBQSxXQUFXLENBQUMwQix5Q0FBWixDQUFzRG5ELGlCQUF0RCxFQUF5RWMsb0JBQXpFLEVBQStGYixXQUEvRixFQUE0RytCLFdBQTVHO0FBQ0EsZUFBTy9CLFdBQVcsQ0FBQ21ELHlCQUFuQjtBQUNBO0FBQ0QsS0EzQ29DO0FBNENyQ0MsSUFBQUEsWUFBWSxFQUFFLFlBQXVDO0FBQ3BELGFBQVEsS0FBS3BDLElBQU4sQ0FBbUJxQyxtQkFBbkIsRUFBUDtBQUNBO0FBOUNvQyxHQUF0QztTQWlEZXhELDZCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCBMaXN0UmVwb3J0Q29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9MaXN0UmVwb3J0L0xpc3RSZXBvcnRDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcblxuY29uc3QgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGUgPSB7XG5cdGFkYXB0TmF2aWdhdGlvbkNvbnRleHQ6IGZ1bmN0aW9uICh0aGlzOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24sIG9TZWxlY3Rpb25WYXJpYW50OiBhbnksIG9UYXJnZXRJbmZvOiBhbnkpIHtcblx0XHRjb25zdCBvVmlldyA9IHRoaXMuZ2V0VmlldygpLFxuXHRcdFx0b0NvbnRyb2xsZXIgPSBvVmlldy5nZXRDb250cm9sbGVyKCkgYXMgTGlzdFJlcG9ydENvbnRyb2xsZXIsXG5cdFx0XHRvRmlsdGVyQmFyID0gb0NvbnRyb2xsZXIuX2dldEZpbHRlckJhckNvbnRyb2woKTtcblx0XHQvLyBBZGRpbmcgZmlsdGVyIGJhciB2YWx1ZXMgdG8gdGhlIG5hdmlnYXRpb24gZG9lcyBub3QgbWFrZSBzZW5zZSBpZiBubyBjb250ZXh0IGhhcyBiZWVuIHNlbGVjdGVkLlxuXHRcdC8vIEhlbmNlIG9ubHkgY29uc2lkZXIgZmlsdGVyIGJhciB2YWx1ZXMgd2hlbiBTZWxlY3Rpb25WYXJpYW50IGlzIG5vdCBlbXB0eVxuXHRcdGlmIChvRmlsdGVyQmFyICYmICFvU2VsZWN0aW9uVmFyaWFudC5pc0VtcHR5KCkpIHtcblx0XHRcdGNvbnN0IG9WaWV3RGF0YSA9IG9WaWV3LmdldFZpZXdEYXRhKCkgYXMgYW55LFxuXHRcdFx0XHRzUm9vdFBhdGggPSBvVmlld0RhdGEuZnVsbENvbnRleHRQYXRoICsgb1ZpZXdEYXRhLmVudGl0eVNldDtcblx0XHRcdGxldCBvRmlsdGVyQmFyQ29uZGl0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sICh0aGlzLmJhc2UuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBhbnkpLmZpbHRlckJhckNvbmRpdGlvbnMpO1xuXHRcdFx0bGV0IGFQYXJhbWV0ZXJzID0gW107XG5cblx0XHRcdGlmIChvVmlld0RhdGEuY29udGV4dFBhdGgpIHtcblx0XHRcdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9WaWV3LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdFx0b1BhcmFtZXRlckluZm8gPSBDb21tb25VdGlscy5nZXRQYXJhbWV0ZXJJbmZvKG9NZXRhTW9kZWwsIG9WaWV3RGF0YS5jb250ZXh0UGF0aCksXG5cdFx0XHRcdFx0b1BhcmFtUHJvcGVydGllcyA9IG9QYXJhbWV0ZXJJbmZvLnBhcmFtZXRlclByb3BlcnRpZXM7XG5cdFx0XHRcdGFQYXJhbWV0ZXJzID0gKG9QYXJhbVByb3BlcnRpZXMgJiYgT2JqZWN0LmtleXMob1BhcmFtUHJvcGVydGllcykpIHx8IFtdO1xuXHRcdFx0fVxuXG5cdFx0XHRvRmlsdGVyQmFyQ29uZGl0aW9ucyA9IG9Db250cm9sbGVyLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ucHJlcGFyZUZpbHRlcnNGb3JFeHRlcm5hbE5hdmlnYXRpb24oXG5cdFx0XHRcdG9GaWx0ZXJCYXJDb25kaXRpb25zLFxuXHRcdFx0XHRzUm9vdFBhdGgsXG5cdFx0XHRcdGFQYXJhbWV0ZXJzXG5cdFx0XHQpO1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckluZm8gPSBGaWx0ZXJVdGlscy5nZXRGaWx0ZXJJbmZvKG9GaWx0ZXJCYXIsIHtcblx0XHRcdFx0dGFyZ2V0Q29udHJvbDogb0NvbnRyb2xsZXIuX2dldFRhYmxlKClcblx0XHRcdH0pLmZpbHRlcnM7XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpO1xuXHRcdFx0Y29uc3QgbVRhYnMgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQgJiYgb0ludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwidGFic1wiKTtcblx0XHRcdC8vIERvIHdlIG5lZWQgdG8gZXhjbHVkZSBGaWVsZHMgKG11dGxpIHRhYmxlcyBtb2RlKT9cblx0XHRcdGlmIChtVGFicykge1xuXHRcdFx0XHRjb25zdCBhSWdub3JlZEZpZWxkc0ZvclRhYiA9IG1UYWJzLmlnbm9yZWRGaWVsZHNbbVRhYnMuc2VsZWN0ZWRdO1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhSWdub3JlZEZpZWxkc0ZvclRhYikgJiYgYUlnbm9yZWRGaWVsZHNGb3JUYWIubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdGFJZ25vcmVkRmllbGRzRm9yVGFiLmZvckVhY2goZnVuY3Rpb24gKHNQcm9wZXJ0eTogYW55KSB7XG5cdFx0XHRcdFx0XHRkZWxldGUgb0ZpbHRlckJhckNvbmRpdGlvbnMuZmlsdGVyQ29uZGl0aW9uc1tzUHJvcGVydHldO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBUT0RPOiBtb3ZlIHRoaXMgYWxzbyBpbnRvIHRoZSBpbnRlbnQgYmFzZWQgbmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvblxuXHRcdFx0Q29tbW9uVXRpbHMuYWRkRXh0ZXJuYWxTdGF0ZUZpbHRlcnNUb1NlbGVjdGlvblZhcmlhbnQob1NlbGVjdGlvblZhcmlhbnQsIG9GaWx0ZXJCYXJDb25kaXRpb25zLCBvVGFyZ2V0SW5mbywgb0ZpbHRlckluZm8pO1xuXHRcdFx0ZGVsZXRlIG9UYXJnZXRJbmZvLnByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Q7XG5cdFx0fVxuXHR9LFxuXHRnZXRFbnRpdHlTZXQ6IGZ1bmN0aW9uICh0aGlzOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24pIHtcblx0XHRyZXR1cm4gKHRoaXMuYmFzZSBhcyBhbnkpLmdldEN1cnJlbnRFbnRpdHlTZXQoKTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGU7XG4iXX0=
@@ -0,0 +1,55 @@
1
+ import CommonUtils from "sap/fe/core/CommonUtils";
2
+ import IntentBasedNavigation from "sap/fe/core/controllerextensions/IntentBasedNavigation";
3
+ import FilterUtils from "sap/fe/macros/filter/FilterUtils";
4
+ import ListReportController from "sap/fe/templates/ListReport/ListReportController.controller";
5
+
6
+ const IntentBasedNavigationOverride = {
7
+ adaptNavigationContext: function (this: IntentBasedNavigation, oSelectionVariant: any, oTargetInfo: any) {
8
+ const oView = this.getView(),
9
+ oController = oView.getController() as ListReportController,
10
+ oFilterBar = oController._getFilterBarControl();
11
+ // Adding filter bar values to the navigation does not make sense if no context has been selected.
12
+ // Hence only consider filter bar values when SelectionVariant is not empty
13
+ if (oFilterBar && !oSelectionVariant.isEmpty()) {
14
+ const oViewData = oView.getViewData() as any,
15
+ sRootPath = oViewData.fullContextPath + oViewData.entitySet;
16
+ let oFilterBarConditions = Object.assign({}, (this.base.getView().getController() as any).filterBarConditions);
17
+ let aParameters = [];
18
+
19
+ if (oViewData.contextPath) {
20
+ const oMetaModel = oView.getModel().getMetaModel(),
21
+ oParameterInfo = CommonUtils.getParameterInfo(oMetaModel, oViewData.contextPath),
22
+ oParamProperties = oParameterInfo.parameterProperties;
23
+ aParameters = (oParamProperties && Object.keys(oParamProperties)) || [];
24
+ }
25
+
26
+ oFilterBarConditions = oController._intentBasedNavigation.prepareFiltersForExternalNavigation(
27
+ oFilterBarConditions,
28
+ sRootPath,
29
+ aParameters
30
+ );
31
+ const oFilterInfo = FilterUtils.getFilterInfo(oFilterBar, {
32
+ targetControl: oController._getTable()
33
+ }).filters;
34
+ const oInternalModelContext = oView.getBindingContext("internal");
35
+ const mTabs = oInternalModelContext && oInternalModelContext.getProperty("tabs");
36
+ // Do we need to exclude Fields (mutli tables mode)?
37
+ if (mTabs) {
38
+ const aIgnoredFieldsForTab = mTabs.ignoredFields[mTabs.selected];
39
+ if (Array.isArray(aIgnoredFieldsForTab) && aIgnoredFieldsForTab.length > 0) {
40
+ aIgnoredFieldsForTab.forEach(function (sProperty: any) {
41
+ delete oFilterBarConditions.filterConditions[sProperty];
42
+ });
43
+ }
44
+ }
45
+ // TODO: move this also into the intent based navigation controller extension
46
+ CommonUtils.addExternalStateFiltersToSelectionVariant(oSelectionVariant, oFilterBarConditions, oTargetInfo, oFilterInfo);
47
+ delete oTargetInfo.propertiesWithoutConflict;
48
+ }
49
+ },
50
+ getEntitySet: function (this: IntentBasedNavigation) {
51
+ return (this.base as any).getCurrentEntitySet();
52
+ }
53
+ };
54
+
55
+ export default IntentBasedNavigationOverride;
@@ -1,140 +1,137 @@
1
1
  /*!
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
- (c) Copyright 2009-2021 SAP SE. All rights reserved
4
-
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
5
4
  */
6
- sap.ui.define(
7
- ["sap/fe/core/helpers/SemanticDateOperators", "sap/ui/core/routing/HashChanger", "sap/fe/core/CommonUtils", "sap/base/Log"],
8
- function(SemanticDateOperators, HashChanger, CommonUtils, Log) {
9
- "use strict";
10
-
11
- /**
12
- * Get count url URL for the entity bound to the LR table(s).
13
- * @param {object} oController The Controller instance
14
- * @returns {string} The service URL with /$count
15
- */
16
- function getCountUrl(oController) {
17
- var sTableId = oController
18
- .getView()
19
- .getContent()[0]
20
- .data().singleTableId;
21
- if (!sTableId) {
22
- // if single table id is not there then get the selected table id from multiple tabs
23
- sTableId = oController
24
- .getView()
25
- .byId("fe::TabMultipleMode")
26
- .getSelectedKey();
27
- }
28
- var oTable = oController.getView().byId(sTableId);
29
- if (!oTable) {
30
- return "";
31
- }
32
- var oBinding = oTable.getRowBinding() || oTable.getBinding("items");
33
- var sDownloadUrl = (oBinding && oBinding.getDownloadUrl()) || "";
34
- var aSplitUrl = sDownloadUrl.split("?");
35
- var baseUrl = aSplitUrl[0] + "/$count?";
36
- // getDownloadUrl() returns url with $select, $expand which is not supported when /$count is used to get the record count. only $apply, $search, $filter is supported
37
- // ?$count=true returns count in a format which is not supported by FLP yet.
38
- // currently supported format for v4 is ../count.. only (where tile preview will still not work)
39
- var aSupportedParams = [];
40
- if (aSplitUrl.length > 1) {
41
- var urlParams = aSplitUrl[1];
42
- urlParams.split("&").forEach(function(urlParam) {
43
- var aUrlParamParts = urlParam.split("=");
44
- switch (aUrlParamParts[0]) {
45
- case "$apply":
46
- case "$search":
47
- case "$filter":
48
- aSupportedParams.push(urlParam);
49
- }
50
- });
51
- }
52
- return baseUrl + aSupportedParams.join("&");
53
- }
54
-
55
- function getShareUrl() {
56
- var oUShellContainer = sap.ushell && sap.ushell.Container;
57
- if (oUShellContainer) {
58
- return oUShellContainer
59
- .getFLPUrlAsync(true)
60
- .then(function(sFLPUrl) {
61
- return sFLPUrl;
62
- })
63
- .catch(function(sError) {
64
- Log.error("Could not retrieve cFLP URL for the sharing dialog (dialog will not be opened)", sError);
65
- });
66
- } else {
67
- return Promise.resolve(document.URL);
68
- }
69
- }
70
-
71
- function getSaveAsTileServiceUrl(oController) {
72
- var oFilterBar = oController.getView().byId(
73
- oController
74
- .getView()
75
- .getContent()[0]
76
- .data("filterBarId")
77
- );
78
- if (oFilterBar) {
79
- var oConditions = oFilterBar.getFilterConditions();
80
- var bSaveAsTileServiceUrlAllowed = SemanticDateOperators.hasSemanticDateOperations(oConditions);
81
- if (bSaveAsTileServiceUrlAllowed) {
82
- return getCountUrl(oController);
83
- }
84
- }
85
- return "";
86
- }
87
-
88
- function getJamUrl() {
89
- var sJamUrl;
90
- var sHash = HashChanger.getInstance().getHash();
91
- var sBasePath = HashChanger.getInstance().hrefForAppSpecificHash ? HashChanger.getInstance().hrefForAppSpecificHash("") : "";
92
- sJamUrl = sHash ? sBasePath + sHash : window.location.hash;
93
- // in case we are in cFLP scenario, the application is running
94
- // inside an iframe, and there for we need to get the cFLP URL
95
- // and not 'document.URL' that represents the iframe URL
96
- if (sap.ushell && sap.ushell.Container && sap.ushell.Container.runningInIframe && sap.ushell.Container.runningInIframe()) {
97
- sap.ushell.Container.getFLPUrl(true)
98
- .then(function(sUrl) {
99
- return sUrl.substr(0, sUrl.indexOf("#")) + sJamUrl;
100
- })
101
- .catch(function(sError) {
102
- Log.error("Could not retrieve cFLP URL for the sharing dialog (dialog will not be opened)", sError);
103
- });
104
- } else {
105
- return window.location.origin + window.location.pathname + sJamUrl;
106
- }
107
- }
108
-
109
- return {
110
- adaptShareMetadata: function(oShareMetadata) {
111
- var that = this;
112
- Promise.resolve(getJamUrl())
113
- .then(function(sJamUrl) {
114
- var oAppComponent = CommonUtils.getAppComponent(that.base.getView());
115
- var oMetadata = oAppComponent.getMetadata();
116
- var oUIManifest = oMetadata.getManifestEntry("sap.ui");
117
- var sIcon = (oUIManifest && oUIManifest.icons && oUIManifest.icons.icon) || "";
118
- var oAppManifest = oMetadata.getManifestEntry("sap.app");
119
- var sTitle = (oAppManifest && oAppManifest.title) || "";
120
- // TODO: check if there is any semantic date used before adding serviceURL as BLI:FIORITECHP1-18023
121
- oShareMetadata.tile = {
122
- icon: sIcon,
123
- title: sTitle,
124
- queryUrl: getSaveAsTileServiceUrl(that.base)
125
- };
126
- oShareMetadata.title = document.title;
127
- oShareMetadata.jam.url = sJamUrl;
128
- })
129
- .catch(function(error) {
130
- Log.error(error);
131
- });
132
-
133
- return Promise.resolve(getShareUrl()).then(function(sFLPUrl) {
134
- oShareMetadata.url = sFLPUrl;
135
- return oShareMetadata;
136
- });
137
- }
138
- };
139
- }
140
- );
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/SemanticDateOperators", "sap/ui/core/routing/HashChanger"], function (Log, CommonUtils, SemanticDateOperators, HashChanger) {
6
+ "use strict";
7
+
8
+ function getCountUrl(oController) {
9
+ var sTableId = oController.getView().getContent()[0].data().singleTableId;
10
+
11
+ if (!sTableId) {
12
+ // if single table id is not there then get the selected table id from multiple tabs
13
+ sTableId = oController.getView().byId("fe::TabMultipleMode").getSelectedKey();
14
+ }
15
+
16
+ var oTable = oController.getView().byId(sTableId);
17
+
18
+ if (!oTable) {
19
+ return "";
20
+ }
21
+
22
+ var oBinding = oTable.getRowBinding() || oTable.getBinding("items");
23
+ var sDownloadUrl = oBinding && oBinding.getDownloadUrl() || "";
24
+ var aSplitUrl = sDownloadUrl.split("?");
25
+ var baseUrl = aSplitUrl[0] + "/$count?"; // getDownloadUrl() returns url with $select, $expand which is not supported when /$count is used to get the record count. only $apply, $search, $filter is supported
26
+ // ?$count=true returns count in a format which is not supported by FLP yet.
27
+ // currently supported format for v4 is ../count.. only (where tile preview will still not work)
28
+
29
+ var aSupportedParams = [];
30
+
31
+ if (aSplitUrl.length > 1) {
32
+ var urlParams = aSplitUrl[1];
33
+ urlParams.split("&").forEach(function (urlParam) {
34
+ var aUrlParamParts = urlParam.split("=");
35
+
36
+ switch (aUrlParamParts[0]) {
37
+ case "$apply":
38
+ case "$search":
39
+ case "$filter":
40
+ aSupportedParams.push(urlParam);
41
+ }
42
+ });
43
+ }
44
+
45
+ return baseUrl + aSupportedParams.join("&");
46
+ }
47
+
48
+ function getShareUrl() {
49
+ var sHash = HashChanger.getInstance().getHash();
50
+ var sBasePath = HashChanger.getInstance().hrefForAppSpecificHash ? HashChanger.getInstance().hrefForAppSpecificHash("") : "";
51
+ var sShareUrl = sHash ? sBasePath + sHash : window.location.hash;
52
+ return sShareUrl;
53
+ }
54
+
55
+ function getShareEmailUrl() {
56
+ var oUShellContainer = sap.ushell && sap.ushell.Container;
57
+
58
+ if (oUShellContainer) {
59
+ return oUShellContainer.getFLPUrlAsync(true).then(function (sFLPUrl) {
60
+ return sFLPUrl;
61
+ }).catch(function (sError) {
62
+ Log.error("Could not retrieve cFLP URL for the sharing dialog (dialog will not be opened)", sError);
63
+ });
64
+ } else {
65
+ return Promise.resolve(document.URL);
66
+ }
67
+ }
68
+
69
+ function getSaveAsTileServiceUrl(oController) {
70
+ var oFilterBar = oController.getView().byId(oController.getView().getContent()[0].data("filterBarId"));
71
+
72
+ if (oFilterBar) {
73
+ var oConditions = oFilterBar.getFilterConditions();
74
+ var bSaveAsTileServiceUrlAllowed = SemanticDateOperators.hasSemanticDateOperations(oConditions);
75
+
76
+ if (bSaveAsTileServiceUrlAllowed) {
77
+ return getCountUrl(oController);
78
+ }
79
+ }
80
+
81
+ return "";
82
+ }
83
+
84
+ function getJamUrl() {
85
+ var sHash = HashChanger.getInstance().getHash();
86
+ var sBasePath = HashChanger.getInstance().hrefForAppSpecificHash ? HashChanger.getInstance().hrefForAppSpecificHash("") : "";
87
+ var sJamUrl = sHash ? sBasePath + sHash : window.location.hash; // in case we are in cFLP scenario, the application is running
88
+ // inside an iframe, and there for we need to get the cFLP URL
89
+ // and not 'document.URL' that represents the iframe URL
90
+
91
+ if (sap.ushell && sap.ushell.Container && sap.ushell.Container.runningInIframe && sap.ushell.Container.runningInIframe()) {
92
+ sap.ushell.Container.getFLPUrl(true).then(function (sUrl) {
93
+ return sUrl.substr(0, sUrl.indexOf("#")) + sJamUrl;
94
+ }).catch(function (sError) {
95
+ Log.error("Could not retrieve cFLP URL for the sharing dialog (dialog will not be opened)", sError);
96
+ });
97
+ } else {
98
+ return window.location.origin + window.location.pathname + sJamUrl;
99
+ }
100
+ }
101
+
102
+ var ShareOverride = {
103
+ adaptShareMetadata: function (oShareMetadata) {
104
+ var _this = this;
105
+
106
+ Promise.resolve(getJamUrl()).then(function (sJamUrl) {
107
+ var oAppComponent = CommonUtils.getAppComponent(_this.base.getView());
108
+ var oMetadata = oAppComponent.getMetadata();
109
+ var oUIManifest = oMetadata.getManifestEntry("sap.ui");
110
+ var sIcon = oUIManifest && oUIManifest.icons && oUIManifest.icons.icon || "";
111
+ var oAppManifest = oMetadata.getManifestEntry("sap.app");
112
+ var sTitle = oAppManifest && oAppManifest.title || ""; // TODO: check if there is any semantic date used before adding serviceURL as BLI:FIORITECHP1-18023
113
+
114
+ oShareMetadata.tile = {
115
+ icon: sIcon,
116
+ title: sTitle,
117
+ queryUrl: getSaveAsTileServiceUrl(_this.base)
118
+ };
119
+ oShareMetadata.title = document.title;
120
+ oShareMetadata.jam.url = sJamUrl;
121
+ }).catch(function (error) {
122
+ Log.error(error);
123
+ });
124
+ Promise.resolve(getShareUrl()).then(function (sUrl) {
125
+ oShareMetadata.url = sUrl;
126
+ }).catch(function (error) {
127
+ Log.error(error);
128
+ });
129
+ return Promise.resolve(getShareEmailUrl()).then(function (sFLPUrl) {
130
+ oShareMetadata.email.url = sFLPUrl;
131
+ return oShareMetadata;
132
+ });
133
+ }
134
+ };
135
+ return ShareOverride;
136
+ }, false);
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImdldENvdW50VXJsIiwib0NvbnRyb2xsZXIiLCJzVGFibGVJZCIsImdldFZpZXciLCJnZXRDb250ZW50IiwiZGF0YSIsInNpbmdsZVRhYmxlSWQiLCJieUlkIiwiZ2V0U2VsZWN0ZWRLZXkiLCJvVGFibGUiLCJvQmluZGluZyIsImdldFJvd0JpbmRpbmciLCJnZXRCaW5kaW5nIiwic0Rvd25sb2FkVXJsIiwiZ2V0RG93bmxvYWRVcmwiLCJhU3BsaXRVcmwiLCJzcGxpdCIsImJhc2VVcmwiLCJhU3VwcG9ydGVkUGFyYW1zIiwibGVuZ3RoIiwidXJsUGFyYW1zIiwiZm9yRWFjaCIsInVybFBhcmFtIiwiYVVybFBhcmFtUGFydHMiLCJwdXNoIiwiam9pbiIsImdldFNoYXJlVXJsIiwic0hhc2giLCJIYXNoQ2hhbmdlciIsImdldEluc3RhbmNlIiwiZ2V0SGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJzU2hhcmVVcmwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwidGhlbiIsInNGTFBVcmwiLCJjYXRjaCIsInNFcnJvciIsIkxvZyIsImVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJkb2N1bWVudCIsIlVSTCIsImdldFNhdmVBc1RpbGVTZXJ2aWNlVXJsIiwib0ZpbHRlckJhciIsIm9Db25kaXRpb25zIiwiZ2V0RmlsdGVyQ29uZGl0aW9ucyIsImJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJoYXNTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiZ2V0SmFtVXJsIiwic0phbVVybCIsInJ1bm5pbmdJbklmcmFtZSIsImdldEZMUFVybCIsInNVcmwiLCJzdWJzdHIiLCJpbmRleE9mIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZU92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJiYXNlIiwib01ldGFkYXRhIiwiZ2V0TWV0YWRhdGEiLCJvVUlNYW5pZmVzdCIsImdldE1hbmlmZXN0RW50cnkiLCJzSWNvbiIsImljb25zIiwiaWNvbiIsIm9BcHBNYW5pZmVzdCIsInNUaXRsZSIsInRpdGxlIiwidGlsZSIsInF1ZXJ5VXJsIiwiamFtIiwidXJsIiwiZW1haWwiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFNQSxXQUFTQSxXQUFULENBQXFCQyxXQUFyQixFQUFrRDtBQUNqRCxRQUFJQyxRQUFRLEdBQUdELFdBQVcsQ0FBQ0UsT0FBWixHQUFzQkMsVUFBdEIsR0FBbUMsQ0FBbkMsRUFBc0NDLElBQXRDLEdBQTZDQyxhQUE1RDs7QUFDQSxRQUFJLENBQUNKLFFBQUwsRUFBZTtBQUNkO0FBQ0FBLE1BQUFBLFFBQVEsR0FBSUQsV0FBVyxDQUFDRSxPQUFaLEdBQXNCSSxJQUF0QixDQUEyQixxQkFBM0IsQ0FBRCxDQUFrRUMsY0FBbEUsRUFBWDtBQUNBOztBQUNELFFBQU1DLE1BQU0sR0FBR1IsV0FBVyxDQUFDRSxPQUFaLEdBQXNCSSxJQUF0QixDQUEyQkwsUUFBM0IsQ0FBZjs7QUFDQSxRQUFJLENBQUNPLE1BQUwsRUFBYTtBQUNaLGFBQU8sRUFBUDtBQUNBOztBQUNELFFBQU1DLFFBQVEsR0FBR0QsTUFBTSxDQUFDRSxhQUFQLE1BQTBCRixNQUFNLENBQUNHLFVBQVAsQ0FBa0IsT0FBbEIsQ0FBM0M7QUFDQSxRQUFNQyxZQUFZLEdBQUlILFFBQVEsSUFBS0EsUUFBRCxDQUFrQkksY0FBbEIsRUFBYixJQUFvRCxFQUF6RTtBQUNBLFFBQU1DLFNBQVMsR0FBR0YsWUFBWSxDQUFDRyxLQUFiLENBQW1CLEdBQW5CLENBQWxCO0FBQ0EsUUFBTUMsT0FBTyxHQUFH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LE9BSEYsRUFJRW5CLEtBSkYsQ0FJUSxVQUFVRyxLQUFWLEVBQXNCO0FBQzVCRCxRQUFBQSxHQUFHLENBQUNDLEtBQUosQ0FBVUEsS0FBVjtBQUNBLE9BTkY7QUFPQSxhQUFPQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JiLGdCQUFnQixFQUFoQyxFQUFvQ00sSUFBcEMsQ0FBeUMsVUFBVUMsT0FBVixFQUF3QjtBQUN2RTJCLFFBQUFBLGNBQWMsQ0FBQ21CLEtBQWYsQ0FBcUJELEdBQXJCLEdBQTJCN0MsT0FBM0I7QUFDQSxlQUFPMkIsY0FBUDtBQUNBLE9BSE0sQ0FBUDtBQUlBO0FBbENvQixHQUF0QjtTQXFDZUYsYSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQmFzZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgU2hhcmUgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL1NoYXJlXCI7XG5pbXBvcnQgU2VtYW50aWNEYXRlT3BlcmF0b3JzIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljRGF0ZU9wZXJhdG9yc1wiO1xuaW1wb3J0IEljb25UYWJCYXIgZnJvbSBcInNhcC9tL0ljb25UYWJCYXJcIjtcbmltcG9ydCBIYXNoQ2hhbmdlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9IYXNoQ2hhbmdlclwiO1xuaW1wb3J0IFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5mdW5jdGlvbiBnZXRDb3VudFVybChvQ29udHJvbGxlcjogQmFzZUNvbnRyb2xsZXIpIHtcblx0bGV0IHNUYWJsZUlkID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpLmdldENvbnRlbnQoKVswXS5kYXRhKCkuc2luZ2xlVGFibGVJZDtcblx0aWYgKCFzVGFibGVJZCkge1xuXHRcdC8vIGlmIHNpbmdsZSB0YWJsZSBpZCBpcyBub3QgdGhlcmUgdGhlbiBnZXQgdGhlIHNlbGVjdGVkIHRhYmxlIGlkIGZyb20gbXVsdGlwbGUgdGFic1xuXHRcdHNUYWJsZUlkID0gKG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKFwiZmU6OlRhYk11bHRpcGxlTW9kZVwiKSBhcyBJY29uVGFiQmFyKS5nZXRTZWxlY3RlZEtleSgpO1xuXHR9XG5cdGNvbnN0IG9UYWJsZSA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKHNUYWJsZUlkKSBhcyBUYWJsZTtcblx0aWYgKCFvVGFibGUpIHtcblx0XHRyZXR1cm4gXCJcIjtcblx0fVxuXHRjb25zdCBvQmluZGluZyA9IG9UYWJsZS5nZXRSb3dCaW5kaW5nKCkgfHwgb1RhYmxlLmdldEJpbmRpbmcoXCJpdGVtc1wiKTtcblx0Y29uc3Qgc0Rvd25sb2FkVXJsID0gKG9CaW5kaW5nICYmIChvQmluZGluZyBhcyBhbnkpLmdldERvd25sb2FkVXJsKCkpIHx8IFwiXCI7XG5cdGNvbnN0IGFTcGxpdFVybCA9IHNEb3dubG9hZFVybC5zcGxpdChcIj9cIik7XG5cdGNvbnN0IGJhc2VVcmwgPSBhU3BsaXRVcmxbMF0gKyBcIi8kY291bnQ/XCI7XG5cdC8vIGdldERvd25sb2FkVXJsKCkgcmV0dXJucyB1cmwgd2l0aCAkc2VsZWN0LCAkZXhwYW5kIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiAvJGNvdW50IGlzIHVzZWQgdG8gZ2V0IHRoZSByZWNvcmQgY291bnQuIG9ubHkgJGFwcGx5LCAkc2VhcmNoLCAkZmlsdGVyIGlzIHN1cHBvcnRlZFxuXHQvLyA/JGNvdW50PXRydWUgcmV0dXJucyBjb3VudCBpbiBhIGZvcm1hdCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IEZMUCB5ZXQuXG5cdC8vIGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9ybWF0IGZvciB2NCBpcyAuLi9jb3VudC4uIG9ubHkgKHdoZXJlIHRpbGUgcHJldmlldyB3aWxsIHN0aWxsIG5vdCB3b3JrKVxuXHRjb25zdCBhU3VwcG9ydGVkUGFyYW1zOiBhbnlbXSA9IFtdO1xuXHRpZiAoYVNwbGl0VXJsLmxlbmd0aCA+IDEpIHtcblx0XHRjb25zdCB1cmxQYXJhbXMgPSBhU3BsaXRVcmxbMV07XG5cdFx0dXJsUGFyYW1zLnNwbGl0KFwiJlwiKS5mb3JFYWNoKGZ1bmN0aW9uICh1cmxQYXJhbTogYW55KSB7XG5cdFx0XHRjb25zdCBhVXJsUGFyYW1QYXJ0cyA9IHVybFBhcmFtLnNwbGl0KFwiPVwiKTtcblx0XHRcdHN3aXRjaCAoYVVybFBhcmFtUGFydHNbMF0pIHtcblx0XHRcdFx0Y2FzZSBcIiRhcHBseVwiOlxuXHRcdFx0XHRjYXNlIFwiJHNlYXJjaFwiOlxuXHRcdFx0XHRjYXNlIFwiJGZpbHRlclwiOlxuXHRcdFx0XHRcdGFTdXBwb3J0ZWRQYXJhbXMucHVzaCh1cmxQYXJhbSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGJhc2VVcmwgKyBhU3VwcG9ydGVkUGFyYW1zLmpvaW4oXCImXCIpO1xufVxuZnVuY3Rpb24gZ2V0U2hhcmVVcmwoKSB7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRjb25zdCBzU2hhcmVVcmwgPSBzSGFzaCA/IHNCYXNlUGF0aCArIHNIYXNoIDogd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdHJldHVybiBzU2hhcmVVcmw7XG59XG5mdW5jdGlvbiBnZXRTaGFyZUVtYWlsVXJsKCkge1xuXHRjb25zdCBvVVNoZWxsQ29udGFpbmVyID0gc2FwLnVzaGVsbCAmJiBzYXAudXNoZWxsLkNvbnRhaW5lcjtcblx0aWYgKG9VU2hlbGxDb250YWluZXIpIHtcblx0XHRyZXR1cm4gb1VTaGVsbENvbnRhaW5lclxuXHRcdFx0LmdldEZMUFVybEFzeW5jKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc0ZMUFVybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzRkxQVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGRvY3VtZW50LlVSTCk7XG5cdH1cbn1cbmZ1bmN0aW9uIGdldFNhdmVBc1RpbGVTZXJ2aWNlVXJsKG9Db250cm9sbGVyOiBhbnkpIHtcblx0Y29uc3Qgb0ZpbHRlckJhciA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5ieUlkKG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRDb250ZW50KClbMF0uZGF0YShcImZpbHRlckJhcklkXCIpKTtcblx0aWYgKG9GaWx0ZXJCYXIpIHtcblx0XHRjb25zdCBvQ29uZGl0aW9ucyA9IG9GaWx0ZXJCYXIuZ2V0RmlsdGVyQ29uZGl0aW9ucygpO1xuXHRcdGNvbnN0IGJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQgPSBTZW1hbnRpY0RhdGVPcGVyYXRvcnMuaGFzU2VtYW50aWNEYXRlT3BlcmF0aW9ucyhvQ29uZGl0aW9ucyk7XG5cdFx0aWYgKGJTYXZlQXNUaWxlU2VydmljZVVybEFsbG93ZWQpIHtcblx0XHRcdHJldHVybiBnZXRDb3VudFVybChvQ29udHJvbGxlcik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBcIlwiO1xufVxuZnVuY3Rpb24gZ2V0SmFtVXJsKCkge1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0Y29uc3Qgc0phbVVybCA9IHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0Ly8gaW4gY2FzZSB3ZSBhcmUgaW4gY0ZMUCBzY2VuYXJpbywgdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmdcblx0Ly8gaW5zaWRlIGFuIGlmcmFtZSwgYW5kIHRoZXJlIGZvciB3ZSBuZWVkIHRvIGdldCB0aGUgY0ZMUCBVUkxcblx0Ly8gYW5kIG5vdCAnZG9jdW1lbnQuVVJMJyB0aGF0IHJlcHJlc2VudHMgdGhlIGlmcmFtZSBVUkxcblx0aWYgKHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIgJiYgc2FwLnVzaGVsbC5Db250YWluZXIucnVubmluZ0luSWZyYW1lICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSgpKSB7XG5cdFx0c2FwLnVzaGVsbC5Db250YWluZXIuZ2V0RkxQVXJsKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc1VybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzVXJsLnN1YnN0cigwLCBzVXJsLmluZGV4T2YoXCIjXCIpKSArIHNKYW1Vcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgc0phbVVybDtcblx0fVxufVxuXG5jb25zdCBTaGFyZU92ZXJyaWRlID0ge1xuXHRhZGFwdFNoYXJlTWV0YWRhdGE6IGZ1bmN0aW9uICh0aGlzOiBTaGFyZSwgb1NoYXJlTWV0YWRhdGE6IGFueSkge1xuXHRcdFByb21pc2UucmVzb2x2ZShnZXRKYW1VcmwoKSlcblx0XHRcdC50aGVuKChzSmFtVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcblx0XHRcdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLmJhc2UuZ2V0VmlldygpKTtcblx0XHRcdFx0Y29uc3Qgb01ldGFkYXRhID0gb0FwcENvbXBvbmVudC5nZXRNZXRhZGF0YSgpO1xuXHRcdFx0XHRjb25zdCBvVUlNYW5pZmVzdCA9IG9NZXRhZGF0YS5nZXRNYW5pZmVzdEVudHJ5KFwic2FwLnVpXCIpO1xuXHRcdFx0XHRjb25zdCBzSWNvbiA9IChvVUlNYW5pZmVzdCAmJiBvVUlNYW5pZmVzdC5pY29ucyAmJiBvVUlNYW5pZmVzdC5pY29ucy5pY29uKSB8fCBcIlwiO1xuXHRcdFx0XHRjb25zdCBvQXBwTWFuaWZlc3QgPSBvTWV0YWRhdGEuZ2V0TWFuaWZlc3RFbnRyeShcInNhcC5hcHBcIik7XG5cdFx0XHRcdGNvbnN0IHNUaXRsZSA9IChvQXBwTWFuaWZlc3QgJiYgb0FwcE1hbmlmZXN0LnRpdGxlKSB8fCBcIlwiO1xuXHRcdFx0XHQvLyBUT0RPOiBjaGVjayBpZiB0aGVyZSBpcyBhbnkgc2VtYW50aWMgZGF0ZSB1c2VkIGJlZm9yZSBhZGRpbmcgc2VydmljZVVSTCBhcyBCTEk6RklPUklURUNIUDEtMTgwMjNcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGlsZSA9IHtcblx0XHRcdFx0XHRpY29uOiBzSWNvbixcblx0XHRcdFx0XHR0aXRsZTogc1RpdGxlLFxuXHRcdFx0XHRcdHF1ZXJ5VXJsOiBnZXRTYXZlQXNUaWxlU2VydmljZVVybCh0aGlzLmJhc2UpXG5cdFx0XHRcdH07XG5cdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnRpdGxlID0gZG9jdW1lbnQudGl0bGU7XG5cdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmphbS51cmwgPSBzSmFtVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0fSk7XG5cblx0XHRQcm9taXNlLnJlc29sdmUoZ2V0U2hhcmVVcmwoKSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzVXJsOiBhbnkpIHtcblx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudXJsID0gc1VybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdH0pO1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZ2V0U2hhcmVFbWFpbFVybCgpKS50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCA9IHNGTFBVcmw7XG5cdFx0XHRyZXR1cm4gb1NoYXJlTWV0YWRhdGE7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNoYXJlT3ZlcnJpZGU7XG4iXX0=
@@ -0,0 +1,134 @@
1
+ import Log from "sap/base/Log";
2
+ import BaseController from "sap/fe/core/BaseController";
3
+ import CommonUtils from "sap/fe/core/CommonUtils";
4
+ import Share from "sap/fe/core/controllerextensions/Share";
5
+ import SemanticDateOperators from "sap/fe/core/helpers/SemanticDateOperators";
6
+ import IconTabBar from "sap/m/IconTabBar";
7
+ import HashChanger from "sap/ui/core/routing/HashChanger";
8
+ import Table from "sap/ui/mdc/Table";
9
+ function getCountUrl(oController: BaseController) {
10
+ let sTableId = oController.getView().getContent()[0].data().singleTableId;
11
+ if (!sTableId) {
12
+ // if single table id is not there then get the selected table id from multiple tabs
13
+ sTableId = (oController.getView().byId("fe::TabMultipleMode") as IconTabBar).getSelectedKey();
14
+ }
15
+ const oTable = oController.getView().byId(sTableId) as Table;
16
+ if (!oTable) {
17
+ return "";
18
+ }
19
+ const oBinding = oTable.getRowBinding() || oTable.getBinding("items");
20
+ const sDownloadUrl = (oBinding && (oBinding as any).getDownloadUrl()) || "";
21
+ const aSplitUrl = sDownloadUrl.split("?");
22
+ const baseUrl = aSplitUrl[0] + "/$count?";
23
+ // getDownloadUrl() returns url with $select, $expand which is not supported when /$count is used to get the record count. only $apply, $search, $filter is supported
24
+ // ?$count=true returns count in a format which is not supported by FLP yet.
25
+ // currently supported format for v4 is ../count.. only (where tile preview will still not work)
26
+ const aSupportedParams: any[] = [];
27
+ if (aSplitUrl.length > 1) {
28
+ const urlParams = aSplitUrl[1];
29
+ urlParams.split("&").forEach(function (urlParam: any) {
30
+ const aUrlParamParts = urlParam.split("=");
31
+ switch (aUrlParamParts[0]) {
32
+ case "$apply":
33
+ case "$search":
34
+ case "$filter":
35
+ aSupportedParams.push(urlParam);
36
+ }
37
+ });
38
+ }
39
+ return baseUrl + aSupportedParams.join("&");
40
+ }
41
+ function getShareUrl() {
42
+ const sHash = HashChanger.getInstance().getHash();
43
+ const sBasePath = (HashChanger.getInstance() as any).hrefForAppSpecificHash
44
+ ? (HashChanger.getInstance() as any).hrefForAppSpecificHash("")
45
+ : "";
46
+ const sShareUrl = sHash ? sBasePath + sHash : window.location.hash;
47
+ return sShareUrl;
48
+ }
49
+ function getShareEmailUrl() {
50
+ const oUShellContainer = sap.ushell && sap.ushell.Container;
51
+ if (oUShellContainer) {
52
+ return oUShellContainer
53
+ .getFLPUrlAsync(true)
54
+ .then(function (sFLPUrl: any) {
55
+ return sFLPUrl;
56
+ })
57
+ .catch(function (sError: any) {
58
+ Log.error("Could not retrieve cFLP URL for the sharing dialog (dialog will not be opened)", sError);
59
+ });
60
+ } else {
61
+ return Promise.resolve(document.URL);
62
+ }
63
+ }
64
+ function getSaveAsTileServiceUrl(oController: any) {
65
+ const oFilterBar = oController.getView().byId(oController.getView().getContent()[0].data("filterBarId"));
66
+ if (oFilterBar) {
67
+ const oConditions = oFilterBar.getFilterConditions();
68
+ const bSaveAsTileServiceUrlAllowed = SemanticDateOperators.hasSemanticDateOperations(oConditions);
69
+ if (bSaveAsTileServiceUrlAllowed) {
70
+ return getCountUrl(oController);
71
+ }
72
+ }
73
+ return "";
74
+ }
75
+ function getJamUrl() {
76
+ const sHash = HashChanger.getInstance().getHash();
77
+ const sBasePath = (HashChanger.getInstance() as any).hrefForAppSpecificHash
78
+ ? (HashChanger.getInstance() as any).hrefForAppSpecificHash("")
79
+ : "";
80
+ const sJamUrl = sHash ? sBasePath + sHash : window.location.hash;
81
+ // in case we are in cFLP scenario, the application is running
82
+ // inside an iframe, and there for we need to get the cFLP URL
83
+ // and not 'document.URL' that represents the iframe URL
84
+ if (sap.ushell && sap.ushell.Container && sap.ushell.Container.runningInIframe && sap.ushell.Container.runningInIframe()) {
85
+ sap.ushell.Container.getFLPUrl(true)
86
+ .then(function (sUrl: any) {
87
+ return sUrl.substr(0, sUrl.indexOf("#")) + sJamUrl;
88
+ })
89
+ .catch(function (sError: any) {
90
+ Log.error("Could not retrieve cFLP URL for the sharing dialog (dialog will not be opened)", sError);
91
+ });
92
+ } else {
93
+ return window.location.origin + window.location.pathname + sJamUrl;
94
+ }
95
+ }
96
+
97
+ const ShareOverride = {
98
+ adaptShareMetadata: function (this: Share, oShareMetadata: any) {
99
+ Promise.resolve(getJamUrl())
100
+ .then((sJamUrl: string | undefined) => {
101
+ const oAppComponent = CommonUtils.getAppComponent(this.base.getView());
102
+ const oMetadata = oAppComponent.getMetadata();
103
+ const oUIManifest = oMetadata.getManifestEntry("sap.ui");
104
+ const sIcon = (oUIManifest && oUIManifest.icons && oUIManifest.icons.icon) || "";
105
+ const oAppManifest = oMetadata.getManifestEntry("sap.app");
106
+ const sTitle = (oAppManifest && oAppManifest.title) || "";
107
+ // TODO: check if there is any semantic date used before adding serviceURL as BLI:FIORITECHP1-18023
108
+ oShareMetadata.tile = {
109
+ icon: sIcon,
110
+ title: sTitle,
111
+ queryUrl: getSaveAsTileServiceUrl(this.base)
112
+ };
113
+ oShareMetadata.title = document.title;
114
+ oShareMetadata.jam.url = sJamUrl;
115
+ })
116
+ .catch(function (error: any) {
117
+ Log.error(error);
118
+ });
119
+
120
+ Promise.resolve(getShareUrl())
121
+ .then(function (sUrl: any) {
122
+ oShareMetadata.url = sUrl;
123
+ })
124
+ .catch(function (error: any) {
125
+ Log.error(error);
126
+ });
127
+ return Promise.resolve(getShareEmailUrl()).then(function (sFLPUrl: any) {
128
+ oShareMetadata.email.url = sFLPUrl;
129
+ return oShareMetadata;
130
+ });
131
+ }
132
+ };
133
+
134
+ export default ShareOverride;