UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

104 lines (103 loc) 4.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPieBucketColorWithData = exports.getPieData = exports.getPieBucketColors = exports.getMetricColors = void 0; var lodash_1 = require("lodash"); var app_sdk_1 = require("@qn-pandora/app-sdk"); var LegendColorPanel_1 = require("@qn-pandora/pandora-app-component/es/components/LegendColorPanel"); var services_1 = require("../../../services"); var type_1 = require("../../../constants/language/base/type"); var normalizeTimeFormat_1 = require("../../../utils/normalizeTimeFormat"); function getMetricColors(themeOption, chartType, currentMetrics, colors, dataset, maxSlices, sort) { // tslint:disable-next-line var data = []; currentMetrics.forEach(function (metric) { if (dataset.rows.length > 0) { var line = dataset.rows[0]; var index = lodash_1.findIndex(dataset.fields, function (field) { return field.key === metric; }); data.push({ value: line[index] ? lodash_1.toNumber(line[index][0]) || 0 : 0, name: metric }); } }); // 排序 if (sort) { data = lodash_1.sortBy(data, function (series) { return -series.value; }); } if (data.length > maxSlices) { var otherData = data.slice(maxSlices); var otherValue = lodash_1.sumBy(otherData, function (series) { return lodash_1.toNumber(series.value) || 0; }); data = data.slice(0, maxSlices).concat({ name: services_1.formatString(type_1.BaseLocale.other), value: otherValue }); } return data.map(function (item, index) { var colorItem = lodash_1.find(colors, function (color) { return color.name === item.name; }); var defaultColor = lodash_1.get(themeOption, [chartType, 'color']) ? lodash_1.get(themeOption, [chartType, 'color']) : themeOption.color; return { name: item.name, color: colorItem ? colorItem.color : defaultColor[index % defaultColor.length] }; }); } exports.getMetricColors = getMetricColors; function getPieBucketColors(themeOption, chartType, dataset, metrics, buckets, maxSlices, colors, colorMode, sort) { var bucketsObj = dataset.fields.filter(function (field) { return lodash_1.findIndex(buckets, function (bucket) { return field.name === bucket; }) !== -1; }); var isDateSeries = !!bucketsObj.find(function (bucket) { return bucket.fieldType === app_sdk_1.EChartFieldType.Time; }); var data = getPieData(dataset, metrics, buckets, isDateSeries, maxSlices, sort); return getPieBucketColorWithData(themeOption, chartType, data, colors, colorMode); } exports.getPieBucketColors = getPieBucketColors; function getPieData(dataset, metrics, buckets, isDateSeries, maxSlices, sort) { var rows = dataset.rows, fields = dataset.fields; var metric = metrics[0]; var bucket = buckets[0]; var data = rows.map(function (line) { var bucketIndex = lodash_1.findIndex(fields, function (field) { return field.key === bucket; }); var metricIndex = lodash_1.findIndex(fields, function (field) { return field.key === metric; }); var name = line[bucketIndex] ? line[bucketIndex][0] : ''; var value = line[metricIndex] ? lodash_1.toNumber(line[metricIndex][0]) || 0 : 0; return { value: value, name: name === null ? 'null' : isDateSeries ? normalizeTimeFormat_1.normalizeTimeFormat(name) : name.toString() }; }); // 排序 if (sort) { data = lodash_1.sortBy(data, function (series) { return -series.value; }); } // 判断data数据如果超过设置的最大切片数,将多余分片归总到其他分类 if (data.length > maxSlices) { var otherData = data.slice(maxSlices); var otherValue = lodash_1.sumBy(otherData, function (series) { return lodash_1.toNumber(series.value) || 0; }); data = data.slice(0, maxSlices).concat({ name: services_1.formatString(type_1.BaseLocale.other), value: otherValue }); } return data; } exports.getPieData = getPieData; function getPieBucketColorWithData(themeOption, chartType, data, colors, colorMode) { var names = lodash_1.uniq(data.map(function (item) { return item.name; })); return names.map(function (name, index) { var color = lodash_1.find(colors, function (color) { return color.name === name; }); var defaultColor = lodash_1.get(LegendColorPanel_1.colorMap, colorMode) || lodash_1.get(themeOption, [chartType, 'color']) || themeOption.color; return { name: name, color: color ? color.color : defaultColor[index % defaultColor.length] }; }); } exports.getPieBucketColorWithData = getPieBucketColorWithData;