205 lines
4.9 KiB
JavaScript
205 lines
4.9 KiB
JavaScript
$(document).ready(function(){
|
|
|
|
var viewport = AIRTIME.utilities.findViewportDimensions(),
|
|
lib = $("#library_content"),
|
|
builder = $("#show_builder"),
|
|
widgetHeight = viewport.height - 185,
|
|
screenWidth = Math.floor(viewport.width - 110),
|
|
oBaseDatePickerSettings,
|
|
oBaseTimePickerSettings,
|
|
oRange;
|
|
|
|
//set the heights of the main widgets.
|
|
lib.height(widgetHeight);
|
|
|
|
//builder takes all the screen on first load
|
|
builder.height(widgetHeight)
|
|
.width(screenWidth);
|
|
|
|
oBaseDatePickerSettings = {
|
|
dateFormat: 'yy-mm-dd',
|
|
onSelect: function(sDate, oDatePicker) {
|
|
$(this).datepicker( "setDate", sDate );
|
|
}
|
|
};
|
|
|
|
oBaseTimePickerSettings = {
|
|
showPeriodLabels: false,
|
|
showCloseButton: true,
|
|
showLeadingZero: false,
|
|
defaultTime: '0:00'
|
|
};
|
|
|
|
/*
|
|
* Get the schedule range start in unix timestamp form (in seconds).
|
|
* defaults to NOW if nothing is selected.
|
|
*
|
|
* @param String sDatePickerId
|
|
*
|
|
* @param String sTimePickerId
|
|
*
|
|
* @return Number iTime
|
|
*/
|
|
function fnGetTimestamp(sDatePickerId, sTimePickerId) {
|
|
var date,
|
|
time,
|
|
iTime,
|
|
iServerOffset,
|
|
iClientOffset;
|
|
|
|
if ($(sDatePickerId).val() === "") {
|
|
return 0;
|
|
}
|
|
|
|
date = $(sDatePickerId).val();
|
|
time = $(sTimePickerId).val();
|
|
|
|
date = date.split("-");
|
|
time = time.split(":");
|
|
|
|
//0 based month in js.
|
|
oDate = new Date(date[0], date[1]-1, date[2], time[0], time[1]);
|
|
|
|
iTime = oDate.getTime(); //value is in millisec.
|
|
iTime = Math.round(iTime / 1000);
|
|
iServerOffset = serverTimezoneOffset;
|
|
iClientOffset = oDate.getTimezoneOffset() * -60;//function returns minutes
|
|
|
|
//adjust for the fact the the Date object is in client time.
|
|
iTime = iTime + iClientOffset + iServerOffset;
|
|
|
|
return iTime;
|
|
}
|
|
/*
|
|
* Returns an object containing a unix timestamp in seconds for the start/end range
|
|
*
|
|
* @return Object {"start", "end", "range"}
|
|
*/
|
|
function fnGetScheduleRange() {
|
|
var iStart,
|
|
iEnd,
|
|
iRange,
|
|
DEFAULT_RANGE = 60*60*24;
|
|
|
|
iStart = fnGetTimestamp("#sb_date_start", "#sb_time_start");
|
|
iEnd = fnGetTimestamp("#sb_date_end", "#sb_time_end");
|
|
|
|
iRange = iEnd - iStart;
|
|
|
|
if (iRange === 0 || iEnd < iStart) {
|
|
iEnd = iStart + DEFAULT_RANGE;
|
|
iRange = DEFAULT_RANGE;
|
|
}
|
|
|
|
return {
|
|
start: iStart,
|
|
end: iEnd,
|
|
range: iRange
|
|
};
|
|
}
|
|
|
|
$("#sb_date_start").datepicker(oBaseDatePickerSettings);
|
|
$("#sb_time_start").timepicker(oBaseTimePickerSettings);
|
|
$("#sb_date_end").datepicker(oBaseDatePickerSettings);
|
|
$("#sb_time_end").timepicker(oBaseTimePickerSettings);
|
|
|
|
$("#sb_submit").click(function(ev){
|
|
var fn,
|
|
oRange,
|
|
op,
|
|
oTable = $('#show_builder_table').dataTable();
|
|
|
|
//reset timestamp value since input values could have changed.
|
|
AIRTIME.showbuilder.resetTimestamp();
|
|
|
|
oRange = fnGetScheduleRange();
|
|
|
|
fn = oTable.fnSettings().fnServerData;
|
|
fn.start = oRange.start;
|
|
fn.end = oRange.end;
|
|
|
|
op = $("div.sb-advanced-options");
|
|
if (op.is(":visible")) {
|
|
|
|
if (fn.ops === undefined) {
|
|
fn.ops = {};
|
|
}
|
|
fn.ops.showFilter = op.find("#sb_show_filter").val();
|
|
fn.ops.myShows = op.find("#sb_my_shows").is(":checked") ? 1 : 0;
|
|
}
|
|
|
|
oTable.fnDraw();
|
|
});
|
|
|
|
$("#sb_edit").click(function(ev){
|
|
var $button = $(this),
|
|
$lib = $("#library_content"),
|
|
$builder = $("#show_builder"),
|
|
schedTable = $("#show_builder_table").dataTable(),
|
|
libTable = $lib.find("#library_display").dataTable();
|
|
|
|
if ($button.hasClass("sb-edit")) {
|
|
|
|
//reset timestamp to redraw the cursors.
|
|
AIRTIME.showbuilder.resetTimestamp();
|
|
|
|
$lib.show();
|
|
$lib.width(Math.floor(screenWidth * 0.5));
|
|
$builder.width(Math.floor(screenWidth * 0.5));
|
|
|
|
$button.removeClass("sb-edit");
|
|
$button.addClass("sb-finish-edit");
|
|
$button.val("Close Library");
|
|
}
|
|
else if ($button.hasClass("sb-finish-edit")) {
|
|
|
|
$lib.hide();
|
|
$builder.width(screenWidth);
|
|
|
|
$button.removeClass("sb-finish-edit");
|
|
$button.addClass("sb-edit");
|
|
$button.val("Add Files");
|
|
}
|
|
|
|
schedTable.fnDraw();
|
|
});
|
|
|
|
oRange = fnGetScheduleRange();
|
|
AIRTIME.showbuilder.fnServerData.start = oRange.start;
|
|
AIRTIME.showbuilder.fnServerData.end = oRange.end;
|
|
|
|
AIRTIME.library.libraryInit();
|
|
AIRTIME.showbuilder.builderDataTable();
|
|
|
|
//check if the timeline viewed needs updating.
|
|
setInterval(function(){
|
|
var data = {},
|
|
oTable = $('#show_builder_table').dataTable(),
|
|
fn = oTable.fnSettings().fnServerData,
|
|
start = fn.start,
|
|
end = fn.end;
|
|
|
|
data["format"] = "json";
|
|
data["start"] = start;
|
|
data["end"] = end;
|
|
data["timestamp"] = AIRTIME.showbuilder.getTimestamp();
|
|
|
|
if (fn.hasOwnProperty("ops")) {
|
|
data["myShows"] = fn.ops.myShows;
|
|
data["showFilter"] = fn.ops.showFilter;
|
|
}
|
|
|
|
$.ajax( {
|
|
"dataType": "json",
|
|
"type": "GET",
|
|
"url": "/showbuilder/check-builder-feed",
|
|
"data": data,
|
|
"success": function(json) {
|
|
if (json.update === true) {
|
|
oTable.fnDraw();
|
|
}
|
|
}
|
|
} );
|
|
|
|
}, 5 * 1000); //need refresh in milliseconds
|
|
}); |