import React from 'react'; import ReactDOM from 'react-dom'; import Download from '../icons/Download'; import EventTypes from '../../constants/EventTypes'; import format from '../../util/formatData'; import LineChart from '../ui/LineChart'; import LoadingIndicator from '../ui/LoadingIndicator'; import TransferDataStore from '../../stores/TransferDataStore'; import Upload from '../icons/Upload'; const METHODS_TO_BIND = [ 'onTransferDataRequestError', 'onTransferDataRequestSuccess', 'onTransferHistoryRequestSuccess' ]; class ClientStats extends React.Component { constructor() { super(); this.state = { sidebarWidth: 0, transferHistoryRequestSuccess: false, transferDataRequestError: false, transferDataRequestSuccess: false }; METHODS_TO_BIND.forEach((method) => { this[method] = this[method].bind(this); }); } componentDidMount() { this.setState({ sidebarWidth: ReactDOM.findDOMNode(this).offsetWidth }); TransferDataStore.listen(EventTypes.CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess); TransferDataStore.listen(EventTypes.CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS, this.onTransferHistoryRequestSuccess); TransferDataStore.fetchTransferData(); } componentWillUnmount() { TransferDataStore.unlisten( EventTypes.CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess ); } isLoading() { if (!this.state.transferHistoryRequestSuccess || !this.state.transferDataRequestSuccess) { return true; } } onTransferDataRequestError() { this.setState({ transferDataRequestError: true, transferDataRequestSuccess: false }); } onTransferDataRequestSuccess() { this.setState({ transferDataRequestError: false, transferDataRequestSuccess: true }); } onTransferHistoryRequestSuccess() { if (!this.state.transferHistoryRequestSuccess) { this.setState({ transferHistoryRequestSuccess: true }); } } render() { if (this.state.transferDataRequestError) { return