mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
78 lines
2.0 KiB
JavaScript
78 lines
2.0 KiB
JavaScript
// 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
|
|
};
|