import React, { PropTypes } from 'react' import { connect } from 'react-redux' import { bindActionCreators } from 'redux' import { Link } from 'react-router' import FontAwesome from 'react-fontawesome' import * as mopidyActions from '../services/mopidy/actions' import * as uiActions from '../services/ui/actions' class VolumeControl extends React.Component{ constructor(props) { super(props) } handleClick(e){ var slider = e.target; if( slider.className != 'slider' ) slider = slider.parentElement; var sliderX = e.clientX - slider.getBoundingClientRect().left; var sliderWidth = slider.getBoundingClientRect().width; var percent = Math.round(( sliderX / sliderWidth ) * 100); if (percent > 100){ percent = 100 } else if (percent < 0 ){ percent = 0 } this.props.mopidyActions.setVolume( percent ) } renderMuteButton(){ if (this.props.mute){ return ( this.props.mopidyActions.setMute(false)}> Unmute ) } else { return ( this.props.mopidyActions.setMute(true)}> Mute ) } } render(){ var className = "volume-control" if (this.props.mute){ className += " muted" } return ( {this.renderMuteButton()}
this.handleClick(e)}>
); } } const mapStateToProps = (state, ownProps) => { return { volume: state.mopidy.volume, mute: state.mopidy.mute } } const mapDispatchToProps = (dispatch) => { return { uiActions: bindActionCreators(uiActions, dispatch), mopidyActions: bindActionCreators(mopidyActions, dispatch) } } export default connect(mapStateToProps, mapDispatchToProps)(VolumeControl)