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

40 lines
1.5 KiB
Java

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var helper_1 = require("../helper");
var partition_1 = require("../util/partition");
var statistics = tslib_1.__importStar(require("../util/statistics"));
function pivot(rows, options) {
var e_1, _a;
var _b = helper_1.mergeOptions(options, { op: 'sum' }), field = _b.field, value = _b.value, groupBy = _b.groupBy, op = _b.op;
if (!(op in statistics)) {
throw new Error('unknown op');
}
var groups = partition_1.partition(rows, groupBy);
var result = [];
var _loop_1 = function (group) {
var row = {};
(Array.isArray(groupBy) ? groupBy : [groupBy]).forEach(function (item) { return (row[item] = group[0][item]); });
var fields = group.map(function (item) { return item[field]; });
fields.forEach(function (target) {
row[target] = statistics[op](group.filter(function (item) { return item[field] === target; }).map(function (item) { return item[value]; }));
});
result.push(row);
};
try {
for (var _c = tslib_1.__values(Object.values(groups)), _d = _c.next(); !_d.done; _d = _c.next()) {
var group = _d.value;
_loop_1(group);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
}
finally { if (e_1) throw e_1.error; }
}
return result;
}
exports.pivot = pivot;