UNPKG

bizcharts

Version:
48 lines 1.96 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); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); // 只列举常用的函数,复杂的推荐使用第三方类库。 var for_in_1 = __importDefault(require("@antv/util/lib/for-in")); var sum_1 = __importDefault(require("./sum")); var warning_1 = __importDefault(require("warning")); var partition_1 = __importDefault(require("./partition")); /** * 百分比计算, 不支持重复数据统计 * @param data object[] 数据源 * @param field string 被统计的值 * @param as string 生成的百分比字段名 * @param groupBy : string | string[] 将数据分组后再计算百分比 */ exports.default = (function (data, field, as, groupBy) { var result = []; var groups = groupBy ? (0, partition_1.default)(data, groupBy) : { _data: data }; (0, for_in_1.default)(groups, function (group) { var totalSum = (0, sum_1.default)(group.map(function (row) { return row[field]; })); (0, warning_1.default)(totalSum !== 0, "Invalid data: total sum of field ".concat(field, " is 0!")); (0, for_in_1.default)(group, function (item) { var resultRow = __assign({}, item); if (totalSum === 0) { resultRow[as] = 0; } else { resultRow[as] = item[field] / totalSum; } result.push(resultRow); }); }); return result; }); //# sourceMappingURL=percentage.js.map