| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.getDataWhetherPercentage = exports.getDeepPercent = exports.percent = void 0;
- var tslib_1 = require("tslib");
- var util_1 = require("@antv/util");
- var number_1 = require("../number");
- /**
- * 对数据进行百分比化
- * @param data
- * @param measure
- * @param groupField
- * @param as
- */
- function percent(data, measure, groupField, as) {
- // 1. 先计算每一个分组的 max 值
- var sumMap = (0, util_1.reduce)(data, function (map, datum) {
- var groupValue = datum[groupField];
- var sum = map.has(groupValue) ? map.get(groupValue) : 0;
- var v = datum[measure];
- sum = (0, number_1.isRealNumber)(v) ? sum + v : sum;
- map.set(groupValue, sum);
- return map;
- }, new Map());
- // 2. 循环数组,计算占比
- return (0, util_1.map)(data, function (datum) {
- var _a;
- var v = datum[measure];
- var groupValue = datum[groupField];
- var percentage = (0, number_1.isRealNumber)(v) && sumMap.get(groupValue) !== 0 ? v / sumMap.get(groupValue) : 0;
- return tslib_1.__assign(tslib_1.__assign({}, datum), (_a = {}, _a[as] = percentage, _a));
- });
- }
- exports.percent = percent;
- /**
- * 对数据进行深层百分比化
- * @param data
- * @param measure // 数值
- * @param fields // 需要分组的 field值
- * @param as // 存储percent 百分比的值
- */
- function getDeepPercent(data, measure, fields, percent) {
- var sumMap = (0, util_1.reduce)(data, function (map, datum) {
- // 获取分组得到的枚举key值
- var groupValue = (0, util_1.reduce)(fields, function (value, field) { return "".concat(value).concat(datum[field]); }, '');
- var sum = map.has(groupValue) ? map.get(groupValue) : 0;
- var v = datum[measure];
- sum = (0, number_1.isRealNumber)(v) ? sum + v : sum;
- map.set(groupValue, sum);
- return map;
- }, new Map());
- // 2. 循环数组,计算占比
- return (0, util_1.map)(data, function (datum) {
- var _a;
- var v = datum[measure];
- // 获取分组得到的枚举key值
- var groupValue = (0, util_1.reduce)(fields, function (value, field) { return "".concat(value).concat(datum[field]); }, '');
- var percentage = (0, number_1.isRealNumber)(v) && sumMap.get(groupValue) !== 0 ? v / sumMap.get(groupValue) : 0;
- return tslib_1.__assign(tslib_1.__assign({}, datum), (_a = {}, _a[percent] = percentage, _a));
- });
- }
- exports.getDeepPercent = getDeepPercent;
- /**
- * 获取数据,如果是百分比,进行数据转换 (适用于面积图、柱状图、条形图)
- * @param isPercent 是否百分比
- */
- function getDataWhetherPercentage(data, yField, groupField, asField, isPercent) {
- return !isPercent ? data : percent(data, yField, groupField, asField);
- }
- exports.getDataWhetherPercentage = getDataWhetherPercentage;
- //# sourceMappingURL=percent.js.map
|