diff options
author | Peter Grassberger <petertheone@gmail.com> | 2016-02-05 00:07:47 (GMT) |
---|---|---|
committer | Peter Grassberger <petertheone@gmail.com> | 2016-02-05 00:07:47 (GMT) |
commit | ca488f8d3609500b89b95c6c2ff6c533e62a7aea (patch) | |
tree | 746431dd97ede28079c87a3951153a0c5fb114e1 /www/js/rdxport.rh.js | |
parent | ee29206687484d49df4c77bd4d634080f1c7dca4 (diff) |
rename rivendell.js to rdxport.js
Diffstat (limited to 'www/js/rdxport.rh.js')
-rw-r--r-- | www/js/rdxport.rh.js | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/www/js/rdxport.rh.js b/www/js/rdxport.rh.js new file mode 100644 index 0000000..a80e6de --- /dev/null +++ b/www/js/rdxport.rh.js @@ -0,0 +1,152 @@ +/* + * rhwebimport + * + * Copyright (C) 2014-2016 Christian Pointner <equinox@helsinki.at> + * Copyright (C) 2015-2016 Peter Grassberger <petertheone@gmail.com> + * + * This file is part of rhwebimport. + * + * rhwebimport is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * rhwebimport is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with rhwebimport. If not, see <http://www.gnu.org/licenses/>. + */ + +'use strict'; + +var Rivendell = Rivendell || {}; + +Rivendell.Rdxport.authLogin = function(authEndpoint, username, password, success) { + return $.ajax(authEndpoint, { + username: username, + password: password, + success: success, + dataType: 'json', + cache: false + }); +}; + +Rivendell.Rdxport.prototype.setListDropboxesEndpoint = function(listDropboxesEndpoint) { + this.listDropboxesEndpoint = listDropboxesEndpoint; +}; + +Rivendell.Rdxport.prototype.setMusicgridEndpoint = function(musicgridEndpoint) { + this.musicgridEndpoint = musicgridEndpoint; +}; + +Rivendell.Rdxport.prototype.listDropboxes = function(type, success) { + var command = { + LOGIN_NAME: this.username, + PASSWORD: this.token + }; + if (type !== null) { + command.TYPE = type; + } + return $.post(this.listDropboxesEndpoint, command, success, 'xml'); +}; + +// see: https://github.com/ElvishArtisan/rivendell/pull/100 +Rivendell.Rdxport.prototype.addAndEditCut = function(cartNumber, options, success) { + options.COMMAND = 10; + options.LOGIN_NAME = this.username; + options.PASSWORD = this.token; + options.CART_NUMBER = cartNumber; + return $.post(this.endpoint, options, success, "xml"); +}; + +// todo: addAndEditCart + +Rivendell.Rdxport.prototype.getMusicgrid = function(success) { + var command = { + LOGIN_NAME: this.username, + PASSWORD: this.token + }; + return $.get(this.musicgridEndpoint, command, success, "xml"); +}; + +Rivendell.Rdxport.prototype.setMusicgrid = function(dow, hour, name, success) { + var command = { + LOGIN_NAME: this.username, + PASSWORD: this.token, + DOW: dow, + HOUR: hour, + NAME: name + }; + return $.post(this.musicgridEndpoint, command, success, "xml"); +}; + +Rivendell.GroupList.prototype.fetch = function(type) { + this.groups = []; + + var self = this; + this.rivendell.listDropboxes(type, function(groupsXml, status, req) { + var dbs = $('dropboxList', groupsXml).children(); + dbs.each(function(index, groupXml) { + var group = null; + switch ($('type', groupXml).text()) { + /*case 'show': + // todo + break;*/ + case 'jingle': + group = new Rivendell.JingleGroup(groupXml); + break; + case 'musicpool': + group = new Rivendell.Musicpool(groupXml); + break; + default: + group = new Rivendell.Group(groupXml); + break; + } + + if (group !== null) { + self.groups.push(group); + } + }); + + $(self).trigger('update'); + }); +}; + +Rivendell.Musicgrid = function() { + this.clocks = []; +}; + +Rivendell.Musicgrid.prototype.fetch = function() { + this.clocks = []; + + var self = this; + rivendell.getMusicgrid(function(gridXml, status, req) { + var dbs = $('grid', gridXml).children(); + dbs.each(function(index, clockXml) { + self.clocks.push(new Rivendell.MusicgridClock(clockXml)); + }); + $(self).trigger('update'); + }); +}; + +Rivendell.MusicgridClock = function(name, color, title, dow, hour) { + this.xml = null; + + if (arguments.length === 1) { + this.xml = arguments[0]; + this.name = $('name', this.xml).text(); + this.color = $('color', this.xml).text(); + this.title = $('title', this.xml).text(); + this.dow = $(this.xml).attr('dow'); + this.hour = $(this.xml).attr('hour'); + } else { + this.name = name; + this.color = color; + this.title = title; + this.dow = dow; + this.hour = hour; + } +}; |