summaryrefslogtreecommitdiffstats
path: root/webapp/components/analytics/line_chart.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/analytics/line_chart.jsx')
-rw-r--r--webapp/components/analytics/line_chart.jsx121
1 files changed, 0 insertions, 121 deletions
diff --git a/webapp/components/analytics/line_chart.jsx b/webapp/components/analytics/line_chart.jsx
deleted file mode 100644
index 67a1162fc..000000000
--- a/webapp/components/analytics/line_chart.jsx
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import {FormattedMessage} from 'react-intl';
-
-import * as Utils from 'utils/utils.jsx';
-
-import PropTypes from 'prop-types';
-
-import React from 'react';
-import ReactDOM from 'react-dom';
-import Chart from 'chart.js';
-
-export default class LineChart extends React.Component {
- constructor(props) {
- super(props);
-
- this.initChart = this.initChart.bind(this);
- this.chart = null;
- }
-
- componentDidMount() {
- this.initChart();
- }
-
- componentWillUpdate(nextProps) {
- const willHaveData = nextProps.data && nextProps.data.labels.length > 0;
- const hasChart = Boolean(this.chart);
-
- if (!willHaveData && hasChart) {
- // Clean up the rendered chart before we render and destroy its context
- this.chart.destroy();
- this.chart = null;
- }
- }
-
- componentDidUpdate(prevProps) {
- if (Utils.areObjectsEqual(prevProps.data, this.props.data) && Utils.areObjectsEqual(prevProps.options, this.props.options)) {
- return;
- }
-
- const hasData = this.props.data && this.props.data.labels.length > 0;
- const hasChart = Boolean(this.chart);
-
- if (hasData) {
- // Update the rendered chart or initialize it as necessary
- this.initChart(hasChart);
- }
- }
-
- componentWillUnmount() {
- if (this.chart) {
- this.chart.destroy();
- }
- }
-
- initChart(update) {
- if (!this.refs.canvas) {
- return;
- }
-
- var el = ReactDOM.findDOMNode(this.refs.canvas);
- var ctx = el.getContext('2d');
- this.chart = new Chart(ctx, {type: 'line', data: this.props.data, options: this.props.options || {}}); // eslint-disable-line new-cap
-
- if (update) {
- this.chart.update();
- }
- }
-
- render() {
- let content;
- if (this.props.data == null) {
- content = (
- <FormattedMessage
- id='analytics.chart.loading'
- defaultMessage='Loading...'
- />
- );
- } else if (this.props.data.labels.length === 0) {
- content = (
- <h5>
- <FormattedMessage
- id='analytics.chart.meaningful'
- defaultMessage='Not enough data for a meaningful representation.'
- />
- </h5>
- );
- } else {
- content = (
- <canvas
- ref='canvas'
- width={this.props.width}
- height={this.props.height}
- />
- );
- }
-
- return (
- <div className='col-sm-12'>
- <div className='total-count by-day'>
- <div className='title'>
- {this.props.title}
- </div>
- <div className='content'>
- {content}
- </div>
- </div>
- </div>
- );
- }
-}
-
-LineChart.propTypes = {
- title: PropTypes.node.isRequired,
- width: PropTypes.string.isRequired,
- height: PropTypes.string.isRequired,
- data: PropTypes.object,
- options: PropTypes.object
-};
-