summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--www/js/DataModel.js16
-rw-r--r--www/js/DevOptionsCtrl.js5
-rw-r--r--www/js/MonitorModalCtrl.js64
-rw-r--r--www/js/app.js3
-rw-r--r--www/lang/locale-en.json2
-rw-r--r--www/templates/devoptions.html10
-rw-r--r--www/templates/monitors-modal.html7
7 files changed, 103 insertions, 4 deletions
diff --git a/www/js/DataModel.js b/www/js/DataModel.js
index 233e92df..43f350d6 100644
--- a/www/js/DataModel.js
+++ b/www/js/DataModel.js
@@ -103,7 +103,9 @@ angular.module('zmApp.controllers')
'forceImageModePath': false,
'disableNative': false,
'vibrateOnPush': true,
- 'soundOnPush': true
+ 'soundOnPush': true,
+ 'cycleMonitors': false,
+ 'cycleMonitorsInterval':10, // 10sec
@@ -673,6 +675,18 @@ angular.module('zmApp.controllers')
loginData.soundOnPush = true;
}
+
+ if (typeof loginData.cycleMonitors == 'undefined') {
+
+ loginData.cycleMonitors = false;
+
+ }
+
+ if (typeof loginData.cycleMonitorsInterval == 'undefined') {
+
+ loginData.cycleMonitorsInterval = 10;
+
+ }
log("DataModel init recovered this loginData as " + JSON.stringify(loginData));
diff --git a/www/js/DevOptionsCtrl.js b/www/js/DevOptionsCtrl.js
index a4b8d002..7ca09068 100644
--- a/www/js/DevOptionsCtrl.js
+++ b/www/js/DevOptionsCtrl.js
@@ -62,7 +62,10 @@ angular.module('zmApp.controllers').controller('zmApp.DevOptionsCtrl', ['$scope'
NVRDataModel.debug("SaveDevOptions: called");
-
+ if (parseInt($scope.loginData.cycleMonitorsInterval) < zm.minCycleTime)
+ {
+ $scope.loginData.cycleMonitorsInterval = zm.minCycleTime.toString();
+ }
if ((parseInt($scope.loginData.maxFPS) < 0) || (parseInt($scope.loginData.maxFPS) > zm.maxFPS)) {
$scope.loginData.maxFPS = zm.defaultFPS.toString();
}
diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js
index e99ce25c..3278a862 100644
--- a/www/js/MonitorModalCtrl.js
+++ b/www/js/MonitorModalCtrl.js
@@ -15,6 +15,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$scope.imageFit = true;
$scope.isModalActive = true;
var intervalModalHandle;
+ var cycleHandle;
var nphTimer;
var ld = NVRDataModel.getLogin();
@@ -54,6 +55,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$interval.cancel(intervalModalHandle);
+ $interval.cancel(cycleHandle);
intervalModalHandle = $interval(function () {
loadModalNotifications();
@@ -247,6 +249,34 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
// console.log ("ERROR");
});
};
+
+
+ $scope.toggleCycle = function()
+ {
+ //console.log ("HERE");
+ $scope.isCycle = !$scope.isCycle;
+ var ld = NVRDataModel.getLogin();
+ ld.cycleMonitors = $scope.isCycle;
+ NVRDataModel.setLogin(ld);
+ $scope.cycleText = $scope.isCycle ? $translate.instant ('kOn'):$translate.instant ('kOff');
+
+ if ($scope.isCycle)
+ {
+ NVRDataModel.log ("re-starting cycle timer");
+ $interval.cancel(cycleHandle);
+
+ cycleHandle = $interval(function () {
+ moveToMonitor($scope.monitorId,1);
+ // console.log ("Refreshing Image...");
+ }.bind(this), ld.cycleMonitorsInterval * 1000);
+ }
+ else
+ {
+ NVRDataModel.log ("cancelling cycle timer");
+ $interval.cancel(cycleHandle);
+ }
+
+ };
//-------------------------------------------------------------
// PTZ enable/disable
@@ -282,6 +312,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
function onPause() {
NVRDataModel.debug("ModalCtrl: onpause called");
$interval.cancel(intervalModalHandle);
+ $interval.cancel(cycleHandle);
// $interval.cancel(modalIntervalHandle);
// FIXME: Do I need to setAwake(false) here?
@@ -294,12 +325,26 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
NVRDataModel.log("ModalCtrl: Restarting Modal timer on resume");
$interval.cancel(intervalModalHandle);
+ $interval.cancel(cycleHandle);
var ld = NVRDataModel.getLogin();
intervalModalHandle = $interval(function () {
loadModalNotifications();
}.bind(this), 5000);
+
+ if (ld.cycleMonitors)
+ {
+ NVRDataModel.debug ("Cycling enabled at "+ld.cycleMonitorsInterval);
+
+ $interval.cancel(cycleHandle);
+
+ cycleHandle = $interval(function () {
+ moveToMonitor($scope.monitorId,1);
+ // console.log ("Refreshing Image...");
+ }.bind(this), ld.cycleMonitorsInterval * 1000);
+
+ }
$rootScope.modalRand = Math.floor((Math.random() * 100000) + 1);
@@ -858,6 +903,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
// console.log("**MODAL: Stopping modal timer");
$scope.isModalActive = false;
$interval.cancel(intervalModalHandle);
+ $interval.cancel(cycleHandle);
});
@@ -880,6 +926,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$scope.isModalActive = false;
$interval.cancel(intervalModalHandle);
+ $interval.cance(cycleHandle);
});
@@ -887,6 +934,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$scope.isModalActive = false;
//console.log("**MODAL REMOVED: Stopping modal timer");
$interval.cancel(intervalModalHandle);
+ $interval.cancel(cycleHandle);
NVRDataModel.debug("Modal removed - killing connkey");
controlStream(17, "", $scope.connKey, -1);
@@ -1228,8 +1276,24 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
//console.log ("************* GENERATED CONNKEY " + $scope.connKey);
$scope.currentFrame = 1;
$scope.monStatus = "";
+ $scope.isCycle = ld.cycleMonitors;
+ $scope.cycleText = $scope.isCycle ? $translate.instant ('kOn'):$translate.instant ('kOff');
configurePTZ($scope.monitorId);
+
+ if (ld.cycleMonitors)
+ {
+ NVRDataModel.debug ("Cycling enabled at "+ld.cycleMonitorsInterval);
+
+ $interval.cancel(cycleHandle);
+
+ cycleHandle = $interval(function () {
+ moveToMonitor($scope.monitorId,1);
+ // console.log ("Refreshing Image...");
+ }.bind(this), ld.cycleMonitorsInterval * 1000);
+
+ }
+
});
diff --git a/www/js/app.js b/www/js/app.js
index f9ea05e5..22057355 100644
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -79,7 +79,8 @@ angular.module('zmApp', [
eventPlaybackQuery: 3000,
packeryTimer: 500,
dbName: 'zmninja',
- cipherKey: 'sdf#@#%FSXSA_AR'
+ cipherKey: 'sdf#@#%FSXSA_AR',
+ minCycleTime: 5,
})
diff --git a/www/lang/locale-en.json b/www/lang/locale-en.json
index 996e3a81..96aedb05 100644
--- a/www/lang/locale-en.json
+++ b/www/lang/locale-en.json
@@ -44,6 +44,8 @@
"kCredentialsTitle" :"Credentials Required",
"kCurrentState" :"current state",
"kCustomRange" :"Custom Range",
+ "kCycleMonitorsInterval" :"monitor cycle interval",
+ "kCycleMonitors" :"cycle monitors",
"kDay" :"Day",
"kDecreaseSize" :"decrease size",
"kDelete" :"Delete",
diff --git a/www/templates/devoptions.html b/www/templates/devoptions.html
index 3d521d7a..e3bf8630 100644
--- a/www/templates/devoptions.html
+++ b/www/templates/devoptions.html
@@ -124,9 +124,17 @@
</div>
<label>
-
<ion-toggle ng-model="loginData.enableLogs" ng-checked="{{loginData.enableLogs}}" toggle-class="toggle-calm">{{'kEnableLogs' | translate}}</ion-toggle>
</label>
+
+
+
+ <div class="item item-input-inset" >
+ {{'kCycleMonitorsInterval'|translate}}(s)&nbsp;
+ <label class="item-input-wrapper">
+ <input type="tel" placeholder="" ng-model="loginData.cycleMonitorsInterval">
+ </label>
+ </div>
<label>
diff --git a/www/templates/monitors-modal.html b/www/templates/monitors-modal.html
index 59920b09..74090334 100644
--- a/www/templates/monitors-modal.html
+++ b/www/templates/monitors-modal.html
@@ -113,6 +113,13 @@
</li>
<li>
<a href="" ng-click="enableAlarm(monitorId,false)"> <i class="icon ion-flash-off"></i></a>
+
+
+ </li>
+ <li>
+ <a href="" ng-click="toggleCycle()"> <i class="icon ion-android-bicycle"></i>-{{cycleText}}</a>
+
+
</li>
<!--