$ = jQuery CONN_HEADERS = “”“
<tr> <th>Input</th> <th>Chan</th> <th>Output</th> <th>Chan</th> <th>Prog</th> <th>Zone</th> <th>Xpose</th> <th>Filter</th> </tr> """
COLOR_SCHEMES = ['default', 'green', 'amber', 'blue']; color_scheme_index = 0;
list_item = (val, highlighted_value) ->
classes = if val == highlighted_value then "selected reverse-#{COLOR_SCHEMES[color_scheme_index]}" else '' "<li class=\"#{classes}\">#{val}</li>"
list = (id, vals, highlighted_value) ->
lis = (list_item(val, highlighted_value) for val in vals) $('#' + id).html(lis.join("\n"))
connection_row = (conn) ->
vals = (conn[key] for key in ['input', 'input_chan', 'output', 'output_chan', 'pc', 'zone', 'xpose', 'filter']) "<tr><td>#{vals.join('</td><td>')}</td></tr>"
connection_rows = (connections) ->
rows = (connection_row(conn) for conn in connections) $('#patch').html(CONN_HEADERS + "\n" + rows.join("\n")) set_colors()
maybe_name = (data, key) -> if data then data['name'] else ''
message = (str) -> $('#message').html(str)
kp = (action) ->
$.getJSON(action, (data) -> list('song-lists', data['lists'], data['list']) list('songs', data['songs'], maybe_name(data, 'song')) list('triggers', data['triggers']) if data['song']? list('song', data['song']['patches'], maybe_name(data, 'patch')) if data['patch']? connection_rows(data['patch']['connections']) message(data['message']) if data['message']? )
remove_colors = () ->
if color_scheme_index >= 0 base_class = COLOR_SCHEMES[color_scheme_index] $('body').removeClass(base_class) $('.selected, th, td#appname').removeClass("reverse-#{base_class}") $('tr, td, th').removeClass("#{base_class}-border")
set_colors = () ->
base_class = COLOR_SCHEMES[color_scheme_index] $('body').addClass(base_class) $('.selected, th, td#appname').addClass("reverse-#{base_class}") $('tr, td, th').addClass("#{base_class}-border")
cycle_colors = () ->
remove_colors() color_scheme_index = (color_scheme_index + 1) % COLOR_SCHEMES.length set_colors()
bindings =
'j': 'next_patch' 'down': 'next_patch' 'k': 'prev_patch' 'up': 'prev_patch' 'n': 'next_song' 'left': 'next_song' 'p': 'prev_song' 'right': 'prev_song' 'esc': 'panic'
f = (key, val) -> $(document).bind('keydown', key, () -> kp(val)) f(key, val) for key, val of bindings $(document).bind('keydown', 'c', () -> cycle_colors())
kp('status')