@qn-pandora/pandora-visualization
Version:
Pandora 通用可视化库
103 lines (102 loc) • 4.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getColor = exports.getGaugeColor = void 0;
var lodash_1 = require("lodash");
var color_splitter_1 = require("../transforms/color-splitter");
// 数值color range
function getSplitterRangeColor(defaultColor, colorSplitter, value) {
var colorPalette = colorSplitter.colorPalette, _a = colorSplitter.scale, scale = _a === void 0 ? [] : _a;
var colors = colorPalette.value;
if (!scale || !scale.length) {
// 非初始化,没有设置分段显示
return defaultColor[0];
}
else {
if (!colors.length) {
// 初始化有分段数值,但是没有取到颜色
colors = defaultColor.slice(0, scale.length - 1);
}
}
if (isValueNumber(value)) {
var min = lodash_1.first(scale);
var max = lodash_1.last(scale);
var currentData_1 = lodash_1.toNumber(value);
if (lodash_1.isNumber(min) && lodash_1.toNumber(currentData_1) <= min) {
return colors[0];
}
var index = scale.findIndex(function (item) { return lodash_1.isNumber(item) && lodash_1.toNumber(item) >= lodash_1.toNumber(currentData_1); });
if (index >= 1) {
return colors[index - 1];
}
if (!lodash_1.isNumber(max) || lodash_1.toNumber(currentData_1) >= max) {
return colors[colors.length - 1];
}
}
return colors[colors.length - 1];
}
// 仪表单值 colorRange
function getGaugeColorRange(defaultColor, colorSplitter, gaugeMin, gaugeMax, value) {
var colorPalette = colorSplitter.colorPalette, _a = colorSplitter.scale, scale = _a === void 0 ? [] : _a;
var colors = colorPalette.value;
if (!scale || !scale.length) {
// 非初始化,没有设置分段显示
return { percent: 0, color: defaultColor[0] };
}
else {
if (!colors.length) {
// 初始化有分段数值,但是没有取到颜色
colors = defaultColor.slice(0, scale.length - 1);
}
}
if (isValueNumber(value)) {
var min = lodash_1.first(scale) || gaugeMin;
var max = lodash_1.last(scale) || gaugeMax;
var currentData_2 = lodash_1.toNumber(value);
var percent = (currentData_2 - min) / (max - min);
if (lodash_1.isNumber(min) && lodash_1.toNumber(currentData_2) <= min) {
return { percent: percent, color: colors[0] };
}
var index = scale.findIndex(function (item) { return lodash_1.isNumber(item) && lodash_1.toNumber(item) >= lodash_1.toNumber(currentData_2); });
if (index >= 1) {
return { percent: percent, color: colors[index - 1] };
}
if (!lodash_1.isNumber(gaugeMax) || lodash_1.toNumber(currentData_2) >= gaugeMax) {
return { percent: percent, color: lodash_1.last(colors) };
}
}
return {
percent: 0,
color: colors.length ? colors[colors.length - 1] : defaultColor[0]
};
}
function isValueNumber(value) {
return !isNaN(lodash_1.toNumber(value));
}
// 获取仪表以及占比颜色
function getGaugeColor(backgroundColor, defaultColor, option, getColorRange, colorData, currentData) {
if (option.colorMetricIsNumberic) {
var colorValue = getGaugeColorRange(defaultColor, option.gaugeSplitters, option.gaugeMin, option.gaugeMax, colorData);
return getColorRange(colorValue.percent, { color: colorValue.color }, backgroundColor);
}
var _a = option.gaugeSplitters, colorPalette = _a.colorPalette, rules = _a.rules;
var colors = colorPalette.value;
if (!rules ||
!rules.length ||
!colors.length ||
!isValueNumber(currentData)) {
return getColorRange(0, { color: defaultColor[0] }, backgroundColor);
}
var percent = (lodash_1.toNumber(currentData) - option.gaugeMin) /
(option.gaugeMax - option.gaugeMin);
var color = color_splitter_1.getRuleColor(defaultColor[0], option.gaugeSplitters, colorData);
return getColorRange(percent, { color: color }, backgroundColor);
}
exports.getGaugeColor = getGaugeColor;
// 数值图颜色
function getColor(defaultColor, option, value) {
if (option.colorMetricIsNumberic) {
return getSplitterRangeColor(defaultColor, option.gaugeSplitters, value);
}
return color_splitter_1.getRuleColor(defaultColor[0], option.gaugeSplitters, value);
}
exports.getColor = getColor;