summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--www/js/EventCtrl.js24
-rw-r--r--www/js/EventModalCtrl.js19
-rw-r--r--www/js/EventServer.js6
-rw-r--r--www/js/EventsModalGraphCtrl.js14
-rw-r--r--www/js/MontageCtrl.js31
-rw-r--r--www/js/MontageHistoryCtrl.js12
-rw-r--r--www/js/PortalLoginCtrl.js12
-rw-r--r--www/js/TimelineCtrl.js10
-rw-r--r--www/js/TimelineModalCtrl.js8
-rwxr-xr-xwww/js/app.js3
10 files changed, 117 insertions, 22 deletions
diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js
index 90eb90bf..b39921fd 100644
--- a/www/js/EventCtrl.js
+++ b/www/js/EventCtrl.js
@@ -61,6 +61,7 @@ angular.module('zmApp.controllers')
var mycarouselWatcher;
var nolangFrom;
var nolangTo;
+ var broadcastHandles = [];
$scope.typeOfFrames = $translate.instant('kShowTimeDiffFrames');
$scope.outlineMotion = false;
@@ -76,17 +77,19 @@ angular.module('zmApp.controllers')
//---------------------------------------------------
//we come here is TZ is updated after the view loads
- $rootScope.$on('tz-updated', function()
+ var tzu = $rootScope.$on('tz-updated', function()
{
$scope.tzAbbr = NVRDataModel.getTimeZoneNow();
NVRDataModel.debug("Timezone API updated timezone to " + NVRDataModel.getTimeZoneNow());
});
+ broadcastHandles.push(tzu);
- $rootScope.$on("language-changed", function()
+ var lc = $rootScope.$on("language-changed", function()
{
NVRDataModel.log(">>>>>>>>>>>>>>> language changed");
doRefresh();
});
+ broadcastHandles.push(lc);
$scope.$on('$ionicView.afterEnter', function()
{
@@ -151,6 +154,17 @@ angular.module('zmApp.controllers')
}
+
+ $scope.$on('$ionicView.beforeLeave', function()
+ {
+
+ NVRDataModel.debug ("Deregistering broadcast handles");
+ for (var i=0; i < broadcastHandles.length; i++) {
+ broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+ });
+
$scope.$on('$ionicView.beforeEnter', function()
{
@@ -2138,6 +2152,12 @@ angular.module('zmApp.controllers')
{
NVRDataModel.debug("EventCtrl:onpause called");
if ($scope.popover) $scope.popover.remove();
+ NVRDataModel.debug ("Deregistering broadcast handles");
+ for (var i=0; i < broadcastHandles.length; i++) {
+ broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+
}
//-------------------------------------------------------------------------
diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js
index 52fc0711..9fb6f25e 100644
--- a/www/js/EventModalCtrl.js
+++ b/www/js/EventModalCtrl.js
@@ -17,6 +17,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
var gEvent;
var handle;
var showLive = true;
+ var broadcastHandles = [];
var framearray = {
@@ -107,7 +108,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
//
//--------------------------------------------------------------------------------------
- $rootScope.$on("bandwidth-change", function(e, data)
+ var bc = $rootScope.$on("bandwidth-change", function(e, data)
{
// not called for offline, I'm only interested in BW switches
NVRDataModel.debug("Got network change:" + data);
@@ -126,12 +127,13 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
$scope.singleImageQuality = (NVRDataModel.getBandwidth() == "lowbw") ? zm.eventSingleImageQualityLowBW : ld.singleImageQuality;
});
+ broadcastHandles.push(bc);
//-------------------------------------------------------
// we use this to reload the connkey if authkey changed
//------------------------------------------------------
- $rootScope.$on("auth-success", function()
+ var as = $rootScope.$on("auth-success", function()
{
NVRDataModel.debug("EventModalCtrl: Re-login detected, resetting everything & re-generating connkey");
@@ -146,6 +148,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
//eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
});
+ broadcastHandles.push(as);
//-------------------------------------------------------
// tap to pause
@@ -437,6 +440,12 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
function onPause()
{
+ NVRDataModel.debug ("Deregistering broadcast handles");
+ for (var i=0; i < broadcastHandles.length; i++) {
+ broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+
// $interval.cancel(modalIntervalHandle);
@@ -1082,6 +1091,12 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
$scope.$on('modal.removed', function(e, m)
{
+ NVRDataModel.debug ("Deregistering broadcast handles");
+ for (var i=0; i < broadcastHandles.length; i++) {
+ broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+
//console.log("************* REMOVE CALLED");
$interval.cancel(eventQueryHandle);
if (m.id != 'footage')
diff --git a/www/js/EventServer.js b/www/js/EventServer.js
index 5254bde3..ee606a63 100644
--- a/www/js/EventServer.js
+++ b/www/js/EventServer.js
@@ -116,7 +116,7 @@ angular.module('zmApp.controllers')
// console.log ("WS="+JSON.stringify(ws));
if (typeof ws !== 'undefined')
{
- NVRDataModel.debug("websocket already initialized -- thats not right.Forcing close");
+ NVRDataModel.debug("websocket already initialized --Forcing close");
ws.close(true);
ws=undefined;
@@ -139,6 +139,10 @@ angular.module('zmApp.controllers')
// Transmit auth information to server
// ws.$on('$open', openHandshake);
+ if (ws) {
+ ws.onErrorCallbacks = [];
+ NVRDataModel.debug("Removing error handlers for websocket");
+ }
NVRDataModel.debug("Setting up websocket error handler");
//ws.$on('$error', function(e)
ws.onError(function (e)
diff --git a/www/js/EventsModalGraphCtrl.js b/www/js/EventsModalGraphCtrl.js
index fc9a9c42..65e42b12 100644
--- a/www/js/EventsModalGraphCtrl.js
+++ b/www/js/EventsModalGraphCtrl.js
@@ -20,6 +20,17 @@ angular.module('zmApp.controllers').controller('EventsModalGraphCtrl', ['$scope'
var current_options;
var btype;
var data, options;
+ var broadCastHandles = [];
+
+
+ $scope.$on('modal.removed', function(e, m)
+ {
+ NVRDataModel.debug ("Deregistering broadcast handles");
+ for (var i=0; i < broadcastHandles.length; i++) {
+ broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+ });
$scope.$on('modal.shown', function(e, m)
{
@@ -104,12 +115,13 @@ angular.module('zmApp.controllers').controller('EventsModalGraphCtrl', ['$scope'
// we use this to reload the connkey if authkey changed
//------------------------------------------------------
- $rootScope.$on("auth-success", function()
+ var as = $rootScope.$on("auth-success", function()
{
NVRDataModel.debug("EventModalCtrl: Re-login detected, resetting everything & re-generating connkey");
});
+ broadCastHandles.push(as);
//-------------------------------------------------------
// I was kidding, this is where it really is drawn
diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js
index 3d1a211c..9cf5e77d 100644
--- a/www/js/MontageCtrl.js
+++ b/www/js/MontageCtrl.js
@@ -32,13 +32,16 @@ angular.module('zmApp.controllers')
var simulStreaming = 0; // will be 1 if you multiport
+ var broadcastHandles = [];
- $rootScope.$on("auth-success", function () {
- NVRDataModel.debug("Montage Re-auth handler; stopping network...");
+
+ var as = $rootScope.$on("auth-success", function () {
+ NVRDataModel.debug("Montage Re-auth handler");
//console.log ("RETAUTH");
// NVRDataModel.stopNetwork();
});
+ broadcastHandles.push(as);
//--------------------------------------------------------------------------------------
@@ -46,7 +49,7 @@ angular.module('zmApp.controllers')
//
//--------------------------------------------------------------------------------------
- $rootScope.$on("bandwidth-change", function(e, data)
+ var bc = $rootScope.$on("bandwidth-change", function(e, data)
{
// not called for offline, I'm only interested in BW switches
NVRDataModel.debug("Got network change:" + data);
@@ -93,6 +96,8 @@ angular.module('zmApp.controllers')
}
});
+ broadcastHandles.push(bc);
+
// --------------------------------------------------------
// Handling of back button in case modal is open should
// close the modal
@@ -768,7 +773,7 @@ angular.module('zmApp.controllers')
//----------------------------------------------------------------
// Alarm emit handling
//----------------------------------------------------------------
- $rootScope.$on("alarm", function(event, args)
+ var al = $rootScope.$on("alarm", function(event, args)
{
// FIXME: I should probably unregister this instead
if (typeof $scope.monitors === undefined)
@@ -793,6 +798,8 @@ angular.module('zmApp.controllers')
});
+ broadcastHandles.push(al);
+
function scheduleRemoveFlash(id)
{
NVRDataModel.debug("Scheduled a " + zm.alarmFlashTimer + "ms timer for dis-alarming monitor ID:" + $scope.MontageMonitors[id].Monitor.Id);
@@ -1295,11 +1302,18 @@ angular.module('zmApp.controllers')
$interval.cancel(intervalHandleAlarmStatus);
$interval.cancel(intervalHandleReloadPage);
+ NVRDataModel.debug ("Deregistering broadcast handles");
+ for (var i=0; i < broadcastHandles.length; i++) {
+ broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+
+
// if modal is open stream gets killed
// inside monitorModal
if (!$scope.singleMonitorModalOpen && simulStreaming=='1') {
NVRDataModel.debug ("Killing all streams in montage to save memory/nw...");
- for (var i=0; i < $scope.MontageMonitors.length; i++) {
+ for (i=0; i < $scope.MontageMonitors.length; i++) {
NVRDataModel.killStream($scope.MontageMonitors[i].Monitor.connKey);
}
}
@@ -1927,6 +1941,13 @@ angular.module('zmApp.controllers')
$scope.$on('$ionicView.beforeLeave', function()
{
+
+ NVRDataModel.debug ("Deregistering broadcast handles");
+ for (var i=0; i < broadcastHandles.length; i++) {
+ broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+
// console.log("**VIEW ** Montage Ctrl Left, force removing modal");
//console.log ("beforeLeave:Cancelling timer");
diff --git a/www/js/MontageHistoryCtrl.js b/www/js/MontageHistoryCtrl.js
index 6c8c3cf2..43cb8f8f 100644
--- a/www/js/MontageHistoryCtrl.js
+++ b/www/js/MontageHistoryCtrl.js
@@ -5,15 +5,17 @@
// FIXME: This is a copy of montageCtrl - needs a lot of code cleanup
angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$scope', '$rootScope', 'NVRDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$ionicPopup', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', 'zm', '$ionicPopover', '$controller', 'imageLoadingDataShare', '$window', '$translate', 'qHttp', '$q', function($scope, $rootScope, NVRDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $ionicPopup, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, zm, $ionicPopover, $controller, imageLoadingDataShare, $window, $translate, qHttp, $q)
{
+ var broadcastHandles = [];
//--------------------------------------------------------------------------------------
// Handles bandwidth change, if required
//
//--------------------------------------------------------------------------------------
- $rootScope.$on("bandwidth-change", function(e, data)
+ var bc = $rootScope.$on("bandwidth-change", function(e, data)
{
// nothing to do for now
// eventUrl will use lower BW in next query cycle
});
+ broadcastHandles.push(bc);
$scope.getLocalTZ = function()
{
@@ -908,6 +910,14 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
$scope.$on('$ionicView.beforeLeave', function()
{
//console.log("**VIEW ** Event History Ctrl Left, force removing modal");
+
+ NVRDataModel.debug ("Deregistering broadcast handles");
+ for (var i=0; i < broadcastHandles.length; i++) {
+ broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+
+
if ($scope.modal) $scope.modal.remove();
NVRDataModel.log("Cancelling event query timer");
$interval.cancel($rootScope.eventQueryInterval);
diff --git a/www/js/PortalLoginCtrl.js b/www/js/PortalLoginCtrl.js
index 4161c5b9..9971de86 100644
--- a/www/js/PortalLoginCtrl.js
+++ b/www/js/PortalLoginCtrl.js
@@ -7,12 +7,21 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
{
var processPush = false;
+ var broadcastHandles = [];
$scope.$on ('$ionicView.beforeEnter', function() {
//processPush = false;
// NVRDataModel.debug ("BeforeEnter in Portal: setting ProcessPush to false");
});
+ $scope.$on ('$ionicView.beforeLeave', function() {
+ NVRDataModel.debug ("Deregistering broadcast handles");
+ for (var i=0; i < broadcastHandles.length; i++) {
+ broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+ });
+
$scope.$on('$ionicView.enter',
function()
{
@@ -276,13 +285,14 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
}
- $rootScope.$on("process-push", function () {
+ var pp = $rootScope.$on("process-push", function () {
NVRDataModel.debug("*** PROCESS PUSH HANDLER CALLED INSIDE PORTAL LOGIN, setting ProcessPush to true");
processPush = true;
evaluateTappedNotification();
});
+ broadcastHandles.push(pp);
function evaluateTappedNotification()
{
diff --git a/www/js/TimelineCtrl.js b/www/js/TimelineCtrl.js
index a4a564d0..a1060265 100644
--- a/www/js/TimelineCtrl.js
+++ b/www/js/TimelineCtrl.js
@@ -14,6 +14,7 @@
angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPlatform', '$scope', 'zm', 'NVRDataModel', '$ionicSideMenuDelegate', '$rootScope', '$http', '$q', 'message', '$state', '$ionicLoading', '$ionicPopover', '$ionicScrollDelegate', '$ionicModal', '$timeout', '$ionicContentBanner', '$ionicHistory', '$sce', '$stateParams', '$translate', '$ionicPopup', '$interval', function($ionicPlatform, $scope, zm, NVRDataModel, $ionicSideMenuDelegate, $rootScope, $http, $q, message, $state, $ionicLoading, $ionicPopover, $ionicScrollDelegate, $ionicModal, $timeout, $ionicContentBanner, $ionicHistory, $sce, $stateParams, $translate, $ionicPopup, $interval)
{
+ var broadcastHandles = [];
//console.log("Inside Timeline controller");
$scope.openMenu = function()
@@ -282,11 +283,12 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
}
- $rootScope.$on('tz-updated', function()
+ var tzu = $rootScope.$on('tz-updated', function()
{
$scope.tzAbbr = NVRDataModel.getTimeZoneNow();
NVRDataModel.debug("Timezone API updated timezone to " + NVRDataModel.getTimeZoneNow());
});
+ broadcastHandles.push(tzu);
//-------------------------------------------------
// Make sure we delete the timeline
@@ -296,6 +298,12 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
$scope.$on('$ionicView.leave', function()
{
+ NVRDataModel.debug ("Deregistering broadcast handles");
+ for (var i=0; i < broadcastHandles.length; i++) {
+ broadcastHandles[i]();
+ }
+ broadcastHandles = [];
+
if (timeline)
{
$interval.cancel(updateInterval);
diff --git a/www/js/TimelineModalCtrl.js b/www/js/TimelineModalCtrl.js
index ef011d3b..e7a7e2cd 100644
--- a/www/js/TimelineModalCtrl.js
+++ b/www/js/TimelineModalCtrl.js
@@ -53,13 +53,7 @@ angular.module('zmApp.controllers').controller('TimelineModalCtrl', ['$scope', '
// we use this to reload the connkey if authkey changed
//------------------------------------------------------
- $rootScope.$on("auth-success", function()
- {
-
- NVRDataModel.debug("EventModalCtrl: Re-login detected, resetting everything & re-generating connkey");
-
- });
-
+
$scope.scrollUp = function()
{
//console.log ("SWIPE UP");
diff --git a/www/js/app.js b/www/js/app.js
index 3bd875c6..92fed8e1 100755
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -1328,7 +1328,8 @@ angular.module('zmApp', [
$rootScope.online = true;
$timeout(function () {
- var networkState = navigator.connection.type;
+ var networkState="browser not supported";
+ if (navigator.connection) networkState = navigator.connection.type;
NVRDataModel.debug("Detected network type as: " + networkState);
var strState = NVRDataModel.getBandwidth();
NVRDataModel.debug("getBandwidth() normalized it as: " + strState);