@sapui5/sap.fe.templates 1.98.0 → 1.101.0

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