@gooddata/react-components
Version:
GoodData React Components
130 lines • 5.77 kB
JavaScript
;
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