UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

103 lines (102 loc) 4.46 kB
"use strict"; 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;