From e5cc1c5826f65b5d40892cd92714cc9f070198a9 Mon Sep 17 00:00:00 2001 From: Pliable Pixels Date: Sun, 8 Apr 2018 20:29:20 -0400 Subject: broadcast handler cleanups and others --- www/js/EventCtrl.js | 24 ++++++++++++++++++++++-- www/js/EventModalCtrl.js | 19 +++++++++++++++++-- www/js/EventServer.js | 6 +++++- www/js/EventsModalGraphCtrl.js | 14 +++++++++++++- www/js/MontageCtrl.js | 31 ++++++++++++++++++++++++++----- www/js/MontageHistoryCtrl.js | 12 +++++++++++- www/js/PortalLoginCtrl.js | 12 +++++++++++- www/js/TimelineCtrl.js | 10 +++++++++- www/js/TimelineModalCtrl.js | 8 +------- www/js/app.js | 3 ++- 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); -- cgit v1.2.3