DevExtreme v24.2 is now available.

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

Your search did not match any results.

React Gauges - Base Value for Range Bar

By default, the RangeBar starts from the beginning of the LinerGauge scale. This demo illustrates how to use the baseValue property to specify the scale value from which the RangeBar should be drawn.

Backend API
import React from 'react'; import { CircularGauge, Geometry, Scale, Label, ValueIndicator, } from 'devextreme-react/circular-gauge'; import { LinearGauge, Geometry as LinearGaugeGeometry, Scale as LinearGaugeScale, Label as LinearGaugeLabel, ValueIndicator as LinearValueIndicator, } from 'devextreme-react/linear-gauge'; function customizeText({ valueText }) { return `${valueText}°`; } function App() { return ( <div> <div className="long-title"> <h3>Deviation from the Target (Horizontal and Vertical)</h3> </div> <div id="gauge-demo"> <CircularGauge id="c1" value={20} > <Geometry startAngle={135} endAngle={45} /> <Scale startValue={45} endValue={-45} tickInterval={45}> <Label customizeText={customizeText} /> </Scale> <ValueIndicator baseValue={0} type="rangeBar" /> </CircularGauge> <LinearGauge id="c2" value={-10} > <LinearGaugeGeometry orientation="vertical" /> <LinearGaugeScale startValue={-45} endValue={45} tickInterval={45}> <LinearGaugeLabel customizeText={customizeText} /> </LinearGaugeScale> <LinearValueIndicator baseValue={0} /> </LinearGauge> </div> </div> ); } export default App;
import React from 'react'; import { CircularGauge, Geometry, Scale, Label, ValueIndicator, } from 'devextreme-react/circular-gauge'; import { LinearGauge, Geometry as LinearGaugeGeometry, Scale as LinearGaugeScale, Label as LinearGaugeLabel, ValueIndicator as LinearValueIndicator, } from 'devextreme-react/linear-gauge'; function customizeText({ valueText }) { return `${valueText}°`; } function App() { return ( <div> <div className="long-title"> <h3>Deviation from the Target (Horizontal and Vertical)</h3> </div> <div id="gauge-demo"> <CircularGauge id="c1" value={20} > <Geometry startAngle={135} endAngle={45} /> <Scale startValue={45} endValue={-45} tickInterval={45} > <Label customizeText={customizeText} /> </Scale> <ValueIndicator baseValue={0} type="rangeBar" /> </CircularGauge> <LinearGauge id="c2" value={-10} > <LinearGaugeGeometry orientation="vertical" /> <LinearGaugeScale startValue={-45} endValue={45} tickInterval={45} > <LinearGaugeLabel customizeText={customizeText} /> </LinearGaugeScale> <LinearValueIndicator baseValue={0} /> </LinearGauge> </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'), );
window.exports = window.exports || {}; window.config = { transpiler: 'ts', typescriptOptions: { module: 'system', emitDecoratorMetadata: true, experimentalDecorators: true, jsx: 'react', }, meta: { 'react': { 'esModule': true, }, 'typescript': { 'exports': 'ts', }, 'devextreme/time_zone_utils.js': { 'esModule': true, }, 'devextreme/localization.js': { 'esModule': true, }, 'devextreme/viz/palette.js': { 'esModule': true, }, 'openai': { 'esModule': true, }, }, paths: { 'npm:': 'https://unpkg.com/', 'bundles:': '../../../../bundles/', 'externals:': '../../../../bundles/externals/', }, defaultExtension: 'js', map: { 'ts': 'npm:plugin-typescript@8.0.0/lib/plugin.js', 'typescript': 'npm:typescript@4.2.4/lib/typescript.js', 'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js', 'react': 'npm:react@17.0.2/umd/react.development.js', 'react-dom': 'npm:react-dom@17.0.2/umd/react-dom.development.js', 'prop-types': 'npm:prop-types/prop-types.js', 'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js', 'luxon': 'npm:luxon@3.4.4/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign', 'devextreme': 'npm:devextreme@link:../../packages/devextreme/artifacts/npm/devextreme/cjs', 'devextreme-react': 'npm:devextreme-react@link:../../packages/devextreme-react/npm/cjs', 'devextreme-quill': 'npm:devextreme-quill@1.7.1/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.2.5/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@4.1.54/dist/dx-gantt.js', '@devextreme/runtime': 'npm:@devextreme/runtime@3.0.12', 'inferno': 'npm:inferno@7.4.11/dist/inferno.min.js', 'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js', 'inferno-create-element': 'npm:inferno-create-element@7.4.11/dist/inferno-create-element.min.js', 'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js', 'inferno-hydrate': 'npm:inferno-hydrate/dist/inferno-hydrate.min.js', 'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js', 'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js', 'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js', 'devextreme-cldr-data': 'npm:devextreme-cldr-data@1.0.3', // SystemJS plugins 'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js', // Prettier 'prettier/standalone': 'npm:prettier@2.8.8/standalone.js', 'prettier/parser-html': 'npm:prettier@2.8.8/parser-html.js', }, packages: { 'devextreme': { defaultExtension: 'js', }, 'devextreme-react': { main: 'index.js', }, 'devextreme/events/utils': { main: 'index', }, 'devextreme/localization/messages': { format: 'json', defaultExtension: 'json', }, 'devextreme/events': { main: 'index', }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js', }, }, packageConfigPaths: [ 'npm:@devextreme/*/package.json', 'npm:@devextreme/runtime@3.0.12/inferno/package.json', ], babelOptions: { sourceMaps: false, stage0: true, react: true, }, }; System.config(window.config);
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.js'; ReactDOM.render(<App />, document.getElementById('app'));
<!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="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/24.2.3/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="https://unpkg.com/core-js@2.6.12/client/shim.min.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import("./index.tsx"); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"></div> </div> </body> </html>
#gauge-demo { height: 440px; width: 100%; } #c1 { width: 70%; height: 100%; float: left; } #c2 { width: 30%; height: 100%; float: left; } .long-title h3 { font-family: 'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana; font-weight: 200; font-size: 28px; text-align: center; margin-bottom: 20px; }