import React, { Component } from 'react'; import { FormGroup, Label, Input } from 'reactstrap'; import { convertFromBitrate, convertToBitrate } from '../bitrate'; export default class Throttle extends Component { constructor() { super(); this.setLimit = this.setLimit.bind(this); this.setUnit = this.setUnit.bind(this); this.state = { custom: 1024 * 1024, unit: "MiB/s" }; } setLimit(limit) { const { onChange } = this.props; const { unit } = this.state; let custom = this.props.limit; if (custom <= 0 || custom === null) { custom = this.state.custom; } if (isNaN(limit)) { limit = 0; } const converted = limit <= 0 || limit === null ? limit : convertToBitrate(limit, unit); onChange && onChange(converted); this.setState({ unit, custom }); } setUnit(unit) { const limit = convertFromBitrate(this.props.limit, this.state.unit); this.setState({ unit, custom: this.state.custom }); this.setLimit(limit); } render() { const { global, limit, legend, prop } = this.props; const { unit, custom } = this.state; return (
{legend} {typeof global === "undefined" || global && } {limit !== -1 && limit !== null &&
this.setLimit(parseFloat(e.target.value))} /> this.setUnit(e.target.value)} >
}
); } }