diff options
-rw-r--r-- | www/js/jingles.js | 132 |
1 files changed, 92 insertions, 40 deletions
diff --git a/www/js/jingles.js b/www/js/jingles.js index 1d451b2..7e8f51a 100644 --- a/www/js/jingles.js +++ b/www/js/jingles.js @@ -20,16 +20,11 @@ * along with rhwebimport. If not, see <http://www.gnu.org/licenses/>. */ +"use strict"; + var JingleGroupList = function() { this.groups = []; - $(this).on('change', this.render); - - var self = this; - $(this).on('change', function() { - console.log(self); - }); - this.fetchGroups(); }; @@ -37,11 +32,11 @@ JingleGroupList.prototype.fetchGroups = function() { console.log('fetchGroups JingleGroupList'); var self = this; - data = { LOGIN_NAME: auth_username, PASSWORD: auth_token }; - $.post("/rh-bin/listdropboxes.cgi", data, function(groupsXml, status, req) { + var command = { LOGIN_NAME: auth_username, PASSWORD: auth_token }; + $.post("/rh-bin/listdropboxes.cgi", command, function(groupsXml, status, req) { var dbs = $(groupsXml).find("dropboxList").children(); dbs.each(function(index, groupXml) { - type = $(groupXml).find('type').text(); + var type = $(groupXml).find('type').text(); if (type == 'jingle') { var jingleGroup = new JingleGroup( $(groupXml).find('jingle-title').text(), @@ -61,14 +56,6 @@ JingleGroupList.prototype.fetchGroups = function() { }, "xml"); }; -JingleGroupList.prototype.render = function() { - console.log('render JingleGroupList'); - - $.each(this.groups, function(index, group) { - group.render(); - }); -}; - var JingleGroup = function(title, groupName, description, lowcart, highcart, normlevel, trimlevel) { this.title = title; this.groupName = groupName; @@ -81,24 +68,37 @@ var JingleGroup = function(title, groupName, description, lowcart, highcart, nor this.mainCart = null; this.deactivateCart = null; + var self = this; + $(this).on('change', function() { + self.render(); + }); + this.fetchCarts(); }; JingleGroup.prototype.render = function() { console.log('render JingleGroup'); - var cuts = $.merge(this.mainCart.cuts, this.deactivateCart.cuts); + var cuts = []; + if (this.mainCart && this.deactivateCart) { + cuts = $.merge(this.mainCart.cuts, this.deactivateCart.cuts); + } cuts = cuts.sort(function(a, b) { - return a.title.toLowerCase() < b.title.toLowerCase(); + if (a.title && b.title) { + return a.title.toLowerCase() < b.title.toLowerCase(); + } + return a.title < b.title; }); if (this.groupName === 'jingAllgem') { - $('#jingles-jingAllgem table tbody').find('tr').remove(); + $('#jingles-jingAllgem h2').html(this.title); + $('#jingles-jingAllgem table tbody tr').remove(); $.each(cuts, function(index, cut) { $('#jingles-jingAllgem table > tbody').append(cut.$el()); }); - } else if (this.groupName === 'jingAllgem') { - $('#jingles-jingAnlass table tbody').find('tr').remove(); + } else if (this.groupName === 'jingAnlass') { + $('#jingles-jingAnlass h2').html(this.title); + $('#jingles-jingAnlass table tbody tr').remove(); $.each(cuts, function(index, cut) { $('#jingles-jingAnlass table > tbody').append(cut.$el()); }); @@ -108,37 +108,48 @@ JingleGroup.prototype.render = function() { JingleGroup.prototype.fetchCarts = function() { console.log('fetchGroups JingleGroup'); var self = this; - data = { COMMAND: 7, LOGIN_NAME: auth_username, PASSWORD: auth_token, CART_NUMBER: this.lowcart, INCLUDE_CUTS: 1 }; - gcd = $.post("/rd-bin/rdxport.cgi", data, function(cartXml) { - self.mainCart = self.createCartFromXml(cartXml, true); - $(self).trigger('change'); - }, "xml"); - data = { COMMAND: 7, LOGIN_NAME: auth_username, PASSWORD: auth_token, CART_NUMBER: this.highcart, INCLUDE_CUTS: 1 }; - gcd = $.post("/rd-bin/rdxport.cgi", data, function(cartXml) { - self.deactivateCart = self.createCartFromXml(cartXml, false); - }, "xml"); + var command1 = { COMMAND: 7, LOGIN_NAME: auth_username, PASSWORD: auth_token, CART_NUMBER: this.lowcart, INCLUDE_CUTS: 1 }; + var command2 = { COMMAND: 7, LOGIN_NAME: auth_username, PASSWORD: auth_token, CART_NUMBER: this.highcart, INCLUDE_CUTS: 1 }; + $.when( + $.post("/rd-bin/rdxport.cgi", command1, function(cartXml) { + self.mainCart = self.createCartFromXml(cartXml, true); + }, "xml"), + $.post("/rd-bin/rdxport.cgi", command2, function(cartXml) { + self.deactivateCart = self.createCartFromXml(cartXml, false); + }, "xml") + ).then(function() { + $(self).trigger('change'); + }); }; JingleGroup.prototype.createCartFromXml = function(cartXml, active) { var cart = new JingleCart( + $(cartXml).find('number').text(), $(cartXml).find('title').text(), $(cartXml).find('groupName').text() ); + var self = this; var cuts = $(cartXml).find("cutList").children(); cuts.each(function(index, cutXml) { - cart.addCut(new JingleCut( + var cut = new JingleCut( + cart.number, $(cutXml).find('cutName').text(), $(cutXml).find('description').text(), active - )); + ); + $(cut).on('change', function() { + $(self).trigger('change'); + }); + cart.addCut(cut); }); return cart; }; -var JingleCart = function(title, groupName) { +var JingleCart = function(number, title, groupName) { + this.number = number; this.title = title; this.groupName = groupName; @@ -149,7 +160,9 @@ JingleCart.prototype.addCut = function(cut) { this.cuts.push(cut); }; -var JingleCut = function(name, description, active) { +var JingleCut = function(cartNumber, name, description, active) { + this.cartNumber = cartNumber; + this.number = name.substr(-3); this.name = name; this.description = description; this.active = active; @@ -159,6 +172,30 @@ JingleCut.prototype.move = function() { console.log('move'); // move to other group, if active stay in mainCart, if deactivated stay in deactiveCart + // check if there is an empty cut at destination + // todo: remove hardcoded cartNumbers + var destinationCart = ((parseInt(this.cartNumber) - 2000 + 2) % 4) + 2000; + console.log(parseInt(this.cartNumber)); + console.log(destinationCart); + + var command = { COMMAND: 9, LOGIN_NAME: auth_username, PASSWORD: auth_token, CART_NUMBER: destinationCart }; + $.post("/rd-bin/rdxport.cgi", command, function(cutsXml, status, req) { + var cuts = $(cutsXml).find("cutList").children(); + console.log(cuts.length); + + // create one if not. + + if (cuts.length < 1) { + var command = { COMMAND: 10, LOGIN_NAME: auth_username, PASSWORD: auth_token, CART_NUMBER: destinationCart }; + $.post("/rd-bin/rdxport.cgi", command, null, "xml").done(function() { + console.log('done'); + }); + } + }, "xml"); + + + // use command 18 copy audio from one cart to another + //$(this).trigger('change'); }; @@ -170,10 +207,18 @@ JingleCut.prototype.toggleActivate = function() { //$(this).trigger('change'); }; -JingleCut.prototype.delete = function() { +JingleCut.prototype.delete = function(self) { console.log('delete'); // remove cut, command 11 + console.log(this.cartNumber); + console.log(this.number); + + var command = { COMMAND: 11, LOGIN_NAME: auth_username, PASSWORD: auth_token, CART_NUMBER: this.cartNumber, CUT_NUMBER: this.number}; + $.post("/rd-bin/rdxport.cgi", command, null, "xml").done(function() { + console.log('done'); + }); + //$(this).trigger('change'); }; @@ -187,9 +232,16 @@ JingleCut.prototype.$el = function() { } var deleteButton = $('<button class="btn btn-danger btn-mini"><i class="icon-trash icon-white"></i> Löschen</button>'); - moveButton.on('click', this.move); - activateButton.on('click', this.toggleActivate); - deleteButton.on('click', this.delete); + var self = this; + moveButton.on('click', function() { + self.move(); + }); + activateButton.on('click', function() { + self.toggleActivate(); + }); + deleteButton.on('click', function() { + self.delete(); + }); return $('<tr>').append($('<td>').text(this.name)) .append($('<td>').text(this.description)) |