|
|
|
@ -149,7 +149,7 @@ export class BarGauge extends PureComponent<Props> { |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
getCellColor(positionValue: TimeSeriesValue): string { |
|
|
|
|
getCellColor(positionValue: TimeSeriesValue): CellColors { |
|
|
|
|
const { thresholds, theme, value } = this.props; |
|
|
|
|
const activeThreshold = getThresholdForValue(thresholds, positionValue); |
|
|
|
|
|
|
|
|
@ -158,17 +158,33 @@ export class BarGauge extends PureComponent<Props> { |
|
|
|
|
|
|
|
|
|
// if we are past real value the cell is not "on"
|
|
|
|
|
if (value === null || (positionValue !== null && positionValue > value)) { |
|
|
|
|
return tinycolor(color) |
|
|
|
|
.setAlpha(0.15) |
|
|
|
|
.toRgbString(); |
|
|
|
|
return { |
|
|
|
|
background: tinycolor(color) |
|
|
|
|
.setAlpha(0.15) |
|
|
|
|
.toRgbString(), |
|
|
|
|
border: 'transparent', |
|
|
|
|
isLit: false, |
|
|
|
|
}; |
|
|
|
|
} else { |
|
|
|
|
return tinycolor(color) |
|
|
|
|
.setAlpha(0.7) |
|
|
|
|
.toRgbString(); |
|
|
|
|
return { |
|
|
|
|
background: tinycolor(color) |
|
|
|
|
.setAlpha(0.85) |
|
|
|
|
.toRgbString(), |
|
|
|
|
backgroundShade: tinycolor(color) |
|
|
|
|
.setAlpha(0.55) |
|
|
|
|
.toRgbString(), |
|
|
|
|
border: tinycolor(color) |
|
|
|
|
.setAlpha(0.9) |
|
|
|
|
.toRgbString(), |
|
|
|
|
isLit: true, |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return 'gray'; |
|
|
|
|
return { |
|
|
|
|
background: 'gray', |
|
|
|
|
border: 'gray', |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
renderLcdMode(valueFormatted: string, valuePercent: number): ReactNode { |
|
|
|
@ -176,8 +192,8 @@ export class BarGauge extends PureComponent<Props> { |
|
|
|
|
|
|
|
|
|
const valueRange = maxValue - minValue; |
|
|
|
|
const maxSize = this.size * BAR_SIZE_RATIO; |
|
|
|
|
const cellSpacing = 4; |
|
|
|
|
const cellCount = 30; |
|
|
|
|
const cellSpacing = 5; |
|
|
|
|
const cellCount = 25; |
|
|
|
|
const cellSize = (maxSize - cellSpacing * cellCount) / cellCount; |
|
|
|
|
const colors = this.getValueColors(); |
|
|
|
|
const valueStyles = this.getValueStyles(valueFormatted, colors.value, this.size - maxSize); |
|
|
|
@ -191,9 +207,11 @@ export class BarGauge extends PureComponent<Props> { |
|
|
|
|
if (orientation === VizOrientation.Horizontal) { |
|
|
|
|
containerStyles.flexDirection = 'row'; |
|
|
|
|
containerStyles.alignItems = 'center'; |
|
|
|
|
valueStyles.marginLeft = '20px'; |
|
|
|
|
} else { |
|
|
|
|
containerStyles.flexDirection = 'column-reverse'; |
|
|
|
|
containerStyles.alignItems = 'center'; |
|
|
|
|
valueStyles.marginBottom = '20px'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const cells: JSX.Element[] = []; |
|
|
|
@ -202,18 +220,26 @@ export class BarGauge extends PureComponent<Props> { |
|
|
|
|
const currentValue = (valueRange / cellCount) * i; |
|
|
|
|
const cellColor = this.getCellColor(currentValue); |
|
|
|
|
const cellStyles: CSSProperties = { |
|
|
|
|
backgroundColor: cellColor, |
|
|
|
|
borderRadius: '2px', |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
if (cellColor.isLit) { |
|
|
|
|
cellStyles.boxShadow = `0 0 4px ${cellColor.border}`; |
|
|
|
|
// cellStyles.border = `1px solid ${cellColor.border}`;
|
|
|
|
|
// cellStyles.background = `${cellColor.backgroundShade}`;
|
|
|
|
|
cellStyles.backgroundImage = `radial-gradient(${cellColor.background} 10%, ${cellColor.backgroundShade})`; |
|
|
|
|
} else { |
|
|
|
|
cellStyles.backgroundColor = cellColor.background; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (orientation === VizOrientation.Horizontal) { |
|
|
|
|
cellStyles.width = `${cellSize}px`; |
|
|
|
|
cellStyles.height = `${height}px`; |
|
|
|
|
cellStyles.marginRight = '4px'; |
|
|
|
|
cellStyles.marginRight = `${cellSpacing}px`; |
|
|
|
|
} else { |
|
|
|
|
cellStyles.height = `${cellSize}px`; |
|
|
|
|
cellStyles.width = `${width}px`; |
|
|
|
|
cellStyles.marginTop = '4px'; |
|
|
|
|
cellStyles.marginTop = `${cellSpacing}px`; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
cells.push(<div style={cellStyles} />); |
|
|
|
@ -235,3 +261,10 @@ interface BarColors { |
|
|
|
|
bar: string; |
|
|
|
|
border: string; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
interface CellColors { |
|
|
|
|
background: string; |
|
|
|
|
backgroundShade?: string; |
|
|
|
|
border: string; |
|
|
|
|
isLit?: boolean; |
|
|
|
|
} |
|
|
|
|