DevExtreme v26.1 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.

React Gauges - Bar Gauge

This demo illustrates how to bind an array of values to the BarGauge. Since an array can not be bound to a field as a regular value, it is bound as a computed one.

Backend API
import React, { useCallback, useState } from 'react'; import { BarGauge, Label } from 'devextreme-react/bar-gauge'; import { SelectBox } from 'devextreme-react/select-box'; import { colors, colorLabel } from './data.ts'; const palette = ['#ff0000', '#00ff00', '#0000ff']; function getBasicColors(value: string | any[]) { const code = Number(`0x${value.slice(1)}`); return [ (code >> 16) & 0xff, (code >> 8) & 0xff, code & 0xff, ]; } function App() { const [basis, setBasis] = useState(getBasicColors(colors[0].code)); const [currentColor, setCurrentColor] = useState(colors[0].code); const onSelectionChanged = useCallback(({ selectedItem: { code } }) => { setCurrentColor(code); setBasis(getBasicColors(code)); }, [setCurrentColor, setBasis]); return ( <div> <div className="long-title"> <h3>Colors Representation via Basic Colors</h3> </div> <div id="gauge-demo"> <BarGauge id="gauge" startValue={0} endValue={255} palette={palette} values={basis} > <Label visible={false} /> </BarGauge> <div className="action-container"> <SelectBox id="select-color" width={150} inputAttr={colorLabel} dataSource={colors} value={currentColor} displayExpr="name" valueExpr="code" onSelectionChanged={onSelectionChanged} /> <div className="color-box" style={{ backgroundColor: currentColor }}></div> </div> </div> </div> ); } export default App;
import React, { useCallback, useState } from 'react'; import { BarGauge, Label } from 'devextreme-react/bar-gauge'; import { SelectBox } from 'devextreme-react/select-box'; import { colors, colorLabel } from './data.js'; const palette = ['#ff0000', '#00ff00', '#0000ff']; function getBasicColors(value) { const code = Number(`0x${value.slice(1)}`); return [(code >> 16) & 0xff, (code >> 8) & 0xff, code & 0xff]; } function App() { const [basis, setBasis] = useState(getBasicColors(colors[0].code)); const [currentColor, setCurrentColor] = useState(colors[0].code); const onSelectionChanged = useCallback( ({ selectedItem: { code } }) => { setCurrentColor(code); setBasis(getBasicColors(code)); }, [setCurrentColor, setBasis], ); return ( <div> <div className="long-title"> <h3>Colors Representation via Basic Colors</h3> </div> <div id="gauge-demo"> <BarGauge id="gauge" startValue={0} endValue={255} palette={palette} values={basis} > <Label visible={false} /> </BarGauge> <div className="action-container"> <SelectBox id="select-color" width={150} inputAttr={colorLabel} dataSource={colors} value={currentColor} displayExpr="name" valueExpr="code" onSelectionChanged={onSelectionChanged} /> <div className="color-box" style={{ backgroundColor: currentColor }} ></div> </div> </div> </div> ); } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.tsx'; ReactDOM.render( <App />, document.getElementById('app'), );
export const colors = [{ name: 'Amaranth', code: '#e52b50', }, { name: 'Amethyst', code: '#9966cc', }, { name: 'Ash grey', code: '#b2beb5', }, { name: 'Barn red', code: '#7c0a02', }, { name: 'Imperial', code: '#602f6b', }, { name: 'Lemon lime', code: '#e3ff00', }, { name: 'Mountain Meadow', code: '#30ba8f', }, { name: 'Outer Space', code: '#414a4c', }, { name: 'Persian plum', code: '#701c1c', }, { name: 'Seal brown', code: '#321414', }, { name: 'Twilight lavender', code: '#8a496b', }, { name: 'Umber', code: '#635147', }]; export const colorLabel = { 'aria-label': 'Color' };
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.js'; ReactDOM.render(<App />, document.getElementById('app'));
export const colors = [ { name: 'Amaranth', code: '#e52b50', }, { name: 'Amethyst', code: '#9966cc', }, { name: 'Ash grey', code: '#b2beb5', }, { name: 'Barn red', code: '#7c0a02', }, { name: 'Imperial', code: '#602f6b', }, { name: 'Lemon lime', code: '#e3ff00', }, { name: 'Mountain Meadow', code: '#30ba8f', }, { name: 'Outer Space', code: '#414a4c', }, { name: 'Persian plum', code: '#701c1c', }, { name: 'Seal brown', code: '#321414', }, { name: 'Twilight lavender', code: '#8a496b', }, { name: 'Umber', code: '#635147', }, ]; export const colorLabel = { 'aria-label': 'Color' };
<!DOCTYPE html> <html lang="en"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/26.1.5/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="./bundle.css" /> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"></div> </div> <script src="bundles/vendor/react.vendor.js"></script> <script src="./bundle.js"></script> </body> </html>
#gauge-demo { height: 440px; width: 100%; } #gauge { width: 80%; height: 100%; margin-top: 20px; float: left; } .action-container { width: 20%; text-align: left; margin-top: 20px; float: left; } .color-box { width: 40px; height: 40px; margin-top: 20px; } .long-title h3 { font-weight: 200; font-size: 28px; text-align: center; margin-bottom: 20px; }