UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

98 lines (97 loc) 4.06 kB
import { toNumber, first, last, isNumber } from 'lodash'; import { getRuleColor } from '../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 = first(scale); var max = last(scale); var currentData_1 = toNumber(value); if (isNumber(min) && toNumber(currentData_1) <= min) { return colors[0]; } var index = scale.findIndex(function (item) { return isNumber(item) && toNumber(item) >= toNumber(currentData_1); }); if (index >= 1) { return colors[index - 1]; } if (!isNumber(max) || 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 = first(scale) || gaugeMin; var max = last(scale) || gaugeMax; var currentData_2 = toNumber(value); var percent = (currentData_2 - min) / (max - min); if (isNumber(min) && toNumber(currentData_2) <= min) { return { percent: percent, color: colors[0] }; } var index = scale.findIndex(function (item) { return isNumber(item) && toNumber(item) >= toNumber(currentData_2); }); if (index >= 1) { return { percent: percent, color: colors[index - 1] }; } if (!isNumber(gaugeMax) || toNumber(currentData_2) >= gaugeMax) { return { percent: percent, color: last(colors) }; } } return { percent: 0, color: colors.length ? colors[colors.length - 1] : defaultColor[0] }; } function isValueNumber(value) { return !isNaN(toNumber(value)); } // 获取仪表以及占比颜色 export 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 = (toNumber(currentData) - option.gaugeMin) / (option.gaugeMax - option.gaugeMin); var color = getRuleColor(defaultColor[0], option.gaugeSplitters, colorData); return getColorRange(percent, { color: color }, backgroundColor); } // 数值图颜色 export function getColor(defaultColor, option, value) { if (option.colorMetricIsNumberic) { return getSplitterRangeColor(defaultColor, option.gaugeSplitters, value); } return getRuleColor(defaultColor[0], option.gaugeSplitters, value); }