got basic data tables working need to add show selection, redraw etc

This commit is contained in:
Robbt 2019-05-02 19:32:50 -04:00
parent 448d9b9e90
commit 7c783536db
4 changed files with 136 additions and 54 deletions

View File

@ -60,17 +60,18 @@ class ListenerstatController extends Zend_Controller_Action
$request = $this->getRequest();
$baseUrl = Application_Common_OsPath::getBaseDir();
$headScript = $this->view->headScript();
AirtimeTableView::injectTableJavaScriptDependencies($headScript, $baseUrl, $CC_CONFIG['airtime_version']);
Zend_Layout::getMvcInstance()->assign('parent_page', 'Analytics');
$this->view->headScript()->appendFile($baseUrl.'js/timepicker/jquery.ui.timepicker.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/listenerstat/showlistenerstat.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/datatables/js/jquery.dataTables.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/datatables/plugin/dataTables.pluginAPI.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/datatables/plugin/dataTables.fnSetFilteringDelay.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/datatables/plugin/TableTools-2.1.5/js/ZeroClipboard.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headScript()->appendFile($baseUrl.'js/datatables/plugin/TableTools-2.1.5/js/TableTools.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$this->view->headLink()->appendStylesheet($baseUrl.'css/datatables/css/ColVis.css?'.$CC_CONFIG['airtime_version']);
$this->view->headLink()->appendStylesheet($baseUrl.'css/datatables/css/dataTables.colReorder.min.css?'.$CC_CONFIG['airtime_version']);
$this->view->headLink()->appendStylesheet($baseUrl.'js/datatables/plugin/TableTools-2.1.5/css/TableTools.css?'.$CC_CONFIG['airtime_version']);
$this->view->headLink()->appendStylesheet($baseUrl.'css/jquery.ui.timepicker.css?'.$CC_CONFIG['airtime_version']);
@ -99,7 +100,6 @@ class ListenerstatController extends Zend_Controller_Action
public function getDataAction(){
list($startsDT, $endsDT) = Application_Common_HTTPHelper::getStartEndFromRequest($this->getRequest());
$data = Application_Model_ListenerStat::getDataPointsWithinRange($startsDT->format(DEFAULT_TIMESTAMP_FORMAT),
$endsDT->format(DEFAULT_TIMESTAMP_FORMAT));
$this->_helper->json->sendJson($data);
@ -114,9 +114,8 @@ class ListenerstatController extends Zend_Controller_Action
}
public function getAllShowData(){
list($startsDT, $endsDT) = Application_Common_HTTPHelper::getStartEndFromRequest($this->getRequest());
$show_id = $this->getRequest()->getParam("show_id", null);
$data = Application_Model_ListenerStat::getAllShowDataPointsWithinRange($startsDT->format(DEFAULT_TIMESTAMP_FORMAT),
$endsDT->format(DEFAULT_TIMESTAMP_FORMAT),$show_id);
$endsDT->format(DEFAULT_TIMESTAMP_FORMAT));
return $data;
}
@ -124,7 +123,7 @@ class ListenerstatController extends Zend_Controller_Action
list($startsDT, $endsDT) = Application_Common_HTTPHelper::getStartEndFromRequest($this->getRequest());
$show_id = $this->getRequest()->getParam("show_id", null);
$data = Application_Model_ListenerStat::getAllShowDataPointsWithinRange($startsDT->format(DEFAULT_TIMESTAMP_FORMAT),
$endsDT->format(DEFAULT_TIMESTAMP_FORMAT),$show_id);
$endsDT->format(DEFAULT_TIMESTAMP_FORMAT));
$this->_helper->json->sendJson($data);
}
}

View File

@ -0,0 +1,68 @@
<?php
class Application_Form_ShowListenerStat extends Zend_Form_SubForm
{
public function init()
{
$this->setDecorators(array(
array('ViewScript', array('viewScript' => 'form/daterange.phtml'))
));
// Add start date element
$startDate = new Zend_Form_Element_Text('his_date_start');
$startDate->class = 'input_text';
$startDate->setRequired(true)
->setLabel(_('Date Start:'))
->setValue(date("Y-m-d"))
->setFilters(array('StringTrim'))
->setValidators(array(
'NotEmpty',
array('date', false, array('YYYY-MM-DD'))))
->setDecorators(array('ViewHelper'));
$startDate->setAttrib('alt', 'date');
$this->addElement($startDate);
// Add start time element
$startTime = new Zend_Form_Element_Text('his_time_start');
$startTime->class = 'input_text';
$startTime->setRequired(true)
->setValue('00:00')
->setFilters(array('StringTrim'))
->setValidators(array(
'NotEmpty',
array('date', false, array('HH:mm')),
array('regex', false, array('/^[0-2]?[0-9]:[0-5][0-9]$/', 'messages' => _('Invalid character entered')))))
->setDecorators(array('ViewHelper'));
$startTime->setAttrib('alt', 'time');
$this->addElement($startTime);
// Add end date element
$endDate = new Zend_Form_Element_Text('his_date_end');
$endDate->class = 'input_text';
$endDate->setRequired(true)
->setLabel(_('Date End:'))
->setValue(date("Y-m-d"))
->setFilters(array('StringTrim'))
->setValidators(array(
'NotEmpty',
array('date', false, array('YYYY-MM-DD'))))
->setDecorators(array('ViewHelper'));
$endDate->setAttrib('alt', 'date');
$this->addElement($endDate);
// Add end time element
$endTime = new Zend_Form_Element_Text('his_time_end');
$endTime->class = 'input_text';
$endTime->setRequired(true)
->setValue('01:00')
->setFilters(array('StringTrim'))
->setValidators(array(
'NotEmpty',
array('date', false, array('HH:mm')),
array('regex', false, array('/^[0-2]?[0-9]:[0-5][0-9]$/', 'messages' => _('Invalid character entered')))))
->setDecorators(array('ViewHelper'));
$endTime->setAttrib('alt', 'time');
$this->addElement($endTime);
}
}

View File

@ -0,0 +1,22 @@
<div id="showlistenerstat_content" class="alpha-block padded">
<H2><?php echo _("Listeners")?></H2>
<div id="date_form" style="float:left; margin:0px 0px">
<h3 style="padding-left: 0px">Date Range</h3>
<?php echo $this->date_form; ?>
</div>
<table id="show_builder_table" cellpadding="0" cellspacing="0" class="datatable"></table>
<table cellspacing="0" cellpadding="0" style="" id="show_stats_datatable" class="datatable">
<thead>
<tr>
<th><?php echo _("Show Name") ?></th>
<th><?php echo _("Air Date") ?></th>
<th><?php echo _("Average Listeners")?></th>
<th><?php echo _("Maximum Number of Listeners")?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<div style="clear: both;"></div>
</div>

View File

@ -6,28 +6,23 @@ $(document).ready(function() {
timeEndId = "#his_time_end",
show_id = "#his_show_filter";
console.log(show_id);
// set width dynamically
var width = $("#showlistenerstat_content").width();
width = width * .91;
addDatePicker();
showlistenerstat_content.find("#sb_submit").click(function(){
var show_id = $("#sb_show_filter").val();
console.log(show_id);
showlistenerstat_content.find("#his_submit").click(function(){
// var show_id = $("#sb_show_filter").val();
var oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId);
var start = oRange.start;
var end = oRange.end;
getShowData(start, end, show_id);
brokeDataTable();
});
});
function getShowData(startTimestamp, endTimestamp, show_id) {
// get data
$.get(baseUrl+'Listenerstat/get-show-data', {start: startTimestamp, end: endTimestamp, show_id: show_id}, function(data) {
$.get(baseUrl+'Listenerstat/get-all-show-data', {start: startTimestamp, end: endTimestamp }, function(data) {
return data;
});
}
@ -60,52 +55,50 @@ function addDatePicker() {
showlistenerstat_content.find(timeEndId).timepicker(oBaseTimePickerSettings);
}
function getStartEnd() {
return AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId);
}
function showSummaryList(start, end) {
var url = baseUrl+"playouthistory/show-history-feed",
data = {
format: "json",
start: start,
end: end
};
$.post(url, data, function(json) {
drawShowList(json);
});
}
function brokeDataTable() {
var oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId);
var start = oRange.start;
var end = oRange.end;
var show_id = $("#sb_show_filter").val();
var dt = $('#show_stats_datatable');
info = getStartEnd();
dt.dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": baseUrl + "Listenerstat/get-show-data",
"fnServerParams": function (aoData) {
aoData.push({start: start, end: end, show_id: show_id});
},
"fnAddData": function (sSource, aoData, fnCallback) {
$.ajax({
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback
});
},
"aoColumns": [
/* first name */ {"sName": "show", "mDataProp": "show"},
/* air date */ {"sName": "time", "mDataProp": "time"},
/* last name */ {"sName": "average_number_of_listeners", "mDataProp": "average_number_of_listeners"},
/* last name */ {"sName": "max_number_of_listeners", "mDataProp": "max_number_of_listeners"},
/* del button */ {
"sName": "null as delete",
"bSearchable": false,
"bSortable": false,
"mDataProp": "delete"
}
],
"bJQueryUI": true,
"bAutoWidth": false,
"bLengthChange": false,
"oLanguage": getDatatablesStrings({
"sEmptyTable": $.i18n._("No Show Records Found"),
"sEmptyTable": $.i18n._("No show found"),
"sZeroRecords": $.i18n._("No show statistics found"),
"sInfo": $.i18n._("Showing _START_ to _END_ of _TOTAL_ users"),
"sInfoEmpty": $.i18n._("Showing 0 to 0 of 0 users"),
"sInfoFiltered": $.i18n._("(filtered from _MAX_ total users)"),
}),
"sDom": '<"H"lf<"dt-process-rel"r>><"#user_list_inner_wrapper"t><"F"ip>'
/* last name */ {"sName": "maximum_number_of_listeners", "mDataProp": "maximum_number_of_listeners"}],
"sAjaxSource": baseUrl+'Listenerstat/get-all-show-data',
"sAjaxDataProp": "",
"fnServerData": function ( sSource, aoData, fnCallback ) {
aoData.push({"start": start, "end": end});
$.ajax( {
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": {"start": start, "end": end},
"success": fnCallback
} );
},
});
}