UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

89 lines (88 loc) 3.1 kB
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 }; }