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

37 lines
1.2 KiB
Java

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = require("@antv/util");
var data_set_1 = require("../data-set");
var option_parser_1 = require("../util/option-parser");
var DEFAULT_OPTIONS = {
fields: [],
key: 'key',
retains: [],
value: 'value',
};
data_set_1.DataSet.registerTransform('fold', function (dataView, options) {
var columns = dataView.getColumnNames();
options = util_1.assign({}, DEFAULT_OPTIONS, options);
var fields = option_parser_1.getFields(options);
if (fields.length === 0) {
console.warn('warning: option fields is not specified, will fold all columns.');
fields = columns;
}
var key = options.key;
var value = options.value;
var retains = options.retains;
if (!retains || retains.length === 0) {
retains = util_1.difference(columns, fields);
}
var resultRows = [];
dataView.rows.forEach(function (row) {
fields.forEach(function (field) {
var resultRow = util_1.pick(row, retains);
resultRow[key] = field;
resultRow[value] = row[field];
resultRows.push(resultRow);
});
});
dataView.rows = resultRows;
});