CC-4661: Listener Statistics

- changes for different mount names
This commit is contained in:
James 2012-11-02 18:25:08 -04:00
parent 8b70136dd6
commit 74fe958cad
4 changed files with 62 additions and 21 deletions

View File

@ -25,11 +25,8 @@ class ListenerstatController extends Zend_Controller_Action
$this->view->headScript()->appendFile($baseUrl.'/js/timepicker/jquery.ui.timepicker.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $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/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/airtime/playouthistory/historytable.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
//$this->view->headLink()->appendStylesheet($baseUrl.'/js/datatables/plugin/TableTools/css/TableTools.css?'.$CC_CONFIG['airtime_version']);
$this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery.ui.timepicker.css?'.$CC_CONFIG['airtime_version']); $this->view->headLink()->appendStylesheet($baseUrl.'/css/jquery.ui.timepicker.css?'.$CC_CONFIG['airtime_version']);
//$this->view->headLink()->appendStylesheet($baseUrl.'/css/playouthistory.css?'.$CC_CONFIG['airtime_version']);
//default time is the last 24 hours. //default time is the last 24 hours.
$now = time(); $now = time();
@ -49,6 +46,9 @@ class ListenerstatController extends Zend_Controller_Action
'his_time_end' => $end->format("H:i") 'his_time_end' => $end->format("H:i")
)); ));
$allMPs = Application_Model_ListenerStat::getAllMPNames();
$this->view->mps = $allMPs;
$this->view->date_form = $form; $this->view->date_form = $form;
} }
@ -60,11 +60,12 @@ class ListenerstatController extends Zend_Controller_Action
$starts_epoch = $request->getParam("startTimestamp", $current_time - (60*60*24)); $starts_epoch = $request->getParam("startTimestamp", $current_time - (60*60*24));
$ends_epoch = $request->getParam("endTimestamp", $current_time); $ends_epoch = $request->getParam("endTimestamp", $current_time);
$mountName = $request->getParam("mountName", null);
$startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC")); $startsDT = DateTime::createFromFormat("U", $starts_epoch, new DateTimeZone("UTC"));
$endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC")); $endsDT = DateTime::createFromFormat("U", $ends_epoch, new DateTimeZone("UTC"));
$data = Application_Model_ListenerStat::getDataPointsWithinRange($startsDT->format("Y-m-d H:i:s"), $endsDT->format("Y-m-d H:i:s")); $data = Application_Model_ListenerStat::getDataPointsWithinRange($startsDT->format("Y-m-d H:i:s"), $endsDT->format("Y-m-d H:i:s"), $mountName);
die(json_encode($data)); die(json_encode($data));
} }
} }

View File

@ -7,14 +7,32 @@ class Application_Model_ListenerStat
public static function getDataPointsWithinRange($p_start, $p_end) { public static function getDataPointsWithinRange($p_start, $p_end) {
$sql = <<<SQL $sql = <<<SQL
SELECT cc_listener_count.ID, cc_timestamp.TIMESTAMP, cc_listener_count.LISTENER_COUNT SELECT cc_listener_count.ID, cc_timestamp.TIMESTAMP, cc_listener_count.LISTENER_COUNT, mount_name
FROM cc_listener_count FROM cc_listener_count
INNER JOIN cc_timestamp ON (cc_listener_count.TIMESTAMP_ID=cc_timestamp.ID) INNER JOIN cc_timestamp ON (cc_listener_count.TIMESTAMP_ID=cc_timestamp.ID)
WHERE (cc_timestamp.TIMESTAMP>=:p1 AND cc_timestamp.TIMESTAMP<=:p2) WHERE (cc_timestamp.TIMESTAMP>=:p1 AND cc_timestamp.TIMESTAMP<=:p2)
ORDER BY cc_timestamp.TIMESTAMP ORDER BY cc_listener_count.mount_name, cc_timestamp.TIMESTAMP
SQL; SQL;
$data = Application_Common_Database::prepareAndExecute($sql, array('p1'=>$p_start, 'p2'=>$p_end)); $data = Application_Common_Database::prepareAndExecute($sql, array('p1'=>$p_start, 'p2'=>$p_end));
return $data; $out = array();
foreach ($data as $d) {
$out[$d['mount_name']][] = $d;
}
return $out;
}
public static function getAllMPNames() {
$sql = <<<SQL
SELECT DISTINCT mount_name
FROM cc_listener_count
SQL;
$mps = Application_Common_Database::prepareAndExecute($sql, array());
$out = array();
foreach ($mps as $mp) {
$out[] = $mp['mount_name'];
}
return $out;
} }
} }

View File

@ -1,6 +1,13 @@
<div id="listenerstat_content" class="ui-widget ui-widget-content block-shadow alpha-block padded"> <div id="listenerstat_content" class="ui-widget ui-widget-content block-shadow alpha-block padded">
Timestamp vs Listener Count Timestamp vs Listener Count<br>
<select id='all_mps'>
<option value="all">All Mount Potins</option>
<?php foreach($this->mps as $mp) {?>
<option value="<?php echo $mp?>"><?php echo $mp?></option>
<?php } ?>
</select>
<div id="flot_placeholder" style="width:600px;height:300px;margin:0px 50px 0px 50px"></div> <div id="flot_placeholder" style="width:600px;height:300px;margin:0px 50px 0px 50px"></div>
<?php echo $this->date_form; ?> <?php echo $this->date_form; ?>
</div> </div>

View File

@ -7,24 +7,43 @@ $(document).ready(function() {
getDataAndPlot(); getDataAndPlot();
listenerstat_content.find("#his_submit").click(function(ev){ listenerstat_content.find("#his_submit").click(function(){
startTimestamp = AIRTIME.utilities.fnGetTimestamp(dateStartId, timeStartId); startTimestamp = AIRTIME.utilities.fnGetTimestamp(dateStartId, timeStartId);
endTimestamp = AIRTIME.utilities.fnGetTimestamp(dateEndId, timeEndId); endTimestamp = AIRTIME.utilities.fnGetTimestamp(dateEndId, timeEndId);
getDataAndPlot(startTimestamp, endTimestamp); getDataAndPlot(startTimestamp, endTimestamp);
}); });
listenerstat_content.find("#all_mps").change(function(){
var mpName = $(this).val();
startTimestamp = AIRTIME.utilities.fnGetTimestamp(dateStartId, timeStartId);
endTimestamp = AIRTIME.utilities.fnGetTimestamp(dateEndId, timeEndId);
getDataAndPlot(startTimestamp, endTimestamp);
getDataAndPlot(startTimestamp, endTimestamp, mpName);
})
}); });
function getDataAndPlot(startTimestamp, endTimestamp){ function getDataAndPlot(startTimestamp, endTimestamp, mountName){
// get data // get data
$.get('/Listenerstat/get-data', {startTimestamp: startTimestamp, endTimestamp: endTimestamp}, function(data){ $.get('/Listenerstat/get-data', {startTimestamp: startTimestamp, endTimestamp: endTimestamp}, function(data){
data = JSON.parse(data); data = JSON.parse(data);
out = new Array(); out = new Array();
$.each(data, function(index, v){ $.each(data, function(mpName, v){
temp = new Array(); plotData = new Array();
temp[0] = new Date(v.timestamp.replace(/-/g,"/")); if (mountName != null && mpName != mountName){
temp[1] = v.listener_count; console.log(mountName);
out.push(temp); return true;
}
$.each(v, function(i, ele){
temp = new Array();
temp[0] = new Date(ele.timestamp.replace(/-/g,"/"));
temp[1] = ele.listener_count;
plotData.push(temp);
})
out.push(plotData);
}); });
if (out.length == 0) {
out.push(new Array());
}
plot(out); plot(out);
}) })
} }
@ -32,7 +51,7 @@ function getDataAndPlot(startTimestamp, endTimestamp){
function plot(d){ function plot(d){
oBaseDatePickerSettings = { oBaseDatePickerSettings = {
dateFormat: 'yy-mm-dd', dateFormat: 'yy-mm-dd',
onSelect: function(sDate, oDatePicker) { onSelect: function(sDate, oDatePicker) {
$(this).datepicker( "setDate", sDate ); $(this).datepicker( "setDate", sDate );
} }
}; };
@ -49,10 +68,6 @@ function plot(d){
listenerstat_content.find(dateEndId).datepicker(oBaseDatePickerSettings); listenerstat_content.find(dateEndId).datepicker(oBaseDatePickerSettings);
listenerstat_content.find(timeEndId).timepicker(oBaseTimePickerSettings); listenerstat_content.find(timeEndId).timepicker(oBaseTimePickerSettings);
$.plot($("#flot_placeholder"), [d], { xaxis: { mode: "time", timeformat: "%y/%m/%0d %H:%M:%S" } }); $.plot($("#flot_placeholder"), d, { xaxis: { mode: "time", timeformat: "%y/%m/%0d %H:%M:%S" } });
$("#whole").click(function () {
$.plot($("#flot_placeholder"), [d], { xaxis: { mode: "time" } });
});
} }