1 function format_length(seconds) {
2 var length = Math.round(seconds);
3 var minutes = Math.floor(length / 60);
4 var seconds = length % 60;
5 return minutes + ":" + ( "0" + seconds ).slice(-2);
8 function format_track(index, title, length, bpm, notes, cue_start, cue_bkdn, cue_next, cue_last, bars_in, bars_out) {
9 length = format_length(length);
10 bpm = Math.round(bpm);
11 cue_start = format_length(cue_start);
12 cue_bkdn = format_length(cue_bkdn);
13 cue_next = '-' + format_length(cue_next);
14 cue_last = '-' + format_length(cue_last);
15 if ( notes == null ) notes = '-';
16 entry = $('<div id="track_' + index + '" class="track" onClick="current(' + index + ');">');
17 entry.append($('<span class="index">' + index + '</span>'));
19 tn = $('<div class="title-notes">');
20 tn.append($('<span class="title" title="' + title + '">' + title.slice(0,65) + '</span><br>'));
21 tn.append($('<span class="notes" title="' + notes + '">' + notes.slice(0,80) + '</span>'));
25 lb = $('<div class="length-bpm">');
26 lb.append($('<span class="length">' + length + '</span><br>'));
27 lb.append($('<span class="bpm">' + bpm + '<span>BPM</span></span>'));
30 cues = $('<div class="cues">');
31 cues.append($('<span class="next">Next: ' + cue_next + '</span><br>'));
32 cues.append($('<span class="last">Last: ' + cue_last + '</span><br>'));
33 cues.append($('<span class="out">(' + bars_out + ' bars)</span>'));
36 cues = $('<div class="cues">');
37 cues.append($('<span class="start">Start: ' + cue_start + '</span><br>'));
38 cues.append($('<span class="bkdn">Bkdn: ' + cue_bkdn + '</span><br>'));
39 cues.append($('<span class="in">(' + bars_in + ' bars)</span><br>'));
47 for (var index in tracklist) {
48 track = tracklist[index];
50 track['index'], track['title'], track['length'], track['bpm'],
52 track['start'], track['bkdn'], track['next'], track['last'],
53 track['in'], track['out']
55 $('#tracks').append(entry);
59 /* Track 0 is 'no current track' */
60 function current(index) {
61 if (index < 0 || index > maximum_index)
63 current_index = index;
64 $("div.track").removeClass("current");
65 $("div.track > .index").off('click.commit');
66 $("div#track_" + index).addClass("current");
67 $("div#track_" + index + " > .index").on('click.commit', commit);
70 function updating(index) {
71 if (index < 0 || index > maximum_index)
73 $("div.track").removeClass("running sending");
74 $("div#track_" + index).addClass("sending");
77 function running(index) {
78 if (index < 0 || index > maximum_index)
80 $("div.track").removeClass("running sending");
81 $("div#track_" + index).addClass("running");
85 current(current_index + 1);
89 current(current_index - 1);
93 running_index = current_index;
99 data: { index: current_index }
102 var req = $.ajax(params)
103 .done(function(data, textStatus, req) {
106 .fail(function(req, textStatus, errorThrown) {
107 console.log("AjaxFailed:" + textStatus + " - " + errorThrown);
112 function commit_ready() {
113 running(running_index);
116 function commit_update() {
117 updating(running_index);
120 function commit_failed() {
121 current(running_index);
122 $('div.track').removeClass("running sending");
125 maximum_index = tracklist.length;
129 $(document).ready(init);