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.
Apply
Reset
<div id="chart-demo"> <dx-chart [dataSource]="chartDataSource" title="Temperature in Barcelona, 2012" [valueAxis]="{ valueType: 'numeric', grid: { opacity: 0.2 }, label: { customizeText: customizeText } }" > <dxo-size [height]="420"></dxo-size> <dxi-series argumentField="Number" valueField="Temperature" type="spline" ></dxi-series> <dxo-legend [visible]="false"></dxo-legend> <dxo-common-pane-settings> <dxo-border [visible]="true" [width]="2" [top]="false" [right]="false" ></dxo-border> </dxo-common-pane-settings> <dxo-export [enabled]="true"></dxo-export> <dxo-tooltip [enabled]="true" [customizeTooltip]="customizeTooltip" ></dxo-tooltip> <dxo-argument-axis type="discrete"> <dxo-grid [visible]="true" [opacity]="0.5"></dxo-grid> </dxo-argument-axis> </dx-chart> <div class="action"> <dx-select-box id="selectbox" [items]="months" [width]="150" [value]="1" valueExpr="id" displayExpr="name" (onValueChanged)="onValueChanged($event)" ></dx-select-box> <div class="label">Choose a month:</div> </div> </div>
import { NgModule, Component, ViewChild, AfterViewInit } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxChartModule, DxChartComponent, DxSelectBoxModule } from 'devextreme-angular'; import DataSource from 'devextreme/data/data_source'; import 'devextreme/data/odata/store'; import { Month, Service } from './app.service'; @Component({ selector: 'demo-app', templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'], providers: [Service] }) export class AppComponent implements AfterViewInit { @ViewChild(DxChartComponent) chart: DxChartComponent months: Month[]; chartDataSource: any; constructor(service: Service) { this.months = service.getMonths(); this.chartDataSource = new DataSource({ store: { type: 'odata', url: 'https://js.devexpress.com/Demos/WidgetsGallery/odata/WeatherItems' }, postProcess: (results) => { return results[0].DayItems }, expand: 'DayItems', filter: ['Id', '=', 1] }); } customizeTooltip(arg) { return { text: arg.valueText + '&#176C' }; } customizeText(arg) { return arg.valueText + '&#176C'; } onValueChanged(data) { this.chartDataSource.filter(['Id', '=', data.value]); this.chartDataSource.load(); } } @NgModule({ imports: [ BrowserModule, DxChartModule, DxSelectBoxModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
/deep/ #selectbox { float: right; } /deep/ .action { width: 270px; margin-top: 20px; } /deep/ .label { padding-top: 9px; }
import { Injectable } from '@angular/core'; export class Month { id: number; name: string; } let months: Month[] = [{ 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" }]; @Injectable() export class Service { getMonths(): Month[] { return months; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular 2 and DevExtreme here: // https://github.com/DevExpress/devextreme-angular/blob/master/README.md System.config({ transpiler: 'ts', typescriptOptions: { module: "commonjs", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" } }, paths: { 'npm:': 'https://unpkg.com/' }, map: { 'ts': 'npm:plugin-typescript@7.0.6/lib/plugin.js', 'typescript': 'npm:typescript@2.2.2/lib/typescript.js', '@angular/core': 'npm:@angular/core@4.1.0/bundles/core.umd.js', '@angular/common': 'npm:@angular/common@4.1.0/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler@4.1.0/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser@4.1.0/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@4.1.0/bundles/platform-browser-dynamic.umd.js', '@angular/http': 'npm:@angular/http@4.1.0/bundles/http.umd.js', '@angular/router': 'npm:@angular/router@4.1.0/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms@4.1.0/bundles/forms.umd.js', 'rxjs': 'npm:rxjs@5.3.1', 'devextreme': 'npm:devextreme@17.1', 'jquery': 'npm:jquery@3.1.1/dist/jquery.min.js', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'devextreme-angular': 'npm:devextreme-angular@17.1' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme-angular': { main: 'index.js', defaultExtension: 'js' } } });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <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/17.1.3/css/dx.spa.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/17.1.3/css/dx.common.css" /> <link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/17.1.3/css/dx.light.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/zone.js@0.6.21/dist/zone.js"></script> <script src="https://unpkg.com/reflect-metadata@0.1.3/Reflect.js"></script> <script src="https://unpkg.com/systemjs@0.19.31/dist/system.js"></script> <script src="config.js"></script> <script> System.import('app').catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>