summaryrefslogtreecommitdiff
path: root/www/js
diff options
context:
space:
mode:
Diffstat (limited to 'www/js')
-rw-r--r--www/js/DataModel.js48
-rw-r--r--www/js/EventModalCtrl.js28
-rw-r--r--www/js/LoginCtrl.js4
-rw-r--r--www/js/MonitorModalCtrl.js2
-rw-r--r--www/js/MontageCtrl.js76
-rw-r--r--www/js/app.js47
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