123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import { includes } from 'lodash';
- import { scaleLog } from 'd3-scale';
- import React from 'react';
- import { formatMetricSvg } from './string-utils';
- import { colors } from './color-utils';
- export function getClipPathDefinition(clipId, height, radius) {
- const barHeight = 1 - (2 * height); // in the interval [-1, 1]
- return (
- <defs>
- <clipPath id={clipId} transform={`scale(${2 * radius})`}>
- <rect width={2} height={2} x={-1} y={barHeight} />
- </clipPath>
- </defs>
- );
- }
- //
- // loadScale(1) == 0.5; E.g. a nicely balanced system :).
- const loadScale = scaleLog().domain([0.01, 100]).range([0, 1]);
- export function getMetricValue(metric) {
- if (!metric) {
- return { formattedValue: 'n/a', height: 0, value: null };
- }
- const m = metric.toJS();
- const { value } = m;
- let valuePercentage = value === 0 ? 0 : value / m.max;
- let { max } = m;
- if (includes(['load1', 'load5', 'load15'], m.id)) {
- valuePercentage = loadScale(value);
- max = null;
- }
- let displayedValue = Number(value);
- if (displayedValue > 0 && (!max || displayedValue < max)) {
- const baseline = 0.1;
- displayedValue = (valuePercentage * (1 - (baseline * 2))) + baseline;
- } else if (displayedValue >= m.max && displayedValue > 0) {
- displayedValue = 1;
- }
- return {
- formattedValue: formatMetricSvg(value, m),
- hasMetric: value !== null,
- height: displayedValue
- };
- }
- export function getMetricColor(metric) {
- const metricId = typeof metric === 'string'
- ? metric
- : metric && metric.get('id');
- if (/mem/.test(metricId)) {
- return 'steelBlue';
- } if (/cpu/.test(metricId)) {
- return colors('cpu').toString();
- } if (/files/.test(metricId)) {
- // purple
- // return '#9467bd';
- return '#ff4949'
- } if (/load/.test(metricId)) {
- return colors('load').toString();
- }if (/error/.test(metricId)||/failed/.test(metricId)) {
- //错误是红色
- return '#ff4949';
- }
- //原先颜色默认颜色
- // return 'steelBlue';
- return '#33CCA2'
- }
|