DeprecatedCanvas.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. 'use strict';
  2. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3. /**
  4. * Licensed Materials - Property of IBM
  5. * IBM Cognos Products: BI Cloud (C) Copyright IBM Corp. 2018, 2019
  6. * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. */
  8. define(['../lib/@waca/dashboard-common/dist/core/APIFactory', '../api/deprecated/CanvasAPI', '../lib/@waca/core-client/js/core-client/utils/Deferred', '../dashboard/api/FilterAPI', 'underscore'], function (APIFactory, DeprecatedCanvasAPI, Deferred, DeprecatedFilterApi, _) {
  9. var CanvasAPIImpl = function () {
  10. function CanvasAPIImpl(dashboardAPI, boardModel, canvasController, layoutController, widgetLoader) {
  11. _classCallCheck(this, CanvasAPIImpl);
  12. this.widgetLoader = widgetLoader;
  13. this.boardModel = boardModel;
  14. this.canvasController = canvasController;
  15. this.layoutController = layoutController;
  16. this.dashboardAPI = dashboardAPI;
  17. // TODO: remove this -- it is just here because some code might be using it
  18. this.controller = this.canvasController;
  19. this.filterApi = new DeprecatedFilterApi(this.canvasController, this.dashboardAPI);
  20. }
  21. CanvasAPIImpl.prototype.getAPI = function getAPI() {
  22. if (!this.api) {
  23. this.api = APIFactory.createAPI(this, [DeprecatedCanvasAPI], {
  24. deprecatedPropList: ['controller']
  25. });
  26. }
  27. return this.api;
  28. };
  29. CanvasAPIImpl.prototype.getWidgetsWhenRendered = function getWidgetsWhenRendered() {
  30. return this.dashboardAPI.waitTillWidgetsRendered.apply(this.dashboardAPI, arguments);
  31. };
  32. CanvasAPIImpl.prototype.deselectAllWidgets = function deselectAllWidgets() {
  33. return this.dashboardAPI.deselectAllWidgets.apply(this.dashboardAPI, arguments);
  34. };
  35. CanvasAPIImpl.prototype.destroy = function destroy() {
  36. this.widgetLoader = null;
  37. this.boardModel = null;
  38. this.canvasController = null;
  39. this.layoutController = null;
  40. this.dashboardAPI = null;
  41. // TODO: remove this -- it is just here because some code might be using it
  42. this.controller = null;
  43. this.filterApi = null;
  44. };
  45. CanvasAPIImpl.prototype.getFilters = function getFilters() {
  46. return this.filterApi;
  47. };
  48. CanvasAPIImpl.prototype.getSelectedWidgets = function getSelectedWidgets() {
  49. var _this = this;
  50. var widgetModels = this.layoutController.getSelectedWidgets();
  51. var widgets = [];
  52. widgetModels.forEach(function (model) {
  53. var widget = _this.getWidget(model.id);
  54. if (widget) {
  55. widgets.push(widget);
  56. }
  57. });
  58. return widgets;
  59. };
  60. CanvasAPIImpl.prototype.getWidgetWhenReady = function getWidgetWhenReady(id) {
  61. if (this.widgetLoader) {
  62. return this.widgetLoader.getWidgetAsync(id).then(function (widget) {
  63. if (widget) {
  64. return widget.getAPI();
  65. }
  66. });
  67. } else {
  68. return Promise.reject(new Error('No longer alive!'));
  69. }
  70. };
  71. CanvasAPIImpl.prototype.getWidget = function getWidget(id) {
  72. if (this.widgetLoader) {
  73. var widget = this.widgetLoader.getWidget(id);
  74. if (widget) {
  75. return widget.getAPI();
  76. }
  77. }
  78. };
  79. CanvasAPIImpl.prototype.getWidgets = function getWidgets() {
  80. var id = void 0;
  81. var widgets = [];
  82. var widget = void 0;
  83. for (id in this.boardModel.widgetInstances) {
  84. widget = this.getWidget(id);
  85. if (widget) {
  86. widgets.push(widget);
  87. }
  88. }
  89. return widgets;
  90. };
  91. CanvasAPIImpl.prototype.addFragment = function addFragment(options, sender, payloadData) {
  92. if (payloadData === undefined) payloadData = null;
  93. //sets preferred add options in CanvasController Class
  94. this.layoutController.setPreferredAddOptions(options);
  95. var payload = this.boardModel.addFragment(options, sender ? sender : 'api', payloadData);
  96. var parameter = payload && payload.value && payload.value.parameter;
  97. return parameter && parameter.model && parameter.model.layout && parameter.model.layout.id; //return model id of added widget
  98. };
  99. CanvasAPIImpl.prototype.addWidget = function addWidget(addOptions, sender, options) {
  100. this.layoutController.setPreferredAddOptions(addOptions);
  101. var payload = this.boardModel.addWidget(addOptions, sender ? sender : 'api', options);
  102. var parameter = payload && payload.value && payload.value.parameter;
  103. return parameter && parameter.model && parameter.model.id; //return model id of added widget
  104. };
  105. CanvasAPIImpl.prototype.replaceWidget = function replaceWidget(widgetId, addOptions, sender) {
  106. var layoutModel = this.boardModel.layout.findModel(widgetId);
  107. if (layoutModel) {
  108. addOptions.layoutProperties = layoutModel.toJSON();
  109. var id = addOptions.layoutProperties.id;
  110. addOptions.layoutProperties.id = undefined;
  111. var parentModel = this.boardModel.layout.findParentModel(widgetId);
  112. if (parentModel) {
  113. addOptions.parentId = parentModel.id;
  114. addOptions.insertBefore = id;
  115. }
  116. } else {
  117. this.layoutController.setPreferredAddOptions(addOptions);
  118. }
  119. var undoRedoTransactionId = _.uniqueId('undoRedoReplace');
  120. var data = {
  121. undoRedoTransactionId: undoRedoTransactionId,
  122. transactionToken: addOptions && addOptions.transactionToken,
  123. replace: true
  124. };
  125. var newWidgetParameters = this.boardModel.addWidget(addOptions, sender ? sender : 'api', data);
  126. this.boardModel.removeWidget(widgetId, sender ? sender : 'api', data);
  127. if (newWidgetParameters && newWidgetParameters.value && newWidgetParameters.value.parameter && newWidgetParameters.value.parameter.model) {
  128. return newWidgetParameters.value.parameter.model.id;
  129. }
  130. };
  131. CanvasAPIImpl.prototype.hasMaximizedWidget = function hasMaximizedWidget() {
  132. return this.canvasController.layoutController.hasMaximizedWidget();
  133. };
  134. CanvasAPIImpl.prototype.removeWidget = function removeWidget(widgetId, sender) {
  135. this.boardModel.removeWidget(widgetId, sender ? sender : 'api');
  136. };
  137. CanvasAPIImpl.prototype.selectWidget = function selectWidget(widgetId, options) {
  138. var deferred = new Deferred();
  139. this.layoutController.whenWidgetRenderComplete(widgetId).done(function (layout) {
  140. var selectionHandler = this.layoutController.interactionController.selectionHandler;
  141. if (options && !options.multiSelect) {
  142. selectionHandler.deselectAll();
  143. }
  144. // pass the flag isTouch to properly render the resize edges for touch device.
  145. selectionHandler.selectNode(layout.domNode, options);
  146. deferred.resolve();
  147. }.bind(this));
  148. return deferred.promise;
  149. };
  150. CanvasAPIImpl.prototype.selectWidgets = function selectWidgets(widgetIds, options) {
  151. options = options || {};
  152. options = _.extend(options, {
  153. 'multiSelect': true
  154. });
  155. var promises = [];
  156. for (var widgetId in widgetIds) {
  157. promises.push(this.selectWidget(widgetIds[widgetId], options));
  158. }
  159. return Promise.all(promises);
  160. };
  161. CanvasAPIImpl.prototype.getLayout = function getLayout(id) {
  162. var layoutView = this.canvasController.layoutController.getView(id);
  163. if (layoutView && layoutView.view) {
  164. return layoutView.view.getAPI();
  165. }
  166. };
  167. CanvasAPIImpl.prototype.getFeature = function getFeature(id) {
  168. return this.canvasController.getFeature(id);
  169. };
  170. CanvasAPIImpl.prototype.registerFeature = function registerFeature(id, feature) {
  171. return this.canvasController.registerFeature(id, feature);
  172. };
  173. return CanvasAPIImpl;
  174. }();
  175. return CanvasAPIImpl;
  176. });
  177. //# sourceMappingURL=DeprecatedCanvas.js.map