Your search did not match any results.
Charts

Server-Side Data Processing

Documentation

In many cases, before being handed out to the client, data is processed on the server. The DevExtreme HTML5 Widgets support this scenario. In this demo, the data source of the Chart widget loads weather data for a selected month from an OData service. Each time the month is changed, the data source sends a new query to the service.

weatherbase.com
Copy to CodeSandBox
Apply
Reset
import React from 'react'; import DataSource from 'devextreme/data/data_source'; import 'devextreme/data/odata/store'; import Chart, { ValueAxis, ArgumentAxis, CommonPaneSettings, Grid, Series, Label, Legend, Size, Border, Tooltip, Export, LoadingIndicator } from 'devextreme-react/chart'; import SelectBox from 'devextreme-react/select-box'; import { months } from './data.js'; class App extends React.Component { constructor(props) { super(props); this.chartDataSource = new DataSource({ store: { type: 'odata', url: 'https://js.devexpress.com/Demos/WidgetsGallery/odata/WeatherItems' }, postProcess: function(results) { return results[0].DayItems; }, expand: 'DayItems', filter: ['Id', '=', 1], paginate: false }); this.onValueChanged = (data) => { this.chartDataSource.filter(['Id', '=', data.value]); this.chartDataSource.load(); }; } render() { return ( <div id={'chart-demo'}> <Chart title={'Temperature in Barcelona, 2012'} dataSource={this.chartDataSource}> <Size height={420} /> <ValueAxis grid={{ opacity: 0.2 }} valueType={'numeric'} > <Label customizeText={this.customizeLabel} /> </ValueAxis> <ArgumentAxis type={'discrete'}> <Grid visible={true} opacity={0.5} /> </ArgumentAxis> <CommonPaneSettings> <Border visible={true} width={2} top={false} right={false} /> </CommonPaneSettings> <Series argumentField={'Number'} valueField={'Temperature'} type={'spline'} /> <Legend visible={false} /> <Export enabled={true} /> <Tooltip enabled={true} customizeTooltip={customizeTooltip} /> <LoadingIndicator enabled={true} /> </Chart> <div className={'action'}> <SelectBox id={'selectbox'} width={150} valueExpr={'id'} displayExpr={'name'} items={months} defaultValue={1} onValueChanged={this.onValueChanged} /> <div className={'label'}>Choose a month: </div> </div> </div> ); } customizeLabel(e) { return `${e.valueText}${'&#176C'}`; } } function customizeTooltip(arg) { return { text: `${arg.valueText}${'&#176C'}` }; } export default App;
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="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.1.5/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.1.5/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="https://unpkg.com/core-js@2.4.1/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.js'); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"></div> </div> </body> </html>
#selectbox { float: right; } .action { width: 270px; margin-top: 20px; } .label { padding-top: 9px; }
export const months = [{ id: 1, name: 'January' }, { id: 2, name: 'February' }, { id: 3, name: 'March' }, { id: 4, name: 'April' }, { id: 5, name: 'May' }, { id: 6, name: 'June' }, { id: 7, name: 'July' }, { id: 8, name: 'August' }, { id: 9, name: 'September' }, { id: 10, name: 'October' }, { id: 11, name: 'November' }, { id: 12, name: 'December' }];
System.config({ transpiler: 'plugin-babel', paths: { 'npm:': 'https://unpkg.com/' }, defaultExtension: 'js', map: { 'react': 'npm:react@16/umd/react.development.js', 'react-dom': 'npm:react-dom@16/umd/react-dom.development.js', 'prop-types': 'npm:prop-types/prop-types.js', 'devextreme': 'npm:devextreme@19.1', 'devextreme-react': 'npm:devextreme-react@19.1', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'quill': 'npm:quill@1.3.6/dist/quill.js', 'devexpress-diagram': 'npm:devexpress-diagram', // SystemJS plugins 'plugin-babel': 'npm:systemjs-plugin-babel@0/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0/systemjs-babel-browser.js' }, packages: { 'devextreme': { defaultExtension: 'js' }, 'devextreme-react': { main: 'index.js' } }, babelOptions: { sourceMaps: false, stage0: true, react: true } });