context = window
rest = context.JK.Rest()
ReactCSSTransitionGroup = React.addons.CSSTransitionGroup
ASSIGNMENT = context.JK.ASSIGNMENT
VOICE_CHAT = context.JK.VOICE_CHAT
MAX_TRACKS = context.JK.MAX_TRACKS
MAX_OUTPUTS = context.JK.MAX_OUTPUTS
gearUtils = context.JK.GearUtils
MIDI_TRACK = context.JK.MIDI_TRACK
@ConfigureTracks = React.createClass({
mixins: [Reflux.listenTo(@ConfigureTracksStore,"onConfigureTracksChanged")]
getInitialState: () ->
{configureTracks: null}
onConfigureTracksChanged: (configureTracks) ->
@setState({configureTracks: configureTracks})
render: () ->
liveTracks = []
outputs = []
trackAssignments = @state.configureTracks?.trackAssignments
if gon.midi_enabled
addMidiTrack = `ADD MIDI TRACK . . . `
if trackAssignments
for inputsForTrack, i in trackAssignments.inputs.assigned
candidate = inputsForTrack[0]
inputs = []
if candidate.assignment == MIDI_TRACK
trackTypeLabel = 'MIDI'
midiDeviceName = 'UNKNOWN'
for midiDevice in @state.configureTracks.attachedMidiDevices.midiDevices
if midiDevice.deviceIndex == inputsForTrack.vst?.midiDeviceIndex
midiDeviceName = midiDevice.deviceName
inputs.push(`
{midiDeviceName}
`)
else
trackTypeLabel = 'AUDIO'
for input in inputsForTrack
inputs.push(`{input.name}
`)
if !inputsForTrack.instrument_id?
instrument = `?`
else
instrument = `
`
vstName = 'None'
if inputsForTrack.vst? && inputsForTrack.vst.name != 'NONE'
vstName = "#{inputsForTrack.vst.name} by #{inputsForTrack.vst.manuf}"
liveTracks.push(
`
{i + 1}:{trackTypeLabel}{inputs}
{vstName}
{instrument}
`)
for output, i in trackAssignments.outputs.assigned
outputs.push(
``)
`
Session Audio Inputs (Live Tracks)
Plugin
Instrument
{liveTracks}
`
onUpdateLiveTrack:(liveTrack, e) ->
e.preventDefault()
ConfigureTracksActions.showEditTrack(liveTrack.assignment)
onDeleteLiveTrack:(liveTrack, e) ->
e.preventDefault()
if liveTrack.assignment == 1
# can't delete the last assignment
context.JK.Banner.showAlert('You can not delete the 1st audio track.')
else
trackType = 'live'
if liveTrack.assignment == MIDI_TRACK
trackType = 'MIDI'
context.JK.Banner.showYesNo({
title: "Confirm Deletion",
html: "Are you sure you want to delete this #{trackType} track?",
yes: =>
ConfigureTracksActions.deleteTrack(liveTrack.assignment)
})
openLiveTrackDialog: (type, e) ->
e.preventDefault()
ConfigureTracksActions.showAddNewTrack(type)
openOutputTrackDialog: (e) ->
e.preventDefault()
ConfigureTracksActions.showEditOutputs()
})