rsAppSaveAsMenuActions.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. // Licensed Materials - Property of IBM
  2. // IBM Cognos Products: rs
  3. // (C) Copyright IBM Corp. 2015, 2021
  4. // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  5. define(['bi/glass/app/plugins/MenuActionInterface'], function(MenuActionInterface) {
  6. 'use strict';
  7. var AuthoringMenu = MenuActionInterface.extend({
  8. onSelectItem: function(context) {
  9. var v_sMenuItem = context.target.itemId;
  10. var v_sObserverId = "rsAppSaveAsMenuActions";
  11. var v_Application = context.glassContext.currentAppView.currentContentView.getAuthoringApplication();
  12. if (!v_Application)
  13. {
  14. return;
  15. }
  16. switch( v_sMenuItem )
  17. {
  18. case "com.ibm.bi.authoring.save_as":
  19. v_Application.SaveAsReport();
  20. break;
  21. case "com.ibm.bi.authoring.convert_to_active_report":
  22. v_Application.ConvertToActiveReport();
  23. break;
  24. case "com.ibm.bi.authoring.convert_to_template":
  25. v_Application.ConvertToTemplate();
  26. break;
  27. case "com.ibm.bi.authoring.save_as_report_view":
  28. v_Application.SaveAsReportView();
  29. break;
  30. case "com.ibm.bi.authoring.save":
  31. case "com.ibm.bi.datasets.dataset_save":
  32. var v_oCmProperties = context.glassContext.currentAppView.currentContentView.cmProperties;
  33. if (v_sMenuItem == "com.ibm.bi.authoring.save" && v_Application.SharedState.Get("isViewer") &&
  34. v_oCmProperties && v_oCmProperties.permissions.indexOf("read") == -1) {
  35. // Doing save from viewer without read access - not supported since need to unstub spec
  36. // which is not possible if can't read spec.
  37. context.glassContext.showToast(v_Application.GetString("IDS_MSG_NO_PERMISSIONS_TO_SAVE"), {'type':'error'});
  38. break;
  39. }
  40. else if (!v_oCmProperties || v_oCmProperties.permissions.indexOf("write") != -1)
  41. {
  42. // no cm permissions implies this is a new report/dataset so we need to allow save.
  43. v_Application.Save();
  44. }
  45. else
  46. {
  47. // No write permission
  48. if (v_sMenuItem == "com.ibm.bi.authoring.save" && v_Application.SharedState.Get("isViewer") &&
  49. context.glassContext.hasCapability("canUseReportStudio") && context.glassContext.hasCapability("canUseReportStudioFileManagement")) {
  50. // Doing a save from viewer - switch to save as but only if the required capabiltities are available
  51. v_Application.SaveAsReport();
  52. }
  53. else {
  54. context.glassContext.showToast(v_Application.GetString("IDS_MSG_NO_PERMISSIONS_TO_SAVE"), {'type':'error'});
  55. }
  56. }
  57. break;
  58. case "com.ibm.bi.datasets.refresh":
  59. v_Application.SaveDataSet(function(v_sFileName, v_sStoreID) {
  60. // options.id {string} - store ID of the dataset to run
  61. // options.name {string} - the name of the data set to execute. Will be shown in the toast
  62. // options.showToastWhenDone {boolean} - default is true, set to false if you don't want a toast to be displayed when the dataset is done running
  63. // options.glassContext {object} - the glassContext object
  64. var options =
  65. {
  66. id : v_sStoreID,
  67. name : v_sFileName,
  68. showToastWhenDone : true,
  69. glassContext : context.glassContext
  70. };
  71. context.glassContext.getSvc('.DatasetExecutionService')
  72. .then(function(DatasetExecutionService){
  73. DatasetExecutionService.execute(options);
  74. });
  75. });
  76. break;
  77. default:
  78. console.warn("Unhandled item: " + v_sMenuItem);
  79. return;
  80. }
  81. v_Application.GlassMenu_onSelectItem(v_sMenuItem);
  82. },
  83. isItemVisible: function(context){
  84. var v_sMenuItem = context.target.itemId;
  85. var v_Application = context.glassContext.currentAppView.currentContentView.getAuthoringApplication();
  86. if (!v_Application)
  87. {
  88. return;
  89. }
  90. var v_oCmProperties = context.glassContext.currentAppView.currentContentView.cmProperties;
  91. var v_bRead = !v_oCmProperties || v_oCmProperties.permissions.indexOf("read") != -1;
  92. var v_bResult;
  93. switch (v_sMenuItem)
  94. {
  95. case "com.ibm.bi.authoring.save_as_report_view":
  96. v_bResult = v_Application.SharedState.Get("isViewer") && v_Application.SharedState.Get("cmSearchPath") && !v_Application.SharedState.Get("isModified");
  97. break;
  98. case "com.ibm.bi.datasets.dataset_save":
  99. v_bResult = v_Application.SharedState.Get("isModified");
  100. break;
  101. case "com.ibm.bi.authoring.save":
  102. v_bResult = false; // always hide save from popup since it is the default action on button
  103. break;
  104. case "com.ibm.bi.authoring.save_as":
  105. if (!(context.glassContext.hasCapability("canUseReportStudio") && context.glassContext.hasCapability("canUseReportStudioFileManagement"))) {
  106. // save as calls the report service add method which requires both the above capabilities.
  107. v_bResult = false;
  108. }
  109. else if (v_Application.SharedState.Get("isViewer")) {
  110. // Saving from viewer requires full spec which is only possible if you have read access
  111. v_bResult = v_bRead;
  112. }
  113. else {
  114. v_bResult = true;
  115. }
  116. break;
  117. case "com.ibm.bi.datasets.refresh":
  118. v_bResult = v_Application.SharedState.Get("isModified");
  119. break;
  120. case "com.ibm.bi.authoring.convert_to_active_report":
  121. v_bResult = !v_Application.SharedState.Get("isViewer") && !v_Application.SharedState.Get("isActiveReport");
  122. break;
  123. case "com.ibm.bi.authoring.convert_to_template":
  124. v_bResult = !v_Application.SharedState.Get("isViewer");
  125. break;
  126. default:
  127. v_bResult = true;
  128. break;
  129. }
  130. return v_bResult;
  131. }
  132. });
  133. return AuthoringMenu;
  134. });