|
|
@@ -149,16 +149,42 @@ export class Gauge extends PureComponent<Props> {
|
|
|
return thresholds[0].color;
|
|
|
}
|
|
|
|
|
|
- const atThreshold = thresholds.filter(threshold => (value as number) < threshold.value);
|
|
|
+ const atThreshold = thresholds.filter(threshold => (value as number) === threshold.value)[0];
|
|
|
+ if (atThreshold) {
|
|
|
+ return atThreshold.color;
|
|
|
+ }
|
|
|
+
|
|
|
+ const belowThreshold = thresholds.filter(threshold => (value as number) > threshold.value);
|
|
|
|
|
|
- if (atThreshold.length > 0) {
|
|
|
- const nearestThreshold = atThreshold.sort((t1, t2) => t1.value - t2.value)[0];
|
|
|
+ if (belowThreshold.length > 0) {
|
|
|
+ const nearestThreshold = belowThreshold.sort((t1, t2) => t2.value - t1.value)[0];
|
|
|
return nearestThreshold.color;
|
|
|
}
|
|
|
|
|
|
return BasicGaugeColor.Red;
|
|
|
}
|
|
|
|
|
|
+ getFormattedThresholds() {
|
|
|
+ const { maxValue, minValue, thresholds } = this.props;
|
|
|
+
|
|
|
+ const thresholdsSortedByIndex = [...thresholds].sort((t1, t2) => t1.index - t2.index);
|
|
|
+ const lastThreshold = thresholdsSortedByIndex[thresholdsSortedByIndex.length - 1];
|
|
|
+
|
|
|
+ const formattedThresholds = [
|
|
|
+ ...thresholdsSortedByIndex.map(threshold => {
|
|
|
+ if (threshold.index === 0) {
|
|
|
+ return { value: minValue, color: threshold.color };
|
|
|
+ }
|
|
|
+
|
|
|
+ const previousThreshold = thresholdsSortedByIndex[threshold.index - 1];
|
|
|
+ return { value: threshold.value, color: previousThreshold.color };
|
|
|
+ }),
|
|
|
+ { value: maxValue, color: lastThreshold.color },
|
|
|
+ ];
|
|
|
+
|
|
|
+ return formattedThresholds;
|
|
|
+ }
|
|
|
+
|
|
|
draw() {
|
|
|
const {
|
|
|
maxValue,
|
|
|
@@ -166,7 +192,6 @@ export class Gauge extends PureComponent<Props> {
|
|
|
timeSeries,
|
|
|
showThresholdLabels,
|
|
|
showThresholdMarkers,
|
|
|
- thresholds,
|
|
|
width,
|
|
|
height,
|
|
|
stat,
|
|
|
@@ -190,17 +215,6 @@ export class Gauge extends PureComponent<Props> {
|
|
|
const thresholdMarkersWidth = gaugeWidth / 5;
|
|
|
const thresholdLabelFontSize = fontSize / 2.5;
|
|
|
|
|
|
- const formattedThresholds = [
|
|
|
- { value: minValue, color: thresholds.length === 1 ? thresholds[0].color : BasicGaugeColor.Green },
|
|
|
- ...thresholds.map((threshold, index) => {
|
|
|
- return {
|
|
|
- value: threshold.value,
|
|
|
- color: thresholds[index].color,
|
|
|
- };
|
|
|
- }),
|
|
|
- { value: maxValue, color: thresholds.length === 1 ? thresholds[0].color : BasicGaugeColor.Red },
|
|
|
- ];
|
|
|
-
|
|
|
const options = {
|
|
|
series: {
|
|
|
gauges: {
|
|
|
@@ -217,7 +231,7 @@ export class Gauge extends PureComponent<Props> {
|
|
|
layout: { margin: 0, thresholdWidth: 0 },
|
|
|
cell: { border: { width: 0 } },
|
|
|
threshold: {
|
|
|
- values: formattedThresholds,
|
|
|
+ values: this.getFormattedThresholds(),
|
|
|
label: {
|
|
|
show: showThresholdLabels,
|
|
|
margin: thresholdMarkersWidth + 1,
|