summaryrefslogtreecommitdiffstats
path: root/webapp/components/analytics/doughnut_chart.jsx
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2016-04-26 12:28:27 -0400
committerChristopher Speller <crspeller@gmail.com>2016-04-26 12:28:27 -0400
commit215f78af147350088516a918afb8b84db492787a (patch)
treee94f1258aa197e47015c18823d48a47c1011f954 /webapp/components/analytics/doughnut_chart.jsx
parentc41cd44ada5f6c343e07d2ebde2a6a04a6b7a49c (diff)
downloadchat-215f78af147350088516a918afb8b84db492787a.tar.gz
chat-215f78af147350088516a918afb8b84db492787a.tar.bz2
chat-215f78af147350088516a918afb8b84db492787a.zip
Prevent graphs bouncing multiples times when loading analytics pages (#2800)
Diffstat (limited to 'webapp/components/analytics/doughnut_chart.jsx')
-rw-r--r--webapp/components/analytics/doughnut_chart.jsx25
1 files changed, 16 insertions, 9 deletions
diff --git a/webapp/components/analytics/doughnut_chart.jsx b/webapp/components/analytics/doughnut_chart.jsx
index 169ac3105..ca037c180 100644
--- a/webapp/components/analytics/doughnut_chart.jsx
+++ b/webapp/components/analytics/doughnut_chart.jsx
@@ -1,11 +1,13 @@
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
-import ReactDOM from 'react-dom';
import {FormattedMessage} from 'react-intl';
-import Chart from 'chart.js';
+
+import * as Utils from 'utils/utils.jsx';
import React from 'react';
+import ReactDOM from 'react-dom';
+import Chart from 'chart.js';
export default class DoughnutChart extends React.Component {
constructor(props) {
@@ -16,13 +18,15 @@ export default class DoughnutChart extends React.Component {
}
componentDidMount() {
- this.initChart(this.props);
+ this.initChart();
}
- componentWillReceiveProps(nextProps) {
- if (this.chart) {
- this.chart.destroy();
- this.initChart(nextProps);
+ componentDidUpdate(prevProps) {
+ if (!Utils.areObjectsEqual(prevProps.data, this.props.data) || !Utils.areObjectsEqual(prevProps.options, this.props.options)) {
+ if (this.chart) {
+ this.chart.destroy();
+ }
+ this.initChart();
}
}
@@ -32,10 +36,13 @@ export default class DoughnutChart extends React.Component {
}
}
- initChart(props) {
+ initChart() {
+ if (!this.refs.canvas) {
+ return;
+ }
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
+ this.chart = new Chart(ctx).Doughnut(this.props.data, this.props.options || {}); //eslint-disable-line new-cap
}
render() {