UNPKG

@gooddata/react-components

Version:

GoodData.UI - A powerful JavaScript library for building analytical applications

66 lines 2.65 kB
"use strict"; var __assign = (this && this.__assign) || function () { __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; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var find = require("lodash/find"); var findIndex = require("lodash/findIndex"); var isEmpty = require("lodash/isEmpty"); var get = require("lodash/get"); function convertResultSpecTotals(resultSpec) { return get(resultSpec, "dimensions[0].totals", []); } function getMeasureIndex(measureIdentifier, afm) { var afmMeasures = get(afm, "measures", []); return findIndex(afmMeasures, function (measure) { return measure.localIdentifier === measureIdentifier; }); } function convertToIndexedTotals(totals, afm, resultSpec) { var grandTotals = !isEmpty(totals) ? totals : convertResultSpecTotals(resultSpec); if (isEmpty(grandTotals)) { return []; } var indexedTotals = []; grandTotals.forEach(function (grandTotal) { var measureIndex = getMeasureIndex(grandTotal.measureIdentifier, afm); if (measureIndex === -1) { return; } var indexedTotal = find(indexedTotals, function (total) { return total.type === grandTotal.type; }); if (indexedTotal) { indexedTotal.outputMeasureIndexes.push(measureIndex); } else { var aliasProp = grandTotal.alias ? { alias: grandTotal.alias } : {}; indexedTotals.push(__assign({ type: grandTotal.type, outputMeasureIndexes: [measureIndex] }, aliasProp)); } }); return indexedTotals; } exports.convertToIndexedTotals = convertToIndexedTotals; function convertToTotals(indexedTotals, afm) { if (isEmpty(indexedTotals)) { return []; } var grandTotals = []; indexedTotals.forEach(function (indexedTotal) { indexedTotal.outputMeasureIndexes.forEach(function (measureIndex) { var measure = afm.measures[measureIndex]; var attribute = afm.attributes[0]; var aliasProp = indexedTotal.alias ? { alias: indexedTotal.alias } : {}; grandTotals.push(__assign({ type: indexedTotal.type, measureIdentifier: measure.localIdentifier, attributeIdentifier: attribute.localIdentifier }, aliasProp)); }); }); return grandTotals; } exports.convertToTotals = convertToTotals; //# sourceMappingURL=TotalsConverter.js.map