summaryrefslogtreecommitdiff
path: root/www/js/MonitorCtrl.js
diff options
context:
space:
mode:
authorDamir Merdan <44159556+dado-ca@users.noreply.github.com>2018-11-14 11:17:18 +0100
committerGitHub <noreply@github.com>2018-11-14 11:17:18 +0100
commitbb78ec417458347887a0668223dc7fd7bad377ea (patch)
tree494a609118c85467702061a743e9fd0b7dba1860 /www/js/MonitorCtrl.js
parentb2cccc52c08f8195a1ddbb747c949915134940b4 (diff)
parentdbee219a9674daadd05aa1a27b36e76d91a35b5f (diff)
Merge branch 'master' into master
Diffstat (limited to 'www/js/MonitorCtrl.js')
-rw-r--r--www/js/MonitorCtrl.js136
1 files changed, 100 insertions, 36 deletions
diff --git a/www/js/MonitorCtrl.js b/www/js/MonitorCtrl.js
index 9edb1e36..7241db53 100644
--- a/www/js/MonitorCtrl.js
+++ b/www/js/MonitorCtrl.js
@@ -6,18 +6,12 @@
// refer to comments in EventCtrl for the modal stuff. They are almost the same
angular.module('zmApp.controllers')
- .controller('zmApp.MonitorCtrl', ['$ionicPopup', 'zm', '$scope', 'NVRDataModel', 'message', '$ionicSideMenuDelegate', '$ionicLoading', '$ionicModal', '$state', '$http', '$rootScope', '$timeout', '$ionicHistory', '$ionicPlatform', '$translate', '$q',
- function ($ionicPopup, zm, $scope, NVRDataModel, message, $ionicSideMenuDelegate, $ionicLoading, $ionicModal, $state, $http, $rootScope, $timeout, $ionicHistory, $ionicPlatform, $translate, $q) {
+ .controller('zmApp.MonitorCtrl', ['$ionicPopup', 'zm', '$scope', 'NVRDataModel', '$ionicSideMenuDelegate', '$ionicLoading', '$ionicModal', '$state', '$http', '$rootScope', '$timeout', '$ionicHistory', '$ionicPlatform', '$translate', '$q',
+ function ($ionicPopup, zm, $scope, NVRDataModel, $ionicSideMenuDelegate, $ionicLoading, $ionicModal, $state, $http, $rootScope, $timeout, $ionicHistory, $ionicPlatform, $translate, $q) {
- //-----------------------------------------------------------------------
- // Controller Main
- //-----------------------------------------------------------------------
-
- // var isModalOpen = false;
-
- // console.log("***EVENTS: Waiting for Monitors to load before I proceed");
var loginData;
+ $scope.monitorLoadStatus = "...";
// --------------------------------------------------------
// Handling of back button in case modal is open should
@@ -48,6 +42,8 @@ angular.module('zmApp.controllers')
$ionicSideMenuDelegate.toggleLeft();
};
+
+
//----------------------------------------------------------------
// Alarm notification handling
//----------------------------------------------------------------
@@ -251,6 +247,20 @@ angular.module('zmApp.controllers')
// 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.beforeEnter', function() {
+
+ $scope.$on ( "process-push", function () {
+ NVRDataModel.debug (">> MonitorCtrl: push handler");
+ var s = NVRDataModel.evaluateTappedNotification();
+ NVRDataModel.debug("tapped Notification evaluation:"+ JSON.stringify(s));
+ $ionicHistory.nextViewOptions({
+ disableAnimate:true,
+ disableBack: true
+ });
+ $state.go(s[0],s[1],s[2]);
+ });
+ });
$scope.$on('$ionicView.enter', function () {
// console.log("**VIEW ** Monitor Ctrl Entered");
NVRDataModel.setAwake(false);
@@ -260,24 +270,15 @@ angular.module('zmApp.controllers')
$scope.$on('$ionicView.afterEnter', function () {
// console.log("**VIEW ** Monitor Ctrl Entered");
+
+ NVRDataModel.debug ("Monitor Control afterEnter");
$scope.monitors = [];
- $scope.monitors = message;
+ $scope.monitorLoadStatus = $translate.instant ('kPleaseWait')+'...';
+
//console.log (">>>>>>>>>>>> MONITOR CTRL " + JSON.stringify($scope.monitors));
- if ($scope.monitors.length == 0) {
- $rootScope.zmPopup = $ionicPopup.alert({
- title: $translate.instant('kNoMonitors'),
- template: $translate.instant('kPleaseCheckCredentials')
- });
- $ionicHistory.nextViewOptions({
- disableBack: true
- });
- $state.go("app.login", {
- "wizard": false
- });
- return;
- }
+
loginData = NVRDataModel.getLogin();
monitorStateCheck();
@@ -292,15 +293,21 @@ angular.module('zmApp.controllers')
var tm = $rootScope.tappedMid;
$rootScope.tappedMid = 0;
var monitem;
- for (var m = 0; m < $scope.monitors.length; m++) {
- if ($scope.monitors[m].Monitor.Id == tm) {
- monitem = $scope.monitors[m];
- break;
- }
- }
+ NVRDataModel.getMonitors(0)
+ .then ( function (data) {
+ $scope.monitors = data;
+ for (var m = 0; m < $scope.monitors.length; m++) {
+ if ($scope.monitors[m].Monitor.Id == tm) {
+ monitem = $scope.monitors[m];
+ break;
+ }
+ }
+ openModal(monitem.Monitor.Id, monitem.Monitor.Controllable, monitem.Monitor.ControlId, monitem.Monitor.connKey, monitem);
+ });
+
- openModal(monitem.Monitor.Id, monitem.Monitor.Controllable, monitem.Monitor.ControlId, monitem.Monitor.connKey, monitem);
+
}
});
@@ -399,8 +406,67 @@ angular.module('zmApp.controllers')
//-----------------------------------------------------------------------
function monitorStateCheck() {
+
+ // console.log ("Checking monitors");
+ var ld = NVRDataModel.getLogin();
+ // force get for latest status of monitors if av.
+ NVRDataModel.getMonitors(1)
+ .then (function (data) {
+
+ $scope.monitors = data;
+
+ if (!$scope.monitors.length) {
+ $scope.monitorLoadStatus = $translate.instant ('kNoMonitors');
+ }
+
+ if (!$scope.monitors[0].Monitor_Status ) {
+ NVRDataModel.debug ("no Monitor_Status found reverting to daemonCheck...");
+ forceDaemonCheck();
+ }
+ else {
+ NVRDataModel.debug ("reporting status of monitors from multi-server API");
+ processMonitorStatus();
+ }
+
+ },
+ function (err) {
+ NVRDataModel.debug ("Monitor fetch error, reverting to daemonCheck...");
+ $scope.monitorLoadStatus = $translate.instant ('kNoMonitors');
+ forceDaemonCheck();
+ });
+
+ }
+
+ function processMonitorStatus () {
+
+ //array('Unknown','NotRunning','Running','NoSignal','Signal'),
+
+
+ // console.log (JSON.stringify($scope.monitors));
+ for (var j=0; j < $scope.monitors.length; j++) {
+
+ if ($scope.monitors[j].Monitor_Status.Status == 'Connected') {
+ $scope.monitors[j].Monitor.isRunning = "true";
+ $scope.monitors[j].Monitor.color = zm.monitorRunningColor;
+ $scope.monitors[j].Monitor.char = "ion-checkmark-circled";
+ $scope.monitors[j].Monitor.isRunningText = $scope.monitors[j].Monitor_Status.Status;
+ }
+ else {
+ $scope.monitors[j].Monitor.isRunning = "false";
+ $scope.monitors[j].Monitor.color = zm.monitorNotRunningColor;
+ $scope.monitors[j].Monitor.char = "ion-close-circled";
+ $scope.monitors[j].Monitor.isRunningText = $scope.monitors[j].Monitor_Status.Status;
+ }
+
+ }
+
+ }
+
+ function forceDaemonCheck() {
var apiMonCheck;
+ $scope.loginData = NVRDataModel.getLogin();
+
// The status is provided by zmdc.pl
// "not running", "pending", "running since", "Unable to connect"
var i;
@@ -409,13 +475,10 @@ angular.module('zmApp.controllers')
$scope.monitors[j].Monitor.isRunningText = "...";
$scope.monitors[j].Monitor.isRunning = "...";
$scope.monitors[j].Monitor.color = zm.monitorCheckingColor;
- $scope.monitors[j].Monitor.char = "ion-checkmark-circled";
- apiMonCheck = loginData.apiurl + "/monitors/daemonStatus/id:" + $scope.monitors[j].Monitor.Id + "/daemon:zmc.json";
-
- //apiMonCheck = apiMonCheck.replace(loginData.url, $scope.monitors[j].Monitor.baseURL);
-
- // in multiserver replace apiurl with baseurl
+ $scope.monitors[j].Monitor.char = "ion-help-circled";
+ apiMonCheck = $scope.loginData.apiurl + "/monitors/daemonStatus/id:" + $scope.monitors[j].Monitor.Id + "/daemon:zmc.json";
+
NVRDataModel.debug("MonitorCtrl:monitorStateCheck: " + apiMonCheck);
//console.log("**** ZMC CHECK " + apiMonCheck);
$http.get(apiMonCheck)
@@ -432,6 +495,7 @@ angular.module('zmApp.controllers')
} else if (data.statustext.indexOf("running since") > -1) {
$scope.monitors[j].Monitor.isRunning = "true";
$scope.monitors[j].Monitor.color = zm.monitorRunningColor;
+ $scope.monitors[j].Monitor.char = "ion-checkmark-circled";
} else if (data.statustext.indexOf("Unable to connect") > -1) {
$scope.monitors[j].Monitor.isRunning = "false";
$scope.monitors[j].Monitor.color = zm.monitorNotRunningColor;