"use strict"; /** * Licensed Materials - Property of IBM * IBM Cognos Products: Cognos Analytics * Copyright IBM Corp. 2015, 2018 * US Government Users Restricted Rights - Use, duplication or disclosure * restricted by GSA ADP Schedule Contract with IBM Corp. */ define(['underscore', 'doT', 'bi/admin/common/ui/MagicWand', 'bi/commons/ui/AccessibleView', 'bi/admin/common/ui/listview/ListView', 'bi/admin/nls/StringResource', 'text!bi/admin/multitenancy/templates/TenantsMemberListTemplate.html', 'bi/admin/common/utils/AJAXUtils', 'bi/commons/utils/BidiUtil', 'bi/commons/utils/ContentFormatter', 'bi/admin/multitenancy/services/TenantsListAdapter', 'react', 'react-dom', 'ba-react-admin/ba-react-admin.min'], function (_, dot, MagicWand, View, ListView, StringResource, TenantsMemberListTemplate, AJAXUtils, BidiUtil, ContentFormatter, TenantsListAdapter, React, ReactDOM, AdminReact) { 'use strict'; //NOSONAR: meant to be strict var TenantsMemberList = View.extend({ showBreadcrumbs: true, defaultTypes: ['tenant'], _breadCrumbs: null, listAdaptor: null, init: function init(options) { TenantsMemberList.inherited('init', this, arguments); this.glassContext = options.glassContext; this.parent = options.parent; this.includeToolbar = options.includeToolbar ? options.includeToolbar : false; this.filterPushed = false; this.filterStringValue = { 'tenant': true }; }, render: function render() { this.$el.append("
"); var tenantListView = React.createElement(AdminReact.TenantListView, { tenantController: this.tenantsController, glassContext: this.glassContext, StringResource: StringResource, parent: this, isAddMemebers: true }); ReactDOM.render(tenantListView, this.$el.find('.tenantAddMemberPaneRoot')[0]); return Promise.resolve(this); }, getSelectedObjects: function getSelectedObjects() { return this.listView.getSelectedObjects(); }, _getUniqueMembers: function _getUniqueMembers(selectedMembers) { var existingMembers = this.objectInfo[0].tenantMembers ? this.objectInfo[0].tenantMembers : []; var formattedMembers = _.map(existingMembers, function (member) { return member.tenantID; }); if (selectedMembers) { _.each(selectedMembers, function (val, index) { var found = _.find(existingMembers, function (member) { return val.tenantID === member.tenantID; }); if (!found) { formattedMembers.push(val.tenantID); } }); } return formattedMembers; }, _addMembers: function _addMembers(selectedMembers) { var tenant = this.objectInfo[0]; return this.listController.getTenant(tenant.tenantID).then(function (data) { this.objectInfo = data.data; var membersObj = { "tenantMembers": this._getUniqueMembers(selectedMembers) }; return this.listController.addTenantMembers(tenant.tenantID, membersObj); }.bind(this)).then(function () { return this.listController.getTenant(tenant.tenantID); }.bind(this), function (ajaxOptions, err) { this.glassContext.appController.showErrorMessage(AJAXUtils.buildErrorMessage(err.responseJSON.errors), StringResource.get('failToAddMember')); }.bind(this)).then(function (data) { this.objectInfo = data.data; this.glassContext.appController.showToast(StringResource.get('addMemberMsg')); return this.parentView.refresh(); }.bind(this)); }, setFocus: function setFocus() { this.$el.find('.bi-admin-filterbar-leading input').focus(); }, _rowClickHandler: function _rowClickHandler(oData) { if (this.listAdaptor.rowClickHandler) { this.listAdaptor.rowClickHandler(this, oData); } } }); return TenantsMemberList; });