import * as React from 'react';
import JqxChart, { IChartProps, jqx } from 'jqwidgets-scripts/jqwidgets-react-tsx/jqxchart';
class App extends React.PureComponent<{}, IChartProps> {
constructor(props: {}) {
super(props);
const source: any = {
datafields: [
{ name: 'Country' },
{ name: 'GDP' },
{ name: 'DebtPercent' },
{ name: 'Debt' }
],
datatype: 'csv',
url: 'gdp_dept_2010.txt'
};
const legendFormatFunction = (value: string): string => {
if (value === 'Debt per Capita') {
return 'Debt per
Capita';
}
if (value === 'GDP per Capita') {
return 'GDP per
Capita';
}
if (value === 'Debt (% of GDP)') {
return 'Debt
(% of GDP)';
}
return value;
};
this.state = {
description: 'GDP and Debt in 2018',
padding: { left: 5, top: 5, right: 5, bottom: 5 },
seriesGroups: [
{
columnsGapPercent: 50,
series: [
{ dataField: 'GDP', displayText: 'GDP per Capita', legendFormatFunction },
{ dataField: 'Debt', displayText: 'Debt per Capita', legendFormatFunction }
],
type: 'column',
valueAxis: {
title: { text: 'GDP & Debt per Capita($)' },
unitInterval: 5000
}
},
{
series: [
{ dataField: 'DebtPercent', displayText: 'Debt (% of GDP)', legendFormatFunction }
],
type: 'line',
valueAxis:
{
title: { text: 'Debt (% of GDP)' },
unitInterval: 10,
visible: false
}
}
],
source: new jqx.dataAdapter(source, { async: false, autoBind: true, loadError: (xhr: any, status: any, error: any) => { alert('Error loading "' + source.url + '" : ' + error); } }),
title: 'Economic comparison',
titlePadding: { left: 90, top: 0, right: 0, bottom: 0 },
xAxis: {
dataField: 'Country',
formatFunction: (value: any, dataIndex: any): string => {
if (value === 'USA') {
return 'United
States';
}
return value;
},
title: { verticalAlignment: 'middle' }
}
};
}
public render() {
return (
);
}
}
export default App;