import * as React from 'react';
import './App.css';
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 fnLabelsClass: any = (value: any, itemIndex: any, serie: any, group: any) => {
if (value > 100) {
return 'redLabel';
}
return 'greenLabel';
};
const fnLabelsBorderColor: any = (value: any, itemIndex: any, serie: any, group: any) => {
if (value > 100) {
return '#FF0000';
}
return '#89A54E';
};
this.state = {
description: 'Per capita GDP and Debt in 2010',
padding: { left: 5, top: 5, right: 5, bottom: 5 },
seriesGroups: [
{
columnsGapPercent: 50,
series: [
{ dataField: 'GDP', displayText: 'GDP per Capita' },
{ dataField: 'Debt', displayText: 'Debt per Capita' }
],
type: 'column',
valueAxis: {
gridLines: { visible: false },
title: {
text: 'GDP & Debt per Capita (USD)
'
}
}
},
{
annotations: [
{
fillColor: '#EFEFEF',
height: 20,
lineColor: 'red',
offset: { x: -45, y: -25 },
text: {
angle: 0,
'class': 'redLabel',
offset: {
x: 2,
y: 2
},
value: 'Debt threshold'
},
type: 'rect',
width: 90,
xValue: 6,
yValue: 90,
}
],
series: [
{
dataField: 'DebtPercent',
displayText: 'Debt (% of GDP)',
labels:
{
backgroundColor: 'white',
backgroundOpacity: 0.7,
borderColor: fnLabelsBorderColor,
borderOpacity: 0.7,
'class': fnLabelsClass,
padding: { left: 5, right: 5, top: 1, bottom: 1 },
visible: true,
},
linesUnselectMode: 'click'
}
],
type: 'line',
valueAxis: {
bands: [
{
dashStyle: '2,2', fillColor: 'red', lineWidth: 2, maxValue: 90, minValue: 90
}
],
gridLines: { visible: false },
labels: {
formatSettings: { sufix: '%' },
horizontalAlignment: 'left'
},
position: 'right',
title: { text: 'Debt (% of GDP)' },
unitInterval: 10,
visible: true
}
}
],
source: new jqx.dataAdapter(source, { async: false, autoBind: true, loadError: (xhr: any, status: any, error: any) => { alert('Error loading "' + source.url + '" : ' + error); } }),
title: 'Country economic comparison',
titlePadding: { left: 0, top: 0, right: 0, bottom: 10 },
xAxis: {
dataField: 'Country',
flip: false,
gridLines: { visible: false },
toolTipFormatSettings: { sufix: ' USD', thousandsSeparator: ',' },
}
};
}
public render() {
return (
);
}
}
export default App;