@gooddata/react-components
Version:
GoodData.UI - A powerful JavaScript library for building analytical applications
66 lines • 2.65 kB
JavaScript
;
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