827 lines
24 KiB
JavaScript
827 lines
24 KiB
JavaScript
var AIRTIME = (function(AIRTIME) {
|
|
var mod;
|
|
|
|
if (AIRTIME.history === undefined) {
|
|
AIRTIME.history = {};
|
|
}
|
|
mod = AIRTIME.history;
|
|
|
|
var $historyContentDiv;
|
|
|
|
var oTableTools = {
|
|
"sSwfPath": baseUrl+"js/datatables/plugin/TableTools-2.1.5/swf/copy_csv_xls_pdf.swf",
|
|
"aButtons": [
|
|
{
|
|
"sExtends": "copy",
|
|
"fnComplete": function(nButton, oConfig, oFlash, text) {
|
|
var lines = text.split('\n').length,
|
|
len = this.s.dt.nTFoot === null ? lines-1 : lines-2,
|
|
plural = (len==1) ? "" : "s";
|
|
alert(sprintf($.i18n._('Copied %s row%s to the clipboard'), len, plural));
|
|
},
|
|
//set because only the checkbox row is not sortable.
|
|
"mColumns": "sortable"
|
|
},
|
|
{
|
|
"sExtends": "csv",
|
|
"fnClick": setFlashFileName,
|
|
//set because only the checkbox row is not sortable.
|
|
"mColumns": "sortable"
|
|
},
|
|
{
|
|
"sExtends": "pdf",
|
|
"fnClick": setFlashFileName,
|
|
"sPdfOrientation": "landscape",
|
|
//set because only the checkbox row is not sortable.
|
|
"mColumns": "sortable"
|
|
},
|
|
{
|
|
"sExtends": "print",
|
|
"sInfo" : sprintf($.i18n._("%sPrint view%sPlease use your browser's print function to print this table. Press escape when finished."), "<h6>", "</h6><p>"),
|
|
//set because only the checkbox row is not sortable.
|
|
"mColumns": "sortable"
|
|
}
|
|
]
|
|
};
|
|
|
|
var lengthMenu = [[10, 25, 50, 100, 500, -1], [10, 25, 50, 100, 500, $.i18n._("All")]];
|
|
|
|
var sDom = 'l<"dt-process-rel"r><"H"T><"dataTables_scrolling"t><"F"ip>';
|
|
|
|
var selectedLogItems = {};
|
|
|
|
var dateStartId = "#his_date_start",
|
|
timeStartId = "#his_time_start",
|
|
dateEndId = "#his_date_end",
|
|
timeEndId = "#his_time_end",
|
|
|
|
oTableAgg,
|
|
oTableItem,
|
|
oTableShow,
|
|
inShowsTab = false;
|
|
|
|
function getSelectedLogItems() {
|
|
var items = Object.keys(selectedLogItems);
|
|
|
|
return items;
|
|
}
|
|
|
|
function addSelectedLogItem($el) {
|
|
var id;
|
|
|
|
$el.addClass("his-selected");
|
|
id = $el.data("his-id");
|
|
selectedLogItems[id] = "";
|
|
}
|
|
|
|
function removeSelectedLogItem($el) {
|
|
var id;
|
|
|
|
$el.removeClass("his-selected");
|
|
id = $el.data("his-id");
|
|
delete selectedLogItems[id];
|
|
}
|
|
|
|
function emptySelectedLogItems() {
|
|
var $inputs = $historyContentDiv.find(".his_checkbox").find("input");
|
|
|
|
$inputs.prop('checked', false);
|
|
$inputs.parents("tr").removeClass("his-selected");
|
|
|
|
selectedLogItems = {};
|
|
}
|
|
|
|
function selectCurrentPage(e) {
|
|
var $ctx = $(e.currentTarget).parents("div.dataTables_wrapper"),
|
|
$inputs = $ctx.find(".his_checkbox").find("input"),
|
|
$tr,
|
|
$input;
|
|
|
|
$.each($inputs, function(index, input) {
|
|
$input = $(input);
|
|
$input.prop('checked', true);
|
|
$tr = $input.parents("tr");
|
|
addSelectedLogItem($tr);
|
|
});
|
|
}
|
|
|
|
function deselectCurrentPage(e) {
|
|
var $ctx = $(e.currentTarget).parents("div.dataTables_wrapper"),
|
|
$inputs = $ctx.find(".his_checkbox").find("input"),
|
|
$tr,
|
|
$input;
|
|
|
|
$.each($inputs, function(index, input) {
|
|
$input = $(input);
|
|
$input.prop('checked', false);
|
|
$tr = $input.parents("tr");
|
|
removeSelectedLogItem($tr);
|
|
});
|
|
}
|
|
|
|
function getFileName(ext){
|
|
var filename = $("#his_date_start").val()+"_"+$("#his_time_start").val()+"m--"+$("#his_date_end").val()+"_"+$("#his_time_end").val()+"m";
|
|
filename = filename.replace(/:/g,"h");
|
|
|
|
if (ext == "pdf"){
|
|
filename = filename+".pdf";
|
|
}
|
|
else {
|
|
filename = filename+".csv";
|
|
}
|
|
return filename;
|
|
}
|
|
|
|
function setFlashFileName( nButton, oConfig, oFlash ) {
|
|
var filename = getFileName(oConfig.sExtends);
|
|
oFlash.setFileName( filename );
|
|
|
|
if (oConfig.sExtends == "pdf") {
|
|
this.fnSetText( oFlash,
|
|
"title:"+ this.fnGetTitle(oConfig) +"\n"+
|
|
"message:"+ oConfig.sPdfMessage +"\n"+
|
|
"colWidth:"+ this.fnCalcColRatios(oConfig) +"\n"+
|
|
"orientation:"+ oConfig.sPdfOrientation +"\n"+
|
|
"size:"+ oConfig.sPdfSize +"\n"+
|
|
"--/TableToolsOpts--\n" +
|
|
this.fnGetTableData(oConfig));
|
|
}
|
|
else {
|
|
this.fnSetText(oFlash, this.fnGetTableData(oConfig));
|
|
}
|
|
}
|
|
|
|
/* This callback can be used for all history tables */
|
|
function fnServerData( sSource, aoData, fnCallback ) {
|
|
|
|
if (fnServerData.hasOwnProperty("start")) {
|
|
aoData.push( { name: "start", value: fnServerData.start} );
|
|
}
|
|
if (fnServerData.hasOwnProperty("end")) {
|
|
aoData.push( { name: "end", value: fnServerData.end} );
|
|
}
|
|
if (fnServerData.hasOwnProperty("instance")) {
|
|
aoData.push( { name: "instance_id", value: fnServerData.instance} );
|
|
}
|
|
|
|
aoData.push( { name: "format", value: "json"} );
|
|
|
|
$.ajax( {
|
|
"dataType": 'json',
|
|
"type": "GET",
|
|
"url": sSource,
|
|
"data": aoData,
|
|
"success": fnCallback
|
|
} );
|
|
}
|
|
|
|
function createShowAccordSection(config) {
|
|
var template,
|
|
$el;
|
|
|
|
template =
|
|
"<h3>" +
|
|
"<a href='#'>" +
|
|
"<span class='show-title'><%= name %></span>" +
|
|
"<span class='push-right'>" +
|
|
"<span class='show-date'><%= date %></span>" +
|
|
"<span class='show-time'><%= startTime %></span>" +
|
|
"-" +
|
|
"<span class='show-time'><%= endTime %></span>" +
|
|
"</span>" +
|
|
"</a>" +
|
|
"</h3>" +
|
|
"<div " +
|
|
"data-instance='<%= instance %>' " +
|
|
"></div>";
|
|
|
|
template = _.template(template);
|
|
$el = $(template(config));
|
|
|
|
return $el;
|
|
}
|
|
|
|
//$el is the div in the accordian we should create the table on.
|
|
function createShowTable($el) {
|
|
|
|
var instance = $el.data("instance");
|
|
var $table = $("<table/>", {
|
|
'cellpadding': "0",
|
|
'cellspacing': "0",
|
|
'class': "datatable",
|
|
'id': "history_table_show"
|
|
});
|
|
|
|
//assign the retrieval function the show instance id.
|
|
fnServerData.instance = instance;
|
|
$el.append($table);
|
|
$el.css("height", "auto");
|
|
oTableShow = itemHistoryTable("history_table_show");
|
|
}
|
|
|
|
function drawShowList(oShows) {
|
|
var $showList = $historyContentDiv.find("#history_show_summary"),
|
|
i,
|
|
len,
|
|
$accordSection,
|
|
show,
|
|
tmp;
|
|
|
|
$showList
|
|
.accordion( "destroy" )
|
|
.empty();
|
|
|
|
for (i = 0, len = oShows.length; i < len; i++) {
|
|
show = oShows[i];
|
|
tmp = show.starts.split(" ");
|
|
|
|
$accordSection = createShowAccordSection({
|
|
instance: show.instance_id,
|
|
name: show.name,
|
|
date: tmp[0],
|
|
startTime: tmp[1],
|
|
endTime: show.ends.split(" ").pop()
|
|
});
|
|
|
|
$showList.append($accordSection);
|
|
}
|
|
|
|
$showList.accordion({
|
|
animated: false,
|
|
create: function( event, ui ) {
|
|
var $div = $showList.find(".ui-accordion-content-active");
|
|
createShowTable($div);
|
|
},
|
|
change: function( event, ui ) {
|
|
var $div = $(ui.newContent);
|
|
$(ui.oldContent).empty();
|
|
createShowTable($div);
|
|
selectedLogItems = {};
|
|
}
|
|
//changestart: function( event, ui ) {}
|
|
});
|
|
}
|
|
|
|
function createToolbarButtons ($el) {
|
|
var $menu = $("<div class='btn-toolbar' />");
|
|
|
|
$menu.append("<div class='btn-group'>" +
|
|
"<button class='btn btn-small dropdown-toggle' data-toggle='dropdown'>" +
|
|
$.i18n._("Select")+" <span class='caret'></span>" +
|
|
"</button>" +
|
|
"<ul class='dropdown-menu'>" +
|
|
"<li class='his-select-page'><a href='#'>"+$.i18n._("Select this page")+"</a></li>" +
|
|
"<li class='his-dselect-page'><a href='#'>"+$.i18n._("Deselect this page")+"</a></li>" +
|
|
"<li class='his-dselect-all'><a href='#'>"+$.i18n._("Deselect all")+"</a></li>" +
|
|
"</ul>" +
|
|
"</div>");
|
|
|
|
$menu.append("<div class='btn-group'>" +
|
|
"<button class='btn btn-small' id='his_create'>" +
|
|
"<i class='icon-white icon-plus'></i>" +
|
|
$.i18n._("Create Entry") +
|
|
"</button>" +
|
|
"</div>");
|
|
|
|
$menu.append("<div class='btn-group'>" +
|
|
"<button class='btn btn-small' id='his_trash'>" +
|
|
"<i class='icon-white icon-trash'></i>" +
|
|
"</button>" +
|
|
"</div>");
|
|
|
|
$el.append($menu);
|
|
}
|
|
|
|
function aggregateHistoryTable() {
|
|
var oTable,
|
|
$historyTableDiv = $historyContentDiv.find("#history_table_aggregate"),
|
|
columns,
|
|
fnRowCallback;
|
|
|
|
fnRowCallback = function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
|
|
var editUrl = baseUrl+"playouthistory/edit-file-item/id/"+aData.file_id,
|
|
$nRow = $(nRow);
|
|
|
|
$nRow.data('url-edit', editUrl);
|
|
};
|
|
|
|
columns = JSON.parse(localStorage.getItem('datatables-historyfile-aoColumns'));
|
|
|
|
oTable = $historyTableDiv.dataTable( {
|
|
|
|
"aoColumns": columns,
|
|
|
|
"bProcessing": true,
|
|
"bServerSide": true,
|
|
"sAjaxSource": baseUrl+"playouthistory/file-history-feed",
|
|
"sAjaxDataProp": "history",
|
|
"fnServerData": fnServerData,
|
|
"fnRowCallback": fnRowCallback,
|
|
"oLanguage": datatables_dict,
|
|
"aLengthMenu": lengthMenu,
|
|
"iDisplayLength": 25,
|
|
"sPaginationType": "full_numbers",
|
|
"bJQueryUI": true,
|
|
"bAutoWidth": true,
|
|
"sDom": sDom,
|
|
"oTableTools": oTableTools
|
|
});
|
|
oTable.fnSetFilteringDelay(350);
|
|
|
|
return oTable;
|
|
}
|
|
|
|
function itemHistoryTable(id) {
|
|
var oTable,
|
|
$historyTableDiv = $historyContentDiv.find("#"+id),
|
|
$toolbar,
|
|
columns,
|
|
fnRowCallback,
|
|
booleans = {},
|
|
i, c;
|
|
|
|
columns = JSON.parse(localStorage.getItem('datatables-historyitem-aoColumns'));
|
|
|
|
for (i in columns) {
|
|
|
|
c = columns[i];
|
|
if (c["sDataType"] === "boolean") {
|
|
booleans[c["mDataProp"]] = c["sTitle"];
|
|
}
|
|
}
|
|
|
|
fnRowCallback = function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
|
|
var editUrl = baseUrl+"playouthistory/edit-list-item/id/"+aData.history_id,
|
|
deleteUrl = baseUrl+"playouthistory/delete-list-item/id/"+aData.history_id,
|
|
emptyCheckBox = String.fromCharCode(parseInt(2610, 16)),
|
|
checkedCheckBox = String.fromCharCode(parseInt(2612, 16)),
|
|
b,
|
|
text,
|
|
$nRow = $(nRow);
|
|
|
|
// add checkbox
|
|
$nRow.find('td.his_checkbox').html("<input type='checkbox' name='cb_"+aData.history_id+"'>");
|
|
|
|
$nRow.data('his-id', aData.history_id);
|
|
$nRow.data('url-edit', editUrl);
|
|
$nRow.data('url-delete', deleteUrl);
|
|
|
|
for (b in booleans) {
|
|
|
|
text = aData[b] ? checkedCheckBox : emptyCheckBox;
|
|
text = text + " " + booleans[b];
|
|
|
|
$nRow.find(".his_"+b).html(text);
|
|
}
|
|
};
|
|
|
|
oTable = $historyTableDiv.dataTable( {
|
|
|
|
"aoColumns": columns,
|
|
"bProcessing": true,
|
|
"bServerSide": true,
|
|
"sAjaxSource": baseUrl+"playouthistory/item-history-feed",
|
|
"sAjaxDataProp": "history",
|
|
"fnServerData": fnServerData,
|
|
"fnRowCallback": fnRowCallback,
|
|
"oLanguage": datatables_dict,
|
|
"aLengthMenu": lengthMenu,
|
|
"iDisplayLength": 25,
|
|
"sPaginationType": "full_numbers",
|
|
"bJQueryUI": true,
|
|
"bAutoWidth": true,
|
|
"sDom": sDom,
|
|
"oTableTools": oTableTools
|
|
});
|
|
oTable.fnSetFilteringDelay(350);
|
|
|
|
$toolbar = $historyTableDiv.parents(".dataTables_wrapper").find(".fg-toolbar:first");
|
|
createToolbarButtons($toolbar);
|
|
|
|
return oTable;
|
|
}
|
|
|
|
function showSummaryList() {
|
|
var url = baseUrl+"playouthistory/show-history-feed",
|
|
oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId),
|
|
data = {
|
|
format: "json",
|
|
start: oRange.start,
|
|
end: oRange.end
|
|
};
|
|
|
|
$.post(url, data, function(json) {
|
|
drawShowList(json);
|
|
});
|
|
}
|
|
|
|
mod.onReady = function() {
|
|
|
|
var oBaseDatePickerSettings,
|
|
oBaseTimePickerSettings,
|
|
$hisDialogEl,
|
|
|
|
tabsInit = [
|
|
{
|
|
initialized: false,
|
|
initialize: function() {
|
|
oTableItem = itemHistoryTable("history_table_list");
|
|
},
|
|
navigate: function() {
|
|
delete fnServerData.instance;
|
|
oTableItem.fnDraw();
|
|
},
|
|
always: function() {
|
|
inShowsTab = false;
|
|
emptySelectedLogItems();
|
|
}
|
|
},
|
|
{
|
|
initialized: false,
|
|
initialize: function() {
|
|
oTableAgg = aggregateHistoryTable();
|
|
},
|
|
navigate: function() {
|
|
delete fnServerData.instance;
|
|
oTableAgg.fnDraw();
|
|
},
|
|
always: function() {
|
|
inShowsTab = false;
|
|
emptySelectedLogItems();
|
|
}
|
|
},
|
|
{
|
|
initialized: false,
|
|
initialize: function() {
|
|
|
|
},
|
|
navigate: function() {
|
|
|
|
},
|
|
always: function() {
|
|
inShowsTab = true;
|
|
showSummaryList();
|
|
emptySelectedLogItems();
|
|
}
|
|
}
|
|
];
|
|
|
|
//set the locale names for the bootstrap calendar.
|
|
$.fn.datetimepicker.dates = {
|
|
daysMin: i18n_days_short,
|
|
months: i18n_months,
|
|
monthsShort: i18n_months_short
|
|
};
|
|
|
|
|
|
$historyContentDiv = $("#history_content");
|
|
|
|
function redrawTables() {
|
|
oTableAgg && oTableAgg.fnDraw();
|
|
oTableItem && oTableItem.fnDraw();
|
|
oTableShow && oTableShow.fnDraw();
|
|
}
|
|
|
|
function removeHistoryDialog() {
|
|
$hisDialogEl.dialog("destroy");
|
|
$hisDialogEl.remove();
|
|
}
|
|
|
|
function initializeDialog() {
|
|
var $startPicker = $hisDialogEl.find('#his_item_starts_datetimepicker'),
|
|
$endPicker = $hisDialogEl.find('#his_item_ends_datetimepicker');
|
|
|
|
$startPicker.datetimepicker();
|
|
|
|
$endPicker.datetimepicker({
|
|
showTimeFirst: true
|
|
});
|
|
|
|
$startPicker.on('changeDate', function(e) {
|
|
$endPicker.data('datetimepicker').setLocalDate(e.localDate);
|
|
});
|
|
}
|
|
|
|
function processDialogHtml($el) {
|
|
|
|
if (inShowsTab) {
|
|
$el.find("#his_choose_instance").remove();
|
|
}
|
|
|
|
return $el
|
|
}
|
|
|
|
function makeHistoryDialog(html) {
|
|
$hisDialogEl = $(html);
|
|
$hisDialogEl = processDialogHtml($hisDialogEl);
|
|
|
|
$hisDialogEl.dialog({
|
|
title: $.i18n._("Edit History Record"),
|
|
modal: false,
|
|
open: function( event, ui ) {
|
|
initializeDialog();
|
|
},
|
|
close: function() {
|
|
removeHistoryDialog();
|
|
}
|
|
});
|
|
}
|
|
|
|
/*
|
|
* Icon hover states for search.
|
|
*/
|
|
$historyContentDiv.on("mouseenter", ".his-timerange .ui-button", function(ev) {
|
|
$(this).addClass("ui-state-hover");
|
|
});
|
|
$historyContentDiv.on("mouseleave", ".his-timerange .ui-button", function(ev) {
|
|
$(this).removeClass("ui-state-hover");
|
|
});
|
|
|
|
oBaseDatePickerSettings = {
|
|
dateFormat: 'yy-mm-dd',
|
|
//i18n_months, i18n_days_short are in common.js
|
|
monthNames: i18n_months,
|
|
dayNamesMin: i18n_days_short,
|
|
onSelect: function(sDate, oDatePicker) {
|
|
$(this).datepicker( "setDate", sDate );
|
|
}
|
|
};
|
|
|
|
oBaseTimePickerSettings = {
|
|
showPeriodLabels: false,
|
|
showCloseButton: true,
|
|
closeButtonText: $.i18n._("Done"),
|
|
showLeadingZero: false,
|
|
defaultTime: '0:00',
|
|
hourText: $.i18n._("Hour"),
|
|
minuteText: $.i18n._("Minute")
|
|
};
|
|
|
|
$historyContentDiv.find(dateStartId).datepicker(oBaseDatePickerSettings);
|
|
$historyContentDiv.find(timeStartId).timepicker(oBaseTimePickerSettings);
|
|
$historyContentDiv.find(dateEndId).datepicker(oBaseDatePickerSettings);
|
|
$historyContentDiv.find(timeEndId).timepicker(oBaseTimePickerSettings);
|
|
|
|
$historyContentDiv.on("click", "#his_create", function(e) {
|
|
var url = baseUrl+"playouthistory/edit-list-item/format/json" ;
|
|
|
|
e.preventDefault();
|
|
|
|
$.get(url, function(json) {
|
|
|
|
makeHistoryDialog(json.dialog);
|
|
|
|
}, "json");
|
|
});
|
|
|
|
$('body').on("click", ".his_file_cancel, .his_item_cancel", function(e) {
|
|
removeHistoryDialog();
|
|
});
|
|
|
|
$('body').on("click", ".his_file_save", function(e) {
|
|
|
|
e.preventDefault();
|
|
|
|
var $form = $(this).parents("form");
|
|
var data = $form.serializeArray();
|
|
|
|
var url = baseUrl+"Playouthistory/update-file-item/format/json";
|
|
|
|
$.post(url, data, function(json) {
|
|
|
|
//TODO put errors on form.
|
|
if (json.error !== undefined) {
|
|
//makeHistoryDialog(json.dialog);
|
|
}
|
|
else {
|
|
removeHistoryDialog();
|
|
redrawTables();
|
|
}
|
|
|
|
}, "json");
|
|
|
|
});
|
|
|
|
$('body').on("click", ".his_item_save", function(e) {
|
|
|
|
e.preventDefault();
|
|
|
|
var $form = $(this).parents("form"),
|
|
data = $form.serializeArray(),
|
|
id = data[0].value,
|
|
createUrl = baseUrl+"Playouthistory/create-list-item/format/json",
|
|
updateUrl = baseUrl+"Playouthistory/update-list-item/format/json",
|
|
url,
|
|
$select = $hisDialogEl.find("#his_instance_select"),
|
|
instance;
|
|
|
|
url = (id === "") ? createUrl : updateUrl;
|
|
|
|
if (fnServerData.instance !== undefined) {
|
|
data.push({
|
|
name: "instance_id",
|
|
value: fnServerData.instance
|
|
});
|
|
}
|
|
else if ($select.length > 0) {
|
|
instance = $select.val();
|
|
|
|
if (instance > 0) {
|
|
data.push({
|
|
name: "instance_id",
|
|
value: instance
|
|
});
|
|
}
|
|
}
|
|
|
|
$.post(url, data, function(json) {
|
|
|
|
if (json.form !== undefined) {
|
|
var $newForm = $(json.form);
|
|
$newForm = processDialogHtml($newForm);
|
|
$hisDialogEl.html($newForm.html());
|
|
initializeDialog();
|
|
}
|
|
else {
|
|
removeHistoryDialog();
|
|
redrawTables();
|
|
}
|
|
|
|
}, "json");
|
|
|
|
});
|
|
|
|
|
|
$historyContentDiv.on("click", ".his_checkbox input", function(e) {
|
|
var checked = e.currentTarget.checked,
|
|
$tr = $(e.currentTarget).parents("tr");
|
|
|
|
if (checked) {
|
|
addSelectedLogItem($tr);
|
|
}
|
|
else {
|
|
removeSelectedLogItem($tr);
|
|
}
|
|
});
|
|
|
|
$('body').on("click", "#his_instance_retrieve", function(e) {
|
|
var startPicker = $hisDialogEl.find('#his_item_starts_datetimepicker').data('datetimepicker'),
|
|
endPicker = $hisDialogEl.find('#his_item_ends_datetimepicker').data('datetimepicker'),
|
|
url = baseUrl+"playouthistory/show-history-feed",
|
|
startDate = startPicker.getLocalDate(),
|
|
endDate = endPicker.getLocalDate(),
|
|
getEpochSeconds = AIRTIME.utilities.fnGetSecondsEpoch,
|
|
data;
|
|
|
|
data = {
|
|
start: getEpochSeconds(startDate),
|
|
end: getEpochSeconds(endDate),
|
|
format: "json"
|
|
};
|
|
|
|
$.get(url, data, function(json) {
|
|
var i,
|
|
$select = $('<select/>', {
|
|
id: 'his_instance_select'
|
|
}),
|
|
$option,
|
|
show;
|
|
|
|
if (json.length > 0) {
|
|
|
|
for (i = 0; i < json.length; i++) {
|
|
show = json[i];
|
|
|
|
$option = $('<option/>')
|
|
.text(show.name)
|
|
.attr('value', show.instance_id);
|
|
|
|
$select.append($option);
|
|
}
|
|
}
|
|
|
|
$option = $('<option/>')
|
|
.text($.i18n._("No Show"))
|
|
.attr('value', 0);
|
|
|
|
$select.append($option);
|
|
|
|
$hisDialogEl.find("#his_instance_select").replaceWith($select);
|
|
});
|
|
});
|
|
|
|
$historyContentDiv.find("#his_submit").click(function(ev){
|
|
var fn,
|
|
oRange;
|
|
|
|
oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId);
|
|
|
|
fn = fnServerData;
|
|
fn.start = oRange.start;
|
|
fn.end = oRange.end;
|
|
|
|
if (inShowsTab) {
|
|
showSummaryList();
|
|
}
|
|
else {
|
|
redrawTables();
|
|
}
|
|
});
|
|
|
|
$historyContentDiv.on("click", ".his-select-page", selectCurrentPage);
|
|
$historyContentDiv.on("click", ".his-dselect-page", deselectCurrentPage);
|
|
$historyContentDiv.on("click", ".his-dselect-all", emptySelectedLogItems);
|
|
|
|
$historyContentDiv.on("click", "#his_trash", function(ev){
|
|
var items = getSelectedLogItems(),
|
|
url = baseUrl+"playouthistory/delete-list-items";
|
|
|
|
$.post(url, {ids: items, format: "json"}, function() {
|
|
selectedLogItems = {};
|
|
redrawTables();
|
|
});
|
|
});
|
|
|
|
$historyContentDiv.find("#his-tabs").tabs({
|
|
show: function( event, ui ) {
|
|
var href = $(ui.tab).attr("href");
|
|
var index = href.split('-').pop();
|
|
var tab = tabsInit[index-1];
|
|
|
|
if (!tab.initialized) {
|
|
tab.initialize();
|
|
tab.initialized = true;
|
|
}
|
|
else {
|
|
tab.navigate();
|
|
}
|
|
|
|
tab.always();
|
|
}
|
|
});
|
|
|
|
// begin context menu initialization.
|
|
$.contextMenu({
|
|
selector: '#history_content td:not(.his_checkbox)',
|
|
trigger: "left",
|
|
ignoreRightClick: true,
|
|
|
|
build: function($el, e) {
|
|
var items = {},
|
|
callback,
|
|
$tr,
|
|
editUrl,
|
|
deleteUrl;
|
|
|
|
$tr = $el.parents("tr");
|
|
editUrl = $tr.data("url-edit");
|
|
deleteUrl = $tr.data("url-delete");
|
|
|
|
if (editUrl !== undefined) {
|
|
|
|
callback = function() {
|
|
$.post(editUrl, {format: "json"}, function(json) {
|
|
|
|
makeHistoryDialog(json.dialog);
|
|
|
|
}, "json");
|
|
};
|
|
|
|
items["edit"] = {
|
|
"name": $.i18n._("Edit"),
|
|
"icon": "edit",
|
|
"callback": callback
|
|
};
|
|
}
|
|
|
|
if (deleteUrl !== undefined) {
|
|
|
|
callback = function() {
|
|
var c = confirm("Delete this entry?");
|
|
|
|
if (c) {
|
|
$.post(deleteUrl, {format: "json"}, function(json) {
|
|
redrawTables();
|
|
});
|
|
}
|
|
};
|
|
|
|
items["del"] = {
|
|
"name": $.i18n._("Delete"),
|
|
"icon": "delete",
|
|
"callback": callback
|
|
};
|
|
}
|
|
|
|
return {
|
|
items: items
|
|
};
|
|
}
|
|
});
|
|
};
|
|
|
|
return AIRTIME;
|
|
|
|
}(AIRTIME || {}));
|
|
|
|
$(document).ready(AIRTIME.history.onReady); |