-changed some references from campcaster to airtime in the documentation / comments
This commit is contained in:
parent
f6a56c01a9
commit
20c392343b
45 changed files with 91 additions and 88 deletions
38
public/js/airtime/library/advancedsearch.js
Normal file
38
public/js/airtime/library/advancedsearch.js
Normal 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);
|
||||
});
|
||||
}
|
33
public/js/airtime/library/context-menu.js
Normal file
33
public/js/airtime/library/context-menu.js
Normal 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");
|
||||
}
|
87
public/js/airtime/library/library.js
Normal file
87
public/js/airtime/library/library.js
Normal 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()
|
||||
}
|
26
public/js/airtime/library/plupload.js
Normal file
26
public/js/airtime/library/plupload.js
Normal 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);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
117
public/js/airtime/library/spl.js
Normal file
117
public/js/airtime/library/spl.js
Normal 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"));
|
||||
});
|
||||
}
|
||||
|
6
public/js/airtime/onready/library.js
Normal file
6
public/js/airtime/onready/library.js
Normal file
|
@ -0,0 +1,6 @@
|
|||
$(document).ready(function() {
|
||||
|
||||
setUpLibrary();
|
||||
setUpSPL();
|
||||
|
||||
});
|
7
public/js/airtime/onready/search.js
Normal file
7
public/js/airtime/onready/search.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
$(document).ready(function() {
|
||||
|
||||
setUpLibrary();
|
||||
setUpSearch();
|
||||
setUpSPL();
|
||||
|
||||
});
|
252
public/js/airtime/playlist/playlist.js
Normal file
252
public/js/airtime/playlist/playlist.js
Normal 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"));
|
||||
});
|
||||
|
||||
});
|
434
public/js/airtime/schedule/schedule.js
Normal file
434
public/js/airtime/schedule/schedule.js
Normal 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);
|
||||
|
||||
|
||||
});
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue