-changed some references from campcaster to airtime in the documentation / comments

This commit is contained in:
mkonecny 2011-01-05 12:19:58 -05:00
parent f6a56c01a9
commit 20c392343b
45 changed files with 91 additions and 88 deletions

View file

@ -0,0 +1,38 @@
function addRemove(el) {
var id, span;
id = $(el).attr("id").split("_").pop();
span = $('<span id="search_remove_'+id+'">Remove</span>').click(function(){
$(this).parent().parent().remove();
});
$(el).find("dl input").after(span);
}
function ajaxAddField() {
var id = $("#search_next_id").val();
var url = '/Search/newfield';
url = url + '/format/html';
url = url + '/id/' + id;
$.post(url, function(newElement) {
var el = $(newElement);
addRemove(el);
$(".zend_form").append(el);
$("#search_next_id").val(++id);
});
}
function setUpSearch() {
$("#search_add").click(ajaxAddField);
$('[id^="fieldset-row_"]').each(function(i, el){
addRemove(el);
});
}

View file

@ -0,0 +1,33 @@
/*
function contextMenu(action, el, pos) {
var method = action.split('/').pop(),
url, tr_id, id;
tr_id = $(el).attr('id');
id = tr_id.split("_").pop();
url = '/'+action;
if (method === 'delete') {
url = url + '/format/json';
url = url + '/id/' + id;
$.post(url, function(json) {
if(json.message) {
alert(json.message);
return;
}
$("#library_display tr#" +tr_id).remove();
});
}
else if (method === 'add-item') {
url = url + '/format/json';
url = url + '/id/' + id;
$.post(url, setSPLContent);
}
}
*/
function contextMenu() {
alert("callback");
}

View file

@ -0,0 +1,87 @@
function getId() {
var tr_id = $(this.triggerElement).attr("id");
tr_id = tr_id.split("_");
return tr_id[1];
}
function getType() {
var tr_id = $(this.triggerElement).attr("id");
tr_id = tr_id.split("_");
return tr_id[0];
}
function deleteItem(type, id) {
var tr_id;
tr_id = type+"_"+id;
$("#library_display tr#" +tr_id).remove();
}
function deleteAudioClip(json) {
if(json.message) {
alert(json.message);
return;
}
deleteItem("au", json.id);
}
function deletePlaylist(json) {
if(json.message) {
alert(json.message);
return;
}
deleteItem("pl", json.id);
}
function addLibraryItemEvents() {
$('#library_display tr[id ^= "au"]')
.draggable({
helper: 'clone'
});
$('#library_display tr:not(:first-child)')
.jjmenu("rightClick",
[{get:"/Library/context-menu/format/json/id/#id#/type/#type#"}],
{id: getId, type: getType},
{xposition: "mouse", yposition: "mouse"});
}
function setLibraryContents(data){
$("#library_display tr:not(:first-child)").remove();
$("#library_display").append(data);
addLibraryItemEvents()
}
function setUpLibrary() {
$("#library_display tr:first-child span.title").data({'ob': 'dc:title', 'order' : 'asc'});
$("#library_display tr:first-child span.artist").data({'ob': 'dc:creator', 'order' : 'desc'});
$("#library_display tr:first-child span.album").data({'ob': 'dc:source', 'order' : 'asc'});
$("#library_display tr:first-child span.track").data({'ob': 'ls:track_num', 'order' : 'asc'});
$("#library_display tr:first-child span.length").data({'ob': 'dcterms:extent', 'order' : 'asc'});
$("#library_display tr:first-child span").click(function(){
var url = "/Library/contents/format/html",
ob = $(this).data('ob'),
order = $(this).data('order');
//toggle order for next click.
if(order === 'asc') {
$(this).data('order', 'desc');
}
else {
$(this).data('order', 'asc');
}
$.post(url, {ob: ob, order: order}, setLibraryContents);
});
addLibraryItemEvents()
}

View file

@ -0,0 +1,26 @@
$(document).ready(function() {
$("#plupload_files").pluploadQueue({
// General settings
runtimes : 'html5',
url : '/Plupload/upload/format/json',
filters : [
{title: "Audio Files", extensions: "ogg,mp3"}
]
});
var uploader = $("#plupload_files").pluploadQueue();
uploader.bind('FileUploaded', function(up, file, json) {
var j = jQuery.parseJSON(json.response);
if(j.error !== undefined) {
var row = $("<tr/>")
.append('<td>' + file.name +'</td>')
.append('<td>' + j.error.message + '</td>');
$("#plupload_error").find("table").append(row);
}
});
});

View file

@ -0,0 +1,117 @@
//--------------------------------------------------------------------------------------------------------------------------------
//Side Playlist Functions
//--------------------------------------------------------------------------------------------------------------------------------
function setSPLContent(json) {
if(json.message) {
alert(json.message);
return;
}
$('input[name="all"]').attr("checked", false);
$('#spl_name').empty()
.append(json.name);
$('#spl_length').empty()
.append(json.length);
$('#spl_sortable').empty()
.append(json.html);
}
function addSPLItem(event, ui){
var url, tr, id;
tr = ui.helper;
if(tr.get(0).tagName === 'LI')
return;
id = tr.attr('id').split("_").pop();
url = '/Playlist/add-item/format/json';
url = url + '/id/'+id;
$.post(url, setSPLContent);
}
function deleteSPLItem(){
var url, pos;
url = '/Playlist/delete-item/format/json/view/spl';
pos = $('form[name="SPL"]').find(':checked').not('input[name="all"]').map(function() {
return "/pos/" + $(this).attr('name');
}).get().join("");
url = url + pos;
$.post(url, setSPLContent);
}
function moveSPLItem(event, ui) {
var li, newPos, oldPos, url;
li = ui.item;
newPos = li.index();
oldPos = li.attr('id').split("_").pop();
url = '/Playlist/move-item'
url = url + '/format/json';
url = url + '/view/spl';
url = url + '/oldPos/' + oldPos;
url = url + '/newPos/' + newPos;
$.post(url, setSPLContent);
}
function noOpenPL(json) {
$("#side_playlist")
.empty()
.append(json.html);
}
function closeSPL() {
var url;
url = '/Playlist/close/format/json/view/spl';
$.post(url, noOpenPL);
}
function deleteSPL() {
var url;
url = '/Playlist/delete-active/format/json/view/spl';
$.post(url, noOpenPL);
}
function openDiffSPL(json) {
$("#side_playlist")
.empty()
.append(json.html);
setUpSPL();
}
function setUpSPL() {
$("#spl_sortable").sortable();
$("#spl_sortable" ).bind( "sortstop", moveSPLItem);
$("#spl_remove_selected").click(deleteSPLItem);
$("#spl_close").click(closeSPL);
$("#spl_delete").click(deleteSPL);
$("#spl_sortable").droppable();
$("#spl_sortable" ).bind( "drop", addSPLItem);
$('input[name="all"]').click(function(){
$('form[name="SPL"]').find('input').attr("checked", $(this).attr("checked"));
});
}

View file

@ -0,0 +1,6 @@
$(document).ready(function() {
setUpLibrary();
setUpSPL();
});

View file

@ -0,0 +1,7 @@
$(document).ready(function() {
setUpLibrary();
setUpSearch();
setUpSPL();
});

View file

@ -0,0 +1,252 @@
function removeFadeInput(){
var span = $(this).parent();
var pos = span.parent().parent().attr('id').split("_").pop();
var fadeIn, fadeOut, url;
var regExpr = new RegExp("^\\d{2}[:]\\d{2}[:]\\d{2}([.]\\d{1,6})?$");
var oldValue = $("#pl_tmp_time").val();
var newValue = $(this).val().trim();
if(newValue === "")
newValue = '00:00:00';
if(span.parent().hasClass('pl_fade_in')){
fadeIn = newValue;
}
else if(span.parent().hasClass('pl_fade_out')){
fadeOut = newValue;
}
//test that input is a time.
if (!regExpr.test(newValue)) {
span.empty();
span.append(oldValue);
span.click(addTextInput);
alert("please put in a time '00:00:00 (.0000)'");
return;
}
url = '/Playlist/set-fade';
url = url + '/format/json';
url = url + '/pos/' + pos;
if (fadeIn !== undefined)
url = url + '/fadeIn/' + fadeIn;
if (fadeOut !== undefined)
url = url + '/fadeOut/' + fadeOut;
$.post(
url,
function(json){
var li, span, data;
data = jQuery.parseJSON(json),
li = $("#pl_"+pos);
if(data.error){
var hidden = $("#pl_tmp_time");
var time = hidden.val();
span = hidden.parent();
span.empty();
span.append(time);
span.click(addTextInput);
alert(data.error);
}
if(data.fadeIn){
span = li.find(".pl_fade_in").find(".pl_time");
span.empty();
span.append(data.fadeIn);
span.click(addTextInput);
}
if(data.fadeOut){
span = li.find(".pl_fade_out").find(".pl_time");
span.empty();
span.append(data.fadeOut);
span.click(addTextInput);
}
}
);
}
function removeCueInput(){
var span = $(this).parent();
var pos = span.parent().attr('id').split("_").pop();
var cueIn, cueOut, url;
var regExpr = new RegExp("^\\d{2}[:]\\d{2}[:]\\d{2}([.]\\d{1,6})?$");
var oldValue = $("#pl_tmp_time").val();
var newValue = $(this).val().trim();
if(span.hasClass('pl_cue_in')){
if(newValue === "")
newValue = '00:00:00';
cueIn = newValue;
}
else if(span.hasClass('pl_cue_out')){
cueOut = newValue;
}
//test that input is a time.
if (newValue!=="" && !regExpr.test(newValue)) {
span.empty();
span.append(oldValue);
span.click(addTextInput);
alert("please put in a time '00:00:00 (.0000)'");
return;
}
url = '/Playlist/set-cue';
url = url + '/format/json';
url = url + '/pos/' + pos;
if (cueIn !== undefined)
url = url + '/cueIn/' + cueIn;
if (cueOut !== undefined)
url = url + '/cueOut/' + cueOut;
$.post(
url,
function(json){
var li, span, data;
data = jQuery.parseJSON(json),
li = $("#pl_"+pos);
if(data.error){
var hidden = $("#pl_tmp_time");
var time = hidden.val();
span = hidden.parent();
span.empty();
span.append(time);
span.click(addTextInput);
alert(data.error);
return;
}
span = li.find(".pl_playlength");
span.empty();
span.append(data.cliplength);
span = $(".pl_duration");
span.empty();
span.append(data.length);
if(data.cueIn){
span = li.find(".pl_cue_in");
span.empty();
span.append(data.cueIn);
span.click(addTextInput);
}
if(data.cueOut){
span = li.find(".pl_cue_out");
span.empty();
span.append(data.cueOut);
span.click(addTextInput);
}
span = li.find(".pl_fade_in").find(".pl_time");
span.empty();
span.append(data.fadeIn);
span = li.find(".pl_fade_out").find(".pl_time");
span.empty();
span.append(data.fadeOut);
}
);
}
function addTextInput(){
var time = $(this).text().trim();
var input = $("<input type='text' value="+time+" size='13' maxlength='15'/>");
//Firefox seems to have problems losing focus otherwise, Chrome is fine.
$(":input").blur();
$(this).empty();
$(this).append(input);
input.focus();
if($(this).hasClass('pl_cue_in') || $(this).hasClass('pl_cue_out')) {
input.blur(removeCueInput);
}
else if($(this).parent().hasClass('pl_fade_in') || $(this).parent().hasClass('pl_fade_out')){
input.blur(removeFadeInput);
}
input.keypress(function(ev){
//don't want enter to submit.
if (ev.keyCode === 13) {
ev.preventDefault();
$(this).blur();
}
});
input = $("<input type='hidden' value="+time+" size='10' id='pl_tmp_time'/>");
$(this).append(input);
$(this).unbind('click');
}
function setPLContent(json) {
$('#pl_name').empty()
.append(json.name);
$('#pl_length').empty()
.append(json.length);
$('#pl_sortable').empty()
.append(json.html);
$(".pl_time").click(addTextInput);
}
function deletePLItem(){
var url, pos;
url = '/Playlist/delete-item/format/json/view/pl';
pos = $('form[name="PL"]').find(':checked').not('input[name="all"]').map(function() {
return "/pos/" + $(this).attr('name');
}).get().join("");
url = url + pos;
$.post(url, setPLContent);
}
function movePLItem(event, ui) {
var li, newPos, oldPos, url;
li = ui.item;
newPos = li.index();
oldPos = li.attr('id').split("_").pop();
url = '/Playlist/move-item'
url = url + '/format/json';
url = url + '/view/pl';
url = url + '/oldPos/' + oldPos;
url = url + '/newPos/' + newPos;
$.post(url, setPLContent);
}
$(document).ready(function() {
$("#pl_sortable").sortable();
$("#pl_sortable" ).bind( "sortstop", movePLItem);
$(".pl_time").click(addTextInput);
$("#pl_remove_selected").click(deletePLItem);
$('input[name="all"]').click(function(){
$('form[name="PL"]').find('input').attr("checked", $(this).attr("checked"));
});
});

View file

@ -0,0 +1,434 @@
/**
*
* Schedule Dialog creation methods.
*
*/
function makeTimeStamp(date){
var sy, sm, sd, h, m, s, timestamp;
sy = date.getFullYear();
sm = date.getMonth() + 1;
sd = date.getDate();
h = date.getHours();
m = date.getMinutes();
s = date.getSeconds();
timestamp = sy+"-"+ sm +"-"+ sd +" "+ h +":"+ m +":"+ s;
return timestamp;
}
//dateText mm-dd-yy
function startDpSelect(dateText, inst) {
var time, date;
time = dateText.split("-");
date = new Date(time[0], time[1] - 1, time[2]);
$("#end_date").datepicker("option", "minDate", date);
}
function endDpSelect(dateText, inst) {
var time, date;
time = dateText.split("-");
date = new Date(time[0], time[1] - 1, time[2]);
$("#start_date").datepicker( "option", "maxDate", date);
}
function createDateInput(el, onSelect) {
var date;
el.datepicker({
minDate: new Date(),
onSelect: onSelect,
dateFormat: 'yy-mm-dd'
});
date = $.datepicker.formatDate("yy-mm-dd", new Date());
el.val(date);
}
function submitShow() {
var formData, dialog;
formData = $("#schedule_add_event_dialog").find("form").serializeArray();
dialog = $(this);
$.post("/Schedule/add-show-dialog/format/json",
formData,
function(data){
if(data.form) {
dialog.find("form").remove();
dialog.find("#show_overlap_error").remove();
dialog.append(data.form);
var start = dialog.find("#start_date");
var end = dialog.find("#end_date");
createDateInput(start, startDpSelect);
createDateInput(end, endDpSelect);
if(data.overlap) {
var div, table, tr, days;
div = $('<div id="show_overlap_error"/>');
table = $('<table/>');
days = $.datepicker.regional[''].dayNamesShort;
$.each(data.overlap, function(i, val){
tr = $("<tr/>");
tr
.append("<td>"+val.name+"</td>")
.append("<td>"+days[val.day]+"</td>")
.append("<td>"+val.start_time+"</td>")
.append("<td>"+val.end_time+"</td>");
table.append(tr);
});
div.append("<span>Cannot add show. New show overlaps the following shows:</span>");
div.append(table);
dialog.append(div);
}
}
else {
$("#schedule_calendar").fullCalendar( 'refetchEvents' );
dialog.remove();
}
});
}
function closeDialog(event, ui) {
$(this).remove();
}
function schedulePlaylist() {
var li, pl_id, url, event, start, dialog;
dialog = $(this);
li = $("#schedule_playlist_dialog").find(".ui-state-active");
if(li.length === 0) {
dialog.remove();
return;
}
pl_id = li.data('pl_id');
event = li.parent().data('event');
start_date = makeTimeStamp(event.start);
url = '/Schedule/schedule-show/format/json';
$.post(url,
{plId: pl_id, start: start_date, showId: event.id},
function(json){
dialog.remove();
$("#schedule_calendar").fullCalendar( 'refetchEvents' );
});
}
function autoSelect(event, ui) {
$("#hosts-"+ui.item.value).attr("checked", "checked");
event.preventDefault();
}
function makeShowDialog(json) {
var dialog;
//main jqueryUI dialog
dialog = $('<div id="schedule_add_event_dialog" />');
dialog.append(json.form);
var start = dialog.find("#start_date");
var end = dialog.find("#end_date");
createDateInput(start, startDpSelect);
createDateInput(end, endDpSelect);
var auto = json.hosts.map(function(el) {
return {value: el.id, label: el.login};
});
dialog.find("#hosts_autocomplete").autocomplete({
source: auto,
select: autoSelect
});
dialog.dialog({
autoOpen: false,
title: 'Add Show',
width: 950,
height: 400,
close: closeDialog,
buttons: { "Cancel": closeDialog, "Ok": submitShow}
});
return dialog;
}
function makeScheduleDialog(playlists, event) {
var dialog;
//main jqueryUI dialog
dialog = $('<div id="schedule_playlist_dialog" />');
var ol, li;
ol = $('<ul/>');
$.each(playlists, function(i, val){
li = $('<li />')
.addClass('ui-widget-content')
.append('<div>'+val.name+'</div>')
.append('<div>'+val.description+'</div>')
.append('<div>'+val.length+'</div>')
.click(function(){
$(this).parent().find("li").removeClass("ui-state-active")
$(this).addClass("ui-state-active");
});
li.data({'pl_id': val.id});
ol.append(li);
});
ol.data({'event': event});
dialog.append(ol);
dialog.dialog({
autoOpen: false,
title: 'Schedule Playlist',
width: 950,
height: 400,
close: closeDialog,
buttons: { "Cancel": closeDialog, "Ok": schedulePlaylist}
});
return dialog;
}
function openShowDialog() {
var url;
url = '/Schedule/add-show-dialog/format/json';
$.get(url, function(json){
var dialog = makeShowDialog(json);
dialog.dialog('open');
});
}
function openScheduleDialog(event, time) {
var url;
url = '/Schedule/schedule-show/format/json';
$.get(url,
{length: time},
function(json){
var dialog = makeScheduleDialog(json.playlists, event);
dialog.dialog('open');
});
}
function eventMenu(action, el, pos) {
var method = action.split('/').pop(),
event;
event = $(el).data('event');
if (method === 'delete-show') {
$.post(action,
{format: "json", showId: event.id},
function(json){
$("#schedule_calendar").fullCalendar( 'refetchEvents' );
});
}
else if (method === 'schedule-show') {
var length, h, m, s, time;
length = event.end.getTime() - event.start.getTime();
h = Math.floor(length / (1000*60*60));
m = (length % (1000*60*60)) / (1000*60);
s = ((length % (1000*60*60)) % (1000*60)) / 1000;
time = h+":"+m+":"+s;
openScheduleDialog(event, time);
}
else if (method === 'clear-show') {
start_date = makeTimeStamp(event.start);
url = '/Schedule/clear-show/format/json';
$.post(url,
{start: start_date, showId: event.id},
function(json){
$("#schedule_calendar").fullCalendar( 'refetchEvents' );
});
}
}
/**
*
* Full Calendar callback methods.
*
*/
function dayClick(date, allDay, jsEvent, view) {
var x;
}
function eventRender(event, element, view) {
//element.qtip({
// content: event.description
// });
if(view.name === 'agendaDay' || view.name === 'agendaWeek') {
var div = $('<div/>');
div
.height('5px')
.width('100px')
.css('margin-top', '5px')
.progressbar({
value: event.percent
});
if(event.percent === 0) {
// even at 0, the bar still seems to display a little bit of progress...
div.find("div").hide();
}
else {
div.find("div")
.removeClass("ui-widget-header")
.addClass("ui-state-active");
}
$(element).find(".fc-event-title").after(div);
}
}
function eventAfterRender( event, element, view ) {
var today = new Date();
if(event.isHost === true && event.start > today) {
$(element).contextMenu(
{menu: 'schedule_event_host_menu'}, eventMenu
);
}
else{
$(element).contextMenu(
{menu: 'schedule_event_default_menu'}, eventMenu
);
}
$(element).data({'event': event});
}
function eventClick(event, jsEvent, view) {
var x;
}
function eventMouseover(event, jsEvent, view) {
}
function eventMouseout(event, jsEvent, view) {
}
function eventDrop(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) {
var url;
if (event.repeats && dayDelta !== 0) {
revertFunc();
return;
}
url = '/Schedule/move-show/format/json';
$.post(url,
{day: dayDelta, min: minuteDelta, showId: event.id},
function(json){
if(json.overlap) {
revertFunc();
}
});
}
function eventResize( event, dayDelta, minuteDelta, revertFunc, jsEvent, ui, view ) {
var url;
url = '/Schedule/resize-show/format/json';
$.post(url,
{day: dayDelta, min: minuteDelta, showId: event.id},
function(json){
if(json.overlap) {
revertFunc();
}
});
}
$(document).ready(function() {
$('#schedule_calendar').fullCalendar({
header: {
left: 'prev, next, today',
center: 'title',
right: 'agendaDay, agendaWeek, month'
},
defaultView: 'agendaDay',
editable: false,
allDaySlot: false,
events: function(start, end, callback) {
var url, start_date, end_date;
var sy, sm, sd, ey, em, ed;
sy = start.getFullYear();
sm = start.getMonth() + 1;
sd = start.getDate();
start_date = sy +"-"+ sm +"-"+ sd;
ey = end.getFullYear();
em = end.getMonth() + 1;
ed = end.getDate();
end_date = ey +"-"+ em +"-"+ ed;
url = '/Schedule/event-feed/format/json';
url = url + '/start/' + start_date;
url = url + '/end/' + end_date;
if ((ed - sd) === 1) {
url = url + '/weekday/' + start.getDay();
}
$.post(url, function(json){
callback(json.events);
});
},
//callbacks
dayClick: dayClick,
eventRender: eventRender,
eventAfterRender: eventAfterRender,
eventClick: eventClick,
eventMouseover: eventMouseover,
eventMouseout: eventMouseout,
eventDrop: eventDrop,
eventResize: eventResize
})
$('#schedule_add_show').click(openShowDialog);
});