
Security News
Security Community Slams MIT-linked Report Claiming AI Powers 80% of Ransomware
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.
react-d3-speedometer
Advanced tools
react-d3-speedometer is a react component library for showing speedometer like gauge using d3.

NPM:
npm install --save react-d3-speedometer
Yarn:
yarn add react-d3-speedometer
// import the component
import ReactSpeedometer from "react-d3-speedometer"
// and just use it
<ReactSpeedometer />
| prop | type | default | comments | 
|---|---|---|---|
| value | number | 0 | Make sure your value is between your minValueandmaxValue | 
| minValue | number | 0 | |
| maxValue | number | 1000 | |
| segments | number | 5 | Number of segments in the speedometer. Please note, segmentsis calculated with d3-ticks which is an approximate count that is uniformly spaced between min and max. Please refer to d3-ticks and d3-array ticks for more detailed info. | 
| maxSegmentLabels | number | value from 'segments' prop | Limit the number of segment labels to displayed. This is useful for acheiving a gradient effect by giving arbitrary large number of segmentsand limiting the labels with this prop. See Live Example. Please note,maxSegmentLabelsis calculated with d3-ticks which is an approximate count that is uniformly spaced between min and max. Please refer to d3-ticks and d3-array ticks for more detailed info. | 
| forceRender | boolean | false | After initial rendering/mounting, when props change, only the valueis changed and animated to maintain smooth visualization. But, if you want to force rerender the whole component like change in segments, colors, dimensions etc, you can use this option to force rerender of the whole component on props change. | 
| width | number | 300 | diameter of the speedometer and the width of the svg element | 
| height | number | 300 | height of the svg element. Height of the speedometer is always half the width since it is a semi-circle. For fluid width, please refere to fluidWidthconfig | 
| fluidWidth | boolean | false | If truetakes the width of the parent component. See Live Example for more details | 
| needleColor | string | steelblue | Should be a valid color code - colorname, hexadecimal name or rgb value. Should be a valid input for d3.interpolateHsl | 
| startColor | string | #FF471A | Should be a valid color code - colorname, hexadecimal name or rgb value. Should be a valid input for d3.interpolateHsl | 
| endColor | string | #33CC33 | Should be a valid color code - colorname, hexadecimal name or rgb value. Should be a valid input for d3.interpolateHsl | 
| segmentColors | array (of colors) | [] | Custom segment colors can be given with this option. Should be an array of valid color codes. If this option is given startColor and endColor options will be ignored. | 
| needleTransition | string | easeQuadInOut | d3-easing-identifiers - easeLinear, easeQuadIn, easeQuadOut, easeQuadInOut, easeCubicIn, easeCubicOut, easeCubicInOut, easePolyIn, easePolyOut, easePolyInOut, easeSinIn, easeSinOut, easeSinInOut, easeExpIn, easeExpOut, easeExpInOut, easeCircleIn, easeCircleOut, easeCircleInOut, easeBounceIn, easeBounceOut, easeBounceInOut, easeBackIn, easeBackOut, easeBackInOut, easeElasticIn, easeElasticOut, easeElasticInOut, easeElastic | 
| needleTransitionDuration | number | 500 | Time in milliseconds. | 
| needleHeightRatio | float (between 0 and 1) | 0.9 | Control the height of the needle by giving a number/float between 0and1. Default height ratio is0.9. | 
| ringWidth | number | 60 | Width of the speedometer ring. | 
| textColor | string | #666 | Should be a valid color code - colorname, hexadecimal name or rgb value. Used for both showing the current value and the segment values | 
| valueFormat | string | should be a valid format for d3-format. By default, no formatter is used. You can use a valid d3 format identifier (for eg: dto convert float to integers), to format the values. Note: This formatter affects all the values (current value, segment values) displayed in the speedometer | |
| currentValueText | string | ${value} | Should be provided a string which should have ${value} placeholder which will be replaced with current value. By default, current value is shown (formatted with valueFormat). For example, if current Value is 333 if you would like to showCurrent Value: 333, you should provide a stringCurrent Value: ${value}. See Live Example | 
| currentValuePlaceholderStyle | string | ${value} | Should be provided a placeholder string which will be replaced with current value in currentValueTextProp. For example: you can use ruby like interpolation by giving following props -<ReactSpeedometer    currentValueText="Current Value: #{value}" currentValuePlaceholderStyle={"#{value}"} />. This is also helpful if you faceno-template-curly-in-stringeslint warnings and would like to use different placeholder for current value | 
| customSegmentStops | array | [] | Array of values starting at minvalue, and ending atmaxvalue. This configuration is useful if you would like to split the segments at custom points or have unequal segments at preferred values. If the values does not begin and end withminandmaxvalue respectively, an error will be thrown. This configuration will overridesegmentsprop, since total number of segments will belength - 1ofcustomSegmentProps. For example,[0, 50, 75, 100]value will have three segments -0-50,50-75,75-100. See Live Example | 
| labelFontSize | string | 14px | Font size for segment labels/legends | 
| valueTextFontSize | string | 16px | Font size for current value text | 
You can view Live Examples here
<ReactSpeedometer />
<ReactSpeedometer
  maxValue={500}
  value={473}
  needleColor="red"
  startColor="green"
  segments={10}
  endColor="blue"
/>
<ReactSpeedometer
  value={333}
  segments={5}
  segmentColors={[
    "#bf616a",
    "#d08770",
    "#ebcb8b",
    "#a3be8c",
    "#b48ead",
  ]}
  // startColor will be ignored
  // endColor will be ignored
/>
  <ReactSpeedometer
    customSegmentStops={[0, 500, 750, 900, 1000]}
    segmentColors={["firebrick", "tomato", "gold", "limegreen"]}
    value={333}
  />
  // `segments` prop will be ignored since it will be calculated from `customSegmentStops`
  // In this case there will be `4` segments (0-500, 500-750, 750-900, 900-1000)
/>
// Speedometer will take the width of the parent div (500)
// any width passed will be ignored
<div style={{
  width: "500px",
  height: "300px",
  background: "#EFEFEF"
}}>
  <ReactSpeedometer
    fluidWidth={true}
    minValue={100}
    maxValue={500}
    value={473}
    needleColor="steelblue"
  />
</div>
<ReactSpeedometer
  value={333}
  needleColor="steelblue"
  needleTransitionDuration={4000}
  needleTransition="easeElastic"
/>
// By default, when props change, only the value prop is updated and animated. 
// This is to maintain smooth visualization and to ignore breaking appearance changes like segments, colors etc. 
// You can override this behaviour by giving forceRender: true
// render a component initially
<ReactSpeedometer
  width={200}
  height={200}
/>
// Now, if given forceRender: true, and change the appearance all together, the component will rerender completely on props change
<ReactSpeedometer
  forceRender={true}
  segments={15}
  width={500}
  height={500}
/>
<ReactSpeedometer
  value={333}
  needleHeightRatio={0.7}
/>
You can give a value between 0 and 1 to control the needle height.
<ReactSpeedometer
  value={333}
  maxSegmentLabels={5}
  segments={1000}
/>
react-d3-speedometer comes with a test suite using enzyme.
// navigate to root folder and run
npm test
// or 'yarn test' if you are using yarn
v0.7.0. Live Examplev0.6.0. Live Examplereact-d3-speedometer was started as a react port of the following d3 snippet - http://bl.ocks.org/msqr/3202712. Component template bootstrapped with React CDK. Also, many thanks to d3 and react ecosystem contributors.
PRs are welcome. Please create a issue/bugfix/feature branch and create an issue with your branch details. Probably I will create a similar branch in the upstream repo so that PRs can be raised against that branch instead of master.
0.x versions are compatible with React & React DOM Versions (16.x)
For every subsequent major react upgrade, react-d3-speedometer will be bumped to next major versions. For example 1.x will be compatible with React 17.x so on and so forth ...For similar library for VueJS, please check out vue-speedometer
FAQs
React library for showing speedometer like gauge using d3.
The npm package react-d3-speedometer receives a total of 16,813 weekly downloads. As such, react-d3-speedometer popularity was classified as popular.
We found that react-d3-speedometer demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.

Security News
Ruby's creator Matz assumes control of RubyGems and Bundler repositories while former maintainers agree to step back and transfer all rights to end the dispute.

Research
/Security News
Socket researchers found 10 typosquatted npm packages that auto-run on install, show fake CAPTCHAs, fingerprint by IP, and deploy a credential stealer.