PDF export works

This commit is contained in:
Zachary Klosko 2021-01-18 12:11:33 -05:00
parent dc7faf5e82
commit fb683874a7
4 changed files with 83 additions and 8 deletions

View file

@ -52,6 +52,8 @@ class PlayouthistoryController extends Zend_Controller_Action
$this->view->headScript()->appendFile($baseUrl.'js/airtime/buttons/buttons.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'js/airtime/buttons/buttons.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/airtime/utilities/utilities.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'js/airtime/utilities/utilities.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/libs/CSVexport.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'js/libs/CSVexport.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/libs/pdfmake.min.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/libs/vfs_fonts.min.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/airtime/playouthistory/historytable.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'js/airtime/playouthistory/historytable.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headLink()->appendStylesheet($baseUrl.'css/bootstrap-datetimepicker.min.css?'.$CC_CONFIG['airtime_version']); $this->view->headLink()->appendStylesheet($baseUrl.'css/bootstrap-datetimepicker.min.css?'.$CC_CONFIG['airtime_version']);

View file

@ -253,19 +253,22 @@ var AIRTIME = (function(AIRTIME) {
"<li class='his-dselect-all'><a href='#'>"+$.i18n._("Deselect all")+"</a></li>" + "<li class='his-dselect-all'><a href='#'>"+$.i18n._("Deselect all")+"</a></li>" +
"</ul>" + "</ul>" +
"</div>"); "</div>");
$menu.append("<div class='btn-group'>" +
"<button class='btn btn-small dropdown-toggle' data-toggle='dropdown'>" +
$.i18n._("Export")+" <span class='caret'></span>" +
"</button>" +
"<ul class='dropdown-menu'>" +
"<li id='csv_export'><a href='#'>"+$.i18n._("Export as CSV")+"</a></li>" +
"<li id='pdf_export'><a href='#'>"+$.i18n._("Export as PDF")+"</a></li>" +
"</ul>" +
"</div>");
$menu.append("<div class='btn-group'>" + $menu.append("<div class='btn-group'>" +
"<button class='btn btn-small' id='his_trash'>" + "<button class='btn btn-small' id='his_trash'>" +
"<i class='icon-white icon-trash'></i>" + "<i class='icon-white icon-trash'></i>" +
"</button>" + "</button>" +
"</div>"); "</div>");
$menu.append("<div class='btn-group'>" +
"<button class='btn btn-small btn-new' id='csv_export'>" +
// "<i class='icon-white icon-plus'></i>" +
$.i18n._("Export as CSV") +
"</button>" +
"</div>");
$el.append($menu); $el.append($menu);
} }
@ -575,6 +578,72 @@ var AIRTIME = (function(AIRTIME) {
}, "json"); }, "json");
}); });
$historyContentDiv.on("click", "#pdf_export", async function(){
// Get date/time from pickers
var startDay = document.querySelector('#his_date_start').value;
var startTime = document.querySelector('#his_time_start').value;
var endDay = document.querySelector('#his_date_end').value;
var endTime = document.querySelector('#his_time_end').value;
var url = baseUrl + "api/item-history-feed?start=" + startDay + " " + startTime + "&end=" + endDay + " " + endTime;
var requestData = await fetch(url);
var hisData = await requestData.json();
if (!hisData.length) {
alert("The date range selected doesn't have any items to export.");
return
} else {
// Generate PDF template
var dd = {
content: [
{text: 'Libretime', style: 'subheader'},
{text: 'Playout History from ' + startDay + ' ' + startTime + ' to ' + endDay + ' ' + endTime, style: 'header'},
{
style: 'mainTable',
table: {
headerRows: 1,
body: [
[{text: 'Start Time', style: 'tableHeader'}, {text: 'End Time', style: 'tableHeader'}, {text: 'Song', style: 'tableHeader'}, {text: 'Artist', style: 'tableHeader'}],
]
}
}
],
styles: {
header: {
fontSize: 18,
bold: true,
margin: [0, 0, 0, 10]
},
subheader: {
fontSize: 14,
bold: true,
margin: [0, 10, 0, 5]
},
mainTable: {
margin: [0, 5, 0, 15]
},
tableHeader: {
bold: true,
fontSize: 13,
color: 'black'
}
},
defaultStyle: {
}
};
hisData.forEach(element => {
// Removing extra fields
delete element.checkbox;
delete element.history_id;
delete element.instance_id;
dd.content[2].table.body.push(Object.values(element));
});
// Make PDF and start download
pdfMake.createPdf(dd).download();
};
});
$historyContentDiv.on("click", "#csv_export", async function(){ $historyContentDiv.on("click", "#csv_export", async function(){
// Get date/time from pickers // Get date/time from pickers

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long