UNPKG

@gooddata/react-components

Version:
130 lines 5.77 kB
"use strict"; var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; exports.__esModule = true; var get = require("lodash/get"); var cloneDeep = require("lodash/cloneDeep"); var data_layer_1 = require("@gooddata/data-layer"); var errorStates_1 = require("../constants/errorStates"); var metadata_1 = require("./metadata"); function handleExecutionError(reason) { var status = reason.response && reason.response.status; switch (status) { case data_layer_1.ErrorCodes.HTTP_TOO_LARGE: return Promise.reject(errorStates_1.ErrorStates.DATA_TOO_LARGE_TO_COMPUTE); case data_layer_1.ErrorCodes.HTTP_BAD_REQUEST: return Promise.reject(errorStates_1.ErrorStates.BAD_REQUEST); case errorStates_1.ErrorCodes.APP_NO_DATA: return Promise.reject(errorStates_1.ErrorStates.NO_DATA); case errorStates_1.ErrorCodes.EMPTY_AFM: return Promise.reject(errorStates_1.ErrorStates.EMPTY_AFM); case errorStates_1.ErrorCodes.INVALID_BUCKETS: return Promise.reject(errorStates_1.ErrorStates.INVALID_BUCKETS); default: return Promise.reject(errorStates_1.ErrorStates.UNKNOWN_ERROR); } } function decorateMetrics(visObj) { var updatedVisObj = cloneDeep(visObj); updatedVisObj.content.buckets.measures = updatedVisObj.content.buckets.measures.map(function (measure, index) { measure.measure.generatedId = "m" + (index + 1); return measure; }); return updatedVisObj; } function getChartData(dataSource, transformation, metadata) { return dataSource.getData(transformation).then(function (result) { if (result.isEmpty) { throw { response: { status: errorStates_1.ErrorCodes.APP_NO_DATA } }; } return { metadata: metadata, result: result }; }); } function initChartDataLoading(dataSource, metadataSource, externalTransformation) { if (metadataSource) { return metadataSource.getVisualizationMetadata().then(function (_a) { var metadata = _a.metadata, measuresMap = _a.measuresMap; var transformation = data_layer_1.AfmConverter.toAFM(metadata.content, {}, measuresMap).transformation; // mix AFM transformation and user defined transformation var updatedTransformation = data_layer_1.TransformationUtils.combineTransformations(transformation, externalTransformation); return getChartData(dataSource, updatedTransformation, metadata); })["catch"](handleExecutionError); } return getChartData(dataSource, externalTransformation)["catch"](handleExecutionError); } exports.initChartDataLoading = initChartDataLoading; function applySorting(transformation, sortInfo) { if (transformation === void 0) { transformation = {}; } if (get(sortInfo, 'change')) { return __assign({}, transformation, { sorting: [sortInfo.sorting] }); } return transformation; } function getTableData(dataSource, transformation, sorting, metadata) { return dataSource.getData(transformation).then(function (result) { if (result.isEmpty) { throw { response: { status: errorStates_1.ErrorCodes.APP_NO_DATA } }; } return { result: result, sorting: sorting, metadata: metadata }; }); } function getMetadataObjectWithSortingApplied(metadata, sorting) { var decoratedMD = decorateMetrics(metadata); if (!get(sorting, 'change')) { return { metadata: decoratedMD, sorting: sorting }; } var updated = metadata_1.updateSorting(decoratedMD, sorting); return { metadata: updated.updatedMetadata, sorting: updated.updatedSorting }; } function initTableDataLoading(dataSource, metadataSource, externalTransformation, userSorting) { if (!metadataSource) { var updatedTransformation = applySorting(externalTransformation, userSorting); var updatedSorting = get(updatedTransformation, 'sorting[0]'); return getTableData(dataSource, updatedTransformation, { sorting: updatedSorting, change: null })["catch"](handleExecutionError); } return metadataSource.getVisualizationMetadata() .then(function (_a) { var originalMetadata = _a.metadata, measuresMap = _a.measuresMap; var _b = getMetadataObjectWithSortingApplied(originalMetadata, userSorting), sorting = _b.sorting, metadata = _b.metadata; var transformation = data_layer_1.AfmConverter.toAFM(metadata.content, {}, measuresMap).transformation; return { sorting: sorting, metadata: metadata, transformation: transformation }; }) .then(function (_a) { var metadata = _a.metadata, sorting = _a.sorting, transformation = _a.transformation; // mix AFM transformation and user defined transformation var updatedTransformation = data_layer_1.TransformationUtils.combineTransformations(transformation, applySorting(externalTransformation, sorting)); // no user selected sorting, use one from transformation if (!get(sorting, 'change')) { sorting = { sorting: get(updatedTransformation, 'sorting[0]'), change: null }; } return getTableData(dataSource, updatedTransformation, sorting, metadata); })["catch"](handleExecutionError); } exports.initTableDataLoading = initTableDataLoading; //# sourceMappingURL=load.js.map