in modules/core/src/components/hud/meter-widget.js [137:200]
_renderGauge(cmdData, msrData, theme) {
const {min, max, transformValue, style} = this.props;
const {arcRadius: r = 50, arcWidth: w = 8} = style;
const padding = 8;
if (r <= w / 2) {
return null;
}
const cmdValue = transformValue((cmdData && cmdData.data && cmdData.data.variable) || 0);
const msrValue = transformValue((msrData.data && msrData.data.variable) || 0);
const msr = clamp((msrValue - min) / (max - min), 0, 1);
const cmd = clamp((cmdValue - min) / (max - min), 0, 1);
const zero = clamp((0 - min) / (max - min), 0, 1);
const msrTransform = getTransform(r + padding, r + padding, msr * 180 - 90);
const cmdTransform = getTransform(r + padding, r + padding, cmd * 180 - 90);
const zeroTransform = getTransform(r + padding, r + padding, zero * 180 - 90);
return (
<svg width={(r + padding) * 2} height={r + padding * 2}>
<GuageArc
d={`M ${padding + w / 2} ${r + padding} a ${r - w / 2} ${r - w / 2} 1 1 1 ${r * 2 - w} 0`}
fill="none"
strokeWidth={w}
theme={theme}
userStyle={style.arc}
/>
<g transform={zeroTransform}>
<ZeroMarker
cx={r + padding}
cy={padding - 4}
r={2}
theme={theme}
userStyle={style.zeroMarker}
/>
</g>
{cmdData && (
<g transform={cmdTransform}>
<CmdMarker
transform={`translate(${r + padding} ${padding})`}
d={`M0,${w} L${-w / 2},0 L${w / 2},0z`}
theme={theme}
userStyle={style.cmdMarker}
/>
</g>
)}
{msrData && (
<g transform={msrTransform}>
<GuageHand
x1={r + padding}
y1={r + padding}
x2={r + padding}
y2={padding + w + 4}
theme={theme}
userStyle={style.hand}
/>
</g>
)}
</svg>
);
}