"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;
});