UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

122 lines (121 loc) 6.45 kB
"use strict"; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = (this && this.__spread) || function () { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.toTwdColors = exports.getColors = void 0; var lodash_1 = require("lodash"); var LegendColorPanel_1 = require("@qn-pandora/pandora-app-component/es/components/LegendColorPanel"); var two_d_1 = require("../../components/Charts/transforms/two-d"); var color_1 = require("../../components/Charts/transforms/color"); var chart_style_1 = require("../../constants/chart-style"); var chart_style_2 = require("../../constants/chart-style"); function getColors(themeOption, dataset, chartStyleService) { var chartType = chartStyleService.chartType, colorFields = chartStyleService.colors.fields, mainAxisField = chartStyleService.mainAxis.field, _a = chartStyleService.crossAxis1, originCrossAxisFields = _a.fields, subFields = _a.subFields, fieldsGetter = _a.fieldsGetter, _b = chartStyleService.crossAxis2, crossAxis2Fields = _b.fields, y2Buckets = _b.y2Buckets, useCrossAxis2 = chartStyleService.useCrossAxis2, displayColors = chartStyleService.displayColors, colorMode = chartStyleService.colorMode; var crossAxisFields = __spread(originCrossAxisFields, ((fieldsGetter === null || fieldsGetter === void 0 ? void 0 : fieldsGetter(dataset.fields)) || [])); var showMetricInName = __spread(lodash_1.uniq(crossAxisFields), (useCrossAxis2 ? lodash_1.uniq(crossAxis2Fields) : []), subFields).length > 1; // 主y轴 var baseData = two_d_1.getSeriesFromDataset(dataset, colorFields, mainAxisField, crossAxisFields, [], showMetricInName); var baseColors = exports.toTwdColors(themeOption, chartType, baseData, displayColors, false, 0, colorMode); if (chartType === chart_style_1.ChartType.LineBar) { // 主y轴中叠加的折线 var subData = two_d_1.getSeriesFromDatasetWithoutGroup(dataset, mainAxisField, subFields || [], []); var subColors = exports.toTwdColors(themeOption, chartType, subData, displayColors, true, baseData.length, colorMode); return __spread(baseColors, subColors); } if (chartType === chart_style_1.ChartType.LineBarY2 || chartType === chart_style_1.ChartType.LineY2) { // 次y轴data var overlapData = two_d_1.getSeriesFromDataset(dataset, y2Buckets, mainAxisField, crossAxis2Fields); var realOverlapData = chartType === chart_style_1.ChartType.LineBarY2 ? overlapData.map(function (serie) { return serie.map(function (item) { item.name += chart_style_2.OVERLAP_LINE_SUFFIX; return item; }); }) : overlapData; var overlapColors = exports.toTwdColors(themeOption, chartType, realOverlapData, displayColors, chartType === chart_style_1.ChartType.LineBarY2, baseData.length, colorMode); return __spread(baseColors, overlapColors); } return __spread(baseColors); } exports.getColors = getColors; var toTwdColors = function (themeOption, chartType, data, displayColors, isOverlap, length, colorMode) { if (data === void 0) { data = []; } if (isOverlap === void 0) { isOverlap = false; } if (length === void 0) { length = 0; } if (data) { var defaultColors_1 = getDefaultColors(themeOption, chartType, colorMode); return data.map(function (item, index) { var name = lodash_1.get(item, [0, 'name']) || ''; var fieldType = lodash_1.get(item, [0, 'fieldType']) || ''; var color = lodash_1.find(displayColors, function (color) { return color.name === name; }); var realIndex = index + length; var defaultColor = defaultColors_1[realIndex % defaultColors_1.length]; return { name: name, fieldType: fieldType, isOverlap: isOverlap, color: color ? color.color : defaultColor ? "rgb(" + defaultColor.r + "," + defaultColor.g + "," + defaultColor.b + ")" : undefined, isCustomColor: lodash_1.isUndefined(color === null || color === void 0 ? void 0 : color.isCustomColor) ? true : color === null || color === void 0 ? void 0 : color.isCustomColor }; }); } return []; }; exports.toTwdColors = toTwdColors; // 获取默认的颜色组 function getDefaultColors(themeOption, chartType, colorMode) { switch (chartType) { case chart_style_1.ChartType.Line: case chart_style_1.ChartType.StackLine: case chart_style_1.ChartType.PercentageLine: case chart_style_1.ChartType.Area: case chart_style_1.ChartType.PercentageArea: case chart_style_1.ChartType.StackArea: case chart_style_1.ChartType.LineY2: chartType = chart_style_1.ChartType.Line; break; case chart_style_1.ChartType.Bar: case chart_style_1.ChartType.StackBar: case chart_style_1.ChartType.PercentageBar: case chart_style_1.ChartType.VerticalBar: case chart_style_1.ChartType.StackVerticalBar: case chart_style_1.ChartType.PercentageVerticalBar: case chart_style_1.ChartType.LineBar: case chart_style_1.ChartType.LineBarY2: chartType = chart_style_1.ChartType.Bar; break; default: } var defaultColors = lodash_1.get(LegendColorPanel_1.colorMap, colorMode) || lodash_1.get(themeOption, [chartType, 'color']); var twodColor = lodash_1.get(themeOption, 'twodColor'); return defaultColors && defaultColors.length ? defaultColors.map(color_1.hexToRgb) : twodColor && twodColor.length ? twodColor.map(color_1.hexToRgb) : themeOption.color.map(color_1.hexToRgb); }