SignonMembersTab.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. "use strict";
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: admin
  5. * Copyright IBM Corp. 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', 'bi/content_apps/PropertiesTab', 'bi/glass/app/ContentView', 'bi/admin/nls/StringResource', 'react-dom', 'react', 'mobx', 'ba-react-admin/ba-react-admin.min'], function (_, PropertiesTab, ContentView, StringResource, ReactDOM, React, mobx, AdminReact) {
  10. 'use strict'; //NOSONAR: meant to be strict
  11. var SignonMembersTab = ContentView.extend({
  12. init: function init(options) {
  13. SignonMembersTab.inherited('init', this, arguments);
  14. _.extend(this, options);
  15. },
  16. addMembers: function addMembers(membersList) {
  17. var defaultTypes = this.objectInfo.type === 'group' ? ['group', 'account'] : ['group', 'role', 'account'];
  18. this.membersList = membersList;
  19. this.addMemberSlideout = this.glassContext.appController.showSlideOut({
  20. 'parent': this.slideout,
  21. 'width': "450px",
  22. 'content': {
  23. 'module': 'bi/admin/account/slideout/SecurityObjectSelectorPane',
  24. 'parentView': this,
  25. 'objectInfo': [this.objectInfo],
  26. 'allowedSelectionTypes': defaultTypes,
  27. 'multiSelectCallback': this.addSelection.bind(this),
  28. targetType: []
  29. }
  30. });
  31. },
  32. addSelection: function addSelection(selectedItems) {
  33. var tempList = mobx.toJS(this.membersList);
  34. _.each(selectedItems, function (item) {
  35. var memberObject = {
  36. 'id': item.id,
  37. 'label': item.defaultName,
  38. 'searchPath': item.searchPath,
  39. 'type': item.objectClass
  40. };
  41. tempList.push(memberObject);
  42. }.bind(this));
  43. var uniqueList = _.uniq(tempList, function (item, key, a) {
  44. return item.label;
  45. });
  46. this.membersList.replace(uniqueList);
  47. this.objectInfo.membersListObject = mobx.toJS(this.membersList);
  48. },
  49. render: function render() {
  50. this.$el.addClass("reactSignonMemberList");
  51. ReactDOM.unmountComponentAtNode(this.$el[0]);
  52. this.signonMemberList = React.createElement(AdminReact.SignonMemberList, {
  53. 'glassContext': this.glassContext,
  54. 'slideout': this.slideout,
  55. 'StringResource': StringResource,
  56. 'objectInfo': this.objectInfo,
  57. 'parent': this
  58. });
  59. ReactDOM.render(this.signonMemberList, this.$el[0]);
  60. return Promise.resolve();
  61. },
  62. onClose: function onClose() {
  63. SignonMembersTab.inherited('onClose', this, arguments);
  64. ReactDOM.unmountComponentAtNode(this.$el[0]);
  65. this.signonMemberList = null;
  66. },
  67. _getBlankHtml: function _getBlankHtml(members) {
  68. return '<div class="member-pane-empty">' + '<div class="emptyTableImage wft_bee"></div>' + '<div class="emptyTableText">' + StringResource.get(members + 'MemberMsg') + '</div>';
  69. }
  70. });
  71. return SignonMembersTab;
  72. });