@gooddata/react-components
Version:
GoodData React Components
67 lines • 2.22 kB
JavaScript
;
exports.__esModule = true;
var get = require("lodash/get");
var cloneDeep = require("lodash/cloneDeep");
function getMeasureInfo(id) {
if (id.endsWith('_pop')) {
return {
generatedId: id.split('_')[0],
isPoP: true
};
}
return {
generatedId: id,
isPoP: false
};
}
function updateSorting(metadata, sortingInfo) {
var sorting = sortingInfo.sorting, change = sortingInfo.change;
var updatedMetadata = cloneDeep(metadata);
var buckets = updatedMetadata.content.buckets;
var column = sorting.column, direction = sorting.direction;
var type = change.type;
var bucketItem;
var sort;
if (type === 'metric') {
var _a = getMeasureInfo(column), generatedId_1 = _a.generatedId, isPoP = _a.isPoP;
var measures = get(buckets, 'measures', []);
var measure = measures
.find(function (item) { return item.measure.generatedId === generatedId_1; });
bucketItem = get(measure, 'measure');
// Sort direction needs to be fixed in data-layer
// tslint:disable-next-line:no-object-literal-type-assertion
sort = { direction: direction };
if (isPoP) {
sort.sortByPoP = true;
}
}
else {
var categories = get(buckets, 'categories', []);
var category = categories
.find(function (item) { return item.category.displayForm === column; });
bucketItem = get(category, 'category');
sort = direction; // string instead of object for categories :(
}
// handle column deletion
if (!bucketItem) {
return {
updatedMetadata: metadata,
updatedSorting: null
};
}
buckets.categories = buckets.categories.map(function (category) {
category.category.sort = null;
return category;
});
buckets.measures = buckets.measures.map(function (measure) {
measure.measure.sort = null;
return measure;
});
bucketItem.sort = sort;
return {
updatedMetadata: updatedMetadata,
updatedSorting: sortingInfo
};
}
exports.updateSorting = updateSorting;
//# sourceMappingURL=metadata.js.map