');
cues.append($('
Next: ' + cue_next + ''));
cues.append($('
Last: ' + cue_last + ''));
cues.append($('
(' + bars_out + ' bars)'));
entry.append(cues);
cues = $('
');
cues.append($('Start: ' + cue_start + '
'));
cues.append($('Bkdn: ' + cue_bkdn + '
'));
cues.append($('(' + bars_in + ' bars)
'));
entry.append(cues);
}
return entry;
}
function init() {
for (var index in tracklist) {
track = tracklist[index];
entry = format_track(
track['index'], track['title'], track['length'], track['bpm'],
track['notes'],
track['start'], track['bkdn'], track['next'], track['last'],
track['in'], track['out']
);
$('#tracks').append(entry);
}
}
/* Track 0 is 'no current track' */
function current(index) {
if (index < 0 || index > maximum_index)
return;
current_index = index;
$("div.track").removeClass("current");
$("div.track > .index").off('click.commit');
$("div#track_" + index).addClass("current");
$("div#track_" + index + " > .index").on('click.commit', commit);
}
function updating(index) {
if (index < 0 || index > maximum_index)
return;
$("div.track").removeClass("running sending");
$("div#track_" + index).addClass("sending");
}
function running(index) {
if (index < 0 || index > maximum_index)
return;
$("div.track").removeClass("running sending");
$("div#track_" + index).addClass("running");
}
function next() {
current(current_index + 1);
}
function prev() {
current(current_index - 1);
}
function commit() {
running_index = current_index;
commit_update();
params = {
url: "/commit",
type: "POST",
data: { index: current_index }
};
var req = $.ajax(params)
.done(function(data, textStatus, req) {
commit_ready();
})
.fail(function(req, textStatus, errorThrown) {
console.log("AjaxFailed:" + textStatus + " - " + errorThrown);
commit_failed();
});
}
function commit_ready() {
running(running_index);
}
function commit_update() {
updating(running_index);
}
function commit_failed() {
current(running_index);
$('div.track').removeClass("running sending");
}
maximum_index = tracklist.length;
current_index = 0;
running_index = 0;
$(document).ready(init);