diff options
Diffstat (limited to 'js/shows.js')
-rw-r--r-- | js/shows.js | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/js/shows.js b/js/shows.js new file mode 100644 index 0000000..47d6d5c --- /dev/null +++ b/js/shows.js @@ -0,0 +1,129 @@ + var shows_currentid; + var shows_list = []; + var shows_current; + var shows_group_carts = []; + var shows_log_carts = []; + + function shows_udpateCartListing() { + $('#show-carts tbody').find('tr').remove(); + $('#show-info-dumper').text( + 'Current Show:\n' + JSON.stringify(shows_current, null, ' ') + + '\n\nGroup Carts:\n' + JSON.stringify(shows_group_carts, null, ' ') + + '\n\nLog Carts:\n' + JSON.stringify(shows_log_carts, null, ' ') + ); + + } + + function shows_updateGroupCartList(data, status, req) { + shows_group_carts = []; + $('#show-carts').find('tr:gt(0)').remove(); + var cartlist = $(data).find("cartList"); + var carts = cartlist.children(); + carts.each(function() { + var cut = $(this).find("cutList").get(0); + cart = { + number: $(this).find('number').text(), + title: $(this).find('title').text(), + length: $(cut).find('length').text(), + imported: new Date($(cut).find('originDatetime').text()), + playcnt: new Date($(cut).find('playCounter').text()), + lastplayed: new Date($(cut).find('lastPlayDatetime').text()), + }; + shows_group_carts.push(cart); + } + ); + } + + function shows_updateLogCartList(data, status, req) { + shows_log_carts = []; + var loglist = $(data).find("logList"); + var loglines = loglist.children(); + loglines.each(function() { + var number = $(this).find('cartNumber').text(); + if(number >= shows_current.group.lowcart && number <= shows_current.group.highcart) { + shows_log_carts.push(number); + } + } + ); + } + + function shows_showSelected() { + shows_currentid = $('#show-selector option:selected').attr('value'); + sessionStorage.setItem("shows_currentid", shows_currentid); + shows_current = $.grep(shows_list, function(elem) { return elem.id == shows_currentid; })[0]; + + if(shows_current) { + $('#show-title').text(shows_current.title); + $('#show-dow').text(weekday[shows_current.dow]); + $('#show-rhythm').text(shows_current.rhythm); + $('#show-starttime').text(shows_current.starttime); + $('#show-length').text(shows_current.length + ' Min.'); + + shows_log_carts = []; + data = { COMMAND: 22, LOGIN_NAME: auth_username, PASSWORD: auth_token, NAME: shows_current.log }; + lcd = $.post("/rd-bin/rdxport.cgi", data, shows_updateLogCartList, "xml"); + + shows_group_carts = []; + data = { COMMAND: 6, LOGIN_NAME: auth_username, PASSWORD: auth_token, GROUP_NAME: shows_current.group.name, INCLUDE_CUTS: 1 }; + gcd = $.post("/rd-bin/rdxport.cgi", data, shows_updateGroupCartList, "xml"); + + $.when(lcd, gcd).done( + function(lcres, gcres) { + if(lcres[1] == 'success' && gcres[1] == 'success') { + shows_udpateCartListing(); + } + } + ); + } + } + + function shows_updateList(data, status, req) { + shows_list = []; + $('#show-selector').find('option').remove(); + var dblist = $(data).find("dropboxList"); + var dbs = dblist.children(); + dbs.each(function() { + type = $(this).find('type').text(); + if(type == 'show') { + var show = { + id: $(this).find('showid').text(), + title: $(this).find('show-title').text(), + dow: $(this).find('show-dayofweek').text(), + rhythm: $(this).find('show-rhythm').text(), + starttime: $(this).find('show-starttime').text(), + length: $(this).find('show-length').text(), + group: { + name: $(this).find('group').text(), + lowcart: $(this).find('group-low-cart').text(), + highcart: $(this).find('group-high-cart').text(), + }, + log: $(this).find('log').text(), + normlevel: $(this).find('normalization-level').text(), + trimlevel: $(this).find('autotrim-level').text(), + } + + var name = show.title + ' (' + show.rhythm + ', ' + weekday[show.dow] + ', ' + show.starttime + ', ' + show.length + ' Min.)'; + $('#show-selector').append($('<option>').attr('value',show.id).text(name)); + + shows_list.push(show); + } + } + ); + $('#show-selector').val(shows_currentid); + shows_showSelected(); + } + + function shows_init() { + shows_currentid = sessionStorage.getItem("shows_currentid"); + shows_list = []; + data = { LOGIN_NAME: auth_username, PASSWORD: auth_token }; + $.post("/listdropboxes.cgi", data, shows_updateList, "xml") + } + + function shows_cleanup() { + sessionStorage.removeItem("shows_currentid"); + delete shows_currentid; + shows_list = []; + shows_group_carts = []; + shows_log_carts = []; + } |