"use strict"; /** * Licensed Materials - Property of IBM * * IBM Cognos Products: ADMIN * * Copyright IBM Corp. 2020 * * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ 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) { var currentEl = null; var view = ContentView.extend({ init: function init(options) { view.inherited('init', this, arguments); _.extend(this, options); }, getSelectedContext: function getSelectedContext(options) { if (options && options.target && options.target.activeObject) { return options.target.activeObject.aSelectedContext; } }, isItemVisible: function isItemVisible(context) { if (!(context.glassContext.isDevInstall && context.glassContext.isDevInstall())) { this._selectedContext = this.getSelectedContext(context); var rsContextMenuActions = new RsContextMenuActions(); //want to use the report studio check for run as so //need a slight massage of the itemId var oldItemId = context.target.itemId; context.target.itemId = 'com.ibm.bi.contentApps.action.runAs'; if (this._selectedContext && this._selectedContext.length === 1) { var obj = this._selectedContext[0]; var canExecute = obj && obj.permissions && obj.permissions.indexOf('execute') !== -1; var result = false; if (obj.type === 'jobDefinition') { result = canExecute; } else { result = rsContextMenuActions.isItemVisible(context); } context.target.itemId = oldItemId; return result; } context.target.itemId = oldItemId; return false; } else { return false; } }, setFocus: function setFocus() {}, onSelectItem: function onSelectItem(options) { if (!currentEl) { currentEl = $("
"); $(document.body).append(currentEl); } else { ReactDOM.unmountComponentAtNode(currentEl[0]); } var anEl = React.createElement(AdminReact.RunAsAction, { StringResource: StringResource, glassContext: options.glassContext, objectInfo: options.target.activeObject.aSelectedContext[0] }); ReactDOM.render(anEl, currentEl[0]); return Promise.resolve(); } }); return view; });