CustomWidgetActionHandler.js 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. 'use strict';
  2. /*
  3. *+------------------------------------------------------------------------+
  4. *| Licensed Materials - Property of IBM
  5. *| IBM Cognos Products: Content Explorer
  6. *| (C) Copyright IBM Corp. 2015, 2020
  7. *|
  8. *| US Government Users Restricted Rights - Use, duplication or disclosure
  9. *| restricted by GSA ADP Schedule Contract with IBM Corp.
  10. *+------------------------------------------------------------------------+
  11. */
  12. define(['../../../lib/@waca/dashboard-common/dist/glass/controllers/WidgetBaseActionHandler', '../../../app/nls/StringResources', '../../../lib/@waca/core-client/js/core-client/utils/ClassFactory', 'underscore'], function (BaseClass, stringResources, ClassFactory, _) {
  13. return BaseClass.extend({
  14. getDashboardView: function getDashboardView(context) {
  15. return context.glassContext.appController.getCurrentContentView();
  16. },
  17. getUiHelperClass: function getUiHelperClass() {
  18. return ClassFactory.loadModule('dashboard-core/js/lib/@waca/dashboard-common/dist/ui/WidgetAddUIHelper');
  19. },
  20. getOptions: function getOptions(context) {
  21. var _this = this;
  22. var view = this.getDashboardView(context);
  23. var dashboardApi = view.getDashboardApi();
  24. var options = {
  25. module: 'dashboard-core/js/dashboard/views/CustomWidgetListView',
  26. label: stringResources.get('customWidgetsTitle'),
  27. getEntries: this.getEntries.bind(this),
  28. className: 'customWidgetSlideout',
  29. services: view.services,
  30. dashboardApi: dashboardApi
  31. };
  32. return this._createWidgetAddUIHelper(context, dashboardApi).then(function (widgetHelper) {
  33. options.onItemClick = function (entry, event) {
  34. return _this._onItemClickHandler(entry, event, widgetHelper, dashboardApi);
  35. };
  36. options.onItemStartDrag = widgetHelper.addWidgetByDrag.bind(widgetHelper);
  37. return options;
  38. });
  39. },
  40. _onItemClickHandler: function _onItemClickHandler(entry, event, widgetHelper, dashboardApi) {
  41. var logger = dashboardApi.getFeature('Logger');
  42. var canvas = dashboardApi.getFeature('Canvas');
  43. var contentRegistryFeature = dashboardApi.getFeature('ContentTypeRegistry');
  44. if (contentRegistryFeature.isTypeRegistered(entry.type)) {
  45. return canvas.addContent(entry.defaultSpec).catch(function (error) {
  46. logger.log(error);
  47. });
  48. }
  49. return widgetHelper.addWidgetBySelection(entry, event);
  50. },
  51. getEntries: function getEntries(context) {
  52. var view = this.getDashboardView(context);
  53. var dashboardApi = view.getDashboardApi();
  54. var contentRegistryFeature = dashboardApi.getFeature('ContentTypeRegistry');
  55. return this._createWidgetAddUIHelper(context, dashboardApi).then(function (widgetHelper) {
  56. return widgetHelper.fetchWidgetListFromPerspective('com.ibm.bi.dashboard.widgets', context.glassContext);
  57. }).then(function (entries) {
  58. entries.list = _.filter(entries.list, function (entry) {
  59. return entry.builtin ? false : true;
  60. });
  61. entries.list = entries.list.concat(contentRegistryFeature.getExposedContents());
  62. return entries;
  63. });
  64. },
  65. // Private
  66. _createWidgetAddUIHelper: function _createWidgetAddUIHelper(context, dashboardApi) {
  67. var view = this.getDashboardView(context);
  68. var uiHelperClassOptions = {
  69. services: view.services,
  70. dashboardApi: dashboardApi
  71. };
  72. return this.getUiHelperClass().then(function (UIHelperClass) {
  73. var widgetAddUIHelper = new UIHelperClass(uiHelperClassOptions);
  74. widgetAddUIHelper.panelAttributes = {
  75. cdnUrl: dashboardApi.getCDNUrl(),
  76. glassContext: context.glassContext
  77. };
  78. return widgetAddUIHelper;
  79. });
  80. }
  81. });
  82. });
  83. //# sourceMappingURL=CustomWidgetActionHandler.js.map