'use strict'; /* *+------------------------------------------------------------------------+ *| Licensed Materials - Property of IBM *| IBM Cognos Products: Dashboard *| (C) Copyright IBM Corp. 2018 *| *| US Government Users Restricted Rights - Use, duplication or disclosure *| restricted by GSA ADP Schedule Contract with IBM Corp. *+------------------------------------------------------------------------+ */ define(['dashboard-analytics/visualizations/renderer/sequence/BaseTask', './ResultDataReader'], function (BaseTask, ResultDataReader) { 'use strict'; var ResultsDataReaderTask = BaseTask.extend({ init: function init() { ResultsDataReaderTask.inherited('init', this, arguments); this._initializeStep('resultsdatareader'); this.resultDataReader = new ResultDataReader(this.ownerWidget.getAPI(), this.content.getFeature('Visualization')); }, /** * The ResultsDataReader task is performed as part of the renderSequence (after data has been fetched/postProcessed) * process uses a ResultDataReader to read one or more DSS query results. * its "not stateful" (its execution is performed via one or more resultsdatareaderplugins * (Plugins are features that include the resultsdatareaderplugin feature tag. These features must adhere to * the api of a resultdatareader plugin....see ResultDataReader). * This task resolves immediately if no plugins are registered * @param renderContext - information collected by a particular call to render or reRender (such as the view, control, data etc). * @returns a promise which resolves with the renderContext. */ process: function process(renderContext) { if (this._isStepComplete(renderContext, 'resultsdatareader') || !this.resultDataReader.hasPlugins()) { return Promise.resolve(renderContext); } return this._processQueryResults(renderContext.data, renderContext).then(function (results) { this._completeStep(renderContext, 'resultsdatareader', results); return renderContext; }.bind(this)).catch(function (error) { this.showError('dwErrorRenderingVisualization'); throw error; }.bind(this)); }, _processQueryResults: function _processQueryResults(resultData, renderContext) { var _this = this; var useNewQueryApi = renderContext && renderContext.useAPI; if (!useNewQueryApi) { //TODO: Remove this once the queryApi flag is removed. return this._processQueryResults_oldQueryAPI(resultData, renderContext); } this.resultDataReader.onNewResults(resultData); if (resultData && resultData.getResult) { var promises = []; resultData.getQueryResultIdList().forEach(function (layerId) { var queryResult = resultData.getResult(layerId); promises = promises.concat(_this._processOneQueryResult(queryResult, layerId, renderContext)); }); if (promises.length) { return Promise.all(promises); } } return Promise.resolve({}); }, _processOneQueryResult: function _processOneQueryResult(queryResult, layerId, renderContext) { return this.resultDataReader.processData(queryResult, layerId, renderContext); }, //TODO: Remove these functions when the queryApi flag is removed. _processQueryResults_oldQueryAPI: function _processQueryResults_oldQueryAPI(resultData, renderContext) { var _this2 = this; this.resultDataReader.onNewResults(resultData); if (resultData && resultData.getQueryResults) { var promises = []; resultData.getQueryResults().forEach(function (queryResult) { promises = promises.concat(_this2._processOneQueryResult_oldQueryAPI(queryResult, renderContext)); }); if (promises.length) { return Promise.all(promises); } } return Promise.resolve({}); }, _processOneQueryResult_oldQueryAPI: function _processOneQueryResult_oldQueryAPI(resultDataEntry, renderContext) { return this.resultDataReader.processData(resultDataEntry.data, resultDataEntry.getDataViewId && resultDataEntry.getDataViewId(), renderContext); } }); return ResultsDataReaderTask; }); //# sourceMappingURL=ResultsDataReaderTask.js.map