AdminPane.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. "use strict";
  2. /**
  3. * Licensed Materials - Property of IBM
  4. * IBM Cognos Products: admin
  5. * Copyright IBM Corp. 2015, 2017
  6. * US Government Users Restricted Rights -
  7. * Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. */
  9. define(['react', 'react-dom', 'ba-react-admin/ba-react-admin.min', 'bi/glass/app/ContentView', 'jquery', 'bi/admin/datasource/App', 'bi/admin/nls/StringResource', 'bi/commons/utils/Utils', 'bi/admin/common/slideout/admin', 'bi/admin/common/utils/CapabilityHelper', 'bi/admin/system/slideout/PluginsDefinition'], function (React, ReactDOM, AdminReact, ContentView, $, App, StringResource, Utils, adminMeta, CapabilityHelper, PluginsDefinition) {
  10. /**
  11. * Sample content view that extends the glass AdminPane class
  12. *
  13. */
  14. var AdminPane = ContentView.extend({
  15. init: function init(options) {
  16. ContentView.inherited('init', this, arguments);
  17. $.extend(this, options);
  18. App.glassContext = this.glassContext;
  19. CapabilityHelper.glassContext = this.glassContext;
  20. },
  21. _getViewWidth: function _getViewWidth(wide) {
  22. var width = 450;
  23. if (wide) {
  24. width = $(window).width() < 1370 ? 576 : 900;
  25. }
  26. return width;
  27. },
  28. setFocus: function setFocus() {
  29. this.$el.find('.list-item').filter(':visible:first').focus();
  30. },
  31. _getMeta: function _getMeta() {
  32. return adminMeta;
  33. },
  34. _createReactChild: function _createReactChild(rEl, props, children) {
  35. return React.createElement(rEl, props, children);
  36. },
  37. _renderReact: function _renderReact(element, root) {
  38. ReactDOM.render(element, root);
  39. },
  40. readExtensions: function readExtensions() {
  41. return new Promise(function (resolve, reject) {
  42. this.glassContext.appController.findCollection('ibm.com.admin.AdminPanel').then(function (resp) {
  43. this.instantiateExtensions(resp).then(function () {
  44. return resolve();
  45. });
  46. }.bind(this), reject);
  47. }.bind(this));
  48. },
  49. setActionControllers: function setActionControllers(extensions, resolve) {
  50. var actionControllers = [];
  51. for (var index = 2; index < arguments.length; index += 1) {
  52. var actClass = extensions[index - 2].actionClass;
  53. actionControllers.push(new arguments[index][actClass](this.glassContext, StringResource));
  54. }
  55. AdminReact.AdminPanelUIStore.setPanelExtentions(actionControllers);
  56. resolve();
  57. },
  58. instantiateExtensions: function instantiateExtensions(resp) {
  59. var requireMods = [];
  60. var extensions = [];
  61. return new Promise(function (resolve) {
  62. if (resp) {
  63. resp.forEach(function (ext) {
  64. requireMods.push(ext.actionController);
  65. extensions.push(ext);
  66. }.bind(this));
  67. require(requireMods, this.setActionControllers.bind(this, extensions, resolve));
  68. } else {
  69. resolve();
  70. }
  71. }.bind(this));
  72. },
  73. getPlugins: function getPlugins(isSysAdmin, tenantID) {
  74. return PluginsDefinition.getPlugins(isSysAdmin, tenantID, this.glassContext, {});
  75. },
  76. render: function render() {
  77. this.readExtensions().then(function () {
  78. this.renderBody();
  79. }.bind(this));
  80. },
  81. renderBody: function renderBody() {
  82. //NOSONAR
  83. this.$el.addClass('bi-admin-entrance-pane');
  84. var adminPane = React.createElement(AdminReact.AdminPanel, {
  85. glassContext: this.glassContext,
  86. StringResource: StringResource,
  87. parent: this
  88. });
  89. ReactDOM.render(adminPane, this.$el[0]);
  90. return Promise.resolve();
  91. }
  92. });
  93. return AdminPane;
  94. });