Base Value for Range Bar
Documentation
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.
Feel free to share demo-related thoughts here.
If you have technical questions, please create a support ticket in the DevExpress Support Center.
Thank you for the feedback!
If you have technical questions, please create a support ticket in the DevExpress Support Center.
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,
},
},
paths: {
'npm:': 'https://unpkg.com/',
},
defaultExtension: 'js',
map: {
'ts': 'npm:plugin-typescript@4.2.4/lib/plugin.js',
'typescript': 'npm:typescript@4.2.4/lib/typescript.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@15.8.1/prop-types.js',
'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js',
'luxon': 'npm:luxon@1.28.1/build/global/luxon.min.js',
'es6-object-assign': 'npm:es6-object-assign@1.1.0',
'devextreme': 'npm:devextreme@23.2.6/cjs',
'devextreme-react': 'npm:devextreme-react@23.2.6/cjs',
'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js',
'devextreme-quill': 'npm:devextreme-quill@1.6.4/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@7.4.11/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.4/standalone.js',
'prettier/parser-html': 'npm:prettier@2.8.4/parser-html.js',
},
packages: {
'devextreme': {
defaultExtension: 'js',
},
'devextreme-react': {
main: 'index.js',
},
'devextreme/events/utils': {
main: 'index',
},
'devextreme/localization/messages': {
format: 'json',
defaultExtension: '',
},
'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>
<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=1.0" />
<link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/23.2.6/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;
}