NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/data-set/lib/basic-transform/aggregate.js
2023-09-14 14:47:11 +08:00

30 lines
1.2 KiB
Java

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var util_1 = require("@antv/util");
var statistics = tslib_1.__importStar(require("../util/statistics"));
var partition_1 = require("../util/partition");
function aggregate(rows, options) {
var fields = options.fields, op = options.op;
if (fields && !Array.isArray(fields)) {
throw new TypeError('Invalid fields: it must be an array with one or more strings!');
}
if (!fields && op.some(function (item) { return item !== 'count'; }))
throw new Error('');
if (op.length > options.as.length)
throw new TypeError("Invalid as: it's length must be the same as operations!");
var groups = partition_1.partition(rows, options.groupBy);
var results = [];
util_1.forIn(groups, function (group) {
var result = tslib_1.__assign({}, group[0]);
op.forEach(function (operation, i) {
var outputName = options.as[i];
var field = fields ? fields[i] : undefined;
result[outputName] = statistics[operation](group.map(function (item) { return item[field]; }));
});
results.push(result);
});
return results;
}
exports.aggregate = aggregate;