123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- "use strict";
- /**
- * Licensed Materials - Property of IBM
- * IBM Cognos Products: Cognos Analytics
- * Copyright IBM Corp. 2017
- * US Government Users Restricted Rights - Use, duplication or disclosure
- * restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- define(['doT', 'underscore', 'bi/commons/utils/BidiUtil', 'bi/admin/nls/StringResource', 'bi/glass/app/ContentView', 'bacontentnav/utils/WidgetNavigator', 'bi/commons/ui/dialogs/ConfirmationDialog', 'text!bi/admin/multitenancy/templates/MembersTabTemplate.html', 'bi/commons/utils/ContentFormatter', 'bi/admin/multitenancy/services/TenantsCustomizationService'], function (dot, _, BidiUtil, StringResource, ContentView, WidgetNavigator, ConfirmationDialog, template, ContentFormatter, TenantsCustomizationService) {
- var MembersTab = ContentView.extend({
- init: function init(options) {
- MembersTab.inherited('init', this, arguments);
- $.extend(this, options);
- this.tenantsListController = new TenantsCustomizationService({
- glassContext: this.glassContext
- });
- this.tenantMembers = [];
- },
- render: function render() {
- return this.glassContext.getCoreSvc('.Config').getConfigValue('Admin/useLegacyTenancyUI').then(function (res) {
- if (res && res.toLowerCase) {
- this.useLegacyTenancyUI = res.toLowerCase() === 'true';
- } else {
- this.useLegacyTenancyUI = false;
- }
- this._getMembers().then(function (tenant) {
- if (tenant.tenantMembers) {
- this.tenantMembers = tenant.tenantMembers.map(function (tenantMember) {
- return tenantMember.tenantID;
- });
- }
- var members = tenant.tenantMembers ? tenant.tenantMembers : [];
- members = _.map(members, function (member) {
- return this._patchItem(member);
- }.bind(this));
- var writable = this.objectInfo.permissions && this.objectInfo.permissions.indexOf('write') > -1 ? true : false;
- var strings = {
- 'addMember': StringResource.get('addMember'),
- 'removeMember': StringResource.get('removeMember'),
- 'removeMemberButton': StringResource.get('removeMemberButton'),
- 'tableheader': {
- 'type': StringResource.get('type'),
- 'name': StringResource.get('name'),
- 'action': StringResource.get('removeActionColumn')
- },
- 'tenants': StringResource.get('tenantsHeader')
- };
- var sText = StringResource.get('noMember', {
- 'type': this.objectInfo.type
- });
- var tempObj = {
- 'members': members,
- 'writable': writable,
- 'strings': strings,
- noMemberText: sText
- };
- var htmlStr = dot.template(template)(tempObj);
- this.$el.append(htmlStr);
- $.each(this.$el.find('.groupListFocusable .text-title'), function (index, value) {
- ContentFormatter.middleShortenString(value);
- });
- this.widgetKeyController = new WidgetNavigator({
- $el: this.$el.find(".groupList-table"),
- focusClass: "groupListFocusable"
- });
- this._bindEvents();
- this._enforceTextDir();
- }.bind(this));
- }.bind(this));
- },
- refresh: function refresh() {
- this.$el.empty();
- return this.render();
- },
- _enforceTextDir: function _enforceTextDir() {
- var $spans = this.$el.find(".text-title");
- $spans.attr('dir', BidiUtil.resolveBaseTextDir(this.innerHTML));
- },
- _removeMembers: function _removeMembers(members) {
- var updatedMembers = {};
- updatedMembers.tenantMembers = this.tenantMembers.filter(function (tenantMember) {
- return members.tenantMembers.indexOf(tenantMember) === -1;
- });
- return this.tenantsListController.removeTenantMembers(this.objectInfo.tenantID, updatedMembers);
- },
- _getMembers: function _getMembers() {
- return this.tenantsListController.getTenant(this.objectInfo.tenantID).then(function (data) {
- return data.data[0];
- }.bind(this));
- },
- _patchItem: function _patchItem(member) {
- member.svgIcon = "common-multi_tenant";
- member.type = "tenant";
- return member;
- },
- _bindEvents: function _bindEvents() {
- var aMod = 'bi/admin/multitenancy/slideout/TenantsMemberList';
- if (this.useLegacyTenancyUI) {
- aMod = 'bi/admin/multitenancy/slideout/TenantsMemberListLegacy';
- }
- this.$el.find('#addMember').on('primaryaction', function () {
- var defaultTypes = ['tenant'];
- this.addMemberSlideout = this.glassContext.appController.showSlideOut({
- 'parent': this.slideout,
- 'width': "400px",
- 'onHide': function () {
- this.setFocus();
- }.bind(this),
- 'content': {
- 'module': aMod,
- 'parentView': this,
- 'objectInfo': [this.objectInfo],
- 'listController': this.tenantsListController,
- 'allowedSelectionTypes': defaultTypes
- }
- });
- }.bind(this));
- this.$el.find('td .admin-remove-member-svgIcon').on('primaryaction', function (e) {
- var item = $(e.currentTarget).closest('tr.list-item');
- if (this.objectInfo.searchPath.indexOf('CAMID("::System Administrators")') !== -1 && this.objectInfo.members && this.objectInfo.members.length === 1) {
- var oDialog = new ConfirmationDialog('confirmDelete', StringResource.get('confirmDelete'), StringResource.get('unableToRemoveMembers'));
- oDialog.confirm(function () {});
- } else {
- var conDialog = new ConfirmationDialog('confirmDelete', StringResource.get('confirmDelete'), StringResource.get('confirmDeleteMemberMessage'));
- conDialog.confirm(function () {
- this._removeMember(item);
- }.bind(this));
- }
- e.stopPropagation();
- return false;
- }.bind(this));
- },
- _removeMember: function _removeMember(item) {
- var members = {};
- members.tenantMembers = [];
- if (item.attr('data-type') === 'tenant') {
- members.tenantMembers.push(item.attr('id'));
- } else {
- this.logger.error("can not remove member of type: " + item.attr('data-type'));
- }
- this._removeMembers(members).done(function () {
- this._removeItemFromMemberList(members);
- this.glassContext.appController.showToast(StringResource.get('removeMemberMsg'));
- }.bind(this));
- this.objectInfo.members = _.filter(this.objectInfo.members, function (member) {
- return member.id !== item.attr('id');
- });
- },
- _removeItemFromMemberList: function _removeItemFromMemberList(members) {
- var self = this;
- _.each(members.tenantMembers, function (member) {
- var item = _.find(self.$el.find('tr.list-item'), function (item) {
- if (item.id === member) {
- return item;
- }
- });
- try {
- item.removeNode(true);
- } catch (err) {
- item.remove();
- }
- });
- if (this.widgetKeyController) {
- this.widgetKeyController.setInitialTabIndex();
- }
- },
- setFocus: function setFocus() {
- this.$el.find("#addMember").focus();
- }
- });
- return MembersTab;
- });
|