diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2016-09-09 16:59:37 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2016-09-09 16:59:37 -0400 |
| commit | b2c25c351e17ffdca9d26e1b8396c911db14db20 (patch) | |
| tree | 665e4ef4906301874aab5aa7df5df2092ed433b8 /www/js | |
| parent | 8545d9ea546b9459245e3aaa83b12bc09e30b408 (diff) | |
#321 - add ability to automatically switch based on network connection
Former-commit-id: bad04bbef6839c949aad05fb34eee61c64947070
Diffstat (limited to 'www/js')
| -rw-r--r-- | www/js/DataModel.js | 48 | ||||
| -rw-r--r-- | www/js/EventModalCtrl.js | 28 | ||||
| -rw-r--r-- | www/js/LoginCtrl.js | 4 | ||||
| -rw-r--r-- | www/js/MonitorModalCtrl.js | 2 | ||||
| -rw-r--r-- | www/js/MontageCtrl.js | 76 | ||||
| -rw-r--r-- | www/js/app.js | 47 |
6 files changed, 166 insertions, 39 deletions
diff --git a/www/js/DataModel.js b/www/js/DataModel.js index 11451916..ee69b09c 100644 --- a/www/js/DataModel.js +++ b/www/js/DataModel.js @@ -2,7 +2,7 @@ /* jslint browser: true*/ -/* global cordova,StatusBar,angular,console, URI, moment, localforage, CryptoJS */ +/* global cordova,StatusBar,angular,console, URI, moment, localforage, CryptoJS, Connection */ // This is my central data respository and common functions // that many other controllers use @@ -109,6 +109,7 @@ angular.module('zmApp.controllers') 'cycleMonitors': false, 'cycleMonitorsInterval':10, // 10sec 'enableLowBandwidth':false, + 'autoSwitchBandwidth':false, @@ -691,12 +692,28 @@ angular.module('zmApp.controllers') } + if (typeof loginData.enableLowBandwidth == 'undefined') { + loginData.enableLowBandwidth = false; } - $rootScope.runMode = loginData.enableLowBandwith? "low": "normal"; + // wtf is wrong with this ternary? + //$rootScope.runMode = (loginData.enableLowBandwith==true)? "low": "normal"; + + + + + if (typeof loginData.autoSwitchBandwidth == 'undefined') { + + + loginData.autoSwitchBandwidth = false; + + } + + + if (typeof loginData.refreshSecLowBW == 'undefined') { @@ -1079,6 +1096,33 @@ angular.module('zmApp.controllers') }, + //-------------------------------------------------------------------------- + // returns high or low BW mode + //-------------------------------------------------------------------------- + getBandwidth: function () { + // if mode is not on always return high + if (loginData.enableLowBandwidth == false) + { + return "highbw"; + } + // if mode is force on, return low + if (loginData.enableLowBandwidth == true && loginData.autoSwitchBandwidth != true) + { + return "lowbw"; + } + // else return real state + var networkState = navigator.connection.type; + var strState; + switch (networkState) + { + + case Connection.WIFI: strState="highbw"; break; + case Connection.ETHERNET: strState="highbw"; break; + default: strState = "lowbw"; break; + + } + return strState; + }, //-------------------------------------------------------------------------- // This is really a hack for now & is very ugly. I need to clean this up a lot diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js index 8a2c3c4c..e091b5f7 100644 --- a/www/js/EventModalCtrl.js +++ b/www/js/EventModalCtrl.js @@ -101,6 +101,30 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro //$rootScope.authSession=""; NVRDataModel.log("Modal: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession); }); + + + + //-------------------------------------------------------------------------------------- + // Handles bandwidth change, if required + // + //-------------------------------------------------------------------------------------- + + $rootScope.$on("bandwidth-change", function (e,data) { + // not called for offline, I'm only interested in BW switches + NVRDataModel.debug("Got network change:" + data); + var ds; + if (data == 'lowbw') { + ds = "low bandwidth mode"; + } else { + ds = "high bandwidth mode"; + } + NVRDataModel.displayBanner('net', [ds]); + + var ld = NVRDataModel.getLogin(); + + $scope.singleImageQuality = (NVRDataModel.getBandwidth()=="lowbw" )? zm.eventSingleImageQualityLowBW: ld.singleImageQuality; + }); + @@ -740,7 +764,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro var ld = NVRDataModel.getLogin(); $scope.loginData = NVRDataModel.getLogin(); - $scope.singleImageQuality = ld.enableLowBandwidth? 70: ld.singleImageQuality; + $scope.singleImageQuality = (NVRDataModel.getBandwidth()=="lowbw" )? zm.eventSingleImageQualityLowBW: ld.singleImageQuality; $scope.blockSlider = false; $scope.checkEventOn = false; //$scope.singleImageQuality = 100; @@ -776,7 +800,7 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro eventQueryHandle = $interval(function () { checkEvent(); // console.log ("Refreshing Image..."); - }.bind(this), ld.enableLowBandwidth? zm.eventPlaybackQueryLowBW: zm.eventPlaybackQuery); + }.bind(this), (NVRDataModel.getBandwidth()=="lowbw")? zm.eventPlaybackQueryLowBW: zm.eventPlaybackQuery); } else { NVRDataModel.log(">>>Modal was exited, not starting checkAllEvents"); } diff --git a/www/js/LoginCtrl.js b/www/js/LoginCtrl.js index 457ebe79..28f16670 100644 --- a/www/js/LoginCtrl.js +++ b/www/js/LoginCtrl.js @@ -424,7 +424,7 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r NVRDataModel.setFirstUse(false); // used for menu display - $rootScope.runMode = $scope.loginData.enableLowBandwidth ? "low":"normal"; + // lets so some basic sanitization of the data // I am already adding "/" so lets remove spurious ones @@ -529,6 +529,8 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r } NVRDataModel.setLogin($scope.loginData); + $rootScope.runMode = NVRDataModel.getBandwidth(); + oldName = $scope.loginData.serverName; if ($scope.check.isUseEventServer) { diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js index 84553d6e..b5ac114f 100644 --- a/www/js/MonitorModalCtrl.js +++ b/www/js/MonitorModalCtrl.js @@ -1259,7 +1259,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ $scope.isCycle = ld.cycleMonitors; $scope.cycleText = $scope.isCycle ? $translate.instant('kOn') : $translate.instant('kOff'); - $scope.quality = ld.enableLowBandwidth? 70:ld.monSingleImageQuality; + $scope.quality = ld.enableLowBandwidth? zm.monSingleImageQualityLowBW:ld.monSingleImageQuality; configurePTZ($scope.monitorId); diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js index 5cc06739..87542f0b 100644 --- a/www/js/MontageCtrl.js +++ b/www/js/MontageCtrl.js @@ -24,6 +24,43 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', ' var ld; var refreshSec; + + //-------------------------------------------------------------------------------------- + // Handles bandwidth change, if required + // + //-------------------------------------------------------------------------------------- + + $rootScope.$on("bandwidth-change", function (e,data) { + // not called for offline, I'm only interested in BW switches + NVRDataModel.debug("Got network change:" + data); + var ds; + if (data == 'lowbw') { + ds = "low bandwidth mode"; + } else { + ds = "high bandwidth mode"; + } + NVRDataModel.displayBanner('net', [ds]); + + var ld = NVRDataModel.getLogin(); + + refreshSec = (NVRDataModel.getBandwidth()=='lowbw') ? ld.refreshSecLowBW : ld.refreshSec; + $interval.cancel(intervalHandleMontage); + intervalHandleMontage = $interval(function () { + loadNotifications(); + }.bind(this), refreshSec * 1000); + + + if (NVRDataModel.getBandwidth() == 'lowbw') + { + NVRDataModel.debug("Enabling low bandwidth parameters"); + $scope.LoginData.montageQuality = zm.montageQualityLowBW; + $scope.LoginData.singleImageQuality = zm.eventSingleImageQualityLowBW; + $scope.LoginData.montageHistoryQuality = zm.montageQualityLowBW; + + } + }); + + // -------------------------------------------------------- // Handling of back button in case modal is open should // close the modal @@ -261,9 +298,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', ' return; } - - if (NVRDataModel.getLogin().enableLowBandwidth) - { + + if (NVRDataModel.getBandwidth() == 'lowbw') { return; } @@ -794,7 +830,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', ' $scope.toggleSizeButtons = function () { $scope.showSizeButtons = !$scope.showSizeButtons; - + NVRDataModel.debug("toggling size buttons:" + $scope.showSizeButtons); if ($scope.showSizeButtons) $ionicScrollDelegate.$getByHandle("montage-delegate").scrollTop(); }; @@ -818,18 +854,18 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', ' $scope.allImagesLoaded = false; $scope.gridScale = "grid-item-50"; $scope.LoginData = NVRDataModel.getLogin(); + //FIXME - if ($scope.LoginData.enableLowBandwidth) - { - NVRDataModel.debug ("Enabling low bandwidth parameters"); - $scope.LoginData.montageQuality = 50; - $scope.LoginData.singleImageQuality = 70; - $scope.LoginData.montageHistoryQuality = 50; - - + if (NVRDataModel.getBandwidth() == 'lowbw') { + NVRDataModel.debug("Enabling low bandwidth parameters"); + $scope.LoginData.montageQuality = zm.montageQualityLowBW; + $scope.LoginData.singleImageQuality = zm.eventSingleImageQualityLowBW; + $scope.LoginData.montageHistoryQuality = zm.montageQualityLowBW; + + } - - + + $scope.monLimit = $scope.LoginData.maxMontage; $scope.showSizeButtons = false; @@ -851,11 +887,11 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', ' //$scope.areImagesLoading = true; var ld = NVRDataModel.getLogin(); - - refreshSec = ld.enableLowBandwidth ? ld.refreshSecLowBW: ld.refreshSec; - - NVRDataModel.debug ("Enable Low bandwidth: " + ld.enableLowBandwidth+ " montage refresh set to: " + refreshSec); - + + refreshSec = (NVRDataModel.getBandwidth()=='lowbw') ? ld.refreshSecLowBW : ld.refreshSec; + + NVRDataModel.debug("bandwidth: " + NVRDataModel.getBandwidth() + " montage refresh set to: " + refreshSec); + //console.log("Setting Awake to " + NVRDataModel.getKeepAwake()); NVRDataModel.setAwake(NVRDataModel.getKeepAwake()); @@ -1141,4 +1177,4 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', ' }; -}]);
\ No newline at end of file +}]); diff --git a/www/js/app.js b/www/js/app.js index 367fc0af..a4cf59f7 100644 --- a/www/js/app.js +++ b/www/js/app.js @@ -1,6 +1,6 @@ /* jshint -W041 */ /* jslint browser: true*/ -/* global cordova,StatusBar,angular,console,alert,PushNotification, moment ,ionic, URI,Packery, ConnectSDK, CryptoJS, localforage,$*/ +/* global cordova,StatusBar,angular,console,alert,PushNotification, moment ,ionic, URI,Packery, ConnectSDK, CryptoJS, ContactFindOptions, localforage,$, Connection*/ var appVersion = "0.0.0"; @@ -46,7 +46,7 @@ angular.module('zmApp', [ authoremail: 'pliablepixels+zmNinja@gmail.com', logFileMaxSize: 20000, // after this limit log gets reset loginInterval: 300000, //5m*60s*1000 - ZM auto login after 5 mins - loginIntervalLowBW: 600000, //10m login + //loginInterval: 30000, updateCheckInterval: 86400000, // 24 hrs loadingTimeout: 15000, @@ -78,11 +78,17 @@ angular.module('zmApp', [ nphSwitchTimer: 3000, eventHistoryTimer: 10000, eventPlaybackQuery: 3000, - eventPlaybackQueryLowBW: 6000, + packeryTimer: 500, dbName: 'zmninja', cipherKey: 'sdf#@#%FSXSA_AR', minCycleTime: 5, + + eventPlaybackQueryLowBW: 6000, + loginIntervalLowBW: 600000, //10m login + eventSingleImageQualityLowBW:70, + monSingleImageQualityLowBW:70, + montageQualityLowBW:50, }) @@ -968,11 +974,35 @@ angular.module('zmApp', [ $rootScope.$apply(function () { $rootScope.online = false; NVRDataModel.log("Your network went offline"); + + //$rootScope.$emit('network-change', "offline"); + }); }, false); + $window.addEventListener("online", function () { $rootScope.$apply(function () { $rootScope.online = true; + + $timeout ( function () { + var networkState = navigator.connection.type; + NVRDataModel.debug ("Detected network type as: "+ networkState); + var strState = NVRDataModel.getBandwidth(); + NVRDataModel.debug ("getBandwidth() normalized it as: " + strState); + $rootScope.runMode = strState; + if ((NVRDataModel.getLogin().autoSwitchBandwidth == true) && + (NVRDataModel.getLogin().enableLowBandwidth == true)) + { + NVRDataModel.debug ("Setting app state to: "+ strState); + $rootScope.$emit('bandwidth-change', strState); + } + else + { + NVRDataModel.debug ("Not changing bandwidth state, as auto change is not on"); + } + + },1000); // need a time gap, seems network type registers late + NVRDataModel.log("Your network is online, re-authenticating"); zmAutoLogin.doLogin($translate.instant('kReAuthenticating')); @@ -1077,11 +1107,8 @@ angular.module('zmApp', [ - - - $rootScope.db = null; - $rootScope.runMode = "normal"; + $rootScope.runMode = "highbw"; $rootScope.platformOS = "desktop"; NVRDataModel.log("Device is ready"); @@ -1424,12 +1451,6 @@ angular.module('zmApp', [ } - - - - - - }); //platformReady }) //run |
