UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

157 lines (156 loc) 5.33 kB
"use strict"; 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;