// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import LineChart from './line_chart.jsx'; import StatisticCount from './statistic_count.jsx'; import TableChart from './table_chart.jsx'; import AnalyticsStore from 'stores/analytics_store.jsx'; import * as Utils from 'utils/utils.jsx'; import * as AsyncClient from 'utils/async_client.jsx'; import Constants from 'utils/constants.jsx'; const StatTypes = Constants.StatTypes; import {formatPostsPerDayData, formatUsersWithPostsPerDayData} from './system_analytics.jsx'; import {injectIntl, intlShape, FormattedMessage, FormattedDate} from 'react-intl'; import React from 'react'; class TeamAnalytics extends React.Component { constructor(props) { super(props); this.onChange = this.onChange.bind(this); this.state = {stats: AnalyticsStore.getAllTeam(this.props.team.id)}; } componentDidMount() { AnalyticsStore.addChangeListener(this.onChange); this.getData(this.props.team.id); } getData(id) { AsyncClient.getStandardAnalytics(id); AsyncClient.getPostsPerDayAnalytics(id); AsyncClient.getUsersPerDayAnalytics(id); AsyncClient.getRecentAndNewUsersAnalytics(id); } componentWillUnmount() { AnalyticsStore.removeChangeListener(this.onChange); } componentWillReceiveProps(nextProps) { this.getData(nextProps.team.id); this.setState({stats: AnalyticsStore.getAllTeam(nextProps.team.id)}); } shouldComponentUpdate(nextProps, nextState) { if (!Utils.areObjectsEqual(nextState.stats, this.state.stats)) { return true; } if (!Utils.areObjectsEqual(nextProps.team, this.props.team)) { return true; } return false; } onChange() { this.setState({stats: AnalyticsStore.getAllTeam(this.props.team.id)}); } render() { const stats = this.state.stats; const postCountsDay = formatPostsPerDayData(stats[StatTypes.POST_PER_DAY]); const userCountsWithPostsDay = formatUsersWithPostsPerDayData(stats[StatTypes.USERS_WITH_POSTS_PER_DAY]); const recentActiveUsers = formatRecentUsersData(stats[StatTypes.RECENTLY_ACTIVE_USERS]); const newlyCreatedUsers = formatNewUsersData(stats[StatTypes.NEWLY_CREATED_USERS]); return (