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}
update delete
`) for output, i in trackAssignments.outputs.assigned outputs.push( `
{i + 1}:
{output.name}
`) `

Session Audio Inputs (Live Tracks)

Plugin

Instrument

{liveTracks}
ADD AUDIO TRACK . . . {addMidiTrack}

Session Audio Outputs (Requires 2 Ports)

{outputs}
UPDATE OUTPUTS . . .
` 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() })