import classnames from 'classnames'; import React from 'react'; import ReactDOM from 'react-dom'; import CSSTransitionGroup from 'react-addons-css-transition-group'; 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 UIStore from '../../stores/UIStore'; import Upload from '../icons/Upload'; const METHODS_TO_BIND = [ 'onTransferDataRequestError', 'onTransferDataRequestSuccess', 'onTransferHistoryRequestSuccess' ]; class TransferData 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() { UIStore.registerDependency(['transfer-data', 'transfer-history']); 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; } return false; } onTransferDataRequestError() { this.setState({ transferDataRequestError: true, transferDataRequestSuccess: false }); } onTransferDataRequestSuccess() { this.setState({ transferDataRequestError: false, transferDataRequestSuccess: true }); if (!UIStore.hasSatisfiedDependencies()) { UIStore.satisfyDependency('transfer-data'); } } onTransferHistoryRequestSuccess() { if (!this.state.transferHistoryRequestSuccess) { this.setState({ transferHistoryRequestSuccess: true }); } if (!UIStore.hasSatisfiedDependencies()) { UIStore.satisfyDependency('transfer-history'); } } render() { let content = ; if (!this.isLoading()) { let throttles = TransferDataStore.getThrottles(); let transferRate = TransferDataStore.getTransferRate(); let transferRates = TransferDataStore.getTransferRates(); let transferTotals = TransferDataStore.getTransferTotals(); let downloadRate = format.data(transferRate.download, '/s'); let downloadTotal = format.data(transferTotals.download); let uploadRate = format.data(transferRate.upload, '/s'); let uploadTotal = format.data(transferTotals.upload); content = (
{downloadRate.value} {downloadRate.unit}
{downloadTotal.value} {downloadTotal.unit} Downloaded
{uploadRate.value} {uploadRate.unit}
{uploadTotal.value} {uploadTotal.unit} Uploaded
); } return (
{content}
); } } TransferData.defaultProps = { historyLength: 1 }; export default TransferData;