PeoplePane.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. "use strict";
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: Cognos Analytics
  5. * Copyright IBM Corp. 2018, 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/admin/common/slideout/BasePane', 'doT', 'bi/admin/nls/StringResource', 'text!bi/admin/common/templates/ManagePaneTemplate.html', '../../ba-graphics/dist/icons-js/user_32', '../../ba-graphics/dist/icons-js/email_32', '../../ba-graphics/dist/icons-js/capability_32', 'jquery'], function (_, BasePane, dot, StringResource, template, user32, email32, capability32, $) {
  10. /**
  11. * Sample content view that extends the glass AdminPane class
  12. *
  13. */
  14. var PeoplePane = BasePane.extend({
  15. init: function init(options) {
  16. PeoplePane.inherited('init', this, arguments);
  17. $.extend(this, options);
  18. this.moduleMap = {
  19. 'people_accounts': {
  20. 'moduleName': 'bi/admin/account/slideout/AccountListPane',
  21. 'size': '550px'
  22. },
  23. 'people_capabilities': {
  24. 'moduleName': 'bi/admin/account/slideout/CapabilitiesListPane',
  25. 'size': '400px'
  26. },
  27. 'people_contacts': {
  28. 'moduleName': 'bi/admin/account/slideout/ContactListPane',
  29. 'size': '350px'
  30. }
  31. };
  32. },
  33. _getMenuItems: function _getMenuItems() {
  34. var items = [];
  35. if (this._checkCapabilities('canUseUsersGroupsAndRolesTool')) {
  36. items.push({
  37. id: 'people_accounts',
  38. title: StringResource.get('accounts'),
  39. description: StringResource.get('accountsDetail'),
  40. icon: user32.default.id
  41. });
  42. }
  43. if (this.glassContext.isDevInstall() && this._checkCapabilities('canUseUsersGroupsAndRolesTool')) {
  44. items.push({
  45. id: 'people_accounts_newlist',
  46. title: StringResource.get('accounts_newlist'),
  47. description: StringResource.get('accountsDetail_newlist'),
  48. icon: user32.default.id
  49. });
  50. }
  51. if (this._checkCapabilities('canUseCapabilitiesTool')) {
  52. items.push({
  53. id: 'people_capabilities',
  54. title: StringResource.get('capabilities'),
  55. description: StringResource.get('capabilitiesDetail'),
  56. icon: capability32.default.id
  57. });
  58. }
  59. if (this._checkCapabilities('canUseDistributionListsAndContactsTool')) {
  60. items.push({
  61. id: 'people_contacts',
  62. title: StringResource.get('contacts'),
  63. description: StringResource.get('contactsDetail'),
  64. icon: email32.default.id
  65. });
  66. }
  67. return items;
  68. },
  69. _checkCapabilities: function _checkCapabilities(capabilityName) {
  70. return _.find(this.glassContext.services.userProfile.capabilities, function (capability) {
  71. return capability === capabilityName;
  72. });
  73. },
  74. _buildSlideout: function _buildSlideout(id, title) {
  75. this.glassContext.appController.showSlideOut({
  76. parent: this.slideout,
  77. overlay: true,
  78. width: this.moduleMap[id].size,
  79. label: title,
  80. content: {
  81. module: this.moduleMap[id].moduleName,
  82. title: title,
  83. showGobackButton: true
  84. }
  85. });
  86. },
  87. renderBody: function renderBody($body) {
  88. var $html = $(dot.template(template)({
  89. 'items': this._getMenuItems()
  90. }));
  91. $body.html($html);
  92. $body.addClass('bi-admin-entrance-pane');
  93. $body.find('.manage-sub-menu .adminentry').on('primaryaction', function (e) {
  94. if (this.slideout.child) {
  95. this.slideout.child.hide();
  96. }
  97. var childTitle = $(e.currentTarget).attr('title');
  98. if (this.glassContext.isDevInstall() && e.currentTarget.id === 'people_accounts_newlist') {
  99. this.glassContext.appController.openAppView('namespaces', {});
  100. } else {
  101. this._buildSlideout(e.currentTarget.id, childTitle);
  102. }
  103. }.bind(this));
  104. return Promise.resolve();
  105. }
  106. });
  107. return PeoplePane;
  108. });