diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-02-03 08:50:25 -0500 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-02-03 08:50:25 -0500 |
commit | d479b08c997d3216938a3e92c3634a8b5afdb841 (patch) | |
tree | 59e23ddb3feea7f10c16b535892b9c44952e0779 /web/react/components/admin_console/doughnut_chart.jsx | |
parent | 0571953755bb96b3d1c15279e2fb429a3ec993a5 (diff) | |
parent | 9517690577111242f12f03eb27ee32d11e9d71a6 (diff) | |
download | chat-d479b08c997d3216938a3e92c3634a8b5afdb841.tar.gz chat-d479b08c997d3216938a3e92c3634a8b5afdb841.tar.bz2 chat-d479b08c997d3216938a3e92c3634a8b5afdb841.zip |
Merge pull request #2045 from mattermost/plt-1849
PLT-1849 Added extra system-wide statistics for EE
Diffstat (limited to 'web/react/components/admin_console/doughnut_chart.jsx')
-rw-r--r-- | web/react/components/admin_console/doughnut_chart.jsx | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/web/react/components/admin_console/doughnut_chart.jsx b/web/react/components/admin_console/doughnut_chart.jsx new file mode 100644 index 000000000..e2dc01528 --- /dev/null +++ b/web/react/components/admin_console/doughnut_chart.jsx @@ -0,0 +1,77 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import {FormattedMessage} from 'mm-intl'; + +export default class DoughnutChart extends React.Component { + constructor(props) { + super(props); + + this.initChart = this.initChart.bind(this); + this.chart = null; + } + + componentDidMount() { + this.initChart(this.props); + } + + componentWillReceiveProps(nextProps) { + if (this.chart) { + this.chart.destroy(); + this.initChart(nextProps); + } + } + + componentWillUnmount() { + if (this.chart) { + this.chart.destroy(); + } + } + + initChart(props) { + var el = ReactDOM.findDOMNode(this.refs.canvas); + var ctx = el.getContext('2d'); + this.chart = new Chart(ctx).Doughnut(props.data, props.options || {}); //eslint-disable-line new-cap + } + + render() { + let content; + if (this.props.data == null) { + content = ( + <FormattedMessage + id='admin.analytics.loading' + defaultMessage='Loading...' + /> + ); + } else { + content = ( + <canvas + ref='canvas' + width={this.props.width} + height={this.props.height} + /> + ); + } + + return ( + <div className='col-sm-6'> + <div className='total-count'> + <div className='title'> + {this.props.title} + </div> + <div className='content'> + {content} + </div> + </div> + </div> + ); + } +} + +DoughnutChart.propTypes = { + title: React.PropTypes.string, + width: React.PropTypes.string, + height: React.PropTypes.string, + data: React.PropTypes.array, + options: React.PropTypes.object +}; |