RunAsAction.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. "use strict";
  2. /**
  3. * Licensed Materials - Property of IBM
  4. *
  5. * IBM Cognos Products: ADMIN
  6. *
  7. * Copyright IBM Corp. 2020
  8. *
  9. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  10. */
  11. define(['react', 'react-dom', 'jquery', 'underscore', 'bi/glass/app/ContentView', 'bi/admin/nls/StringResource', 'bi/authoring/plugins/rsContextMenuActions', 'ba-react-admin/ba-react-admin.min'], function (React, ReactDOM, $, _, ContentView, StringResource, RsContextMenuActions, AdminReact) {
  12. var currentEl = null;
  13. var view = ContentView.extend({
  14. init: function init(options) {
  15. view.inherited('init', this, arguments);
  16. _.extend(this, options);
  17. },
  18. getSelectedContext: function getSelectedContext(options) {
  19. if (options && options.target && options.target.activeObject) {
  20. return options.target.activeObject.aSelectedContext;
  21. }
  22. },
  23. isItemVisible: function isItemVisible(context) {
  24. if (!(context.glassContext.isDevInstall && context.glassContext.isDevInstall())) {
  25. this._selectedContext = this.getSelectedContext(context);
  26. var rsContextMenuActions = new RsContextMenuActions(); //want to use the report studio check for run as so
  27. //need a slight massage of the itemId
  28. var oldItemId = context.target.itemId;
  29. context.target.itemId = 'com.ibm.bi.contentApps.action.runAs';
  30. if (this._selectedContext && this._selectedContext.length === 1) {
  31. var obj = this._selectedContext[0];
  32. var canExecute = obj && obj.permissions && obj.permissions.indexOf('execute') !== -1;
  33. var result = false;
  34. if (obj.type === 'jobDefinition') {
  35. result = canExecute;
  36. } else {
  37. result = rsContextMenuActions.isItemVisible(context);
  38. }
  39. context.target.itemId = oldItemId;
  40. return result;
  41. }
  42. context.target.itemId = oldItemId;
  43. return false;
  44. } else {
  45. return false;
  46. }
  47. },
  48. setFocus: function setFocus() {},
  49. onSelectItem: function onSelectItem(options) {
  50. if (!currentEl) {
  51. currentEl = $("<div id='runasroot'/>");
  52. $(document.body).append(currentEl);
  53. } else {
  54. ReactDOM.unmountComponentAtNode(currentEl[0]);
  55. }
  56. var anEl = React.createElement(AdminReact.RunAsAction, {
  57. StringResource: StringResource,
  58. glassContext: options.glassContext,
  59. objectInfo: options.target.activeObject.aSelectedContext[0]
  60. });
  61. ReactDOM.render(anEl, currentEl[0]);
  62. return Promise.resolve();
  63. }
  64. });
  65. return view;
  66. });