UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

85 lines (84 loc) 4.08 kB
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); }; import { findIndex, sortBy, sumBy, toNumber, get, find } from 'lodash'; import { colorMap } from '@qn-pandora/pandora-app-component/es/components/LegendColorPanel'; import { noDataSeries } from './constants'; import { BaseLocale } from '../../../constants/language/base/type'; import { formatString } from '../../../services/language'; import { ChartType } from '../../../constants'; import { getPieData, getPieBucketColorWithData } from '../../ChartStyleConfig/PieChart/transform'; export function getPieBucketSeries(themeOption, dataset, metrics, buckets, isDateSeries, maxSlices, displayColors, sectorOffset, colorMode, sort) { if (metrics.length === 0 || buckets.length === 0) { var noData = [noDataSeries()].map(function (data) { return (__assign(__assign({}, data), { name: formatString(data.name), data: data.data.map(function (item) { return (__assign(__assign({}, item), { name: formatString(item.name) })); }) })); })[0]; return noData; } var data = getPieData(dataset, metrics, buckets, isDateSeries, maxSlices, sort); var colors = getPieBucketColorWithData(themeOption, ChartType.Pie, data, displayColors, colorMode); return { name: buckets[0], type: 'pie', data: data.map(function (item) { var color = find(colors, function (colorItem) { return colorItem.name === item.name; }); return __assign(__assign({}, item), { itemStyle: { normal: { color: color.color, borderWidth: sectorOffset } } }); }) }; } export 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 = [noDataSeries()].map(function (data) { return (__assign(__assign({}, data), { name: formatString(data.name), data: data.data.map(function (item) { return (__assign(__assign({}, item), { name: formatString(item.name) })); }) })); })[0]; return noData; } var data = metrics.map(function (metric) { var line = rows[0]; var index = findIndex(fields, function (field) { return field.key === metric; }); return { value: line[index] ? toNumber(line[index][0]) || 0 : 0, name: metric }; }); // 排序 data = sortBy(data, function (series) { return -series.value; }); // 判断data数据如果超过设置的最大切片数,将多余分片归总到其他分类 if (data.length > maxSlices) { var otherData = data.slice(maxSlices); var otherValue = sumBy(otherData, function (series) { return toNumber(series.value) || 0; }); data = data.slice(0, maxSlices).concat({ name: formatString(BaseLocale.other), value: otherValue }); } var defaultColor = get(colorMap, colorMode) || get(themeOption, ['pie', 'color']) || themeOption.color; return { name: '', type: 'pie', data: data.map(function (item, index) { var colorIndex = 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 } } }); }) }; }