"use strict"; /** * Licensed Materials - Property of IBM * IBM Cognos Products: admin * Copyright IBM Corp. 2015, 2017 * US Government Users Restricted Rights - * Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ define(['react', 'react-dom', 'ba-react-admin/ba-react-admin.min', 'bi/glass/app/ContentView', 'jquery', 'bi/admin/datasource/App', 'bi/admin/nls/StringResource', 'bi/commons/utils/Utils', 'bi/admin/common/slideout/admin', 'bi/admin/common/utils/CapabilityHelper', 'bi/admin/system/slideout/PluginsDefinition'], function (React, ReactDOM, AdminReact, ContentView, $, App, StringResource, Utils, adminMeta, CapabilityHelper, PluginsDefinition) { /** * Sample content view that extends the glass AdminPane class * */ var AdminPane = ContentView.extend({ init: function init(options) { ContentView.inherited('init', this, arguments); $.extend(this, options); App.glassContext = this.glassContext; CapabilityHelper.glassContext = this.glassContext; }, _getViewWidth: function _getViewWidth(wide) { var width = 450; if (wide) { width = $(window).width() < 1370 ? 576 : 900; } return width; }, setFocus: function setFocus() { this.$el.find('.list-item').filter(':visible:first').focus(); }, _getMeta: function _getMeta() { return adminMeta; }, _createReactChild: function _createReactChild(rEl, props, children) { return React.createElement(rEl, props, children); }, _renderReact: function _renderReact(element, root) { ReactDOM.render(element, root); }, readExtensions: function readExtensions() { return new Promise(function (resolve, reject) { this.glassContext.appController.findCollection('ibm.com.admin.AdminPanel').then(function (resp) { this.instantiateExtensions(resp).then(function () { return resolve(); }); }.bind(this), reject); }.bind(this)); }, setActionControllers: function setActionControllers(extensions, resolve) { var actionControllers = []; for (var index = 2; index < arguments.length; index += 1) { var actClass = extensions[index - 2].actionClass; actionControllers.push(new arguments[index][actClass](this.glassContext, StringResource)); } AdminReact.AdminPanelUIStore.setPanelExtentions(actionControllers); resolve(); }, instantiateExtensions: function instantiateExtensions(resp) { var requireMods = []; var extensions = []; return new Promise(function (resolve) { if (resp) { resp.forEach(function (ext) { requireMods.push(ext.actionController); extensions.push(ext); }.bind(this)); require(requireMods, this.setActionControllers.bind(this, extensions, resolve)); } else { resolve(); } }.bind(this)); }, getPlugins: function getPlugins(isSysAdmin, tenantID) { return PluginsDefinition.getPlugins(isSysAdmin, tenantID, this.glassContext, {}); }, render: function render() { this.readExtensions().then(function () { this.renderBody(); }.bind(this)); }, renderBody: function renderBody() { //NOSONAR this.$el.addClass('bi-admin-entrance-pane'); var adminPane = React.createElement(AdminReact.AdminPanel, { glassContext: this.glassContext, StringResource: StringResource, parent: this }); ReactDOM.render(adminPane, this.$el[0]); return Promise.resolve(); } }); return AdminPane; });