jam-cloud/web/app/assets/javascripts/react-components/SessionRecordedTrack.js.jsx...

90 lines
2.3 KiB
CoffeeScript
Raw Normal View History

2015-06-26 18:03:32 +00:00
context = window
MixerActions = @MixerActions
@SessionRecordedTrack = React.createClass({
2015-07-01 01:25:41 +00:00
mixins: [@MasterPersonalMixersMixin]
propTypes: {
mode: React.PropTypes.bool.isRequired
}
2015-06-26 18:03:32 +00:00
handleMute: (e) ->
e.preventDefault()
2015-07-01 01:25:41 +00:00
mixer = @mixer()
unless mixer?
logger.debug("ignoring mute because no media mixer")
return
2015-06-26 18:03:32 +00:00
muting = $(e.currentTarget).is('.enabled')
2015-07-01 01:25:41 +00:00
MixerActions.mute([mixer], muting)
2015-06-26 18:03:32 +00:00
render: () ->
2015-07-01 01:25:41 +00:00
mixers = @mixers()
muteMixer = mixers.mixer
2015-06-26 18:03:32 +00:00
muteMixerId = muteMixer?.id
classes = classNames({
'track-icon-mute': true
'enabled' : !muteMixer?.mute
'muted' : muteMixer?.mute
})
componentClasses = classNames({
"session-track" : true
"recorded-track" : true
})
2015-07-01 20:24:33 +00:00
pan = if mixers.mixer? then mixers.mixer?.pan else 0
2015-06-26 18:03:32 +00:00
panStyle = {
transform: "rotate(#{pan}deg)"
WebkitTransform: "rotate(#{pan}deg)"
}
`<div className={componentClasses}>
<div className="session-track-contents">
<div className="name">{this.props.userName}</div>
<div className="track-controls">
2015-07-01 18:25:31 +00:00
<SessionTrackVU orientation="horizontal" lightCount={4} lightWidth={17} lightHeight={3} side="best" mixers={mixers} />
2015-06-26 18:03:32 +00:00
<div className="track-buttons">
<div className="track-icon-pan" style={panStyle}/>
<div className={classes} data-control="mute" data-mixer-id={muteMixerId} onClick={this.handleMute}/>
</div>
<div className="track-instrument"><img height="24" src={this.props.instrumentIcon} width="24" /></div>
<br className="clearall"/>
</div>
<br className="clearall"/>
</div>
</div>`
componentDidMount: () ->
$root = $(this.getDOMNode())
$mute = $root.find('.track-icon-mute')
$pan = $root.find('.track-icon-pan')
context.JK.interactReactBubble(
$mute,
'SessionTrackVolumeHover',
() =>
2015-07-01 01:25:41 +00:00
{mixers:@mixers()}
2015-06-26 18:03:32 +00:00
,
2015-07-01 01:25:41 +00:00
{width:235, positions:['right', 'left'], offsetParent:$root.closest('.top-parent')})
2015-06-26 18:03:32 +00:00
context.JK.interactReactBubble(
$pan,
'SessionTrackPanHover',
() =>
2015-07-01 01:25:41 +00:00
{mixers:@mixers()}
2015-06-26 18:03:32 +00:00
,
2015-07-01 01:25:41 +00:00
{width:331, positions:['right', 'left'], offsetParent:$root.closest('.top-parent')})
2015-06-26 18:03:32 +00:00
})