rumble-charts
Version:
Truly declarative React charts components
62 lines (57 loc) • 2.52 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tslib_es6 = require('../../external/tslib/tslib.es6.js');
var isUndefined = require('../isUndefined.js');
function stack(props, options) {
if (options === void 0) { options = {}; }
var normalize = (options || {}).normalize;
var series = props.series, maxY = props.maxY, minY = props.minY;
var seriesNormalized = props.seriesNormalized, maxX = props.maxX, minX = props.minX;
var stackedY = [], lowestY = [];
series = series === null || series === void 0 ? void 0 : series.map(function (series) {
var _a;
var newSeries = {
data: (_a = series.data) === null || _a === void 0 ? void 0 : _a.map(function (point, pointIndex) {
stackedY[pointIndex] = stackedY[pointIndex] || 0;
if (isUndefined.isUndefined(lowestY[pointIndex])) {
lowestY[pointIndex] = stackedY[pointIndex];
}
var newPoint = {
y0: stackedY[pointIndex],
y: stackedY[pointIndex] + point.y
};
stackedY[pointIndex] = newPoint.y;
return tslib_es6.__assign(tslib_es6.__assign({}, point), newPoint);
})
};
return tslib_es6.__assign(tslib_es6.__assign({}, series), newSeries);
});
minY = Math.min.apply(Math, tslib_es6.__spreadArray([minY || 0], lowestY, false));
var stackedMaxY = Math.max.apply(Math, stackedY);
maxY = Math.max(stackedMaxY, maxY || 0);
if (normalize) {
var ratios_1 = stackedY.map(function (y) { return stackedMaxY / y; });
series = series === null || series === void 0 ? void 0 : series.map(function (series) {
var _a;
var newSeries = {
data: (_a = series.data) === null || _a === void 0 ? void 0 : _a.map(function (point, pointIndex) {
var newPoint = {
y0: (point.y0 || 0) * ratios_1[pointIndex],
y: point.y * ratios_1[pointIndex]
};
return tslib_es6.__assign(tslib_es6.__assign({}, point), newPoint);
})
};
return tslib_es6.__assign(tslib_es6.__assign({}, series), newSeries);
});
}
return {
series: series,
seriesNormalized: seriesNormalized,
maxX: maxX,
maxY: maxY,
minX: minX,
minY: minY
};
}
exports.stack = stack;