summaryrefslogtreecommitdiff
path: root/www/js/rdxport.rh.js
diff options
context:
space:
mode:
authorPeter Grassberger <petertheone@gmail.com>2016-02-05 00:07:47 (GMT)
committerPeter Grassberger <petertheone@gmail.com>2016-02-05 00:07:47 (GMT)
commitca488f8d3609500b89b95c6c2ff6c533e62a7aea (patch)
tree746431dd97ede28079c87a3951153a0c5fb114e1 /www/js/rdxport.rh.js
parentee29206687484d49df4c77bd4d634080f1c7dca4 (diff)
rename rivendell.js to rdxport.js
Diffstat (limited to 'www/js/rdxport.rh.js')
-rw-r--r--www/js/rdxport.rh.js152
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;
+ }
+};