/* * rhwebimport * * Copyright (C) 2014-2016 Christian Pointner * Copyright (C) 2015-2016 Peter Grassberger * * 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 . */ 'use strict'; var Rivendell = Rivendell || {}; Rivendell.Rivendell.prototype.setListDropboxesEndpoint = function(listDropboxesEndpoint) { this.listDropboxesEndpoint = listDropboxesEndpoint; }; Rivendell.Rivendell.prototype.setMusicgridEndpoint = function(musicgridEndpoint) { this.musicgridEndpoint = musicgridEndpoint; }; Rivendell.Rivendell.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/73 Rivendell.Rivendell.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.rdxportEndpoint, options, success, "xml"); }; // todo: addAndEditCart Rivendell.Rivendell.prototype.getMusicgrid = function(success) { var command = { LOGIN_NAME: this.username, PASSWORD: this.token }; return $.get(this.musicgridEndpoint, command, success, "xml"); }; Rivendell.Rivendell.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 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; } };