@qn-pandora/pandora-visualization
Version:
Pandora 通用可视化库
122 lines (121 loc) • 6.45 kB
JavaScript
;
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);
}