@qn-pandora/pandora-visualization
Version:
Pandora 通用可视化库
157 lines (156 loc) • 5.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFirstUsefulMetric = exports.getFirstUsefulBucket = exports.getFirstUsefulField = exports.updateMetricBucketBySingleField = exports.updateMetricBucket = exports.getTimeFields = exports.getField = exports.getFieldIndex = exports.getMetrics = exports.getBuckets = exports.getDataOfField = exports.getBucketMetricNameByFields = void 0;
var lodash_1 = require("lodash");
var app_sdk_1 = require("@qn-pandora/app-sdk");
/**
* 根据field的类型获取对应的buckets 和 metrics
* @param fields 所有的fields
*/
function getBucketMetricNameByFields(fields) {
return {
buckets: getBuckets(fields).map(function (field) { return field.key; }),
metrics: getMetrics(fields).map(function (field) { return field.key; })
};
}
exports.getBucketMetricNameByFields = getBucketMetricNameByFields;
/**
* 根据field的名字, 获取对应列的数据
* @param field field名称
* @param dataset 数据集
* @param isCompare 是否为对比数据
*/
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 = lodash_1.findIndex(fields, function (item) { return item && item.key === field; });
return fieldIndex > -1
? rows.map(function (row) {
return isCompare ? lodash_1.get(row, [fieldIndex, 1]) : lodash_1.get(row, [fieldIndex, 0]);
})
: [];
}
exports.getDataOfField = getDataOfField;
/**
* 根据field的类型获取对应的buckets
* @param fields 所有的fields
*/
function getBuckets(fields) {
return fields.filter(function (field) { return field.type === 'bucket'; });
}
exports.getBuckets = getBuckets;
/**
* 根据field的类型获取对应的metrics
* @param fields 所有的fields
*/
function getMetrics(fields) {
return fields.filter(function (field) { return field.type === 'metric'; });
}
exports.getMetrics = getMetrics;
/**
* 获取对应field在所有fields中的索引
* @param field 当前field
* @param fields 所有fields
*/
function getFieldIndex(field, fields) {
return lodash_1.findIndex(fields, function (item) { return item && item.key === field; });
}
exports.getFieldIndex = getFieldIndex;
/**
* 获取对应field对象
* @param field 当前field
* @param fields 所有fields
*/
function getField(field, fields) {
return lodash_1.find(fields, function (item) { return item && item.key === field; });
}
exports.getField = getField;
/**
* 根据field的类型获取 时间类型的field
* @param fields
* @returns
*/
function getTimeFields(fields) {
return fields.filter(function (field) { return field.fieldType === app_sdk_1.EChartFieldType.Time; });
}
exports.getTimeFields = getTimeFields;
/**
* 更新metrics、buckets
* 在metrics 或 buckets 中把对应的 field 删除
* @param metrics 当前的指标数组
* @param buckets 当前的分组数组
* @param field 需要去除的字段 或 字段数值
*/
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 };
}
exports.updateMetricBucket = updateMetricBucket;
/**
* 更新metrics、buckets
* 在metrics 或 buckets 中把对应的 field 删除
* @param metrics 当前的指标数组
* @param buckets 当前的分组数组
* @param field 需要去除的字段
*/
function updateMetricBucketBySingleField(metrics, buckets, field) {
var bucketIndex = lodash_1.findIndex(buckets, function (bucket) { return bucket === field; });
if (bucketIndex !== -1) {
buckets.splice(bucketIndex, 1);
return;
}
var metricIndex = lodash_1.findIndex(metrics, function (metric) { return metric === field; });
if (metricIndex !== -1) {
metrics.splice(metricIndex, 1);
}
return { metrics: metrics, buckets: buckets };
}
exports.updateMetricBucketBySingleField = updateMetricBucketBySingleField;
/**
* 获取第一个有效的字段
*/
function getFirstUsefulField(buckets, metrics, fieldNames) {
if (fieldNames === void 0) { fieldNames = []; }
if (buckets.length > 0) {
var splitBucket = buckets.splice(0, 1);
return splitBucket[0];
}
else if (metrics.length > 0) {
var splitMetric = metrics.splice(0, 1);
return splitMetric[0];
}
else if (fieldNames.length > 0) {
return fieldNames[0];
}
else {
return '';
}
}
exports.getFirstUsefulField = getFirstUsefulField;
/**
* 获取第一个有效的分组
*/
function getFirstUsefulBucket(buckets) {
if (buckets.length > 0) {
var splitBucket = buckets.splice(0, 1);
return splitBucket[0];
}
else {
return '';
}
}
exports.getFirstUsefulBucket = getFirstUsefulBucket;
/**
* 获取第一个有效的指标
*/
function getFirstUsefulMetric(metrics) {
if (metrics.length > 0) {
var splitMetric = metrics.splice(0, 1);
return splitMetric[0];
}
else {
return '';
}
}
exports.getFirstUsefulMetric = getFirstUsefulMetric;