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
<template> <div id="chart-demo"> <dx-chart :data-source="chartDataSource" title="Temperature in Barcelona, 2012" > <dx-size :height="420"/> <dx-value-axis :grid="{ opacity: 0.2 }" value-type="numeric" > <dx-label :customize-text="customizeLabelText"/> </dx-value-axis> <dx-argument-axis type="discrete"> <dx-grid :visible="true" :opacity="0.5" /> </dx-argument-axis> <dx-common-pane-settings> <dx-border :visible="true" :width="2" :top="false" :right="false" /> </dx-common-pane-settings> <dx-series argument-field="Number" value-field="Temperature" type="spline" /> <dx-legend :visible="false"/> <dx-tooltip :enabled="true" :customize-tooltip="customizeTooltip" /> <dx-export :enabled="true"/> <dx-loading-indicator :enabled="true"/> </dx-chart> <div class="action"> <dx-select-box id="selectbox" :width="150" :items="months" :value="1" :on-value-changed="onValueChanged" value-expr="id" display-expr="name" /> <div class="label">Choose a month:</div> </div> </div> </template> <script> import DxChart, { DxValueAxis, DxArgumentAxis, DxCommonPaneSettings, DxGrid, DxSeries, DxLegend, DxSize, DxBorder, DxLabel, DxTooltip, DxExport, DxLoadingIndicator } from 'devextreme-vue/chart'; import DxSelectBox from 'devextreme-vue/select-box'; import DataSource from 'devextreme/data/data_source'; import 'devextreme/data/odata/store'; import { months } from './data.js'; export default { components: { DxChart, DxValueAxis, DxArgumentAxis, DxCommonPaneSettings, DxGrid, DxSeries, DxLegend, DxSize, DxBorder, DxLabel, DxTooltip, DxExport, DxLoadingIndicator, DxSelectBox }, data() { const 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 }); return { temperature: [6, 7, 8, 9, 10, 11, 12], onValueChanged(data) { chartDataSource.filter(['Id', '=', data.value]); chartDataSource.load(); }, customizeLabelText(e) { return `${e.valueText}${'&#176C'}`; }, customizeTooltip(arg) { return { text: `${arg.valueText}${'&#176C'}` }; }, months, chartDataSource }; } }; </script> <style> #selectbox { float: right; } .action { width: 270px; margin-top: 20px; } .label { padding-top: 9px; } </style>
import Vue from 'vue'; import App from './App.vue'; new Vue({ el: '#app', components: { App }, template: '<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.7/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.1.7/css/dx.light.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"> <span v-if="false">Loading...</span> </div> </div> </body> </html>
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/' }, map: { vue: 'npm:vue@2.6.3/dist/vue.esm.browser.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@latest/index.js', 'devextreme': 'npm:devextreme@19.1', 'devextreme-vue': 'npm:devextreme-vue@19.1', jszip: 'npm:jszip@3.1.3/dist/jszip.min.js', 'quill': 'npm:quill@1.3.7/dist/quill.js', 'devexpress-diagram': 'npm:devexpress-diagram', 'plugin-babel': 'npm:systemjs-plugin-babel@0/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0/systemjs-babel-browser.js' }, meta: { '*.vue': { loader: 'vue-loader' } }, packages: { 'devextreme-vue': { main: 'index.js' }, 'devextreme': { defaultExtension: 'js' } }, babelOptions: { sourceMaps: false, stage0: true } });