summaryrefslogtreecommitdiff
path: root/www/js
diff options
context:
space:
mode:
Diffstat (limited to 'www/js')
-rw-r--r--www/js/DataModel.js56
-rw-r--r--www/js/DevOptionsCtrl.js12
-rw-r--r--www/js/EventCtrl.js11
-rw-r--r--www/js/EventsGraphsCtrl.js10
-rw-r--r--www/js/HelpCtrl.js14
-rw-r--r--www/js/LoginCtrl.js14
-rw-r--r--www/js/MonitorCtrl.js18
-rw-r--r--www/js/MonitorModalCtrl.js2
-rw-r--r--www/js/MontageCtrl.js41
-rw-r--r--www/js/StateCtrl.js12
-rw-r--r--www/js/app.js5
11 files changed, 174 insertions, 21 deletions
diff --git a/www/js/DataModel.js b/www/js/DataModel.js
index 1c19948d..d1470685 100644
--- a/www/js/DataModel.js
+++ b/www/js/DataModel.js
@@ -22,7 +22,8 @@ angular.module('zmApp.controllers').service('ZMDataModel', ['$http', '$q', '$ion
'streamingurl': "",
'maxFPS': "3", // image streaming FPS
'montageQuality': "50", // montage streaming quality in %
- 'useSSL':false // "1" if HTTPS
+ 'useSSL':false, // "1" if HTTPS
+ 'keepAwake':true // don't dim/dim during live view
};
return {
@@ -103,6 +104,12 @@ angular.module('zmApp.controllers').service('ZMDataModel', ['$http', '$q', '$ion
}
+ if (window.localStorage.getItem("keepAwake") != undefined) {
+ var awakevalue = window.localStorage.getItem("keepAwake");
+ loginData.keepAwake = (awakevalue == "1") ? true:false;
+ console.log("keepAwake " + loginData.keepAwake);
+
+ }
monitorsLoaded = 0;
console.log("Getting out of ZMDataModel init");
@@ -110,15 +117,57 @@ angular.module('zmApp.controllers').service('ZMDataModel', ['$http', '$q', '$ion
},
isLoggedIn: function () {
- if (loginData.username != "" && loginData.password != "" && loginData.url != "" && loginData.apiurl != "") {
+ if (loginData.username != "" && loginData.password != "" && loginData.url != "" && loginData.apiurl != "") {
return 1;
} else
return 0; {}
},
+
getLogin: function () {
return loginData;
},
+
+ getKeepAwake: function () {
+ return (loginData.keepAwake == '1') ? true:false;
+ },
+
+ //------------------------------------------------------------------
+ // switches screen to 'always on' or 'auto'
+ //------------------------------------------------------------------
+ setAwake: function(val)
+ {
+
+
+ console.log ("**** setAwake called with:" + val);
+ if (val)
+ {
+
+ if (window.cordova != undefined)
+ {
+ window.plugins.insomnia.keepAwake();
+ }
+ else
+ {
+ console.log ("Skipping insomnia, cordova does not exist");
+ }
+ }
+ else
+ {
+ if (window.cordova != undefined)
+ {
+ window.plugins.insomnia.allowSleepAgain();
+ }
+ else
+ {
+ console.log ("Skipping insomnia, cordova does not exist");
+ }
+
+
+ }
+
+ },
+
setLogin: function (newLogin) {
loginData = newLogin;
@@ -128,6 +177,7 @@ angular.module('zmApp.controllers').service('ZMDataModel', ['$http', '$q', '$ion
window.localStorage.setItem("apiurl", loginData.apiurl);
window.localStorage.setItem("streamingurl", loginData.streamingurl);
window.localStorage.setItem("useSSL", loginData.useSSL?"1":"0");
+ window.localStorage.setItem("keepAwake", loginData.keepAwake?"1":"0");
window.localStorage.setItem("maxMontage", loginData.maxMontage);
window.localStorage.setItem("montageQuality", loginData.montageQuality);
@@ -350,6 +400,8 @@ angular.module('zmApp.controllers').service('ZMDataModel', ['$http', '$q', '$ion
monitorsLoaded = loaded;
},
+
+
//-----------------------------------------------------------------------------
// Given a monitor Id it returns the monitor name
// FIXME: Can I do a better job with associative arrays?
diff --git a/www/js/DevOptionsCtrl.js b/www/js/DevOptionsCtrl.js
index f332bc50..374a781b 100644
--- a/www/js/DevOptionsCtrl.js
+++ b/www/js/DevOptionsCtrl.js
@@ -9,6 +9,18 @@ angular.module('zmApp.controllers').controller('zmApp.DevOptionsCtrl', ['$scope'
$ionicSideMenuDelegate.toggleLeft();
};
+ //-------------------------------------------------------------------------
+ // Lets make sure we set screen dim properly as we enter
+ // The problem is we enter other states before we leave previous states
+ // from a callback perspective in ionic, so we really can't predictably
+ // reset power state on exit as if it is called after we enter another
+ // state, that effectively overwrites current view power management needs
+ //------------------------------------------------------------------------
+ $scope.$on('$ionicView.enter', function () {
+ console.log("**VIEW ** DevOptions Ctrl Entered");
+ ZMDataModel.setAwake(false);
+ });
+
//------------------------------------------------------------------
// Perform the login action when the user submits the login form
//------------------------------------------------------------------
diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js
index fc29610e..284c0147 100644
--- a/www/js/EventCtrl.js
+++ b/www/js/EventCtrl.js
@@ -143,8 +143,16 @@ angular.module('zmApp.controllers').controller('zmApp.EventCtrl', ['$ionicPlatfo
console.log("**VIEW ** Events Ctrl Loaded");
});
+ //-------------------------------------------------------------------------
+ // Lets make sure we set screen dim properly as we enter
+ // The problem is we enter other states before we leave previous states
+ // from a callback perspective in ionic, so we really can't predictably
+ // reset power state on exit as if it is called after we enter another
+ // state, that effectively overwrites current view power management needs
+ //------------------------------------------------------------------------
$scope.$on('$ionicView.enter', function () {
console.log("**VIEW ** Events Ctrl Entered");
+ ZMDataModel.setAwake(false);
});
$scope.$on('$ionicView.leave', function () {
@@ -333,6 +341,8 @@ angular.module('zmApp.controllers').controller('zmApp.EventCtrl', ['$ionicPlatfo
$scope.loginData = ZMDataModel.getLogin();
$scope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
+ ZMDataModel.setAwake(ZMDataModel.getKeepAwake());
+
$ionicModal.fromTemplateUrl('templates/events-modal.html', {
scope: $scope,
animation: 'slide-in-up'
@@ -359,6 +369,7 @@ angular.module('zmApp.controllers').controller('zmApp.EventCtrl', ['$ionicPlatfo
$scope.closeModal = function () {
// $interval.cancel(eventsInterval);
console.log("Close & Destroy Modal");
+ ZMDataModel.setAwake(false);
if ($scope.modal !== undefined) {
$scope.modal.remove();
}
diff --git a/www/js/EventsGraphsCtrl.js b/www/js/EventsGraphsCtrl.js
index e6238084..92bc870a 100644
--- a/www/js/EventsGraphsCtrl.js
+++ b/www/js/EventsGraphsCtrl.js
@@ -18,8 +18,16 @@ angular.module('zmApp.controllers').controller('zmApp.EventsGraphsCtrl', ['$ioni
console.log("**VIEW ** Graph Ctrl Loaded");
});
+ //-------------------------------------------------------------------------
+ // Lets make sure we set screen dim properly as we enter
+ // The problem is we enter other states before we leave previous states
+ // from a callback perspective in ionic, so we really can't predictably
+ // reset power state on exit as if it is called after we enter another
+ // state, that effectively overwrites current view power management needs
+ //------------------------------------------------------------------------
$scope.$on('$ionicView.enter', function () {
- console.log("**VIEW ** Graph Ctrl Entered");
+ console.log("**VIEW ** EventsGraphs Ctrl Entered");
+ ZMDataModel.setAwake(false);
});
$scope.$on('$ionicView.leave', function () {
diff --git a/www/js/HelpCtrl.js b/www/js/HelpCtrl.js
index 35acd30d..89c2171b 100644
--- a/www/js/HelpCtrl.js
+++ b/www/js/HelpCtrl.js
@@ -6,6 +6,18 @@ angular.module('zmApp.controllers').controller('zmApp.HelpCtrl', ['$scope', '$ro
$scope.openMenu = function () {
$ionicSideMenuDelegate.toggleLeft();
};
-console.log ("***** HELP ****");
+
+
+ //-------------------------------------------------------------------------
+ // Lets make sure we set screen dim properly as we enter
+ // The problem is we enter other states before we leave previous states
+ // from a callback perspective in ionic, so we really can't predictably
+ // reset power state on exit as if it is called after we enter another
+ // state, that effectively overwrites current view power management needs
+ //------------------------------------------------------------------------
+ $scope.$on('$ionicView.enter', function () {
+ console.log("**VIEW ** Help Ctrl Entered");
+ ZMDataModel.setAwake(false);
+ });
}]);
diff --git a/www/js/LoginCtrl.js b/www/js/LoginCtrl.js
index e014500b..1da2f83d 100644
--- a/www/js/LoginCtrl.js
+++ b/www/js/LoginCtrl.js
@@ -9,6 +9,20 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
$scope.loginData = ZMDataModel.getLogin();
+
+
+ //-------------------------------------------------------------------------
+ // Lets make sure we set screen dim properly as we enter
+ // The problem is we enter other states before we leave previous states
+ // from a callback perspective in ionic, so we really can't predictably
+ // reset power state on exit as if it is called after we enter another
+ // state, that effectively overwrites current view power management needs
+ //------------------------------------------------------------------------
+ $scope.$on('$ionicView.enter', function () {
+ console.log("**VIEW ** LoginCtrl Entered");
+ ZMDataModel.setAwake(false);
+ });
+
//-------------------------------------------------------------------------------
// Adds http to url if not present
// http://stackoverflow.com/questions/11300906/check-if-a-string-starts-with-http-using-javascript
diff --git a/www/js/MonitorCtrl.js b/www/js/MonitorCtrl.js
index 0d65a891..7548624c 100644
--- a/www/js/MonitorCtrl.js
+++ b/www/js/MonitorCtrl.js
@@ -17,6 +17,8 @@ angular.module('zmApp.controllers').controller('zmApp.MonitorCtrl', ['$ionicPopu
$scope.monitors = message;
var loginData = ZMDataModel.getLogin();
monitorStateCheck();
+ console.log ("Setting Awake to "+ZMDataModel.getKeepAwake());
+ ZMDataModel.setAwake(ZMDataModel.getKeepAwake());
$scope.openMenu = function () {
@@ -186,9 +188,16 @@ angular.module('zmApp.controllers').controller('zmApp.MonitorCtrl', ['$ionicPopu
console.log("**VIEW ** Monitor Ctrl Loaded");
});
+ //-------------------------------------------------------------------------
+ // Lets make sure we set screen dim properly as we enter
+ // The problem is we enter other states before we leave previous states
+ // from a callback perspective in ionic, so we really can't predictably
+ // reset power state on exit as if it is called after we enter another
+ // state, that effectively overwrites current view power management needs
+ //------------------------------------------------------------------------
$scope.$on('$ionicView.enter', function () {
console.log("**VIEW ** Monitor Ctrl Entered");
-
+ ZMDataModel.setAwake(false);
});
$scope.$on('$ionicView.leave', function () {
@@ -207,6 +216,8 @@ angular.module('zmApp.controllers').controller('zmApp.MonitorCtrl', ['$ionicPopu
$scope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
// This is a modal to show the monitor footage
+ // We need to switch to always awake so the feed doesn't get interrupted
+ ZMDataModel.setAwake(ZMDataModel.getKeepAwake());
$ionicModal.fromTemplateUrl('templates/monitors-modal.html', {
scope: $scope,
@@ -263,6 +274,8 @@ angular.module('zmApp.controllers').controller('zmApp.MonitorCtrl', ['$ionicPopu
$scope.closeModal = function () {
console.log("Close & Destroy Monitor Modal");
+ // switch off awake, as liveview is finished
+ ZMDataModel.setAwake(false);
$scope.modal.remove();
};
@@ -395,6 +408,9 @@ angular.module('zmApp.controllers').controller('zmApp.MonitorCtrl', ['$ionicPopu
})(i);
}
}
+
+
+
$scope.doRefresh = function () {
console.log("***Pull to Refresh");
$scope.monitors = [];
diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js
index a6dfbc01..11306e4c 100644
--- a/www/js/MonitorModalCtrl.js
+++ b/www/js/MonitorModalCtrl.js
@@ -6,4 +6,6 @@
angular.module('zmApp.controllers').controller('zmApp.MonitorModalCtrl', ['$ionicPopup', '$scope', 'ZMDataModel', '$ionicSideMenuDelegate', '$ionicLoading', '$ionicModal', '$state', '$http', function ($ionicPopup,$scope, ZMDataModel, $ionicSideMenuDelegate, $ionicLoading, $ionicModal, $state, $http, $rootScope) {
+
+
}]);
diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js
index b39d2aac..2a8dce2f 100644
--- a/www/js/MontageCtrl.js
+++ b/www/js/MontageCtrl.js
@@ -4,7 +4,7 @@
/* global cordova,StatusBar,angular,console,ionic */
-angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '$rootScope', 'ZMDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams','$ionicHistory','$ionicScrollDelegate', function ($scope, $rootScope, ZMDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http,$state, $stateParams, $ionicHistory,$ionicScrollDelegate) {
+angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '$rootScope', 'ZMDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams','$ionicHistory','$ionicScrollDelegate', '$ionicPlatform', function ($scope, $rootScope, ZMDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http,$state, $stateParams, $ionicHistory,$ionicScrollDelegate) {
//---------------------------------------------------------------------
// Controller main
@@ -12,22 +12,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
document.addEventListener("pause", onPause, false);
- // I was facing a lot of problems with Chrome/crosswalk getting stuck with
- // pending HTTP requests after a while. There is a problem with chrome handling
- // multiple streams of always open HTTP get's (image streaming). This problem
- // does not arise when the image is streamed for a single monitor - just multiple
-
- // To work around this I am taking a single snapshot of ZMS and have implemented a timer
- // to reload the snapshot every 1 second. Seems to work reliably even thought its a higer
- // load. Will it bonk with many monitors? Who knows. I have tried with 5 and 1280x960@32bpp
- this.loadNotifications = function () {
- // randomval is appended to img src, so after each interval the image reloads
- $scope.randomval = (new Date()).getTime();
- //console.log ("**** NOTIFICATION with rand="+$scope.randomval+"*****");
- };
-
var timestamp = new Date().getUTCMilliseconds();
$scope.minimal = $stateParams.minimal;
$scope.isRefresh = $stateParams.isRefresh;
@@ -82,6 +68,22 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
console.log("********* Inside Montage Ctrl, MAX LIMIT=" + $scope.monLimit);
+ // I was facing a lot of problems with Chrome/crosswalk getting stuck with
+ // pending HTTP requests after a while. There is a problem with chrome handling
+ // multiple streams of always open HTTP get's (image streaming). This problem
+ // does not arise when the image is streamed for a single monitor - just multiple
+
+ // To work around this I am taking a single snapshot of ZMS and have implemented a timer
+ // to reload the snapshot every 1 second. Seems to work reliably even thought its a higer
+ // load. Will it bonk with many monitors? Who knows. I have tried with 5 and 1280x960@32bpp
+
+
+ this.loadNotifications = function () {
+ // randomval is appended to img src, so after each interval the image reloads
+ $scope.randomval = (new Date()).getTime();
+ //console.log ("**** NOTIFICATION with rand="+$scope.randomval+"*****");
+ };
+
var intervalHandle = $interval(function () {
this.loadNotifications();
// console.log ("Refreshing Image...");
@@ -89,6 +91,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
this.loadNotifications();
+
+
//---------------------------------------------------------------------
// Triggered when you enter/exit full screen
//---------------------------------------------------------------------
@@ -120,6 +124,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
$scope.openModal = function (mid, controllable) {
console.log("Open Monitor Modal");
+ // Note: no need to setAwake(true) as its already awake
+ // in montage view
$scope.monitorId = mid;
$scope.LoginData = ZMDataModel.getLogin();
$scope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
@@ -150,6 +156,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
$scope.closeModal = function () {
console.log("Close & Destroy Monitor Modal");
+ // Note: no need to setAwake(false) as needs to be awake
+ // in montage view
$scope.modal.remove();
};
@@ -221,6 +229,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
console.log("*** Moving to Background ***"); // Handle the pause event
console.log("*** CANCELLING INTERVAL ****");
$interval.cancel(intervalHandle);
+ // FIXME: Do I need to setAwake(false) here?
}
@@ -241,6 +250,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
$scope.$on('$ionicView.enter', function () {
console.log("**VIEW ** Montage Ctrl Entered");
+ console.log ("Setting Awake to "+ZMDataModel.getKeepAwake());
+ ZMDataModel.setAwake(ZMDataModel.getKeepAwake());
});
$scope.$on('$ionicView.leave', function () {
diff --git a/www/js/StateCtrl.js b/www/js/StateCtrl.js
index 13ca288c..ec3a771a 100644
--- a/www/js/StateCtrl.js
+++ b/www/js/StateCtrl.js
@@ -30,6 +30,18 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
getLoadStatus();
getDiskStatus();
+ //-------------------------------------------------------------------------
+ // Lets make sure we set screen dim properly as we enter
+ // The problem is we enter other states before we leave previous states
+ // from a callback perspective in ionic, so we really can't predictably
+ // reset power state on exit as if it is called after we enter another
+ // state, that effectively overwrites current view power management needs
+ //------------------------------------------------------------------------
+ $scope.$on('$ionicView.enter', function () {
+ console.log("**VIEW ** Montage Ctrl Entered");
+ ZMDataModel.setAwake(false);
+ });
+
//----------------------------------------------------------------------
// returns disk space in gigs taken up by events
//----------------------------------------------------------------------
diff --git a/www/js/app.js b/www/js/app.js
index 76b14c66..d17d16c1 100644
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -216,7 +216,10 @@ angular.module('zmApp', [
setTimeout(function () {
- $cordovaSplashscreen.hide();
+ if (window.cordova)
+ {
+ $cordovaSplashscreen.hide();
+ }
}, 1500);
var pixelRatio = window.devicePixelRatio || 1;