VisViewTask.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. 'use strict';
  2. /*
  3. *+------------------------------------------------------------------------+
  4. *| Licensed Materials - Property of IBM
  5. *| IBM Cognos Products: Dashboard
  6. *| (C) Copyright IBM Corp. 2018
  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(['./BaseTask', '../../../DynamicFileLoader'], function (BaseTask, DynamicFileLoader) {
  13. 'use strict';
  14. var VisViewTask = BaseTask.extend({
  15. process: function process(renderContext) {
  16. var widget = this.ownerWidget;
  17. if (widget) {
  18. // set default layout properties
  19. widget.setLayoutProperties({
  20. pannable: false,
  21. mobilePannable: false,
  22. noRotate: true,
  23. maximizable: true
  24. });
  25. }
  26. if (this._isStepComplete(renderContext, 'visView')) {
  27. return Promise.resolve(renderContext);
  28. }
  29. // If loading the view, run the whole process over.
  30. this.getRenderState().firstRenderComplete = false;
  31. var viewPath = this._rendererToView();
  32. return this._loadVisView(viewPath).then(function (visView) {
  33. if (this._completeStep(renderContext, 'visView', visView)) {
  34. // If we've updated the view, need to update it
  35. // in the model (ie: remove the old one).
  36. this._placeViewIntoDOM(visView, renderContext.widgetSize);
  37. } else {
  38. // The visview is discarded. We remove it to
  39. // make sure we cleanup all event handlers.
  40. visView.remove();
  41. }
  42. return renderContext;
  43. }.bind(this));
  44. },
  45. /**
  46. * Mostly exists for unit testing!
  47. */
  48. _loadVisView: function _loadVisView(viewPath) {
  49. return DynamicFileLoader.load([viewPath]).then(function (modules) {
  50. var VisView = modules[0];
  51. var visView = new VisView({
  52. visModel: this.visAPI,
  53. logger: this.logger,
  54. ownerWidget: this.ownerWidget,
  55. dashboardApi: this.dashboardApi,
  56. content: this.content
  57. });
  58. return visView;
  59. }.bind(this));
  60. },
  61. /**
  62. * Temporary function to accommodate vis definitions that refer to
  63. * RaveRenderer, GridRenderer. Replace 'Renderer" with 'View'
  64. * eg....transfrom the name to "RaveView" and "GridView".
  65. */
  66. _rendererToView: function _rendererToView() {
  67. var theView = this.visAPI.getRenderer();
  68. if (theView.substr(theView.length - 8) === 'Renderer') {
  69. return theView.substr(0, theView.length - 8) + 'View';
  70. }
  71. return theView;
  72. },
  73. /**
  74. * When a view is first created, set its preferred size based on its definition
  75. * and place the view into the DOM.
  76. * @param visView The view that was just created.
  77. * @param bounds The view's bounds
  78. */
  79. _placeViewIntoDOM: function _placeViewIntoDOM(visView, bounds) {
  80. var widget = this.ownerWidget;
  81. widget.placeAt(visView);
  82. widget.applyCommonProperties();
  83. if (!widget.dataSlotsView) {
  84. visView.resize(bounds);
  85. }
  86. }
  87. });
  88. return VisViewTask;
  89. });
  90. //# sourceMappingURL=VisViewTask.js.map