UNPKG

@gooddata/react-components

Version:
67 lines 2.22 kB
"use strict"; 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