diff --git a/airtime_mvc/application/controllers/ListenerstatController.php b/airtime_mvc/application/controllers/ListenerstatController.php
index 7e862788c..525faace3 100644
--- a/airtime_mvc/application/controllers/ListenerstatController.php
+++ b/airtime_mvc/application/controllers/ListenerstatController.php
@@ -74,6 +74,7 @@ class ListenerstatController extends Zend_Controller_Action
$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']);
+ $this->view->headLink()->appendStylesheet($baseUrl.'css/show_analytics.css'.$CC_CONFIG['airtime_version']);
$user = Application_Model_User::getCurrentUser();
if ($user->isUserType(array(UTYPE_SUPERADMIN, UTYPE_ADMIN, UTYPE_PROGRAM_MANAGER))) {
diff --git a/airtime_mvc/application/views/scripts/listenerstat/show.phtml b/airtime_mvc/application/views/scripts/listenerstat/show.phtml
index 6e31dc36e..064e8f3cf 100644
--- a/airtime_mvc/application/views/scripts/listenerstat/show.phtml
+++ b/airtime_mvc/application/views/scripts/listenerstat/show.phtml
@@ -1,5 +1,6 @@
+
Date Range
date_form; ?>
diff --git a/airtime_mvc/public/css/show_analytics.css b/airtime_mvc/public/css/show_analytics.css
new file mode 100644
index 000000000..41f08c874
--- /dev/null
+++ b/airtime_mvc/public/css/show_analytics.css
@@ -0,0 +1,10 @@
+div.date_form input.error {
+ background-color: rgba(255,0,0,0.2);
+}
+div.error_window.error {
+ background-color: rgba(255,0,0,0.2);
+ color:white;
+}
+div.error_window {
+ background-color: white;
+}
\ No newline at end of file
diff --git a/airtime_mvc/public/js/airtime/listenerstat/showlistenerstat.js b/airtime_mvc/public/js/airtime/listenerstat/showlistenerstat.js
index 597efacbd..a881d1d2f 100644
--- a/airtime_mvc/public/js/airtime/listenerstat/showlistenerstat.js
+++ b/airtime_mvc/public/js/airtime/listenerstat/showlistenerstat.js
@@ -16,7 +16,7 @@ $(document).ready(function() {
var oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId);
var start = oRange.start;
var end = oRange.end;
- brokeDataTable();
+ showListenerDataTable();
});
});
@@ -36,9 +36,9 @@ function addDatePicker() {
dayNamesMin: i18n_days_short,
onSelect: function(sDate, oDatePicker) {
$(this).datepicker( "setDate", sDate );
- }
+ },
+ onClose: validateTimeRange
};
-
oBaseTimePickerSettings = {
showPeriodLabels: false,
showCloseButton: true,
@@ -46,13 +46,14 @@ function addDatePicker() {
showLeadingZero: false,
defaultTime: '0:00',
hourText: $.i18n._("Hour"),
- minuteText: $.i18n._("Minute")
+ minuteText: $.i18n._("Minute"),
+ onClose: validateTimeRange
};
- showlistenerstat_content.find(dateStartId).datepicker(oBaseDatePickerSettings);
- showlistenerstat_content.find(timeStartId).timepicker(oBaseTimePickerSettings);
- showlistenerstat_content.find(dateEndId).datepicker(oBaseDatePickerSettings);
- showlistenerstat_content.find(timeEndId).timepicker(oBaseTimePickerSettings);
+ showlistenerstat_content.find(dateStartId).datepicker(oBaseDatePickerSettings).blur(validateTimeRange());
+ showlistenerstat_content.find(timeStartId).timepicker(oBaseTimePickerSettings).blur(validateTimeRange());
+ showlistenerstat_content.find(dateEndId).datepicker(oBaseDatePickerSettings).blur(validateTimeRange());
+ showlistenerstat_content.find(timeEndId).timepicker(oBaseTimePickerSettings).blur(validateTimeRange());
}
function getStartEnd() {
@@ -60,22 +61,35 @@ function getStartEnd() {
return AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId);
}
+function validateTimeRange() {
+ var oRange,
+ inputs = $('.date_form > input'),
+ error_window = $('.error_window'),
+ start, end;
-function showSummaryList(start, end) {
- var url = baseUrl+"playouthistory/show-history-feed",
- data = {
- format: "json",
- start: start,
- end: end
- };
+ oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId);
- $.post(url, data, function(json) {
- drawShowList(json);
- });
+ start = oRange.start;
+ end = oRange.end;
+
+ if (end >= start) {
+ error_window.removeClass('error');
+ $('.error_window').html('');
+ }
+ else {
+ error_window.addClass('error');
+ console.log('bad')
+ $('.error_window').html('Your start date time is after your end date time');
+ }
+
+ return {
+ start: start,
+ end: end,
+ isValid: end >= start
+ };
}
-
-function brokeDataTable() {
+function showListenerDataTable() {
var oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId);
var start = oRange.start;
var end = oRange.end;
@@ -90,6 +104,7 @@ function brokeDataTable() {
/* last name */ {"sName": "maximum_number_of_listeners", "mDataProp": "maximum_number_of_listeners"}],
"sAjaxSource": baseUrl+'Listenerstat/get-all-show-data',
"sAjaxDataProp": "",
+ "bDestroy": true,
"fnServerData": function ( sSource, aoData, fnCallback ) {
aoData.push({"start": start, "end": end});
$.ajax( {