ResultsDataReaderTask.js 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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(['dashboard-analytics/visualizations/renderer/sequence/BaseTask', './ResultDataReader'], function (BaseTask, ResultDataReader) {
  13. 'use strict';
  14. var ResultsDataReaderTask = BaseTask.extend({
  15. init: function init() {
  16. ResultsDataReaderTask.inherited('init', this, arguments);
  17. this._initializeStep('resultsdatareader');
  18. this.resultDataReader = new ResultDataReader(this.ownerWidget.getAPI(), this.content.getFeature('Visualization'));
  19. },
  20. /**
  21. * The ResultsDataReader task is performed as part of the renderSequence (after data has been fetched/postProcessed)
  22. * process uses a ResultDataReader to read one or more DSS query results.
  23. * its "not stateful" (its execution is performed via one or more resultsdatareaderplugins
  24. * (Plugins are features that include the resultsdatareaderplugin feature tag. These features must adhere to
  25. * the api of a resultdatareader plugin....see ResultDataReader).
  26. * This task resolves immediately if no plugins are registered
  27. * @param renderContext - information collected by a particular call to render or reRender (such as the view, control, data etc).
  28. * @returns a promise which resolves with the renderContext.
  29. */
  30. process: function process(renderContext) {
  31. if (this._isStepComplete(renderContext, 'resultsdatareader') || !this.resultDataReader.hasPlugins()) {
  32. return Promise.resolve(renderContext);
  33. }
  34. return this._processQueryResults(renderContext.data, renderContext).then(function (results) {
  35. this._completeStep(renderContext, 'resultsdatareader', results);
  36. return renderContext;
  37. }.bind(this)).catch(function (error) {
  38. this.showError('dwErrorRenderingVisualization');
  39. throw error;
  40. }.bind(this));
  41. },
  42. _processQueryResults: function _processQueryResults(resultData, renderContext) {
  43. var _this = this;
  44. var useNewQueryApi = renderContext && renderContext.useAPI;
  45. if (!useNewQueryApi) {
  46. //TODO: Remove this once the queryApi flag is removed.
  47. return this._processQueryResults_oldQueryAPI(resultData, renderContext);
  48. }
  49. this.resultDataReader.onNewResults(resultData);
  50. if (resultData && resultData.getResult) {
  51. var promises = [];
  52. resultData.getQueryResultIdList().forEach(function (layerId) {
  53. var queryResult = resultData.getResult(layerId);
  54. promises = promises.concat(_this._processOneQueryResult(queryResult, layerId, renderContext));
  55. });
  56. if (promises.length) {
  57. return Promise.all(promises);
  58. }
  59. }
  60. return Promise.resolve({});
  61. },
  62. _processOneQueryResult: function _processOneQueryResult(queryResult, layerId, renderContext) {
  63. return this.resultDataReader.processData(queryResult, layerId, renderContext);
  64. },
  65. //TODO: Remove these functions when the queryApi flag is removed.
  66. _processQueryResults_oldQueryAPI: function _processQueryResults_oldQueryAPI(resultData, renderContext) {
  67. var _this2 = this;
  68. this.resultDataReader.onNewResults(resultData);
  69. if (resultData && resultData.getQueryResults) {
  70. var promises = [];
  71. resultData.getQueryResults().forEach(function (queryResult) {
  72. promises = promises.concat(_this2._processOneQueryResult_oldQueryAPI(queryResult, renderContext));
  73. });
  74. if (promises.length) {
  75. return Promise.all(promises);
  76. }
  77. }
  78. return Promise.resolve({});
  79. },
  80. _processOneQueryResult_oldQueryAPI: function _processOneQueryResult_oldQueryAPI(resultDataEntry, renderContext) {
  81. return this.resultDataReader.processData(resultDataEntry.data, resultDataEntry.getDataViewId && resultDataEntry.getDataViewId(), renderContext);
  82. }
  83. });
  84. return ResultsDataReaderTask;
  85. });
  86. //# sourceMappingURL=ResultsDataReaderTask.js.map