ShareActionHandler.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. 'use strict';
  2. /*
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: Storytelling
  5. * (C) Copyright IBM Corp. 2018, 2019
  6. *
  7. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. */
  9. define(['gemini/dashboard/glass/controllers/ShareActionHandler', '../../nls/StringResources'], function (DashboardShareActionHandler, StringResources) {
  10. var ShareActionHandler;
  11. ShareActionHandler = DashboardShareActionHandler.extend({
  12. /**
  13. * overridden from dashboard-core to add Storytelling specific information
  14. * @override
  15. */
  16. execute: function execute(context) {
  17. if (context.urlMap.objRef) {
  18. var share = {
  19. perspective: 'story',
  20. objRef: context.urlMap.objRef,
  21. action: 'view'
  22. };
  23. var view = context.glassContext.appController.getCurrentContentView();
  24. var sceneInfo = view.storyPaneController.getCurrentSceneInfo();
  25. share.sceneId = sceneInfo && sceneInfo.id;
  26. share.sceneTime = view.storyPaneController.getCurrentTime();
  27. return share;
  28. } else {
  29. throw new Error('Unable to resolve share context. Missing objRef.');
  30. }
  31. },
  32. /**
  33. * overridden from dashboard-core to add Storytelling specific information
  34. * @override
  35. */
  36. getShareableItems: function getShareableItems(context) {
  37. // call parent method to get maps re-rendered for screen capture
  38. var view = context.glassContext.appController.getCurrentContentView();
  39. return this.reRenderMaps(view).then(this._getShareableItems.bind(this, context));
  40. },
  41. _getShareableItems: function _getShareableItems(context) {
  42. var view = context.glassContext.appController.getCurrentContentView();
  43. var sceneInfo = view.storyPaneController.getCurrentSceneInfo();
  44. var sceneTitle = sceneInfo && sceneInfo.title;
  45. var label = sceneTitle ? StringResources.get('screenshot_label_scene', {
  46. title: view.getTitle(),
  47. sceneTitle: sceneTitle
  48. }) : StringResources.get('screenshot_label', { title: view.getTitle() });
  49. var layoutView = view.boardController.layoutController.getLayoutView(sceneInfo.id);
  50. if (layoutView) {
  51. // scene
  52. return Promise.resolve([{
  53. el: layoutView.$el,
  54. label: label
  55. }]);
  56. }
  57. // overview
  58. return view.boardController.layoutController.getTopLayoutViewWhenReady().then(function (topView) {
  59. return [{
  60. el: topView.$el,
  61. label: label
  62. }];
  63. });
  64. },
  65. /**
  66. * Callback when share panel shows.
  67. * @param context
  68. * @param context.glassContext {Object} The glass context
  69. * @param context.slideout {Object} The share panel slideout
  70. */
  71. enterShareState: function enterShareState(context) {
  72. return Promise.resolve().then(function () {
  73. var controller = context.glassContext.appController.getCurrentContentView().storyPaneController;
  74. return controller.enterShareState(context.slideout);
  75. });
  76. },
  77. /**
  78. * Callback when share panel hides.
  79. * @param context
  80. * @param context.glassContext {Object} The glass context
  81. * @param context.slideout {Object} The share panel slideout
  82. */
  83. leaveShareState: function leaveShareState(context) {
  84. return Promise.resolve().then(function () {
  85. var controller = context.glassContext.appController.getCurrentContentView().storyPaneController;
  86. return controller.leaveShareState();
  87. });
  88. },
  89. /**
  90. * Returns true if export to pdf for storytelling is allowed.
  91. *
  92. * @param {*} options.glassContext the Glass context
  93. */
  94. canExportToPDF: function canExportToPDF() {
  95. return true;
  96. },
  97. /**
  98. * Creates a PDF.
  99. *
  100. * @param {*} context.glassContext the Glass context
  101. * @param {*} pageSize an object representing the page size
  102. * @param {*} printFilters print filters.
  103. * @return {Promise}
  104. */
  105. exportToPDF: function exportToPDF(context, pageSize, printFilters) {
  106. var dashboardApi = context.glassContext.appController.getCurrentContentView().getDashboardApi();
  107. var printFeature = dashboardApi.getFeature('Print');
  108. var pageOptions = {
  109. pageSize: pageSize,
  110. printFilters: printFilters
  111. };
  112. var id = dashboardApi.getCanvas().getContent().getId();
  113. return printFeature.print(id, context.glassContext.appController, pageOptions);
  114. }
  115. });
  116. return ShareActionHandler;
  117. });
  118. //# sourceMappingURL=ShareActionHandler.js.map