import React, { Component } from 'react'; import { connect } from 'react-redux'; import moment from 'moment'; import { formatBitrate, formatAmount } from '../bitrate'; import { ws_disconnect } from '../socket'; import date from '../date'; import Throttle from './throttle'; import { updateResource } from '../actions/resources'; const ratio = (up, down) => { const ratio = up / down; if (isNaN(ratio)) { return
0
; } return (
{`${ ratio.toFixed(3) } (${ formatAmount(up) } up, ${ formatAmount(down) } down)`}
); }; class Server extends Component { componentDidMount() { this.interval = setInterval(this.forceUpdate, 1000); } componentWillUnmount() { clearInterval(this.interval); } render() { const { server, dispatch } = this.props; if (!server.id) { return null; } return (

Synapse

Running since
{date(moment(server.started))}
Current network use
{`${ formatBitrate(server.rate_up) } up, ${ formatBitrate(server.rate_down) } down`}
Global download throttle
dispatch(updateResource({ id: server.id, throttle_down }))} />
Global upload throttle
dispatch(updateResource({ id: server.id, throttle_up }))} />
Lifetime ratio
{ratio(server.transferred_up, server.transferred_down)}
Session ratio
{ratio(server.ses_transferred_up, server.ses_transferred_down)}
); } } export default connect(state => ({ server: state.server }))(Server);