UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

90 lines (89 loc) 4.46 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPieMetricSeries = exports.getPieBucketSeries = void 0; var lodash_1 = require("lodash"); var LegendColorPanel_1 = require("@qn-pandora/pandora-app-component/es/components/LegendColorPanel"); var constants_1 = require("./constants"); var type_1 = require("../../../constants/language/base/type"); var language_1 = require("../../../services/language"); var constants_2 = require("../../../constants"); var transform_1 = require("../../ChartStyleConfig/PieChart/transform"); function getPieBucketSeries(themeOption, dataset, metrics, buckets, isDateSeries, maxSlices, displayColors, sectorOffset, colorMode, sort) { if (metrics.length === 0 || buckets.length === 0) { var noData = [constants_1.noDataSeries()].map(function (data) { return (__assign(__assign({}, data), { name: language_1.formatString(data.name), data: data.data.map(function (item) { return (__assign(__assign({}, item), { name: language_1.formatString(item.name) })); }) })); })[0]; return noData; } var data = transform_1.getPieData(dataset, metrics, buckets, isDateSeries, maxSlices, sort); var colors = transform_1.getPieBucketColorWithData(themeOption, constants_2.ChartType.Pie, data, displayColors, colorMode); return { name: buckets[0], type: 'pie', data: data.map(function (item) { var color = lodash_1.find(colors, function (colorItem) { return colorItem.name === item.name; }); return __assign(__assign({}, item), { itemStyle: { normal: { color: color.color, borderWidth: sectorOffset } } }); }) }; } exports.getPieBucketSeries = getPieBucketSeries; function getPieMetricSeries(themeOption, dataset, metrics, maxSlices, colors, sectorOffset, colorMode) { if (colors === void 0) { colors = []; } var rows = dataset.rows, fields = dataset.fields; if (metrics.length === 0 || rows.length === 0) { var noData = [constants_1.noDataSeries()].map(function (data) { return (__assign(__assign({}, data), { name: language_1.formatString(data.name), data: data.data.map(function (item) { return (__assign(__assign({}, item), { name: language_1.formatString(item.name) })); }) })); })[0]; return noData; } var data = metrics.map(function (metric) { var line = rows[0]; var index = lodash_1.findIndex(fields, function (field) { return field.key === metric; }); return { value: line[index] ? lodash_1.toNumber(line[index][0]) || 0 : 0, name: metric }; }); // 排序 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: language_1.formatString(type_1.BaseLocale.other), value: otherValue }); } var defaultColor = lodash_1.get(LegendColorPanel_1.colorMap, colorMode) || lodash_1.get(themeOption, ['pie', 'color']) || themeOption.color; return { name: '', type: 'pie', data: data.map(function (item, index) { var colorIndex = lodash_1.findIndex(colors, function (color) { return color.name === item.name; }); return __assign(__assign({}, item), { itemStyle: { normal: { color: colors && colorIndex !== -1 ? colors[colorIndex].color : defaultColor[index % defaultColor.length], borderWidth: sectorOffset } } }); }) }; } exports.getPieMetricSeries = getPieMetricSeries;