TenantsMemberList.js 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. "use strict";
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: Cognos Analytics
  5. * Copyright IBM Corp. 2015, 2018
  6. * US Government Users Restricted Rights - Use, duplication or disclosure
  7. * restricted by GSA ADP Schedule Contract with IBM Corp.
  8. */
  9. 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) {
  10. 'use strict'; //NOSONAR: meant to be strict
  11. var TenantsMemberList = View.extend({
  12. showBreadcrumbs: true,
  13. defaultTypes: ['tenant'],
  14. _breadCrumbs: null,
  15. listAdaptor: null,
  16. init: function init(options) {
  17. TenantsMemberList.inherited('init', this, arguments);
  18. this.glassContext = options.glassContext;
  19. this.parent = options.parent;
  20. this.includeToolbar = options.includeToolbar ? options.includeToolbar : false;
  21. this.filterPushed = false;
  22. this.filterStringValue = {
  23. 'tenant': true
  24. };
  25. },
  26. render: function render() {
  27. this.$el.append("<div ><div class='tenantAddMemberPaneRoot'/></div>");
  28. var tenantListView = React.createElement(AdminReact.TenantListView, {
  29. tenantController: this.tenantsController,
  30. glassContext: this.glassContext,
  31. StringResource: StringResource,
  32. parent: this,
  33. isAddMemebers: true
  34. });
  35. ReactDOM.render(tenantListView, this.$el.find('.tenantAddMemberPaneRoot')[0]);
  36. return Promise.resolve(this);
  37. },
  38. getSelectedObjects: function getSelectedObjects() {
  39. return this.listView.getSelectedObjects();
  40. },
  41. _getUniqueMembers: function _getUniqueMembers(selectedMembers) {
  42. var existingMembers = this.objectInfo[0].tenantMembers ? this.objectInfo[0].tenantMembers : [];
  43. var formattedMembers = _.map(existingMembers, function (member) {
  44. return member.tenantID;
  45. });
  46. if (selectedMembers) {
  47. _.each(selectedMembers, function (val, index) {
  48. var found = _.find(existingMembers, function (member) {
  49. return val.tenantID === member.tenantID;
  50. });
  51. if (!found) {
  52. formattedMembers.push(val.tenantID);
  53. }
  54. });
  55. }
  56. return formattedMembers;
  57. },
  58. _addMembers: function _addMembers(selectedMembers) {
  59. var tenant = this.objectInfo[0];
  60. return this.listController.getTenant(tenant.tenantID).then(function (data) {
  61. this.objectInfo = data.data;
  62. var membersObj = {
  63. "tenantMembers": this._getUniqueMembers(selectedMembers)
  64. };
  65. return this.listController.addTenantMembers(tenant.tenantID, membersObj);
  66. }.bind(this)).then(function () {
  67. return this.listController.getTenant(tenant.tenantID);
  68. }.bind(this), function (ajaxOptions, err) {
  69. this.glassContext.appController.showErrorMessage(AJAXUtils.buildErrorMessage(err.responseJSON.errors), StringResource.get('failToAddMember'));
  70. }.bind(this)).then(function (data) {
  71. this.objectInfo = data.data;
  72. this.glassContext.appController.showToast(StringResource.get('addMemberMsg'));
  73. return this.parentView.refresh();
  74. }.bind(this));
  75. },
  76. setFocus: function setFocus() {
  77. this.$el.find('.bi-admin-filterbar-leading input').focus();
  78. },
  79. _rowClickHandler: function _rowClickHandler(oData) {
  80. if (this.listAdaptor.rowClickHandler) {
  81. this.listAdaptor.rowClickHandler(this, oData);
  82. }
  83. }
  84. });
  85. return TenantsMemberList;
  86. });