@qn-pandora/pandora-visualization
Version:
Pandora 通用可视化库
89 lines (88 loc) • 3.1 kB
JavaScript
import { findIndex, find, get } from 'lodash';
/**
* 根据field的类型获取对应的buckets 和 metrics
* @param fields 所有的fields
*/
export function getBucketMetricNameByFields(fields) {
return {
buckets: getBuckets(fields).map(function (field) { return field.key; }),
metrics: getMetrics(fields).map(function (field) { return field.key; })
};
}
/**
* 根据field的名字, 获取对应列的数据
* @param field field名称
* @param dataset 数据集
* @param isCompare 是否为对比数据
*/
export function getDataOfField(field, dataset, isCompare) {
if (isCompare === void 0) { isCompare = false; }
var _a = dataset.fields, fields = _a === void 0 ? [] : _a, _b = dataset.rows, rows = _b === void 0 ? [] : _b;
var fieldIndex = findIndex(fields, function (item) { return item && item.key === field; });
return fieldIndex > -1
? rows.map(function (row) {
return isCompare ? get(row, [fieldIndex, 1]) : get(row, [fieldIndex, 0]);
})
: [];
}
/**
* 根据field的类型获取对应的buckets
* @param fields 所有的fields
*/
export function getBuckets(fields) {
return fields.filter(function (field) { return field.type === 'bucket'; });
}
/**
* 根据field的类型获取对应的metrics
* @param fields 所有的fields
*/
export function getMetrics(fields) {
return fields.filter(function (field) { return field.type === 'metric'; });
}
/**
* 获取对应field在所有fields中的索引
* @param field 当前field
* @param fields 所有fields
*/
export function getFieldIndex(field, fields) {
return findIndex(fields, function (item) { return item && item.key === field; });
}
/**
* 获取对应field对象
* @param field 当前field
* @param fields 所有fields
*/
export function getField(field, fields) {
return find(fields, function (item) { return item && item.key === field; });
}
/**
* 更新metrics、buckets
* 在metrics 或 buckets 中把对应的 field 删除
* @param metrics 当前的指标数组
* @param buckets 当前的分组数组
* @param field 需要去除的字段 或 字段数值
*/
export function updateMetricBucket(metrics, buckets, field) {
var fields = Array.isArray(field) ? field : [field];
fields.forEach(function (f) { return updateMetricBucketBySingleField(metrics, buckets, f); });
return { metrics: metrics, buckets: buckets };
}
/**
* 更新metrics、buckets
* 在metrics 或 buckets 中把对应的 field 删除
* @param metrics 当前的指标数组
* @param buckets 当前的分组数组
* @param field 需要去除的字段
*/
export function updateMetricBucketBySingleField(metrics, buckets, field) {
var bucketIndex = findIndex(buckets, function (bucket) { return bucket === field; });
if (bucketIndex !== -1) {
buckets.splice(bucketIndex, 1);
return;
}
var metricIndex = findIndex(metrics, function (metric) { return metric === field; });
if (metricIndex !== -1) {
metrics.splice(metricIndex, 1);
}
return { metrics: metrics, buckets: buckets };
}