123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- "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/TenantsListTemplate.html', 'bi/admin/common/utils/AJAXUtils', 'bi/commons/utils/BidiUtil', 'bi/commons/utils/ContentFormatter', 'bi/admin/multitenancy/services/TenantsListAdapter', 'bi/commons/ui/dialogs/ConfirmationDialog', 'bi/admin/multitenancy/services/TenantsCustomizationService', 'bi/admin/multitenancy/TenantsActionHandler'], function (_, dot, MagicWand, View, ListView, StringResource, TenantsListTemplate, AJAXUtils, BidiUtil, ContentFormatter, TenantsListAdapter, ConfirmationDialog, TenantsCustomizationService, TenantsActionHandler) {
- 'use strict'; //NOSONAR: meant to be strict
- var TenantsListView = View.extend({
- showBreadcrumbs: true,
- defaultTypes: ['tenant'],
- _breadCrumbs: null,
- listAdaptor: null,
- init: function init(options) {
- TenantsListView.inherited('init', this, arguments);
- _.extend(this, options);
- this.listAdaptor = this._getNewTenantsListAdapter({
- glassContext: this.glassContext,
- objectInfo: {},
- removeSelf: false,
- showContextMenu: true
- });
- this.tenantsController = this._getNewTenantsCustomizationService({
- glassContext: this.glassContext
- });
- this.includeToolbar = options.includeToolbar ? options.includeToolbar : false;
- this.filterPushed = false;
- this.filterStringValue = {
- 'tenant': true
- };
- },
- _getNewTenantsListAdapter: function _getNewTenantsListAdapter(spec) {
- return new TenantsListAdapter(spec);
- },
- _getNewTenantsCustomizationService: function _getNewTenantsCustomizationService(spec) {
- return new TenantsCustomizationService(spec);
- },
- _renderTemplate: function _renderTemplate() {
- var paneInfo = {
- 'strings': {
- 'title': StringResource.get('addTenantsTitle'),
- 'type': StringResource.get('type'),
- 'addTenant': StringResource.get('addTenantTitle')
- }
- };
- var sHtml = dot.template(TenantsListTemplate)(paneInfo);
- this.$el.html(sHtml);
- BidiUtil.initElementForBidi(this.$el.find(".bi-admin-input.bi-admin-input-search")[0]);
- },
- _renderSearch: function _renderSearch() {
- return MagicWand.searchInput(this.$el).then(function (widgets) {
- if (widgets.length === 1) {
- this._searchInput = widgets[0];
- this._searchInput.options.hint = StringResource.get('filterTips');
- this._searchInput.on('changed', function (e) {
- var trimmed = e.text.trim();
- if (trimmed.length > 0 || e.text === '') {
- this.listView.setPaging(false);
- this.listView.filter(trimmed, 'defaultName');
- }
- }.bind(this));
- }
- }.bind(this));
- },
- _getNewTenantsActionHandler: function _getNewTenantsActionHandler() {
- return new TenantsActionHandler();
- },
- _getNewListView: function _getNewListView(options) {
- return new ListView(options);
- },
- _renderListView: function _renderListView() {
- var elList = this.$el.find('.bi-admin-tenant-list');
- elList.empty();
- this.listView = this._getNewListView({
- el: elList,
- dataAdaptor: this.listAdaptor,
- glassContext: this.glassContext,
- accessibleLabel: this.title,
- activeInputForm: null,
- multiSelect: false
- });
- this.listView.singleSelectCallback = this._rowClickHandler.bind(this);
- this.listView.contextMenuCallback = function (e) {
- var args = {
- "position": e.position,
- "menuId": "com.ibm.bi.admin.tenantMenu",
- "activeObject": {
- handler: this._getNewTenantsActionHandler(),
- data: e.selectedObject[0],
- parentView: this
- }
- };
- this.glassContext.appController.showContextMenu(args);
- }.bind(this);
- if (this.listAdaptor.contextMenuHandler) {
- this.listView.contextMenuCallback = this.listAdaptor.contextMenuHandler.bind(this.listAdaptor, this);
- }
- return this.listView.render();
- },
- render: function render() {
- this._renderTemplate();
- return this._renderSearch().then(this._renderListView.bind(this)).then(this._bindEvents.bind(this));
- },
- getSelectedObjects: function getSelectedObjects() {
- return this.listView.getSelectedObjects();
- },
- _bindEvents: function _bindEvents() {
- if (this.showAddButton) {
- this.$el.find('#button_add').on('primaryaction', function () {
- this.trigger('addItem');
- }.bind(this));
- }
- $(this.slideout.$el).on('com.ibm.cognos.bi.admin.updatetenantlist', function () {
- this.listView.reload();
- }.bind(this));
- var $label = $('<span class="bi-admin-filter-icon">');
- $label.text(this._filterString(this.filterStringValue));
- ContentFormatter.middleShortenString($label);
- },
- _addTenant: function _addTenant() {},
- setFocus: function setFocus() {
- this.$el.find('.bi-admin-filterbar-leading input').focus();
- },
- _filterString: function _filterString(filterString) {
- return filterString;
- },
- _filter: function _filter(filterStr) {
- if (this._searchInput) {
- this._searchInput.options.value = '';
- }
- var $label = this.$el.find('.bi-admin-filter-icon');
- if ($label) {
- $label[0].title = '';
- }
- var labelString = this._filterString(filterStr);
- $label.text(labelString);
- ContentFormatter.middleShortenString($label[0]);
- this.listAdaptor._filterType = filterStr || '';
- this.listAdaptor._filterString = '';
- this.listView.reload(false);
- },
- reloadList: function reloadList() {
- return this.listView.reload(false);
- },
- _rowClickHandler: function _rowClickHandler(oData) {
- if (this.listAdaptor.rowClickHandler) {
- this.listAdaptor.rowClickHandler(this, oData);
- }
- },
- doSetProperties: function doSetProperties(tenant, tabModule) {
- tenant.type = 'tenant';
- var tenantPropertySlideout = this.glassContext.appController.showSlideOut({
- 'parent': this.slideout,
- 'width': "600px",
- 'onHide': function () {
- if (tenantPropertySlideout && tenantPropertySlideout.contentView && tenantPropertySlideout.contentView.onHide) {
- tenantPropertySlideout.contentView.onHide().then(function () {
- //remove propertiesPageView
- tenantPropertySlideout.hide();
- }.bind(this));
- }
- }.bind(this),
- 'content': {
- 'module': 'bi/admin/common/PropertiesPageView',
- 'parentView': this,
- 'objectInfo': tenant,
- 'type': tenant.type,
- 'glassContext': this._glassContext,
- 'selectedTabModule': tabModule,
- 'tenantsController': this.tenantsController
- }
- });
- },
- doDelete: function doDelete(tenant, shouldDeleteTenantProfile) {
- var dialogMsg = !shouldDeleteTenantProfile ? StringResource.get('multitenancyDeleteConfirmation') : StringResource.get('multitenancyDeleteProfileConfirmation');
- var oDialog = new ConfirmationDialog('confirmDelete', StringResource.get('confirmDelete'), dialogMsg);
- oDialog.setDialogOptions({
- 'width': '500px'
- });
- oDialog.confirm(function () {
- if (this.slideout.child) {
- this.slideout.child.hide();
- }
- this.tenantsController.deleteTenant(tenant.tenantID, shouldDeleteTenantProfile).then(function () {
- var sText;
- if (!shouldDeleteTenantProfile) {
- sText = StringResource.get('multitenancyDeleteMsg', {
- 'tenantName': tenant.defaultName
- });
- } else {
- sText = StringResource.get('multitenancyDeleteTenantProfileMsg', {
- 'tenantName': tenant.defaultName
- });
- }
- this.glassContext.appController.showToast(sText, {
- 'type': 'success'
- });
- this.slideout.$el.trigger('com.ibm.cognos.bi.admin.updatetenantlist');
- }.bind(this), function (ajaxObj, err) {
- if (!shouldDeleteTenantProfile) {
- this.glassContext.appController.showErrorMessage(AJAXUtils.buildErrorMessage(err.responseJSON.errors), StringResource.get('error'));
- } else {
- this.glassContext.appController.showToast(err.responseJSON.error, {
- 'type': 'warning'
- });
- }
- }.bind(this));
- }.bind(this));
- oDialog.renderContent($('<div>'));
- },
- doKillTenantSessions: function doKillTenantSessions(tenant) {
- var oDialog = new ConfirmationDialog('multitenantKillSessions', StringResource.get('multitenantKillSessions'), StringResource.get('multitenantKillSessionsConfirm', {
- "tenantName": tenant.defaultName
- }));
- oDialog.confirm(function () {
- if (this.slideout.child) {
- this.slideout.child.hide();
- }
- this.tenantsController.killTenantSessions(tenant.tenantID).then(function (data) {
- var sText = StringResource.get('multitenantKillSessionsSuccess', {
- 'sessionNumber': data.count ? data.count : 0,
- 'tenantName': tenant.defaultName
- });
- this.glassContext.appController.showToast(sText, {
- 'type': 'success'
- });
- }.bind(this), function (ajaxObj, err) {
- this.glassContext.appController.showErrorMessage(AJAXUtils.buildErrorMessage(err.responseJSON.errors), StringResource.get('error'));
- }.bind(this));
- }.bind(this));
- oDialog.renderContent($('<div>'));
- },
- doDisableTenant: function doDisableTenant(tenant) {
- this.tenantsController.disableTenant(tenant.tenantID, !tenant.disabled).then(function (data) {
- var message = tenant.disabled ? StringResource.get('enableTenant', {
- 'tenantName': tenant.defaultName
- }) : StringResource.get('disableTenant', {
- 'tenantName': tenant.defaultName
- });
- this.glassContext.appController.showToast(message);
- this.slideout.$el.trigger('com.ibm.cognos.bi.admin.updatetenantlist');
- }.bind(this));
- },
- refresh: function refresh() {
- this.listView.reload();
- }
- });
- return TenantsListView;
- });
|