summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--www/js/BookmarkCtrl.js97
-rw-r--r--www/js/DataModel.js603
-rw-r--r--www/js/DevOptionsCtrl.js4
-rw-r--r--www/js/EventCtrl.js482
-rw-r--r--www/js/EventModalCtrl.js122
-rw-r--r--www/js/EventServer.js26
-rw-r--r--www/js/EventServerSettingsCtrl.js52
-rw-r--r--www/js/EventsGraphsCtrl.js24
-rw-r--r--www/js/FirstUseCtrl.js8
-rw-r--r--www/js/LogCtrl.js10
-rw-r--r--www/js/LoginCtrl.js298
-rw-r--r--www/js/MenuController.js314
-rw-r--r--www/js/MomentCtrl.js26
-rw-r--r--www/js/MonitorCtrl.js68
-rw-r--r--www/js/MonitorModalCtrl.js569
-rw-r--r--www/js/MontageCtrl.js83
-rw-r--r--www/js/NewsCtrl.js4
-rw-r--r--www/js/PortalLoginCtrl.js26
-rw-r--r--www/js/StateCtrl.js12
-rw-r--r--www/js/TimelineCtrl.js113
-rw-r--r--www/js/WizardCtrl.js52
-rwxr-xr-xwww/js/app.js506
-rw-r--r--www/js/ionicUtils.js2
23 files changed, 1754 insertions, 1747 deletions
diff --git a/www/js/BookmarkCtrl.js b/www/js/BookmarkCtrl.js
index 9472f8d3..b84041c7 100644
--- a/www/js/BookmarkCtrl.js
+++ b/www/js/BookmarkCtrl.js
@@ -27,7 +27,7 @@ angular.module('zmApp.controllers').controller('zmApp.BookmarkCtrl', ['$scope',
}
};
-
+
//-------------------------------------------------------------------------
// Lets make sure we set screen dim properly as we enter
// The problem is we enter other states before we leave previous states
@@ -41,54 +41,51 @@ angular.module('zmApp.controllers').controller('zmApp.BookmarkCtrl', ['$scope',
$scope.bookmarks = [];
-
-
- $scope.bookmarks.push(
- {
- text:"Change State",
- state:"app.state",
- params: {
- shortcut: {
- fn:"selectCustomState",
- fnargs:null,
- }
- }
- },
- {
- text:"Stop ZM",
- state:"app.state",
- params: {
- shortcut: {
- fn:"controlZM",
- fnargs:'stop',
- }
- },
- },
- {
- text:"Start ZM",
- state:"app.state",
- params: {
- shortcut: {
- fn:"controlZM",
- fnargs:'start',
- }
- },
- },
- {
- text:"Restart ZM",
- state:"app.state",
- params: {
- shortcut: {
- fn:"controlZM",
- fnargs:'restart',
- }
- },
- }
- );
-
- $scope.bookmarks.push({text:""});
-
-
+
+
+ $scope.bookmarks.push({
+ text: "Change State",
+ state: "app.state",
+ params: {
+ shortcut: {
+ fn: "selectCustomState",
+ fnargs: null,
+ }
+ }
+ }, {
+ text: "Stop ZM",
+ state: "app.state",
+ params: {
+ shortcut: {
+ fn: "controlZM",
+ fnargs: 'stop',
+ }
+ },
+ }, {
+ text: "Start ZM",
+ state: "app.state",
+ params: {
+ shortcut: {
+ fn: "controlZM",
+ fnargs: 'start',
+ }
+ },
+ }, {
+ text: "Restart ZM",
+ state: "app.state",
+ params: {
+ shortcut: {
+ fn: "controlZM",
+ fnargs: 'restart',
+ }
+ },
+ });
+
+ $scope.bookmarks.push({
+ text: ""
+ });
+
+
});
$scope.action = function (item) {
@@ -98,7 +95,7 @@ angular.module('zmApp.controllers').controller('zmApp.BookmarkCtrl', ['$scope',
disableAnimate: true,
expire: 300
});
- console.log ("GOIN WITH "+ JSON.stringify(item.params));
+ console.log("GOIN WITH " + JSON.stringify(item.params));
$state.go(item.state, item.params);
};
diff --git a/www/js/DataModel.js b/www/js/DataModel.js
index 95bce4b4..6dbd5958 100644
--- a/www/js/DataModel.js
+++ b/www/js/DataModel.js
@@ -28,7 +28,7 @@ angular.module('zmApp.controllers')
var monitors = [];
var multiservers = [];
-
+
var migrationComplete = false;
var tz = "";
@@ -205,9 +205,9 @@ angular.module('zmApp.controllers')
* @returns
*/
function setCordovaHttpOptions() {
-
+
if (loginData.isUseBasicAuth) {
- debug ("Cordova HTTP: configuring basic auth");
+ debug("Cordova HTTP: configuring basic auth");
cordova.plugin.http.useBasicAuth(loginData.basicAuthUser, loginData.basicAuthPassword);
}
@@ -215,9 +215,9 @@ angular.module('zmApp.controllers')
//alert("Enabling insecure SSL");
log(">>>> Disabling strict SSL checking (turn off in Dev Options if you can't connect)");
- cordova.plugin.http.setSSLCertMode('nocheck', function() {
- debug('--> SSL is permissive, will allow any certs. Use at your own risk.');
- }, function() {
+ cordova.plugin.http.setSSLCertMode('nocheck', function () {
+ debug('--> SSL is permissive, will allow any certs. Use at your own risk.');
+ }, function () {
console.log('-->Error setting SSL permissive');
});
@@ -321,30 +321,30 @@ angular.module('zmApp.controllers')
var myurl = apiurl + '/configs/viewByName/ZM_MIN_STREAMING_PORT.json';
$http.get(myurl)
.then(function (data) {
- data = data.data;
- //console.log ("GOT " + JSON.stringify(data));
+ data = data.data;
+ //console.log ("GOT " + JSON.stringify(data));
- if (data.config && data.config.Value) {
- configParams.ZM_MIN_STREAMING_PORT = data.config.Value;
- setCurrentServerMultiPortSupported(true);
- log("Got min streaming port value of: " + configParams.ZM_MIN_STREAMING_PORT);
- } else {
- setCurrentServerMultiPortSupported(false);
- log("ZM_MIN_STREAMING_PORT not configure, disabling");
- configParams.ZM_MIN_STREAMING_PORT = 0;
- }
+ if (data.config && data.config.Value) {
+ configParams.ZM_MIN_STREAMING_PORT = data.config.Value;
+ setCurrentServerMultiPortSupported(true);
+ log("Got min streaming port value of: " + configParams.ZM_MIN_STREAMING_PORT);
+ } else {
+ setCurrentServerMultiPortSupported(false);
+ log("ZM_MIN_STREAMING_PORT not configure, disabling");
+ configParams.ZM_MIN_STREAMING_PORT = 0;
+ }
- d.resolve(configParams.ZM_MIN_STREAMING_PORT);
- return (d.promise);
- },
- function (err) {
- configParams.ZM_MIN_STREAMING_PORT = 0;
- log("ZM_MIN_STREAMING_PORT not supported");
- setCurrentServerMultiPortSupported(false);
- d.resolve(configParams.ZM_MIN_STREAMING_PORT);
- return (d.promise);
- });
+ d.resolve(configParams.ZM_MIN_STREAMING_PORT);
+ return (d.promise);
+ },
+ function (err) {
+ configParams.ZM_MIN_STREAMING_PORT = 0;
+ log("ZM_MIN_STREAMING_PORT not supported");
+ setCurrentServerMultiPortSupported(false);
+ d.resolve(configParams.ZM_MIN_STREAMING_PORT);
+ return (d.promise);
+ });
} else {
log("sending Cached ZM_MIN_STREAMING_PORT " +
configParams.ZM_MIN_STREAMING_PORT);
@@ -707,8 +707,8 @@ angular.module('zmApp.controllers')
if ($rootScope.platformOS == 'desktop')
$state.go(state, p1, p2);
else
- $state.go(state, p1, p2);
- // $ionicNativeTransitions.stateGo(state, p1, p2);
+ $state.go(state, p1, p2);
+ // $ionicNativeTransitions.stateGo(state, p1, p2);
},
// used when an empty server profile is created
@@ -843,10 +843,10 @@ angular.module('zmApp.controllers')
return d.promise;
}
- /* window.cordova.plugin.cloudsettings.enableDebug(function(){
- console.log("Debug mode enabled");
- });*/
-
+ /* window.cordova.plugin.cloudsettings.enableDebug(function(){
+ console.log("Debug mode enabled");
+ });*/
+
log("CloudSync: Syncing with cloud if enabled...");
var sgl = "";
@@ -869,19 +869,18 @@ angular.module('zmApp.controllers')
log("user profile encrypted, decoding...");
var bytes = CryptoJS.AES.decrypt(sgl.toString(), zm.cipherKey);
decodedSgl = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
-
- }
- else {
+
+ } else {
decodedSgl = sgl;
}
-
+
var loadedData = decodedSgl[dsn];
-
+
if (!isEmpty(loadedData)) {
-
+
if (!loadedData.saveToCloud) {
- log ("Cloud sync is disabled, exiting...");
+ log("Cloud sync is disabled, exiting...");
d.resolve(true);
return d.promise;
}
@@ -898,7 +897,7 @@ angular.module('zmApp.controllers')
return d.promise;
},
function (err) {
- log("error syncing cloud data..."+err);
+ log("error syncing cloud data..." + err);
d.resolve(true);
return d.promise;
}, true);
@@ -909,14 +908,14 @@ angular.module('zmApp.controllers')
log("Did not find a valid local configuration, trying cloud...");
window.cordova.plugin.cloudsettings.exists(function (exists) {
-
+
if (exists) {
- log ("A cloud configuration has been found");
+ log("A cloud configuration has been found");
window.cordova.plugin.cloudsettings.load(function (cloudData) {
- console.log ("CLOUD DATA FOUND"+JSON.stringify(cloudData));
- debug ("Cloud data retrieved is:"+JSON.stringify(cloudData));
+ console.log("CLOUD DATA FOUND" + JSON.stringify(cloudData));
+ debug("Cloud data retrieved is:" + JSON.stringify(cloudData));
if (cloudData && cloudData.defaultServerName && cloudData.serverGroupList) {
- log("retrieved a valid cloud config with a defaultServerName of:"+cloudData.defaultServerName);
+ log("retrieved a valid cloud config with a defaultServerName of:" + cloudData.defaultServerName);
log("replacing local DB with cloud...");
localforage.setItem('isFirstUse', false)
.then(function () {
@@ -1216,7 +1215,7 @@ angular.module('zmApp.controllers')
}
-
+
if (typeof loginData.vibrateOnPush == 'undefined') {
debug("vibrate on push not found, setting to true");
@@ -1352,7 +1351,7 @@ angular.module('zmApp.controllers')
}
-
+
if (typeof loginData.enableThumbs == 'undefined') {
@@ -1430,7 +1429,7 @@ angular.module('zmApp.controllers')
}
-
+
if (typeof loginData.montageReviewCollapse == 'undefined') {
@@ -1448,7 +1447,7 @@ angular.module('zmApp.controllers')
log("defaultServer configuration NOT found. Keeping login at defaults");
}
-
+
// from local forage
if (window.cordova) setCordovaHttpOptions();
@@ -1714,17 +1713,17 @@ angular.module('zmApp.controllers')
// returns API version or none
//-------------------------------------------------------
getAPIversion: function () {
-
+
var d = $q.defer();
var apiurl = loginData.apiurl + '/host/getVersion.json';
- debug("getAPIversion called with "+apiurl);
+ debug("getAPIversion called with " + apiurl);
$http.get(apiurl)
.then(function (success) {
if (success.data.version) {
// console.log ("API VERSION RETURNED: " + JSON.stringify(success));
$rootScope.apiValid = true;
setCurrentServerVersion(success.data.version);
- debug("getAPI version succeded with "+success.data.version);
+ debug("getAPI version succeded with " + success.data.version);
d.resolve(success.data.version);
} else {
debug("Setting APIValid to false as API version was not retrieved");
@@ -1840,7 +1839,7 @@ angular.module('zmApp.controllers')
d.resolve(configParams.ZM_EVENT_IMAGE_DIGITS);
return (d.promise);
- },function (err) {
+ }, function (err) {
log("Error retrieving ZM_EVENT_IMAGE_DIGITS" + JSON.stringify(err), "error");
log("Taking a guess, setting ZM_EVENT_IMAGE_DIGITS to 5");
// FIXME: take a plunge and keep it at 5?
@@ -1872,17 +1871,17 @@ angular.module('zmApp.controllers')
$http.get(myurl)
.then(function (data) {
- data = data.data;
- //console.log (">>>> GOT: "+JSON.stringify(data));
- configParams.ZM_PATH_ZMS = data.config.Value;
- d.resolve(configParams.ZM_PATH_ZMS);
- return (d.promise);
- },
- function (error) {
- log("Can't retrieving ZM_PATH_ZMS: " + JSON.stringify(error));
- d.resolve("");
- return (d.promise);
- });
+ data = data.data;
+ //console.log (">>>> GOT: "+JSON.stringify(data));
+ configParams.ZM_PATH_ZMS = data.config.Value;
+ d.resolve(configParams.ZM_PATH_ZMS);
+ return (d.promise);
+ },
+ function (error) {
+ log("Can't retrieving ZM_PATH_ZMS: " + JSON.stringify(error));
+ d.resolve("");
+ return (d.promise);
+ });
return (d.promise);
},
@@ -1922,7 +1921,7 @@ angular.module('zmApp.controllers')
req = req + "&auth=" + myauthtoken;
// req = req + "&command=17";
- debug("DataModel: Pausing live stream ck:" + ck+" for "+name + " url:"+url);
+ debug("DataModel: Pausing live stream ck:" + ck + " for " + name + " url:" + url);
return $http.get(req + "&command=1")
.then(
function (s) {
@@ -1946,7 +1945,7 @@ angular.module('zmApp.controllers')
req = req + "&auth=" + myauthtoken;
// req = req + "&command=17";
- debug("DataModel: Resuming live stream ck:" + ck+ " for "+name);
+ debug("DataModel: Resuming live stream ck:" + ck + " for " + name);
return $http.get(req + "&command=2")
.then(
function (s) {
@@ -2066,75 +2065,75 @@ angular.module('zmApp.controllers')
debug("Monitor URL to fetch is:" + myurl);
$http.get(myurl /*,{timeout:15000}*/ )
.then(function (data) {
- // console.log("HTTP success got " + JSON.stringify(data.monitors));
- data = data.data;
- monitors = data.monitors;
+ // console.log("HTTP success got " + JSON.stringify(data.monitors));
+ data = data.data;
+ monitors = data.monitors;
- if ($rootScope.authSession == 'undefined') {
- log("Now that we have monitors, lets get AuthKey...");
- getAuthKey(monitors[0].Monitor.Id, (Math.floor((Math.random() * 999999) + 1)).toString());
- }
- monitors.sort(function (a, b) {
- return parseInt(a.Monitor.Sequence) - parseInt(b.Monitor.Sequence);
- });
- //console.log("promise resolved inside HTTP success");
- monitorsLoaded = 1;
-
- reloadMonitorDisplayStatus();
-
- debug("Inside getMonitors, will also regen connkeys");
- debug("Now trying to get multi-server data, if present");
- $http.get(apiurl + "/servers.json")
- .then(function (data) {
- data = data.data;
- // We found a server list API, so lets make sure
- // we get the hostname as it will be needed for playback
- log("multi server list loaded" + JSON.stringify(data));
- multiservers = data.servers;
-
- var multiserver_scheme = "http://";
- //console.log ("PORTAL URL IS:"+loginData.url);
- if (loginData.url && (loginData.url.toLowerCase().indexOf("https://") != -1)) {
- debug ("Portal scheme is https, will use https for any multi-server");
- multiserver_scheme = "https://";
- }
- debug ("multi-server protocol will be:"+multiserver_scheme);
-
- for (var i = 0; i < monitors.length; i++) {
-
- // make them all show for now
- monitors[i].Monitor.listDisplay = 'show';
- monitors[i].Monitor.isAlarmed = false;
- monitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- monitors[i].Monitor.rndKey = (Math.floor((Math.random() * 999999) + 1)).toString();
-
- var serverFound = false;
- for (var j = 0; j < multiservers.length; j++) {
- //console.log ("Comparing " + multiservers[j].Server.Id + " AND " + monitors[i].Monitor.ServerId);
- if (multiservers[j].Server.Id == monitors[i].Monitor.ServerId) {
- //console.log ("Found match");
- serverFound = true;
- break;
+ if ($rootScope.authSession == 'undefined') {
+ log("Now that we have monitors, lets get AuthKey...");
+ getAuthKey(monitors[0].Monitor.Id, (Math.floor((Math.random() * 999999) + 1)).toString());
+ }
+ monitors.sort(function (a, b) {
+ return parseInt(a.Monitor.Sequence) - parseInt(b.Monitor.Sequence);
+ });
+ //console.log("promise resolved inside HTTP success");
+ monitorsLoaded = 1;
+
+ reloadMonitorDisplayStatus();
+
+ debug("Inside getMonitors, will also regen connkeys");
+ debug("Now trying to get multi-server data, if present");
+ $http.get(apiurl + "/servers.json")
+ .then(function (data) {
+ data = data.data;
+ // We found a server list API, so lets make sure
+ // we get the hostname as it will be needed for playback
+ log("multi server list loaded" + JSON.stringify(data));
+ multiservers = data.servers;
+
+ var multiserver_scheme = "http://";
+ //console.log ("PORTAL URL IS:"+loginData.url);
+ if (loginData.url && (loginData.url.toLowerCase().indexOf("https://") != -1)) {
+ debug("Portal scheme is https, will use https for any multi-server");
+ multiserver_scheme = "https://";
}
+ debug("multi-server protocol will be:" + multiserver_scheme);
- }
- if (serverFound) {
- if (!/^https?:\/\//i.test(multiservers[j].Server.Hostname)) {
- multiservers[j].Server.Hostname = multiserver_scheme + multiservers[j].Server.Hostname;
- }
+ for (var i = 0; i < monitors.length; i++) {
- debug("Monitor " + monitors[i].Monitor.Id + " has a recording server hostname of " + multiservers[j].Server.Hostname);
+ // make them all show for now
+ monitors[i].Monitor.listDisplay = 'show';
+ monitors[i].Monitor.isAlarmed = false;
+ monitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ monitors[i].Monitor.rndKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+
+ var serverFound = false;
+ for (var j = 0; j < multiservers.length; j++) {
+ //console.log ("Comparing " + multiservers[j].Server.Id + " AND " + monitors[i].Monitor.ServerId);
+ if (multiservers[j].Server.Id == monitors[i].Monitor.ServerId) {
+ //console.log ("Found match");
+ serverFound = true;
+ break;
+ }
+
+ }
+ if (serverFound) {
+ if (!/^https?:\/\//i.test(multiservers[j].Server.Hostname)) {
+ multiservers[j].Server.Hostname = multiserver_scheme + multiservers[j].Server.Hostname;
+ }
+
+ debug("Monitor " + monitors[i].Monitor.Id + " has a recording server hostname of " + multiservers[j].Server.Hostname);
- // Now here is the logic, I need to retrieve serverhostname,
- // and slap on the host protocol and path. Meh.
+ // Now here is the logic, I need to retrieve serverhostname,
+ // and slap on the host protocol and path. Meh.
- var p = URI.parse(loginData.streamingurl);
- var s = URI.parse(multiservers[j].Server.Hostname);
+ var p = URI.parse(loginData.streamingurl);
+ var s = URI.parse(multiservers[j].Server.Hostname);
- /* if (!p.port && !isNaN(p.path)) {
+ /* if (!p.port && !isNaN(p.path)) {
debug ("Portal: port path reversed?");
var tp = p.port;
p.port = p.path;
@@ -2148,174 +2147,174 @@ angular.module('zmApp.controllers')
s.path = tp;
}
*/
-
- debug("recording server parsed is " + JSON.stringify(s));
- debug("portal parsed is " + JSON.stringify(p));
- var st = "";
- var baseurl = "";
- var streamingurl = "";
+ debug("recording server parsed is " + JSON.stringify(s));
+ debug("portal parsed is " + JSON.stringify(p));
+ var st = "";
+ var baseurl = "";
+ var streamingurl = "";
- st += (s.scheme ? s.scheme : p.scheme) + "://"; // server scheme overrides
+ st += (s.scheme ? s.scheme : p.scheme) + "://"; // server scheme overrides
- // if server doesn't have a protocol, what we want is in path
- if (!s.host) {
- s.host = s.path;
- s.path = undefined;
- }
- st += s.host;
+ // if server doesn't have a protocol, what we want is in path
+ if (!s.host) {
+ s.host = s.path;
+ s.path = undefined;
+ }
- //console.log ("STEP 1: ST="+st);
+ st += s.host;
- if (zmsPort <= 0 || loginData.disableSimulStreaming) {
- if (p.port || s.port) {
- st += (s.port ? ":" + s.port : ":" + p.port);
- streamingurl = st;
- //console.log ("STEP 2 no ZMS: ST="+st);
+ //console.log ("STEP 1: ST="+st);
- }
+ if (zmsPort <= 0 || loginData.disableSimulStreaming) {
+ if (p.port || s.port) {
+ st += (s.port ? ":" + s.port : ":" + p.port);
+ streamingurl = st;
+ //console.log ("STEP 2 no ZMS: ST="+st);
- } else {
- var sport = parseInt(zmsPort) + parseInt(monitors[i].Monitor.Id);
- streamingurl = st + ':' + sport;
+ }
- if (p.port || s.port)
- st += (s.port ? ":" + s.port : ":" + p.port);
- //console.log ("STEP 2: ST="+st);
+ } else {
+ var sport = parseInt(zmsPort) + parseInt(monitors[i].Monitor.Id);
+ streamingurl = st + ':' + sport;
- }
+ if (p.port || s.port)
+ st += (s.port ? ":" + s.port : ":" + p.port);
+ //console.log ("STEP 2: ST="+st);
+ }
- baseurl = st;
- controlURL = st;
- st += (s.path ? s.path : p.path);
- streamingurl += (s.path ? s.path : p.path);
+ baseurl = st;
+ controlURL = st;
- //console.log ("STEP 3: ST="+st);
+ st += (s.path ? s.path : p.path);
+ streamingurl += (s.path ? s.path : p.path);
+ //console.log ("STEP 3: ST="+st);
- //console.log ("----------STREAMING URL PARSED AS " + st);
- monitors[i].Monitor.streamingURL = st;
- monitors[i].Monitor.baseURL = baseurl;
- monitors[i].Monitor.controlURL = controlURL;
- //console.log ("** Streaming="+st+" **base="+baseurl);
- // starting 1.30 we have fid=xxx mode to return images
- monitors[i].Monitor.imageMode = (versionCompare($rootScope.apiVersion, "1.30") == -1) ? "path" : "fid";
- // debug("API " + $rootScope.apiVersion + ": Monitor " + monitors[i].Monitor.Id + " will use " + monitors[i].Monitor.imageMode + " for direct image access");
+ //console.log ("----------STREAMING URL PARSED AS " + st);
- //debug ("Streaming URL for Monitor " + monitors[i].Monitor.Id + " is " + monitors[i].Monitor.streamingURL );
- //debug ("Base URL for Monitor " + monitors[i].Monitor.Id + " is " + monitors[i].Monitor.baseURL );
+ monitors[i].Monitor.streamingURL = st;
+ monitors[i].Monitor.baseURL = baseurl;
+ monitors[i].Monitor.controlURL = controlURL;
+ //console.log ("** Streaming="+st+" **base="+baseurl);
+ // starting 1.30 we have fid=xxx mode to return images
+ monitors[i].Monitor.imageMode = (versionCompare($rootScope.apiVersion, "1.30") == -1) ? "path" : "fid";
+ // debug("API " + $rootScope.apiVersion + ": Monitor " + monitors[i].Monitor.Id + " will use " + monitors[i].Monitor.imageMode + " for direct image access");
- } else {
- //monitors[i].Monitor.listDisplay = 'show';
- monitors[i].Monitor.isAlarmed = false;
- monitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- monitors[i].Monitor.rndKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ //debug ("Streaming URL for Monitor " + monitors[i].Monitor.Id + " is " + monitors[i].Monitor.streamingURL );
+ //debug ("Base URL for Monitor " + monitors[i].Monitor.Id + " is " + monitors[i].Monitor.baseURL );
- var st2 = loginData.streamingurl;
+ } else {
+ //monitors[i].Monitor.listDisplay = 'show';
+ monitors[i].Monitor.isAlarmed = false;
+ monitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ monitors[i].Monitor.rndKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- if (zmsPort > 0 && !loginData.disableSimulStreaming) {
- // we need to insert minport
- st2 = "";
- var p2 = URI.parse(loginData.streamingurl);
- var p3 = URI.parse(loginData.url);
- st2 += p2.scheme + "://";
- if (!p2.host) {
- p2.host = p2.path;
- p2.path = undefined;
- }
- st2 += p2.host;
- var sport2 = parseInt(zmsPort) + parseInt(monitors[i].Monitor.Id);
- st2 = st2 + ':' + sport2;
+ var st2 = loginData.streamingurl;
- controlURL = st2;
+ if (zmsPort > 0 && !loginData.disableSimulStreaming) {
+ // we need to insert minport
+ st2 = "";
+ var p2 = URI.parse(loginData.streamingurl);
+ var p3 = URI.parse(loginData.url);
+ st2 += p2.scheme + "://";
+ if (!p2.host) {
+ p2.host = p2.path;
+ p2.path = undefined;
+ }
+ st2 += p2.host;
+ var sport2 = parseInt(zmsPort) + parseInt(monitors[i].Monitor.Id);
+ st2 = st2 + ':' + sport2;
- if (p2.path) st2 += p2.path;
- if (p3.path) controlURL += p3.path;
- }
+ controlURL = st2;
- monitors[i].Monitor.streamingURL = st2;
- monitors[i].Monitor.controlURL = controlURL;
- //debug ("Streaming URL for Monitor " + monitors[i].Monitor.Id + " is " + monitors[i].Monitor.streamingURL );
- //console.log ("NO SERVER MATCH CONSTRUCTED STREAMING PATH="+st2);
- monitors[i].Monitor.baseURL = loginData.url;
- monitors[i].Monitor.imageMode = (versionCompare($rootScope.apiVersion, "1.30") == -1) ? "path" : "fid";
-
- // but now check if forced path
- if (loginData.forceImageModePath) {
- debug("Overriding, setting image mode to true as you have requested force enable");
- monitors[i].Monitor.imageMode = 'path';
- }
+ if (p2.path) st2 += p2.path;
+ if (p3.path) controlURL += p3.path;
+ }
- // debug("API " + $rootScope.apiVersion + ": Monitor " + monitors[i].Monitor.Id + " will use " + monitors[i].Monitor.imageMode + " for direct image access");
- }
- }
- // now get packery hide if applicable
- reloadMonitorDisplayStatus();
- d.resolve(monitors);
- },
- function (err) {
- log("multi server list loading error");
- multiservers = [];
-
- for (var i = 0; i < monitors.length; i++) {
- //monitors[i].Monitor.listDisplay = 'show';
- monitors[i].Monitor.isAlarmed = false;
- monitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- monitors[i].Monitor.rndKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- var st = loginData.streamingurl;
- if (zmsPort > 0) {
- // we need to insert minport
- st = "";
- var p = URI.parse(loginData.streamingurl);
- st += p.scheme + "://";
- if (!p.host) {
- p.host = p.path;
- p.path = undefined;
- }
- st += p.host;
- var sport = parseInt(zmsPort) + parseInt(monitors[i].Monitor.Id);
- st = st + ':' + sport;
- if (p.path) st += p.path;
+ monitors[i].Monitor.streamingURL = st2;
+ monitors[i].Monitor.controlURL = controlURL;
+ //debug ("Streaming URL for Monitor " + monitors[i].Monitor.Id + " is " + monitors[i].Monitor.streamingURL );
+ //console.log ("NO SERVER MATCH CONSTRUCTED STREAMING PATH="+st2);
+ monitors[i].Monitor.baseURL = loginData.url;
+ monitors[i].Monitor.imageMode = (versionCompare($rootScope.apiVersion, "1.30") == -1) ? "path" : "fid";
+ // but now check if forced path
+ if (loginData.forceImageModePath) {
+ debug("Overriding, setting image mode to true as you have requested force enable");
+ monitors[i].Monitor.imageMode = 'path';
+ }
+ // debug("API " + $rootScope.apiVersion + ": Monitor " + monitors[i].Monitor.Id + " will use " + monitors[i].Monitor.imageMode + " for direct image access");
+ }
+ }
+ // now get packery hide if applicable
+ reloadMonitorDisplayStatus();
+ d.resolve(monitors);
+ },
+ function (err) {
+ log("multi server list loading error");
+ multiservers = [];
+
+ for (var i = 0; i < monitors.length; i++) {
+ //monitors[i].Monitor.listDisplay = 'show';
+ monitors[i].Monitor.isAlarmed = false;
+ monitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ monitors[i].Monitor.rndKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ var st = loginData.streamingurl;
+ if (zmsPort > 0) {
+ // we need to insert minport
+ st = "";
+ var p = URI.parse(loginData.streamingurl);
+ st += p.scheme + "://";
+ if (!p.host) {
+ p.host = p.path;
+ p.path = undefined;
+ }
+ st += p.host;
+ var sport = parseInt(zmsPort) + parseInt(monitors[i].Monitor.Id);
+ st = st + ':' + sport;
+ if (p.path) st += p.path;
- }
- monitors[i].Monitor.streamingURL = st;
- // console.log ("CONSTRUCTED STREAMING PATH="+st);
- monitors[i].Monitor.baseURL = loginData.url;
- monitors[i].Monitor.imageMode = (versionCompare($rootScope.apiVersion, "1.30") == -1) ? "path" : "fid";
- //debug("API " + $rootScope.apiVersion + ": Monitor " + monitors[i].Monitor.Id + " will use " + monitors[i].Monitor.imageMode + " for direct image access");
+ }
- }
- d.resolve(monitors);
+ monitors[i].Monitor.streamingURL = st;
+ // console.log ("CONSTRUCTED STREAMING PATH="+st);
+ monitors[i].Monitor.baseURL = loginData.url;
- });
+ monitors[i].Monitor.imageMode = (versionCompare($rootScope.apiVersion, "1.30") == -1) ? "path" : "fid";
+ //debug("API " + $rootScope.apiVersion + ": Monitor " + monitors[i].Monitor.Id + " will use " + monitors[i].Monitor.imageMode + " for direct image access");
- $ionicLoading.hide();
- log("Monitor load was successful, loaded " + monitors.length + " monitors");
+ }
+ d.resolve(monitors);
- },
- function (err) {
- //console.log("HTTP Error " + err);
- log("Monitor load failed " + JSON.stringify(err), "error");
- // To keep it simple for now, I'm translating an error
- // to imply no monitors could be loaded. FIXME: conver to proper error
- monitors = [];
- //console.log("promise resolved inside HTTP fail");
- displayBanner('error', ['error retrieving monitor list', 'please try again']);
- d.resolve(monitors);
- $ionicLoading.hide();
- monitorsLoaded = 0;
- });
+ });
+
+ $ionicLoading.hide();
+ log("Monitor load was successful, loaded " + monitors.length + " monitors");
+
+ },
+ function (err) {
+ //console.log("HTTP Error " + err);
+ log("Monitor load failed " + JSON.stringify(err), "error");
+ // To keep it simple for now, I'm translating an error
+ // to imply no monitors could be loaded. FIXME: conver to proper error
+ monitors = [];
+ //console.log("promise resolved inside HTTP fail");
+ displayBanner('error', ['error retrieving monitor list', 'please try again']);
+ d.resolve(monitors);
+ $ionicLoading.hide();
+ monitorsLoaded = 0;
+ });
});
return d.promise;
@@ -2341,7 +2340,7 @@ angular.module('zmApp.controllers')
url: myurl,
method: 'GET',
transformResponse: undefined,
- responseType:'text',
+ responseType: 'text',
})
// $http.get(myurl)
.then(function (textsucc) {
@@ -2543,25 +2542,25 @@ angular.module('zmApp.controllers')
});
//var myurl = (monitorId == 0) ? apiurl + "/events.json?page=1" : apiurl + "/events/index/MonitorId:" + monitorId + ".json?page=1";
-
+
$http.get(myurl)
.then(function (data) {
- data = data.data;
- $ionicLoading.hide();
- //console.log ("**** EVENTS PAGES I GOT "+JSON.stringify(data));
- //console.log("**** PAGE COUNT IS " + data.pagination.pageCount);
- d.resolve(data.pagination);
- return d.promise;
- },
- function (error) {
- $ionicLoading.hide();
- // console.log("*** ERROR GETTING TOTAL PAGES ***");
- log("Error retrieving page count of events " + JSON.stringify(error), "error");
- displayBanner('error', ['error retrieving event page count', 'please try again']);
+ data = data.data;
+ $ionicLoading.hide();
+ //console.log ("**** EVENTS PAGES I GOT "+JSON.stringify(data));
+ //console.log("**** PAGE COUNT IS " + data.pagination.pageCount);
+ d.resolve(data.pagination);
+ return d.promise;
+ },
+ function (error) {
+ $ionicLoading.hide();
+ // console.log("*** ERROR GETTING TOTAL PAGES ***");
+ log("Error retrieving page count of events " + JSON.stringify(error), "error");
+ displayBanner('error', ['error retrieving event page count', 'please try again']);
- d.reject(error);
- return d.promise;
- });
+ d.reject(error);
+ return d.promise;
+ });
return d.promise;
},
@@ -2613,10 +2612,10 @@ angular.module('zmApp.controllers')
myurl = myurl + "/AlarmFrames >=:" + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0);
- myurl = myurl + ".json?&sort=StartTime&direction=desc&page="+pageId;
+ myurl = myurl + ".json?&sort=StartTime&direction=desc&page=" + pageId;
-
- debug ("getEvents:"+myurl);
+
+ debug("getEvents:" + myurl);
// Simulated data
// myurl = "https://api.myjson.com/bins/4jx44.json";
@@ -2625,31 +2624,31 @@ angular.module('zmApp.controllers')
$http.get(myurl /*,{timeout:15000}*/ )
.then(function (data) {
- data = data.data;
- if (loadingStr != 'none') $ionicLoading.hide();
- //myevents = data.events;
- myevents = data;
+ data = data.data;
+ if (loadingStr != 'none') $ionicLoading.hide();
+ //myevents = data.events;
+ myevents = data;
-
- d.resolve(myevents);
- return d.promise;
- },
- function (err) {
- if (loadingStr != 'none') $ionicLoading.hide();
- displayBanner('error', ['error retrieving event list', 'please try again']);
- //console.log("HTTP Events error " + err);
- log("Error fetching events for page " + pageId + " Err: " + JSON.stringify(err), "error");
- // I need to reject this as I have infinite scrolling
- // implemented in EventCtrl.js --> and if it does not know
- // it got an error going to the next page, it will get into
- // an infinite loop as we are at the bottom of the list always
-
- d.reject(myevents);
-
-
- return d.promise;
- });
+ d.resolve(myevents);
+ return d.promise;
+
+ },
+ function (err) {
+ if (loadingStr != 'none') $ionicLoading.hide();
+ displayBanner('error', ['error retrieving event list', 'please try again']);
+ //console.log("HTTP Events error " + err);
+ log("Error fetching events for page " + pageId + " Err: " + JSON.stringify(err), "error");
+ // I need to reject this as I have infinite scrolling
+ // implemented in EventCtrl.js --> and if it does not know
+ // it got an error going to the next page, it will get into
+ // an infinite loop as we are at the bottom of the list always
+
+ d.reject(myevents);
+
+
+ return d.promise;
+ });
return d.promise;
},
@@ -2885,7 +2884,7 @@ angular.module('zmApp.controllers')
$http.get(loginData.apiurl + '/host/logout.json', {
timeout: 7000,
transformResponse: undefined,
- // responseType:'text',
+ // responseType:'text',
})
.then(function (s) {
debug("Logout returned... ");
@@ -2930,7 +2929,7 @@ angular.module('zmApp.controllers')
}
})
.then(function (succ) {
- $ionicLoading.hide();
+ $ionicLoading.hide();
d.resolve(true);
return d.promise;
},
diff --git a/www/js/DevOptionsCtrl.js b/www/js/DevOptionsCtrl.js
index 7d50aa4e..dab4570b 100644
--- a/www/js/DevOptionsCtrl.js
+++ b/www/js/DevOptionsCtrl.js
@@ -103,12 +103,12 @@ angular.module('zmApp.controllers').controller('zmApp.DevOptionsCtrl', ['$scope'
if ($scope.loginData.montageResizeSteps < 1) {
$scope.loginData.montageResizeSteps = 1;
- }
+ }
if ($scope.loginData.montageResizeSteps > 50) {
$scope.loginData.montageResizeSteps = 50;
- }
+ }
if ((parseInt($scope.loginData.montageQuality) < zm.safeMontageLimit) ||
(parseInt($scope.loginData.montageQuality) > 100)) {
diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js
index 32367682..90b615a2 100644
--- a/www/js/EventCtrl.js
+++ b/www/js/EventCtrl.js
@@ -169,7 +169,7 @@ angular.module('zmApp.controllers')
$scope.id = parseInt($stateParams.id, 10);
if (isNaN($scope.id)) $scope.id = 0;
-
+
$scope.showEvent = $stateParams.playEvent || false;
$scope.monitors = NVRDataModel.getMonitorsNow();
@@ -237,7 +237,7 @@ angular.module('zmApp.controllers')
});
$scope.showSearch = false;
-
+
moreEvents = true;
$scope.viewTitle = {
title: ""
@@ -259,7 +259,7 @@ angular.module('zmApp.controllers')
$http.get(apiurl)
.then(function (data) {},
- function (err) {});
+ function (err) {});
}
@@ -378,126 +378,126 @@ angular.module('zmApp.controllers')
//NVRDataModel.debug ("GETTING EVENTS USING "+$scope.id+" "+nolangFrom+" "+ nolangTo);
-
- NVRDataModel.debug("EventCtrl: grabbing events for: id=" + $scope.id + " Date/Time:" + $rootScope.fromString +
- "-" + $rootScope.toString);
- nolangFrom = "";
- nolangTo = "";
- if ($rootScope.fromString)
- nolangFrom = moment($rootScope.fromString).locale('en').format("YYYY-MM-DD HH:mm:ss");
- if ($rootScope.toString)
- nolangTo = moment($rootScope.toString).locale('en').format("YYYY-MM-DD HH:mm:ss");
-
- NVRDataModel.getEvents($scope.id, currEventsPage, "", nolangFrom, nolangTo)
- .then(function (data) {
- pageLoaded = true;
- //$scope.viewTitle.title = data.pagination.count;
+ NVRDataModel.debug("EventCtrl: grabbing events for: id=" + $scope.id + " Date/Time:" + $rootScope.fromString +
+ "-" + $rootScope.toString);
+ nolangFrom = "";
+ nolangTo = "";
+ if ($rootScope.fromString)
+ nolangFrom = moment($rootScope.fromString).locale('en').format("YYYY-MM-DD HH:mm:ss");
+ if ($rootScope.toString)
+ nolangTo = moment($rootScope.toString).locale('en').format("YYYY-MM-DD HH:mm:ss");
+
+ NVRDataModel.getEvents($scope.id, currEventsPage, "", nolangFrom, nolangTo)
+ .then(function (data) {
- console.log (JSON.stringify(data.pagination));
- if (data.pagination && data.pagination.pageCount)
- maxEventsPage = data.pagination.pageCount;
-
- NVRDataModel.debug ("We have a total of "+maxEventsPage+" and are at page="+currEventsPage);
+ pageLoaded = true;
+ //$scope.viewTitle.title = data.pagination.count;
- // console.log ("WE GOT EVENTS="+JSON.stringify(data));
- var myevents = data.events;
+ console.log(JSON.stringify(data.pagination));
+ if (data.pagination && data.pagination.pageCount)
+ maxEventsPage = data.pagination.pageCount;
- NVRDataModel.debug("EventCtrl: success, got " + myevents.length + " events");
- var loginData = NVRDataModel.getLogin();
+ NVRDataModel.debug("We have a total of " + maxEventsPage + " and are at page=" + currEventsPage);
- //console.log ("-------->MON LEN"+$scope.monitors.length);
+ // console.log ("WE GOT EVENTS="+JSON.stringify(data));
+ var myevents = data.events;
- for (var i = 0; i < myevents.length; i++) {
+ NVRDataModel.debug("EventCtrl: success, got " + myevents.length + " events");
+ var loginData = NVRDataModel.getLogin();
- var idfound = true;
- if (loginData.persistMontageOrder) {
- idfound = false;
- for (var ii = 0; ii < $scope.monitors.length; ii++) {
- if ($scope.monitors[ii].Monitor.Id == myevents[i].Event.MonitorId && (NVRDataModel.isNotHidden(myevents[i].Event.MonitorId) || showHiddenMonitors)) {
- // console.log ("FOUND IT");
+ //console.log ("-------->MON LEN"+$scope.monitors.length);
- idfound = true;
- break;
- }
- }
+ for (var i = 0; i < myevents.length; i++) {
+
+ var idfound = true;
+ if (loginData.persistMontageOrder) {
+ idfound = false;
+ for (var ii = 0; ii < $scope.monitors.length; ii++) {
+ if ($scope.monitors[ii].Monitor.Id == myevents[i].Event.MonitorId && (NVRDataModel.isNotHidden(myevents[i].Event.MonitorId) || showHiddenMonitors)) {
+ // console.log ("FOUND IT");
+
+ idfound = true;
+ break;
}
+ }
+ }
- //console.log ("IDFOUND="+idfound + " AND MON LEN="+$scope.monitors.length);
+ //console.log ("IDFOUND="+idfound + " AND MON LEN="+$scope.monitors.length);
- myevents[i].Event.humanizeTime = humanizeTime(myevents[i].Event.StartTime);
- myevents[i].Event.streamingURL = NVRDataModel.getStreamingURL(myevents[i].Event.MonitorId);
- myevents[i].Event.baseURL = NVRDataModel.getBaseURL(myevents[i].Event.MonitorId);
- myevents[i].Event.imageMode = NVRDataModel.getImageMode(myevents[i].Event.MonitorId);
+ myevents[i].Event.humanizeTime = humanizeTime(myevents[i].Event.StartTime);
+ myevents[i].Event.streamingURL = NVRDataModel.getStreamingURL(myevents[i].Event.MonitorId);
+ myevents[i].Event.baseURL = NVRDataModel.getBaseURL(myevents[i].Event.MonitorId);
+ myevents[i].Event.imageMode = NVRDataModel.getImageMode(myevents[i].Event.MonitorId);
- //console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL);
+ //console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL);
- // console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.baseURL);
+ // console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.baseURL);
- myevents[i].Event.MonitorName = NVRDataModel.getMonitorName(myevents[i].Event.MonitorId);
- myevents[i].Event.ShowScrub = false;
- myevents[i].Event.height = eventsListDetailsHeight;
- // now construct base path
- myevents[i].Event.BasePath = computeBasePath(myevents[i]);
- myevents[i].Event.relativePath = computeRelativePath(myevents[i]);
+ myevents[i].Event.MonitorName = NVRDataModel.getMonitorName(myevents[i].Event.MonitorId);
+ myevents[i].Event.ShowScrub = false;
+ myevents[i].Event.height = eventsListDetailsHeight;
+ // now construct base path
+ myevents[i].Event.BasePath = computeBasePath(myevents[i]);
+ myevents[i].Event.relativePath = computeRelativePath(myevents[i]);
- // get thumbW/H
+ // get thumbW/H
- var tempMon = NVRDataModel.getMonitorObject(myevents[i].Event.MonitorId);
- if (tempMon != undefined) {
+ var tempMon = NVRDataModel.getMonitorObject(myevents[i].Event.MonitorId);
+ if (tempMon != undefined) {
- var mw = parseInt(tempMon.Monitor.Width);
- var mh = parseInt(tempMon.Monitor.Height);
- var mo = parseInt(tempMon.Monitor.Orientation);
- myevents[i].Event.Rotation = '';
+ var mw = parseInt(tempMon.Monitor.Width);
+ var mh = parseInt(tempMon.Monitor.Height);
+ var mo = parseInt(tempMon.Monitor.Orientation);
+ myevents[i].Event.Rotation = '';
- var th = computeThumbnailSize(mw, mh, mo);
- myevents[i].Event.thumbWidth = th.w;
- myevents[i].Event.thumbHeight = th.h;
- }
+ var th = computeThumbnailSize(mw, mh, mo);
+ myevents[i].Event.thumbWidth = th.w;
+ myevents[i].Event.thumbHeight = th.h;
+ }
- // in multiserver BasePath is login url for frames
- // http://login.url/index.php?view=frame&eid=19696772&fid=21
+ // in multiserver BasePath is login url for frames
+ // http://login.url/index.php?view=frame&eid=19696772&fid=21
- // console.log ("COMPARING "+NVRDataModel.getLogin().url+ " TO " +myevents[i].Event.baseURL);
- if (NVRDataModel.getLogin().url != myevents[i].Event.baseURL) {
- //NVRDataModel.debug ("Multi server, changing base");
- myevents[i].Event.baseURL = NVRDataModel.getLogin().url;
+ // console.log ("COMPARING "+NVRDataModel.getLogin().url+ " TO " +myevents[i].Event.baseURL);
+ if (NVRDataModel.getLogin().url != myevents[i].Event.baseURL) {
+ //NVRDataModel.debug ("Multi server, changing base");
+ myevents[i].Event.baseURL = NVRDataModel.getLogin().url;
- }
+ }
- if (myevents[i].Event.imageMode == 'path')
- //if (1)
- myevents[i].Event.videoPath = myevents[i].Event.baseURL + "/events/" + myevents[i].Event.relativePath + myevents[i].Event.DefaultVideo;
- else
- myevents[i].Event.videoPath = myevents[i].Event.baseURL + "/index.php?view=view_video&eid=" + myevents[i].Event.Id;
+ if (myevents[i].Event.imageMode == 'path')
+ //if (1)
+ myevents[i].Event.videoPath = myevents[i].Event.baseURL + "/events/" + myevents[i].Event.relativePath + myevents[i].Event.DefaultVideo;
+ else
+ myevents[i].Event.videoPath = myevents[i].Event.baseURL + "/index.php?view=view_video&eid=" + myevents[i].Event.Id;
- // if (idfound)
- if (idfound) {
+ // if (idfound)
+ if (idfound) {
- //NVRDataModel.debug ("PUSHING "+JSON.stringify(myevents[i]));
- $scope.events.push(myevents[i]);
- //console.log ("SCOPE EVENTS LEN="+$scope.events.length);
- } else {
- //NVRDataModel.debug ("Skipping Event MID = " + myevents[i].Event.MonitorId);
- }
+ //NVRDataModel.debug ("PUSHING "+JSON.stringify(myevents[i]));
+ $scope.events.push(myevents[i]);
+ //console.log ("SCOPE EVENTS LEN="+$scope.events.length);
+ } else {
+ //NVRDataModel.debug ("Skipping Event MID = " + myevents[i].Event.MonitorId);
+ }
- } //for
-
- //$scope.events = myevents;
- // we only need to stop the template from loading when the list is empty
- // so this can be false once we have _some_ content
- // FIXME: check reload
- $scope.eventsBeingLoaded = false;
- // to avoid only few events being displayed
- // if last page has less events
- //console.log("**Loading Next Page ***");
- if (myevents.length < 50) {
- //console.log ("EVENTS LOADED="+JSON.stringify($scope.events));
- NVRDataModel.debug("EventCtrl:loading one more page just in case we don't have enough to display");
- loadMore();
- }
- });
+ } //for
+
+ //$scope.events = myevents;
+ // we only need to stop the template from loading when the list is empty
+ // so this can be false once we have _some_ content
+ // FIXME: check reload
+ $scope.eventsBeingLoaded = false;
+ // to avoid only few events being displayed
+ // if last page has less events
+ //console.log("**Loading Next Page ***");
+ if (myevents.length < 50) {
+ //console.log ("EVENTS LOADED="+JSON.stringify($scope.events));
+ NVRDataModel.debug("EventCtrl:loading one more page just in case we don't have enough to display");
+ loadMore();
+ }
+ });
}
@@ -547,14 +547,14 @@ angular.module('zmApp.controllers')
cordova.plugins.photoLibrary.requestAuthorization(
function () {
//url = "https://picsum.photos/200/300/?random";
-
+
var fileTransfer = new FileTransfer();
var urle = encodeURI(url);
-
-
+
+
fileTransfer.onprogress = function (progressEvent) {
if (progressEvent.lengthComputable) {
-
+
$timeout(function () {
var perc = Math.floor(progressEvent.loaded / progressEvent.total * 100);
$ionicLoading.show({
@@ -563,18 +563,18 @@ angular.module('zmApp.controllers')
//duration: zm.httpTimeout
});
});
-
-
+
+
}
};
-
+
fileTransfer.download(urle, cordova.file.dataDirectory + fname,
function (entry) {
NVRDataModel.debug("local download complete: " + entry.toURL());
NVRDataModel.debug("Now trying to move it to album");
var pluginName = (fname == "zmNinja.mp4" ? "saveVideo" : "saveImage");
-
-
+
+
cordova.plugins.photoLibrary[pluginName](entry.toURL(), album,
function (cameraRollAssetId) {
SaveSuccess();
@@ -587,27 +587,27 @@ angular.module('zmApp.controllers')
NVRDataModel.debug("could not delete temp file: " + JSON.stringify(e));
}
);
-
-
+
+
},
function (err) {
NVRDataModel.debug("Saving error:" + JSON.stringify(err));
SaveError();
-
+
});
-
-
-
-
+
+
+
+
},
function (err) {
NVRDataModel.log("error downloading:" + JSON.stringify(err));
SaveError();
}, !loginData.enableStrictSSL, {});
-
-
-
-
+
+
+
+
// User gave us permission to his library, retry reading it!
},
function (err) {
@@ -615,30 +615,30 @@ angular.module('zmApp.controllers')
NVRDataModel.debug("Permission not granted");
SaveError();
}, // if options not provided, defaults to {read: true}.
-
+
{
read: true,
write: true
}
);
-
+
} else {
//desktop
-
+
$ionicLoading.hide();
-
- $rootScope.zmPopup = SecuredPopups.show('alert', {
+
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
title: $translate.instant('kNote'),
- template: $translate.instant('kDownloadVideoImage')+"<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download>"+" "+$translate.instant('kDownload')+"</a></center>",
+ template: $translate.instant('kDownloadVideoImage') + "<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download>" + " " + $translate.instant('kDownload') + "</a></center>",
okText: $translate.instant('kDismiss'),
- okType:'button-stable'
+ okType: 'button-stable'
});
-
-
-
+
+
+
}
-
+
}
@@ -1720,42 +1720,42 @@ angular.module('zmApp.controllers')
return $http.delete(apiDelete)
.then(function (data) {
- data = data.data;
- $ionicLoading.hide();
- NVRDataModel.debug("delete output: " + JSON.stringify(data));
+ data = data.data;
+ $ionicLoading.hide();
+ NVRDataModel.debug("delete output: " + JSON.stringify(data));
- if (data.message == 'Error') {
- $ionicLoading.show({
- template: "{{'kError' | translate}}...",
- noBackdrop: true,
- duration: 1500
- });
+ if (data.message == 'Error') {
+ $ionicLoading.show({
+ template: "{{'kError' | translate}}...",
+ noBackdrop: true,
+ duration: 1500
+ });
- } else {
+ } else {
- $ionicLoading.hide();
- $ionicLoading.show({
- template: "{{'kSuccess' | translate}}...",
- noBackdrop: true,
- duration: 1000
- });
- if (itemid >= 0) $scope.events.splice(itemid, 1);
+ $ionicLoading.hide();
+ $ionicLoading.show({
+ template: "{{'kSuccess' | translate}}...",
+ noBackdrop: true,
+ duration: 1000
+ });
+ if (itemid >= 0) $scope.events.splice(itemid, 1);
- }
+ }
- // NVRDataModel.displayBanner('info', [$translate.instant('kDeleteEventSuccess')], 2000, 2000);
+ // NVRDataModel.displayBanner('info', [$translate.instant('kDeleteEventSuccess')], 2000, 2000);
- //doRefresh();
+ //doRefresh();
- },
- function (data) {
- $ionicLoading.hide();
- NVRDataModel.debug("delete error: " + JSON.stringify(data));
- NVRDataModel.displayBanner('error', [$translate.instant('kDeleteEventError1'), $translate.instant('kDeleteEventError2')]);
- });
+ },
+ function (data) {
+ $ionicLoading.hide();
+ NVRDataModel.debug("delete error: " + JSON.stringify(data));
+ NVRDataModel.displayBanner('error', [$translate.instant('kDeleteEventError1'), $translate.instant('kDeleteEventError2')]);
+ });
}
//------------------------------------------------
@@ -2105,46 +2105,46 @@ angular.module('zmApp.controllers')
NVRDataModel.log("API for event details" + myurl);
$http.get(myurl)
.then(function (data) {
- data = data.data;
- $scope.FrameArray = data.event.Frame;
- // $scope.slider_options.scale=[];
+ data = data.data;
+ $scope.FrameArray = data.event.Frame;
+ // $scope.slider_options.scale=[];
- //$scope.slider_options.scale = [];
+ //$scope.slider_options.scale = [];
- var i;
- var timestamp = null;
- for (i = 0; i < data.event.Frame.length; i++) {
- if (data.event.Frame[i].Type == "Alarm") {
+ var i;
+ var timestamp = null;
+ for (i = 0; i < data.event.Frame.length; i++) {
+ if (data.event.Frame[i].Type == "Alarm") {
- //console.log ("**ONLY ALARM AT " + i + "of " + data.event.Frame.length);
- var atype;
- if (timestamp != data.event.Frame[i].TimeStamp) {
+ //console.log ("**ONLY ALARM AT " + i + "of " + data.event.Frame.length);
+ var atype;
+ if (timestamp != data.event.Frame[i].TimeStamp) {
- atype = $translate.instant('kShowTimeDiffFrames');
- } else {
- atype = $translate.instant('kShowAllFrames');
+ atype = $translate.instant('kShowTimeDiffFrames');
+ } else {
+ atype = $translate.instant('kShowAllFrames');
+ }
+ $scope.alarm_images.push({
+ type: atype,
+ id: data.event.Frame[i].Id,
+ frameid: data.event.Frame[i].FrameId,
+ score: data.event.Frame[i].Score,
+ fname: padToN(data.event.Frame[i].FrameId, eventImageDigits) + "-capture.jpg",
+ aname: padToN(data.event.Frame[i].FrameId, eventImageDigits) + "-analyse.jpg",
+ time: data.event.Frame[i].TimeStamp
+ });
+ timestamp = data.event.Frame[i].TimeStamp;
}
- $scope.alarm_images.push({
- type: atype,
- id: data.event.Frame[i].Id,
- frameid: data.event.Frame[i].FrameId,
- score: data.event.Frame[i].Score,
- fname: padToN(data.event.Frame[i].FrameId, eventImageDigits) + "-capture.jpg",
- aname: padToN(data.event.Frame[i].FrameId, eventImageDigits) + "-analyse.jpg",
- time: data.event.Frame[i].TimeStamp
- });
- timestamp = data.event.Frame[i].TimeStamp;
- }
- }
- oldEvent = event;
+ }
+ oldEvent = event;
- //console.log (JSON.stringify(data));
- },
- function (err) {
- NVRDataModel.log("Error retrieving detailed frame API " + JSON.stringify(err));
- NVRDataModel.displayBanner('error', ['could not retrieve frame details', 'please try again']);
- });
+ //console.log (JSON.stringify(data));
+ },
+ function (err) {
+ NVRDataModel.log("Error retrieving detailed frame API " + JSON.stringify(err));
+ NVRDataModel.displayBanner('error', ['could not retrieve frame details', 'please try again']);
+ });
} // end of groupType == alarms
else // groupType == scrub
@@ -2218,30 +2218,30 @@ angular.module('zmApp.controllers')
NVRDataModel.log("API for event details" + myurl_frames);
$http.get(myurl_frames)
.then(function (data) {
- data = data.data;
- $scope.FrameArray = data.event.Frame;
- // $scope.slider_options.scale=[];
+ data = data.data;
+ $scope.FrameArray = data.event.Frame;
+ // $scope.slider_options.scale=[];
- //$scope.slider_options.scale = [];
+ //$scope.slider_options.scale = [];
- var i;
- for (i = 0; i < data.event.Frame.length; i++) {
+ var i;
+ for (i = 0; i < data.event.Frame.length; i++) {
- //console.log ("**ONLY ALARM AT " + i + "of " + data.event.Frame.length);
- $scope.slides.push({
- id: data.event.Frame[i].Id,
- frameid: data.event.Frame[i].FrameId,
+ //console.log ("**ONLY ALARM AT " + i + "of " + data.event.Frame.length);
+ $scope.slides.push({
+ id: data.event.Frame[i].Id,
+ frameid: data.event.Frame[i].FrameId,
- });
+ });
- }
+ }
- //console.log (JSON.stringify(data));
- },
- function (err) {
- NVRDataModel.log("Error retrieving detailed frame API " + JSON.stringify(err));
- NVRDataModel.displayBanner('error', [$translate.instant('kErrorFrameBanner'), $translate.instant('kErrorPleaseTryAgain')]);
- });
+ //console.log (JSON.stringify(data));
+ },
+ function (err) {
+ NVRDataModel.log("Error retrieving detailed frame API " + JSON.stringify(err));
+ NVRDataModel.displayBanner('error', [$translate.instant('kErrorFrameBanner'), $translate.instant('kErrorPleaseTryAgain')]);
+ });
}
@@ -2280,32 +2280,32 @@ angular.module('zmApp.controllers')
NVRDataModel.log("API for event details" + myurl2);
$http.get(myurl2)
.then(function (data) {
- data = data.data;
- $scope.FrameArray = data.event.Frame;
- // $scope.slider_options.scale=[];
- $scope.slider_options.scale = [];
-
- var i;
- for (i = 0; i < data.event.Frame.length; i++) {
- if (data.event.Frame[i].Type == "Alarm") {
-
- //console.log ("**ALARM AT " + i + "of " + data.event.Frame.length);
- $scope.slider_options.scale.push({
- val: data.event.Frame[i].FrameId,
- label: ' '
- });
- } else {
- //$scope.slider_options.scale.push(' ');
- }
+ data = data.data;
+ $scope.FrameArray = data.event.Frame;
+ // $scope.slider_options.scale=[];
+ $scope.slider_options.scale = [];
- }
+ var i;
+ for (i = 0; i < data.event.Frame.length; i++) {
+ if (data.event.Frame[i].Type == "Alarm") {
- //console.log (JSON.stringify(data));
- },
- function (err) {
- NVRDataModel.log("Error retrieving detailed frame API " + JSON.stringify(err));
- NVRDataModel.displayBanner('error', [$translate.instant('kErrorFrameBanner'), $translate.instant('kErrorPleaseTryAgain')]);
- });
+ //console.log ("**ALARM AT " + i + "of " + data.event.Frame.length);
+ $scope.slider_options.scale.push({
+ val: data.event.Frame[i].FrameId,
+ label: ' '
+ });
+ } else {
+ //$scope.slider_options.scale.push(' ');
+ }
+
+ }
+
+ //console.log (JSON.stringify(data));
+ },
+ function (err) {
+ NVRDataModel.log("Error retrieving detailed frame API " + JSON.stringify(err));
+ NVRDataModel.displayBanner('error', [$translate.instant('kErrorFrameBanner'), $translate.instant('kErrorPleaseTryAgain')]);
+ });
oldEvent = event;
$rootScope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
@@ -2739,12 +2739,12 @@ angular.module('zmApp.controllers')
// except greater page limits than reported
console.log("***** LOADING MORE INFINITE SCROLL ****");
-
+
if ((currEventsPage >= maxEventsPage) && (pageLoaded)) {
moreEvents = false;
- NVRDataModel.debug ("No more - We have a total of "+maxEventsPage+" and are at page="+currEventsPage);
+ NVRDataModel.debug("No more - We have a total of " + maxEventsPage + " and are at page=" + currEventsPage);
- console.log("*** At Page " + currEventsPage + " of "+maxEventsPage+", not proceeding");
+ console.log("*** At Page " + currEventsPage + " of " + maxEventsPage + ", not proceeding");
return;
}
@@ -2781,7 +2781,7 @@ angular.module('zmApp.controllers')
var loginData = NVRDataModel.getLogin();
// console.log("Got new page of events with Page=" + eventsPage);
var myevents = data.events;
-
+
for (var i = 0; i < myevents.length; i++) {
@@ -2864,11 +2864,11 @@ angular.module('zmApp.controllers')
};
-
+
function recomputeThumbSize() {
- NVRDataModel.debug ("EventCtrl: recompute thumbnails");
+ NVRDataModel.debug("EventCtrl: recompute thumbnails");
- for (var i=0; i < $scope.events.length; i++) {
+ for (var i = 0; i < $scope.events.length; i++) {
var tempMon = NVRDataModel.getMonitorObject($scope.events[i].Event.MonitorId);
if (tempMon != undefined) {
@@ -2889,9 +2889,9 @@ angular.module('zmApp.controllers')
}
function computeThumbnailSize(mw, mh, mo) {
-
-
- tw = Math.min(Math.round(0.35 * $rootScope.devWidth),200);
+
+
+ tw = Math.min(Math.round(0.35 * $rootScope.devWidth), 200);
th = 150;
var ratio = mw / mh;
@@ -2931,7 +2931,7 @@ angular.module('zmApp.controllers')
$scope.constructThumbnail = function (event) {
var stream = "";
stream = event.Event.baseURL +
- "/index.php?view=image&show=capture&fid=" +
+ "/index.php?view=image&show=capture&fid=" +
(event.Event.MaxScoreFrameId ? event.Event.MaxScoreFrameId : "1&eid=" + event.Event.Id) +
"&width=" + event.Event.thumbWidth * 2 +
"&height=" + event.Event.thumbHeight * 2;
diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js
index 0e6d6be7..b992017c 100644
--- a/www/js/EventModalCtrl.js
+++ b/www/js/EventModalCtrl.js
@@ -403,49 +403,49 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
}
})
.then(function (resp) {
- //NVRDataModel.debug ("processEvent success:"+JSON.stringify(resp));
+ //NVRDataModel.debug ("processEvent success:"+JSON.stringify(resp));
- resp = resp.data;
- if (resp.result == "Ok") {
+ resp = resp.data;
+ if (resp.result == "Ok") {
- if (resp.status) $scope.currentProgress.progress = resp.status.progress;
- if (resp.status && resp.status.event) $scope.eventId = resp.status.event;
- $scope.d_eventId = $scope.eventId;
- if (resp.status) $scope.currentRate = resp.status.rate;
-
- if ($scope.currentProgress.progress > $scope.currentEventDuration) $scope.currentProgress.progress = $scope.currentEventDuration;
- $scope.progressText = "At " + $scope.currentProgress.progress + "s of " + $scope.currentEventDuration + "s";
+ if (resp.status) $scope.currentProgress.progress = resp.status.progress;
+ if (resp.status && resp.status.event) $scope.eventId = resp.status.event;
+ $scope.d_eventId = $scope.eventId;
+ if (resp.status) $scope.currentRate = resp.status.rate;
- $scope.sliderProgress.progress = $scope.currentProgress.progress;
+ if ($scope.currentProgress.progress > $scope.currentEventDuration) $scope.currentProgress.progress = $scope.currentEventDuration;
+ $scope.progressText = "At " + $scope.currentProgress.progress + "s of " + $scope.currentEventDuration + "s";
- // lets not do this and use zms to move forward or back
- // as this code conflicts with fast rev etc
- //if (Math.floor(resp.status.progress) >=$scope.currentEventDuration)
+ $scope.sliderProgress.progress = $scope.currentProgress.progress;
- //$timeout (checkEvent(), zm.eventPlaybackQuery);
- //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
+ // lets not do this and use zms to move forward or back
+ // as this code conflicts with fast rev etc
+ //if (Math.floor(resp.status.progress) >=$scope.currentEventDuration)
- } else // resp.result was messed up
+ //$timeout (checkEvent(), zm.eventPlaybackQuery);
+ //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
- {
- NVRDataModel.debug("Hmm I found an error " + JSON.stringify(resp));
- //window.stop();
- // $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ } else // resp.result was messed up
- // console.log (JSON.stringify(resp));
- /*$timeout(function()
{
- sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
- }, 500);
- NVRDataModel.debug("so I'm regenerating Connkey to " + $scope.connKey);*/
+ NVRDataModel.debug("Hmm I found an error " + JSON.stringify(resp));
+ //window.stop();
+ // $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+
+ // console.log (JSON.stringify(resp));
+ /*$timeout(function()
+ {
+ sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
+ }, 500);
+ NVRDataModel.debug("so I'm regenerating Connkey to " + $scope.connKey);*/
- }
- },
- function (resp) {
- NVRDataModel.debug("processEvent error:" + JSON.stringify(resp));
- //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
+ }
+ },
+ function (resp) {
+ NVRDataModel.debug("processEvent error:" + JSON.stringify(resp));
+ //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
- });
+ });
}
@@ -1038,12 +1038,12 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
//desktop
$ionicLoading.hide();
-
- $rootScope.zmPopup = SecuredPopups.show('alert', {
+
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
title: $translate.instant('kNote'),
- template: $translate.instant('kDownloadVideoImage')+"<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download>"+" "+$translate.instant('kDownload')+"</a></center>",
+ template: $translate.instant('kDownloadVideoImage') + "<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download>" + " " + $translate.instant('kDownload') + "</a></center>",
okText: $translate.instant('kDismiss'),
- okType:'button-stable'
+ okType: 'button-stable'
});
@@ -1551,42 +1551,42 @@ angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$ro
return $http.delete(apiDelete)
.then(function (data) {
- data = data.data;
- $ionicLoading.hide();
- // NVRDataModel.debug("delete output: " + JSON.stringify(data));
+ data = data.data;
+ $ionicLoading.hide();
+ // NVRDataModel.debug("delete output: " + JSON.stringify(data));
- if (data.message == 'Error') {
- $ionicLoading.show({
- template: "{{'kError' | translate}}...",
- noBackdrop: true,
- duration: 1500
- });
+ if (data.message == 'Error') {
+ $ionicLoading.show({
+ template: "{{'kError' | translate}}...",
+ noBackdrop: true,
+ duration: 1500
+ });
- } else {
+ } else {
- $ionicLoading.hide();
- $ionicLoading.show({
- template: "{{'kSuccess' | translate}}...",
- noBackdrop: true,
- duration: 1000
- });
+ $ionicLoading.hide();
+ $ionicLoading.show({
+ template: "{{'kSuccess' | translate}}...",
+ noBackdrop: true,
+ duration: 1000
+ });
- }
+ }
- // NVRDataModel.displayBanner('info', [$translate.instant('kDeleteEventSuccess')], 2000, 2000);
+ // NVRDataModel.displayBanner('info', [$translate.instant('kDeleteEventSuccess')], 2000, 2000);
- //doRefresh();
+ //doRefresh();
- },
- function (data) {
- $ionicLoading.hide();
- NVRDataModel.debug("delete error: " + JSON.stringify(data));
- NVRDataModel.displayBanner('error', [$translate.instant('kDeleteEventError1'), $translate.instant('kDeleteEventError2')]);
- });
+ },
+ function (data) {
+ $ionicLoading.hide();
+ NVRDataModel.debug("delete error: " + JSON.stringify(data));
+ NVRDataModel.displayBanner('error', [$translate.instant('kDeleteEventError1'), $translate.instant('kDeleteEventError2')]);
+ });
}
//--------------------------------------------------------
//Navigate to next/prev event in full screen mode
diff --git a/www/js/EventServer.js b/www/js/EventServer.js
index 32f6cbac..1340b88d 100644
--- a/www/js/EventServer.js
+++ b/www/js/EventServer.js
@@ -319,24 +319,23 @@ angular.module('zmApp.controllers')
NVRDataModel.log("Clearing error/close cbk, disconnecting and deleting Event Server socket...");
- if ($rootScope.platforOS == 'desktop'){
+ if ($rootScope.platforOS == 'desktop') {
if (typeof ws === 'undefined') {
NVRDataModel.log("Event server socket is empty, nothing to disconnect");
return;
}
-
-
+
+
ws.onmessage = null;
ws.close();
ws = undefined;
- }
- else {
+ } else {
if (nativeWebSocketId != -1) //native;
- CordovaWebsocketPlugin.wsClose(nativeWebSocketId, 1000, "Connection closed");
- nativeWebSocketId = -1;
+ CordovaWebsocketPlugin.wsClose(nativeWebSocketId, 1000, "Connection closed");
+ nativeWebSocketId = -1;
}
-
+
}
@@ -371,13 +370,12 @@ angular.module('zmApp.controllers')
NVRDataModel.debug("~~~~ sendMessage: Sending->" + jmsg);
if ($rootScope.platformOS == 'desktop') {
- ws.send(jmsg);
- }
- else {
+ ws.send(jmsg);
+ } else {
if (nativeWebSocketId != -1)
- CordovaWebsocketPlugin.wsSend(nativeWebSocketId, jmsg);
- else
- NVRDataModel.debug ("ERROR:native websocket not initialized, can't send "+jmsg);
+ CordovaWebsocketPlugin.wsSend(nativeWebSocketId, jmsg);
+ else
+ NVRDataModel.debug("ERROR:native websocket not initialized, can't send " + jmsg);
}
diff --git a/www/js/EventServerSettingsCtrl.js b/www/js/EventServerSettingsCtrl.js
index c5857369..6b04eefa 100644
--- a/www/js/EventServerSettingsCtrl.js
+++ b/www/js/EventServerSettingsCtrl.js
@@ -207,36 +207,36 @@
EventServer.disconnect();
EventServer.init()
.then(function (data) {
- // console.log("Sending control filter");
- NVRDataModel.debug("Sending Control message 'filter' with monlist=" + monstring + " and interval=" + intervalstring);
- EventServer.sendMessage("control", {
- type: 'filter',
- monlist: monstring,
- intlist: intervalstring,
- token: $rootScope.apnsToken
- }, 1);
-
- if ($rootScope.apnsToken != "")
- // if its defined then this is post init work
- // so lets transmit state here
-
- {
- // we need to disable the token
- NVRDataModel.debug("Sending token state " + pushstate);
- EventServer.sendMessage('push', {
- type: 'token',
- platform: plat,
- token: $rootScope.apnsToken,
- state: pushstate
+ // console.log("Sending control filter");
+ NVRDataModel.debug("Sending Control message 'filter' with monlist=" + monstring + " and interval=" + intervalstring);
+ EventServer.sendMessage("control", {
+ type: 'filter',
+ monlist: monstring,
+ intlist: intervalstring,
+ token: $rootScope.apnsToken
}, 1);
+ if ($rootScope.apnsToken != "")
+ // if its defined then this is post init work
+ // so lets transmit state here
+
+ {
+ // we need to disable the token
+ NVRDataModel.debug("Sending token state " + pushstate);
+ EventServer.sendMessage('push', {
+ type: 'token',
+ platform: plat,
+ token: $rootScope.apnsToken,
+ state: pushstate
+ }, 1);
+
+ }
+
+ },
+ function (err) {
+ NVRDataModel.debug("Event Server init failed");
}
- },
- function (err) {
- NVRDataModel.debug("Event Server init failed");
- }
-
);
} // no event server configured/enabled
diff --git a/www/js/EventsGraphsCtrl.js b/www/js/EventsGraphsCtrl.js
index cad2cc0b..8174f7e0 100644
--- a/www/js/EventsGraphsCtrl.js
+++ b/www/js/EventsGraphsCtrl.js
@@ -191,18 +191,18 @@ angular.module('zmApp.controllers').controller('zmApp.EventsGraphsCtrl', ['$ioni
NVRDataModel.log("EventGraph: composed url is " + url);
$http.get(url /*,{timeout:15000}*/ )
.then(function (data) {
- data = data.data;
- NVRDataModel.debug("Event count for monitor" +
- monitors[j].Monitor.Id + " is " + data.pagination.count);
- $scope.chart.data.datasets[0].data[j] = data.pagination.count;
- },
- function (data) {
- // ideally I should be treating it as an error
- // but what I am really doing now is treating it like no events
- // works but TBD: make this into a proper error handler
- $scope.chart.data.datasets[0].data[j] = 0;
- NVRDataModel.log("Error retrieving events for graph " + JSON.stringify(data), "error");
- });
+ data = data.data;
+ NVRDataModel.debug("Event count for monitor" +
+ monitors[j].Monitor.Id + " is " + data.pagination.count);
+ $scope.chart.data.datasets[0].data[j] = data.pagination.count;
+ },
+ function (data) {
+ // ideally I should be treating it as an error
+ // but what I am really doing now is treating it like no events
+ // works but TBD: make this into a proper error handler
+ $scope.chart.data.datasets[0].data[j] = 0;
+ NVRDataModel.log("Error retrieving events for graph " + JSON.stringify(data), "error");
+ });
})(i); // j
} //for
});
diff --git a/www/js/FirstUseCtrl.js b/www/js/FirstUseCtrl.js
index 1ad42e9c..ca8ff14b 100644
--- a/www/js/FirstUseCtrl.js
+++ b/www/js/FirstUseCtrl.js
@@ -18,11 +18,11 @@ angular.module('zmApp.controllers').controller('zmApp.FirstUseCtrl', ['$scope',
//
if (window.cordova) {
- cordova.plugin.http.setSSLCertMode('nocheck', function() {
+ cordova.plugin.http.setSSLCertMode('nocheck', function () {
NVRDataModel.debug('--> First use -> SSL is permissive, will allow any certs for now. You can change it later.');
- }, function() {
- console.log('-->First Use -> Error setting SSL permissive');
- });
+ }, function () {
+ console.log('-->First Use -> Error setting SSL permissive');
+ });
}
diff --git a/www/js/LogCtrl.js b/www/js/LogCtrl.js
index 920cc499..78a02992 100644
--- a/www/js/LogCtrl.js
+++ b/www/js/LogCtrl.js
@@ -261,12 +261,12 @@ angular.module('zmApp.controllers').controller('zmApp.LogCtrl', ['$scope', '$roo
//console.log("**VIEW ** Log Ctrl Entered");
- /*n $scope.cloudString = "loading...";
- window.cordova.plugin.cloudsettings.load(
- function (succ) {$scope.cloudString = JSON.stringify(succ);},
- function (err) {$scope.cloudString = JSON.stringify(err);}
+ /*n $scope.cloudString = "loading...";
+ window.cordova.plugin.cloudsettings.load(
+ function (succ) {$scope.cloudString = JSON.stringify(succ);},
+ function (err) {$scope.cloudString = JSON.stringify(err);}
- );*/
+ );*/
$ionicSideMenuDelegate.canDragContent(false);
$scope.selectOn = false;
diff --git a/www/js/LoginCtrl.js b/www/js/LoginCtrl.js
index d2dfe899..ca6b9df9 100644
--- a/www/js/LoginCtrl.js
+++ b/www/js/LoginCtrl.js
@@ -456,13 +456,13 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
//console.log ("*********** SAVE ITEMS CALLED ");
//console.log('Saving login');
-
- NVRDataModel.debug ("Inside save Items");
+
+ NVRDataModel.debug("Inside save Items");
$rootScope.alarmCount = 0;
$rootScope.isAlarm = false;
-
-
+
+
NVRDataModel.setFirstUse(false);
NVRDataModel.setCurrentServerVersion('');
NVRDataModel.setCurrentServerMultiPortSupported(false);
@@ -583,7 +583,7 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
if ($rootScope.platformOS != 'desktop') {
if ($scope.loginData.isUseBasicAuth) {
- NVRDataModel.debug ("Cordova HTTP: configuring basic auth");
+ NVRDataModel.debug("Cordova HTTP: configuring basic auth");
cordova.plugin.http.useBasicAuth($scope.loginData.basicAuthUser, $scope.loginData.basicAuthPassword);
}
@@ -591,9 +591,9 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
//alert("Enabling insecure SSL");
NVRDataModel.log(">>>> Disabling strict SSL checking (turn off in Dev Options if you can't connect)");
- cordova.plugin.http.setSSLCertMode('nocheck', function() {
- NVRDataModel.debug('--> SSL is permissive, will allow any certs. Use at your own risk.');
- }, function() {
+ cordova.plugin.http.setSSLCertMode('nocheck', function () {
+ NVRDataModel.debug('--> SSL is permissive, will allow any certs. Use at your own risk.');
+ }, function () {
console.log('-->Error setting SSL permissive');
});
@@ -604,40 +604,38 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
}
if ($scope.loginData.saveToCloud) {
- NVRDataModel.debug ("writing data to cloud");
-
+ NVRDataModel.debug("writing data to cloud");
+
var serverGroupList = NVRDataModel.getServerGroups();
serverGroupList[$scope.loginData.serverName] = angular.copy($scope.loginData);
var ct = CryptoJS.AES.encrypt(JSON.stringify(serverGroupList), zm.cipherKey).toString();
window.cordova.plugin.cloudsettings.save({
- 'serverGroupList': ct,
- 'defaultServerName': $scope.loginData.serverName
- },
- function () {
- NVRDataModel.debug("local data synced with cloud...");
-
-
- },
- function (err) {
- NVRDataModel.debug("error syncing cloud data..."+JSON.stringify(err));
-
- }, true);
-
- }
- else {
- NVRDataModel.debug ("Clearing cloud settings...");
- window.cordova.plugin.cloudsettings.save({
- },
- function () {
- NVRDataModel.debug("cloud data cleared");
-
- },
- function (err) {
- NVRDataModel.debug("error clearing cloud data: " + err);
-
- }, true);
+ 'serverGroupList': ct,
+ 'defaultServerName': $scope.loginData.serverName
+ },
+ function () {
+ NVRDataModel.debug("local data synced with cloud...");
+
+
+ },
+ function (err) {
+ NVRDataModel.debug("error syncing cloud data..." + JSON.stringify(err));
+
+ }, true);
+
+ } else {
+ NVRDataModel.debug("Clearing cloud settings...");
+ window.cordova.plugin.cloudsettings.save({},
+ function () {
+ NVRDataModel.debug("cloud data cleared");
+
+ },
+ function (err) {
+ NVRDataModel.debug("error clearing cloud data: " + err);
+
+ }, true);
}
@@ -650,27 +648,27 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
if ($scope.loginData.isUseEventServer) {
EventServer.init()
- .then (function (succ) {
- if ($rootScope.apnsToken && $scope.loginData.disablePush != true) {
- NVRDataModel.log("Making sure we get push notifications");
- EventServer.sendMessage('push', {
- type: 'token',
- platform: $rootScope.platformOS,
- token: $rootScope.apnsToken,
- state: "enabled"
- }, 1);
- }
- EventServer.sendMessage("control", {
- type: 'filter',
- monlist: $scope.loginData.eventServerMonitors,
- intlist: $scope.loginData.eventServerInterval,
- token: $rootScope.apnsToken
- });
- },
- function (err) {
- NVRDataModel.log ("Event server init failed");
- });
-
+ .then(function (succ) {
+ if ($rootScope.apnsToken && $scope.loginData.disablePush != true) {
+ NVRDataModel.log("Making sure we get push notifications");
+ EventServer.sendMessage('push', {
+ type: 'token',
+ platform: $rootScope.platformOS,
+ token: $rootScope.apnsToken,
+ state: "enabled"
+ }, 1);
+ }
+ EventServer.sendMessage("control", {
+ type: 'filter',
+ monlist: $scope.loginData.eventServerMonitors,
+ intlist: $scope.loginData.eventServerInterval,
+ token: $rootScope.apnsToken
+ });
+ },
+ function (err) {
+ NVRDataModel.log("Event server init failed");
+ });
+
}
@@ -702,103 +700,103 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
$http.get(apiurl)
.then(function (data) {
- data = data.data;
- NVRDataModel.getTimeZone(true);
- var loginStatus = $translate.instant('kExploreEnjoy') + " " + $rootScope.appName + "!";
- EventServer.refresh();
-
- // now grab and report PATH_ZMS
- NVRDataModel.getPathZms()
- .then(function (data) {
- var ld = NVRDataModel.getLogin();
- var zm_cgi = data.toLowerCase();
-
- var user_cgi = (ld.streamingurl).toLowerCase();
- NVRDataModel.log("ZM relative cgi-path: " + zm_cgi + ", you entered: " + user_cgi);
-
- $http.get(ld.streamingurl + "/zms")
- .then(function (data) {
- data = data.data;
- NVRDataModel.debug("Urk! cgi-path returned success, but it should not have come here");
- loginStatus = $translate.instant('kLoginStatusNoCgi');
-
- NVRDataModel.debug("refreshing API version...");
- NVRDataModel.getAPIversion()
- .then(function (data) {
- var refresh = NVRDataModel.getMonitors(1);
- $rootScope.apiVersion = data;
- },
- function (error) {
- var refresh = NVRDataModel.getMonitors(1);
- $rootScope.apiVersion = "0.0.0";
- NVRDataModel.debug("Error, failed API version, setting to " + $rootScope.apiVersion);
- });
-
- if (showalert) {
- $rootScope.zmPopup = SecuredPopups.show('alert', {
- title: $translate.instant('kLoginValidatedTitle'),
- template: loginStatus,
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
- }).then(function (res) {
-
- $ionicSideMenuDelegate.toggleLeft();
- NVRDataModel.debug("Force reloading monitors...");
+ data = data.data;
+ NVRDataModel.getTimeZone(true);
+ var loginStatus = $translate.instant('kExploreEnjoy') + " " + $rootScope.appName + "!";
+ EventServer.refresh();
+
+ // now grab and report PATH_ZMS
+ NVRDataModel.getPathZms()
+ .then(function (data) {
+ var ld = NVRDataModel.getLogin();
+ var zm_cgi = data.toLowerCase();
+
+ var user_cgi = (ld.streamingurl).toLowerCase();
+ NVRDataModel.log("ZM relative cgi-path: " + zm_cgi + ", you entered: " + user_cgi);
+
+ $http.get(ld.streamingurl + "/zms")
+ .then(function (data) {
+ data = data.data;
+ NVRDataModel.debug("Urk! cgi-path returned success, but it should not have come here");
+ loginStatus = $translate.instant('kLoginStatusNoCgi');
+
+ NVRDataModel.debug("refreshing API version...");
+ NVRDataModel.getAPIversion()
+ .then(function (data) {
+ var refresh = NVRDataModel.getMonitors(1);
+ $rootScope.apiVersion = data;
+ },
+ function (error) {
+ var refresh = NVRDataModel.getMonitors(1);
+ $rootScope.apiVersion = "0.0.0";
+ NVRDataModel.debug("Error, failed API version, setting to " + $rootScope.apiVersion);
+ });
+
+ if (showalert) {
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
+ title: $translate.instant('kLoginValidatedTitle'),
+ template: loginStatus,
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+ }).then(function (res) {
+
+ $ionicSideMenuDelegate.toggleLeft();
+ NVRDataModel.debug("Force reloading monitors...");
+
+ });
+ }
+ },
+ function (error, status) {
+ // If its 5xx, then the cgi-bin path is valid
+ // if its 4xx then the cgi-bin path is not valid
+
+ if (status < 500) {
+ loginStatus = $translate.instant('kLoginStatusNoCgiAlt');
+ }
+
+ if (showalert) {
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
+ title: $translate.instant('kLoginValidatedTitle'),
+ template: loginStatus,
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+ }).then(function (res) {
+
+ $ionicSideMenuDelegate.toggleLeft();
+ NVRDataModel.debug("Force reloading monitors...");
+
+ });
+ } else // make sure CGI error is always shown
+ {
+ NVRDataModel.displayBanner((status < 500) ? 'error' : 'info', [loginStatus]);
+ }
+ NVRDataModel.debug("refreshing API version...");
+ NVRDataModel.getAPIversion()
+ .then(function (data) {
+ var refresh = NVRDataModel.getMonitors(1);
+ $rootScope.apiVersion = data;
+ },
+ function (error) {
+ var refresh = NVRDataModel.getMonitors(1);
+ $rootScope.apiVersion = "0.0.0";
+ NVRDataModel.debug("Error, failed API version, setting to " + $rootScope.apiVersion);
+ });
});
- }
- },
- function (error, status) {
- // If its 5xx, then the cgi-bin path is valid
- // if its 4xx then the cgi-bin path is not valid
-
- if (status < 500) {
- loginStatus = $translate.instant('kLoginStatusNoCgiAlt');
- }
-
- if (showalert) {
- $rootScope.zmPopup = SecuredPopups.show('alert', {
- title: $translate.instant('kLoginValidatedTitle'),
- template: loginStatus,
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
- }).then(function (res) {
-
- $ionicSideMenuDelegate.toggleLeft();
- NVRDataModel.debug("Force reloading monitors...");
+ });
- });
- } else // make sure CGI error is always shown
- {
- NVRDataModel.displayBanner((status < 500) ? 'error' : 'info', [loginStatus]);
- }
- NVRDataModel.debug("refreshing API version...");
- NVRDataModel.getAPIversion()
- .then(function (data) {
- var refresh = NVRDataModel.getMonitors(1);
- $rootScope.apiVersion = data;
- },
- function (error) {
- var refresh = NVRDataModel.getMonitors(1);
- $rootScope.apiVersion = "0.0.0";
- NVRDataModel.debug("Error, failed API version, setting to " + $rootScope.apiVersion);
- });
-
- });
- });
+ },
+ function (error) {
+ NVRDataModel.displayBanner('error', [$translate.instant('kBannerAPICheckFailed'), $translate.instant('kBannerPleaseCheck')]);
+ NVRDataModel.log("API login error " + JSON.stringify(error));
- },
- function (error) {
- NVRDataModel.displayBanner('error', [$translate.instant('kBannerAPICheckFailed'), $translate.instant('kBannerPleaseCheck')]);
- NVRDataModel.log("API login error " + JSON.stringify(error));
-
- $rootScope.zmPopup = SecuredPopups.show('alert', {
- title: $translate.instant('kLoginValidAPIFailedTitle'),
- template: $translate.instant('kBannerPleaseCheck'),
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
+ title: $translate.instant('kLoginValidAPIFailedTitle'),
+ template: $translate.instant('kBannerPleaseCheck'),
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+ });
});
- });
});
}
@@ -810,7 +808,7 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r
$scope.saveItems = function () {
- NVRDataModel.debug ("User tapped save, calling SaveItems");
+ NVRDataModel.debug("User tapped save, calling SaveItems");
NVRDataModel.clearZmsMultiPortSupport();
if (!$scope.loginData.serverName) {
$rootScope.zmPopup = $ionicPopup.alert({
diff --git a/www/js/MenuController.js b/www/js/MenuController.js
index d9d4d114..39b6ce7f 100644
--- a/www/js/MenuController.js
+++ b/www/js/MenuController.js
@@ -2,7 +2,7 @@
/* jslint browser: true*/
/* global cordova,StatusBar,angular,console */
-angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$ionicSideMenuDelegate', 'zm', '$stateParams', '$ionicHistory', '$state', 'NVRDataModel', '$rootScope', '$ionicPopup', '$translate', '$timeout', '$location','EventServer', 'zmAutoLogin','$http','SecuredPopups',function ($scope, $ionicSideMenuDelegate, zm, $stateParams, $ionicHistory, $state, NVRDataModel, $rootScope, $ionicPopup, $translate, $timeout, $location, EventServer, zmAutoLogin, $http, SecuredPopups) {
+angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$ionicSideMenuDelegate', 'zm', '$stateParams', '$ionicHistory', '$state', 'NVRDataModel', '$rootScope', '$ionicPopup', '$translate', '$timeout', '$location', 'EventServer', 'zmAutoLogin', '$http', 'SecuredPopups', function ($scope, $ionicSideMenuDelegate, zm, $stateParams, $ionicHistory, $state, NVRDataModel, $rootScope, $ionicPopup, $translate, $timeout, $location, EventServer, zmAutoLogin, $http, SecuredPopups) {
$scope.openMenu = function () {
$ionicSideMenuDelegate.toggleLeft();
};
@@ -13,9 +13,9 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
//----------------------------------------------------------------
- $scope.go = function(p) {
-
-
+ $scope.go = function (p) {
+
+
$ionicHistory.nextViewOptions({
historyRoot: true,
disableAnimate: true,
@@ -23,7 +23,7 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
});
$ionicSideMenuDelegate.toggleLeft();
$location.path(p);
- };
+ };
$scope.navigateView = function (view, args) {
@@ -50,20 +50,20 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
$rootScope.alarmCount = 0;
$rootScope.isAlarm = false;
$rootScope.authSession = '';
-
-
-
-
+
+
+
+
// First lets kill current stuf
- NVRDataModel.debug ("** Resetting existing server");
+ NVRDataModel.debug("** Resetting existing server");
var cld = NVRDataModel.getLogin();
if (cld.isUseEventServer) {
- NVRDataModel.debug ("Stopping Event server");
+ NVRDataModel.debug("Stopping Event server");
EventServer.disconnect();
}
- NVRDataModel.debug ("**Switching to new server...");
+ NVRDataModel.debug("**Switching to new server...");
NVRDataModel.clearZmsMultiPortSupport();
var zmServers = NVRDataModel.getServerGroups();
@@ -71,7 +71,7 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
NVRDataModel.debug("Retrieved state for this profile:" + JSON.stringify(loginData));
NVRDataModel.setLogin(loginData);
-
+
if (!loginData.isUseBasicAuth) {
$rootScope.basicAuthHeader = '';
@@ -87,7 +87,7 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
if (window.cordova) {
if (loginData.isUseBasicAuth) {
- NVRDataModel.debug ("Cordova HTTP: configuring basic auth");
+ NVRDataModel.debug("Cordova HTTP: configuring basic auth");
cordova.plugin.http.useBasicAuth(loginData.basicAuthUser, loginData.basicAuthPassword);
}
@@ -95,9 +95,9 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
//alert("Enabling insecure SSL");
NVRDataModel.log(">>>> Disabling strict SSL checking (turn off in Dev Options if you can't connect)");
- cordova.plugin.http.setSSLCertMode('nocheck', function() {
+ cordova.plugin.http.setSSLCertMode('nocheck', function () {
NVRDataModel.debug('--> SSL is permissive, will allow any certs. Use at your own risk.');
- }, function() {
+ }, function () {
console.log('-->Error setting SSL permissive');
});
@@ -112,26 +112,26 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
if (loginData.isUseEventServer) {
EventServer.init()
- .then (function (succ) {
- EventServer.sendMessage("control", {
- type: 'filter',
- monlist: loginData.eventServerMonitors,
- intlist: loginData.eventServerInterval,
- token: $rootScope.apnsToken
- });
- },
- function (err) {
- NVRDataModel.debug ("EventServer init failed");
- });
-
-
+ .then(function (succ) {
+ EventServer.sendMessage("control", {
+ type: 'filter',
+ monlist: loginData.eventServerMonitors,
+ intlist: loginData.eventServerInterval,
+ token: $rootScope.apnsToken
+ });
+ },
+ function (err) {
+ NVRDataModel.debug("EventServer init failed");
+ });
+
+
}
var apiurl = loginData.apiurl + '/host/getVersion.json';
var portalurl = loginData.url + '/index.php';
- zmAutoLogin.doLogin("<button class='button button-clear' style='line-height: normal; min-height: 0; min-width: 0; color:#fff;' ng-click='$root.cancelAuth()'><i class='ion-close-circled'></i>&nbsp;" + $translate.instant('kAuthenticating') + "...</button>")
+ zmAutoLogin.doLogin("<button class='button button-clear' style='line-height: normal; min-height: 0; min-width: 0; color:#fff;' ng-click='$root.cancelAuth()'><i class='ion-close-circled'></i>&nbsp;" + $translate.instant('kAuthenticating') + "...</button>")
// Do the happy menu only if authentication works
// if it does not work, there is an emitter for auth
// fail in app.js that will be called to show an error
@@ -147,132 +147,132 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
$http.get(apiurl)
.then(function (data) {
- data = data.data;
- NVRDataModel.getTimeZone(true);
- var loginStatus = $translate.instant('kExploreEnjoy') + " " + $rootScope.appName + "!";
- EventServer.refresh();
-
- // now grab and report PATH_ZMS
- NVRDataModel.getPathZms()
- .then(function (data) {
- var ld = NVRDataModel.getLogin();
- var zm_cgi = data.toLowerCase();
-
- var user_cgi = (ld.streamingurl).toLowerCase();
- NVRDataModel.log("ZM relative cgi-path: " + zm_cgi + ", you entered: " + user_cgi);
-
- $http.get(ld.streamingurl + "/zms")
- .then(function (data) {
- data = data.data;
- NVRDataModel.debug("Urk! cgi-path returned success, but it should not have come here");
- loginStatus = $translate.instant('kLoginStatusNoCgi');
-
- NVRDataModel.debug("refreshing API version...");
- NVRDataModel.getAPIversion()
- .then(function (data) {
- $rootScope.apiVersion = data;
- var refresh = NVRDataModel.getMonitors(1)
- .then (function () {
-
-
- $ionicHistory.nextViewOptions({
- disableBack: true
- });
+ data = data.data;
+ NVRDataModel.getTimeZone(true);
+ var loginStatus = $translate.instant('kExploreEnjoy') + " " + $rootScope.appName + "!";
+ EventServer.refresh();
+
+ // now grab and report PATH_ZMS
+ NVRDataModel.getPathZms()
+ .then(function (data) {
+ var ld = NVRDataModel.getLogin();
+ var zm_cgi = data.toLowerCase();
+
+ var user_cgi = (ld.streamingurl).toLowerCase();
+ NVRDataModel.log("ZM relative cgi-path: " + zm_cgi + ", you entered: " + user_cgi);
+
+ $http.get(ld.streamingurl + "/zms")
+ .then(function (data) {
+ data = data.data;
+ NVRDataModel.debug("Urk! cgi-path returned success, but it should not have come here");
+ loginStatus = $translate.instant('kLoginStatusNoCgi');
+
+ NVRDataModel.debug("refreshing API version...");
+ NVRDataModel.getAPIversion()
+ .then(function (data) {
+ $rootScope.apiVersion = data;
+ var refresh = NVRDataModel.getMonitors(1)
+ .then(function () {
+
+
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+
+ console.log("+++ state go after getMonitors force");
+ $state.go('app.refresh', {
+ "view": $state.current.name
+ });
+ return;
+ });
+
+
+ },
+ function (error) {
+ var refresh = NVRDataModel.getMonitors(1)
+ .then(function () {
+ console.log("+++ state go after API version error: " + error);
+ $rootScope.apiVersion = "0.0.0";
+ NVRDataModel.debug("Error, failed API version, setting to " + $rootScope.apiVersion);
+
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+
+
+ $state.go('app.refresh', {
+ "view": $state.current.name
+ });
+ return;
+
+ });
+
+
- console.log ("+++ state go after getMonitors force");
- $state.go('app.refresh', {
- "view": $state.current.name
- });
- return;
- });
-
-
- },
- function (error) {
- var refresh = NVRDataModel.getMonitors(1)
- .then (function() {
- console.log ("+++ state go after API version error: "+error);
- $rootScope.apiVersion = "0.0.0";
- NVRDataModel.debug("Error, failed API version, setting to " + $rootScope.apiVersion);
-
- $ionicHistory.nextViewOptions({
- disableBack: true
- });
-
-
- $state.go('app.refresh', {
- "view": $state.current.name
- });
- return;
-
- });
-
-
-
- });
-
- },
- function (error, status) {
- // If its 5xx, then the cgi-bin path is valid
- // if its 4xx then the cgi-bin path is not valid
-
- if (status < 500) {
- loginStatus = $translate.instant('kLoginStatusNoCgiAlt');
- }
-
- NVRDataModel.displayBanner((status < 500) ? 'error' : 'info', [loginStatus]);
-
- NVRDataModel.debug("refreshing API version...");
- NVRDataModel.getAPIversion()
- .then(function (data) {
- var refresh = NVRDataModel.getMonitors(1)
- .then (function () {
- $rootScope.apiVersion = data;
- $ionicHistory.nextViewOptions({
- disableBack: true
- });
-
- console.log ("+++ state go after 5xx");
- $state.go('app.refresh', {
- "view": $state.current.name
- });
- return;
- });
-
- },
- function (error) {
- var refresh = NVRDataModel.getMonitors(1)
- .then (function() {
- $rootScope.apiVersion = "0.0.0";
- NVRDataModel.debug("Error, failed API version, setting to " + $rootScope.apiVersion);
- $ionicHistory.nextViewOptions({
- disableBack: true
});
- console.log ("+++ state go after API version force");
- $state.go('app.refresh', {
- "view": $state.current.name
+
+ },
+ function (error, status) {
+ // If its 5xx, then the cgi-bin path is valid
+ // if its 4xx then the cgi-bin path is not valid
+
+ if (status < 500) {
+ loginStatus = $translate.instant('kLoginStatusNoCgiAlt');
+ }
+
+ NVRDataModel.displayBanner((status < 500) ? 'error' : 'info', [loginStatus]);
+
+ NVRDataModel.debug("refreshing API version...");
+ NVRDataModel.getAPIversion()
+ .then(function (data) {
+ var refresh = NVRDataModel.getMonitors(1)
+ .then(function () {
+ $rootScope.apiVersion = data;
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+
+ console.log("+++ state go after 5xx");
+ $state.go('app.refresh', {
+ "view": $state.current.name
+ });
+ return;
+ });
+
+ },
+ function (error) {
+ var refresh = NVRDataModel.getMonitors(1)
+ .then(function () {
+ $rootScope.apiVersion = "0.0.0";
+ NVRDataModel.debug("Error, failed API version, setting to " + $rootScope.apiVersion);
+ $ionicHistory.nextViewOptions({
+ disableBack: true
+ });
+ console.log("+++ state go after API version force");
+ $state.go('app.refresh', {
+ "view": $state.current.name
+ });
+ return;
+
+ });
+
});
- return;
- });
-
- });
+ });
+ });
- });
- });
+ },
+ function (error) {
+ NVRDataModel.displayBanner('error', [$translate.instant('kBannerAPICheckFailed'), $translate.instant('kBannerPleaseCheck')]);
+ NVRDataModel.log("API login error " + JSON.stringify(error));
- },
- function (error) {
- NVRDataModel.displayBanner('error', [$translate.instant('kBannerAPICheckFailed'), $translate.instant('kBannerPleaseCheck')]);
- NVRDataModel.log("API login error " + JSON.stringify(error));
-
- $rootScope.zmPopup = SecuredPopups.show('alert', {
- title: $translate.instant('kLoginValidAPIFailedTitle'),
- template: $translate.instant('kBannerPleaseCheck'),
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
+ title: $translate.instant('kLoginValidAPIFailedTitle'),
+ template: $translate.instant('kBannerPleaseCheck'),
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+ });
});
- });
});
@@ -281,16 +281,18 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
$scope.switchProfiles = function () {
$scope.newServer = {
- val:""
+ val: ""
};
$scope.avs = Object.keys(NVRDataModel.getServerGroups());
- $scope.avs = $scope.avs.filter(function() { return true; });
-
+ $scope.avs = $scope.avs.filter(function () {
+ return true;
+ });
+
if ($scope.avs.length <= 1) {
return;
}
-
+
$rootScope.zmPopup = $ionicPopup.show({
scope: $scope,
template: '<ion-radio-fix ng-if="item" ng-repeat="item in avs" ng-value="item" ng-model="newServer.val"> {{item}} </ion-radio-fix>',
@@ -302,7 +304,7 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
onTap: function (e) {
if ($ionicSideMenuDelegate.isOpen()) {
$ionicSideMenuDelegate.toggleLeft();
-
+
}
}
@@ -313,7 +315,7 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
NVRDataModel.log("Server selected:" + $scope.newServer.val);
if ($ionicSideMenuDelegate.isOpen()) {
$ionicSideMenuDelegate.toggleLeft();
-
+
}
if (NVRDataModel.getLogin().serverName != $scope.newServer.val)
switchToServer($scope.newServer.val);
@@ -328,7 +330,7 @@ angular.module('zmApp.controllers').controller('MenuController', ['$scope', '$io
});
-
+
};
diff --git a/www/js/MomentCtrl.js b/www/js/MomentCtrl.js
index 5aad9a4d..6a56158e 100644
--- a/www/js/MomentCtrl.js
+++ b/www/js/MomentCtrl.js
@@ -150,7 +150,7 @@ angular.module('zmApp.controllers').controller('zmApp.MomentCtrl', ['$scope', '$
}
- if ($scope.expand)
+ if ($scope.expand)
_expandAll(moments);
else _collapseAll(moments);
@@ -323,20 +323,20 @@ angular.module('zmApp.controllers').controller('zmApp.MomentCtrl', ['$scope', '$
var ld = NVRDataModel.getLogin();
ld.montageReviewCollapse = $scope.expand;
- console.log (">>>>>>>>> SAVING EXPAND AS:"+$scope.expand);
+ console.log(">>>>>>>>> SAVING EXPAND AS:" + $scope.expand);
NVRDataModel.setLogin(ld);
};
function expandAll() {
-
+
_expandAll($scope.moments);
}
function _expandAll(arr) {
- NVRDataModel.debug ("Expanding all images");
+ NVRDataModel.debug("Expanding all images");
for (var i = 0; i < arr.length; i++) {
arr[i].Event.hide = false;
arr[i].Event.icon = 'ion-code-working';
@@ -348,10 +348,10 @@ angular.module('zmApp.controllers').controller('zmApp.MomentCtrl', ['$scope', '$
$timeout(function () {
masonry.reloadItems();
jiggleAway();
-
+
}, 100);
}
-
+
}
function collapseAll() {
@@ -360,8 +360,8 @@ angular.module('zmApp.controllers').controller('zmApp.MomentCtrl', ['$scope', '$
}
function _collapseAll(arr) {
-
- NVRDataModel.debug ("Collapsing all images");
+
+ NVRDataModel.debug("Collapsing all images");
for (var i = 0; i < monitors.length; i++) {
var firstFound = false;
var firstIndex = -1;
@@ -398,10 +398,10 @@ angular.module('zmApp.controllers').controller('zmApp.MomentCtrl', ['$scope', '$
$timeout(function () {
masonry.reloadItems();
jiggleAway();
-
+
}, 100);
}
-
+
}
//----------------------------------------------------------------
@@ -845,9 +845,9 @@ angular.module('zmApp.controllers').controller('zmApp.MomentCtrl', ['$scope', '$
$scope.expand = ld.montageReviewCollapse;
- console.log (">>>>>>>>> RESTORING EXPAND AS:"+$scope.expand);
+ console.log(">>>>>>>>> RESTORING EXPAND AS:" + $scope.expand);
$scope.isMaxScoreFramePresent = false;
-
+
$scope.loadingStatus = $translate.instant('kLoading');
$scope.gridSize = ld.momentGridSize;
momentType = ld.momentArrangeBy;
@@ -863,7 +863,7 @@ angular.module('zmApp.controllers').controller('zmApp.MomentCtrl', ['$scope', '$
constructMask();
$scope.isSubMenu = ld.enableMomentSubMenu;
-
+
for (var i = 0; i < monitors.length; i++) {
if (excludeMonitors.indexOf(monitors[i].Monitor.Id) != -1) {
diff --git a/www/js/MonitorCtrl.js b/www/js/MonitorCtrl.js
index 881d6a2c..9edb1e36 100644
--- a/www/js/MonitorCtrl.js
+++ b/www/js/MonitorCtrl.js
@@ -182,12 +182,12 @@ angular.module('zmApp.controllers')
})
.then(function () {
- NVRDataModel.debug("MonitorCtrl: Not restarting ZM - Make sure you have the patch installed in MonitorsController.php or this won't work");
- },
- function (data, status, headers, config) {
- NVRDataModel.debug("MonitorCtrl: Error changing monitor " + JSON.stringify(data));
- $scope.monfunc.myfailedIds.push(item);
- });
+ NVRDataModel.debug("MonitorCtrl: Not restarting ZM - Make sure you have the patch installed in MonitorsController.php or this won't work");
+ },
+ function (data, status, headers, config) {
+ NVRDataModel.debug("MonitorCtrl: Error changing monitor " + JSON.stringify(data));
+ $scope.monfunc.myfailedIds.push(item);
+ });
$scope.monfunc.mypromises.push(httpPromise);
});
@@ -420,34 +420,34 @@ angular.module('zmApp.controllers')
//console.log("**** ZMC CHECK " + apiMonCheck);
$http.get(apiMonCheck)
.then(function (data) {
- data = data.data;
- NVRDataModel.debug("MonitorCtrl: monitor check state returned: " + JSON.stringify(data));
- if (data.statustext.indexOf("not running") > -1) {
- $scope.monitors[j].Monitor.isRunning = "false";
- $scope.monitors[j].Monitor.color = zm.monitorNotRunningColor;
- $scope.monitors[j].Monitor.char = "ion-close-circled";
- } else if (data.statustext.indexOf("pending") > -1) {
- $scope.monitors[j].Monitor.isRunning = "pending";
- $scope.monitors[j].Monitor.color = zm.monitorPendingColor;
- } else if (data.statustext.indexOf("running since") > -1) {
- $scope.monitors[j].Monitor.isRunning = "true";
- $scope.monitors[j].Monitor.color = zm.monitorRunningColor;
- } else if (data.statustext.indexOf("Unable to connect") > -1) {
- $scope.monitors[j].Monitor.isRunning = "false";
- $scope.monitors[j].Monitor.color = zm.monitorNotRunningColor;
- $scope.monitors[j].Monitor.char = "ion-close-circled";
- }
-
- $scope.monitors[j].Monitor.isRunningText = data.statustext;
- },
- function (data) {
- NVRDataModel.debug("MonitorCtrl: Error->monitor check state returned: " +
- JSON.stringify(data));
- NVRDataModel.displayBanner('error', [$translate.instant('kErrorRetrievingState'), $translate.instant('kPleaseTryAgain')]);
- $scope.monitors[j].Monitor.isRunning = "error";
- $scope.monitors[j].Monitor.color = zm.monitorErrorColor;
- $scope.monitors[j].Monitor.char = "ion-help-circled";
- });
+ data = data.data;
+ NVRDataModel.debug("MonitorCtrl: monitor check state returned: " + JSON.stringify(data));
+ if (data.statustext.indexOf("not running") > -1) {
+ $scope.monitors[j].Monitor.isRunning = "false";
+ $scope.monitors[j].Monitor.color = zm.monitorNotRunningColor;
+ $scope.monitors[j].Monitor.char = "ion-close-circled";
+ } else if (data.statustext.indexOf("pending") > -1) {
+ $scope.monitors[j].Monitor.isRunning = "pending";
+ $scope.monitors[j].Monitor.color = zm.monitorPendingColor;
+ } else if (data.statustext.indexOf("running since") > -1) {
+ $scope.monitors[j].Monitor.isRunning = "true";
+ $scope.monitors[j].Monitor.color = zm.monitorRunningColor;
+ } else if (data.statustext.indexOf("Unable to connect") > -1) {
+ $scope.monitors[j].Monitor.isRunning = "false";
+ $scope.monitors[j].Monitor.color = zm.monitorNotRunningColor;
+ $scope.monitors[j].Monitor.char = "ion-close-circled";
+ }
+
+ $scope.monitors[j].Monitor.isRunningText = data.statustext;
+ },
+ function (data) {
+ NVRDataModel.debug("MonitorCtrl: Error->monitor check state returned: " +
+ JSON.stringify(data));
+ NVRDataModel.displayBanner('error', [$translate.instant('kErrorRetrievingState'), $translate.instant('kPleaseTryAgain')]);
+ $scope.monitors[j].Monitor.isRunning = "error";
+ $scope.monitors[j].Monitor.color = zm.monitorErrorColor;
+ $scope.monitors[j].Monitor.char = "ion-help-circled";
+ });
})(i);
}
diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js
index cc110197..9c074c4b 100644
--- a/www/js/MonitorModalCtrl.js
+++ b/www/js/MonitorModalCtrl.js
@@ -76,9 +76,9 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
}.bind(this), zm.alarmStatusTime);
-
- if ($rootScope.platformOS == 'desktop') {
+
+ if ($rootScope.platformOS == 'desktop') {
window.addEventListener('keydown', keyboardHandler, true);
}
@@ -98,67 +98,79 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
TOGGLEPTZ_P: 80,
UPLEFT_Q: 81,
- UP_W:87,
- UPRIGHT_E:69,
+ UP_W: 87,
+ UPRIGHT_E: 69,
- LEFT_A:65,
+ LEFT_A: 65,
CENTER_S: 83,
- RIGHT_D:68,
+ RIGHT_D: 68,
- DOWNLEFT_Z:90,
- DOWN_X:88,
- DOWNRIGHT_C:67,
+ DOWNLEFT_Z: 90,
+ DOWN_X: 88,
+ DOWNRIGHT_C: 67,
ESC: 27
-
+
};
- $timeout (function () {
+ $timeout(function () {
var keyCode = evt.keyCode;
-
- console.log (keyCode + " PRESSED");
+
+ console.log(keyCode + " PRESSED");
if (keyCode == keyCodes.ESC) {
$scope.closeModal();
- }
- else if (keyCode == keyCodes.LEFT) {
+ } else if (keyCode == keyCodes.LEFT) {
$scope.monStatus = "";
moveToMonitor($scope.monitorId, -1);
- }
- else if (keyCode == keyCodes.RIGHT) {
+ } else if (keyCode == keyCodes.RIGHT) {
$scope.monStatus = "";
moveToMonitor($scope.monitorId, 1);
- }
-
- else if (keyCode == keyCodes.TOGGLEPTZ_P) {
+ } else if (keyCode == keyCodes.TOGGLEPTZ_P) {
$scope.togglePTZ();
- }
- else { // rest of the functions are PTZ
+ } else { // rest of the functions are PTZ
if (!$scope.showPTZ) {
- NVRDataModel.debug ("PTZ is not on, or disabled");
+ NVRDataModel.debug("PTZ is not on, or disabled");
return;
}
// coming here means PTZ is on
var cmd = "";
switch (keyCode) {
- case keyCodes.UPLEFT_Q: cmd = 'UpLeft'; break;
- case keyCodes.UP_W:cmd = 'Up'; break;
- case keyCodes.UPRIGHT_E:cmd = 'UpRight'; break;
- case keyCodes.LEFT_A:cmd = 'Left'; break;
- case keyCodes.CENTER_S: cmd = 'presetHome'; break;
- case keyCodes.RIGHT_D: cmd = 'Right'; break;
- case keyCodes.DOWNLEFT_Z: cmd = 'UpLeft'; break;
- case keyCodes.DOWN_X: cmd = 'Down'; break;
- case keyCodes.DOWNRIGHT_C: cmd = 'DownRight'; break;
+ case keyCodes.UPLEFT_Q:
+ cmd = 'UpLeft';
+ break;
+ case keyCodes.UP_W:
+ cmd = 'Up';
+ break;
+ case keyCodes.UPRIGHT_E:
+ cmd = 'UpRight';
+ break;
+ case keyCodes.LEFT_A:
+ cmd = 'Left';
+ break;
+ case keyCodes.CENTER_S:
+ cmd = 'presetHome';
+ break;
+ case keyCodes.RIGHT_D:
+ cmd = 'Right';
+ break;
+ case keyCodes.DOWNLEFT_Z:
+ cmd = 'UpLeft';
+ break;
+ case keyCodes.DOWN_X:
+ cmd = 'Down';
+ break;
+ case keyCodes.DOWNRIGHT_C:
+ cmd = 'DownRight';
+ break;
}
if (cmd) {
- NVRDataModel.debug ("Invoking controlPTZ with "+cmd);
+ NVRDataModel.debug("Invoking controlPTZ with " + cmd);
$scope.controlPTZ($scope.monitorId, cmd);
- }
- else {
- NVRDataModel.debug ("ignoring invalid PTZ command");
+ } else {
+ NVRDataModel.debug("ignoring invalid PTZ command");
}
}
@@ -854,17 +866,17 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
});
req.then(function (resp) {
- //console.log("SUCCESS: " + JSON.stringify(resp));
- $ionicLoading.hide();
+ //console.log("SUCCESS: " + JSON.stringify(resp));
+ $ionicLoading.hide();
+
+ },
+ function (resp) {
+ $ionicLoading.hide();
+ //console.log("ERROR: " + JSON.stringify(resp));
+ NVRDataModel.log("Error sending PTZ:" + JSON.stringify(resp), "error");
+ });
- },
- function (resp) {
- $ionicLoading.hide();
- //console.log("ERROR: " + JSON.stringify(resp));
- NVRDataModel.log("Error sending PTZ:" + JSON.stringify(resp), "error");
- });
-
}
$scope.getZoomLevel = function () {
@@ -897,7 +909,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
function moveToMonitor(m, d) {
-
+
if ($scope.isZoneEdit) {
NVRDataModel.log("Not cycling, as you are editing zones");
return;
@@ -1074,7 +1086,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
function triggerAlarm(mid, mode) {
var apiurl = NVRDataModel.getLogin().apiurl;
- var c = mode=='on' ? 'on' : 'off';
+ var c = mode == 'on' ? 'on' : 'off';
var alarmurl = apiurl + "/monitors/alarm/id:" + mid + "/command:" + c + ".json";
NVRDataModel.log("Invoking " + alarmurl);
@@ -1198,7 +1210,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
if ($rootScope.platformOS != 'desktop') {
var album = 'zmNinja';
- NVRDataModel.debug ("Trying to save image to album: "+album);
+ NVRDataModel.debug("Trying to save image to album: " + album);
cordova.plugins.photoLibrary.requestAuthorization(
function () {
//url = "https://picsum.photos/200/300/?random";
@@ -1207,41 +1219,45 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
var urle = encodeURI(url);
var fname = "zmninja.jpg";
- fileTransfer.download(urle, cordova.file.dataDirectory + fname,
- function(entry){
+ fileTransfer.download(urle, cordova.file.dataDirectory + fname,
+ function (entry) {
NVRDataModel.debug("local download complete: " + entry.toURL());
NVRDataModel.debug("Now trying to move it to album");
- cordova.plugins.photoLibrary.saveImage(entry.toURL(), album,
+ cordova.plugins.photoLibrary.saveImage(entry.toURL(), album,
function (cameraRollAssetId) {
- SaveSuccess();
- $cordovaFile.removeFile(cordova.file.dataDirectory, fname)
- .then (
- function () {
- NVRDataModel.debug ("file removed from data directory");
- },
- function (e) {
- NVRDataModel.debug ("could not delete temp file: "+JSON.stringify(e));
- }
- );
-
-
- }, function (err) {
- NVRDataModel.debug ("Saving error:" + JSON.stringify(err));
- SaveError();
-
- });
-
- },
- function(err) { NVRDataModel.debug ("error downloading:"+JSON.stringify(err));SaveError();}, !loginData.enableStrictSSL, {});
+ SaveSuccess();
+ $cordovaFile.removeFile(cordova.file.dataDirectory, fname)
+ .then(
+ function () {
+ NVRDataModel.debug("file removed from data directory");
+ },
+ function (e) {
+ NVRDataModel.debug("could not delete temp file: " + JSON.stringify(e));
+ }
+ );
+
+
+ },
+ function (err) {
+ NVRDataModel.debug("Saving error:" + JSON.stringify(err));
+ SaveError();
+
+ });
+
+ },
+ function (err) {
+ NVRDataModel.debug("error downloading:" + JSON.stringify(err));
+ SaveError();
+ }, !loginData.enableStrictSSL, {});
+
+
-
-
// User gave us permission to his library, retry reading it!
},
function (err) {
// User denied the access
- NVRDataModel.debug ("Permission not granted");
+ NVRDataModel.debug("Permission not granted");
SaveError();
}, // if options not provided, defaults to {read: true}.
@@ -1250,21 +1266,19 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
write: true
}
);
- }
-
- else {
+ } else {
$ionicLoading.hide();
-
+
$rootScope.zmPopup = SecuredPopups.show('alert', {
- title: $translate.instant('kNote'),
- template: $translate.instant('kDownloadVideoImage')+"<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download=\"balls.jpg\">"+" "+$translate.instant('kDownload')+"</a></center>",
- okText: $translate.instant('kDismiss'),
- okType:'button-stable'
- });
-
- }
-
+ title: $translate.instant('kNote'),
+ template: $translate.instant('kDownloadVideoImage') + "<br/><br/><center><a href='" + url + "' class='button button-assertive icon ion-android-download' download=\"balls.jpg\">" + " " + $translate.instant('kDownload') + "</a></center>",
+ okText: $translate.instant('kDismiss'),
+ okType: 'button-stable'
+ });
+
+ }
+
}
@@ -1355,17 +1369,17 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$scope.$on('modal.removed', function () {
if ($rootScope.platformOS == 'android') {
- NVRDataModel.debug ("Deregistering handlers for multi-window");
+ NVRDataModel.debug("Deregistering handlers for multi-window");
window.MultiWindowPlugin.deregisterOnStop("monitormodal-pause");
window.MultiWindowPlugin.deregisterOnStart("monitormodal-resume");
-
+
}
- if ($rootScope.platformOS == 'desktop') {
- NVRDataModel.debug ("Removing keyboard handler");
+ if ($rootScope.platformOS == 'desktop') {
+ NVRDataModel.debug("Removing keyboard handler");
window.removeEventListener('keydown', keyboardHandler, true);
-
+
}
as(); // dregister auth success
$scope.isModalActive = false;
@@ -1461,42 +1475,42 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
});
req.then(function (resp) {
- resp = resp.data;
- if (resp.result == "Ok" && ndx != -1) {
- var ld = NVRDataModel.getLogin();
- var apiurl = ld.apiurl + "/events/" + resp.status.event + ".json";
- //console.log ("API " + apiurl);
- $http.get(apiurl)
- .then(function (data) {
- data = data.data;
- if ($scope.MontageMonitors[ndx].eventUrlTime != data.event.Event.StartTime) {
-
- var element = angular.element(document.getElementById($scope.MontageMonitors[ndx].Monitor.Id + "-timeline"));
- element.removeClass('animated slideInRight');
- element.addClass('animated slideOutRight');
- $timeout(function () {
- element.removeClass('animated slideOutRight');
- element.addClass('animated slideInRight');
- $scope.MontageMonitors[ndx].eventUrlTime = data.event.Event.StartTime;
- }, 300);
+ resp = resp.data;
+ if (resp.result == "Ok" && ndx != -1) {
+ var ld = NVRDataModel.getLogin();
+ var apiurl = ld.apiurl + "/events/" + resp.status.event + ".json";
+ //console.log ("API " + apiurl);
+ $http.get(apiurl)
+ .then(function (data) {
+ data = data.data;
+ if ($scope.MontageMonitors[ndx].eventUrlTime != data.event.Event.StartTime) {
+
+ var element = angular.element(document.getElementById($scope.MontageMonitors[ndx].Monitor.Id + "-timeline"));
+ element.removeClass('animated slideInRight');
+ element.addClass('animated slideOutRight');
+ $timeout(function () {
+ element.removeClass('animated slideOutRight');
+ element.addClass('animated slideInRight');
+ $scope.MontageMonitors[ndx].eventUrlTime = data.event.Event.StartTime;
+ }, 300);
- }
+ }
- },
- function (data) {
- $scope.MontageMonitors[ndx].eventUrlTime = "-";
- });
+ },
+ function (data) {
+ $scope.MontageMonitors[ndx].eventUrlTime = "-";
+ });
- }
+ }
- },
+ },
+
+ function (resp) {
+ //console.log("ERROR: " + JSON.stringify(resp));
+ NVRDataModel.log("Error sending event command " + JSON.stringify(resp), "error");
+ });
- function (resp) {
- //console.log("ERROR: " + JSON.stringify(resp));
- NVRDataModel.log("Error sending event command " + JSON.stringify(resp), "error");
- });
-
}
$scope.toggleListMenu = function () {
@@ -1562,198 +1576,198 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
var url = ld.apiurl + "/monitors/" + mid + ".json";
$http.get(url)
.then(function (data) {
- data = data.data;
- $scope.isControllable = data.monitor.Monitor.Controllable;
+ data = data.data;
+ $scope.isControllable = data.monitor.Monitor.Controllable;
- // *** Only for testing - comment out //
- //$scope.isControllable = '1';
- // for testing only
- // $scope.isControllable = 1;
- $scope.controlid = data.monitor.Monitor.ControlId;
- if ($scope.isControllable == '1') {
+ // *** Only for testing - comment out //
+ //$scope.isControllable = '1';
+ // for testing only
+ // $scope.isControllable = 1;
+ $scope.controlid = data.monitor.Monitor.ControlId;
+ if ($scope.isControllable == '1') {
- var apiurl = NVRDataModel.getLogin().apiurl;
- var myurl = apiurl + "/controls/" + $scope.controlid + ".json";
- NVRDataModel.debug("configurePTZ : getting controllable data " + myurl);
+ var apiurl = NVRDataModel.getLogin().apiurl;
+ var myurl = apiurl + "/controls/" + $scope.controlid + ".json";
+ NVRDataModel.debug("configurePTZ : getting controllable data " + myurl);
- $http.get(myurl)
- .then(function (data) {
- data = data.data;
- // *** Only for testing - comment out - start//
- /*data.Control.Control.CanSleep = '1';
- data.Control.Control.CanWake = '1';
- data.Control.Control.CanReset = '1';
- data.Control.Control.CanZoom = '1';
- data.control.Control.HasPresets = '1';
- data.control.Control.HasHomePreset = '1';*/
- // *** Only for testing - comment out - end //
-
-
- //data.control.Control.HasPresets = '1';
- //data.control.Control.HasHomePreset = '1'
-
-
- $scope.ptzMoveCommand = "move"; // start with as move;
- $scope.ptzStopCommand = "";
-
- // console.log ("GOT CONTROL "+JSON.stringify(data.control.Control));
-
- if (data.control.Control.CanZoom == '1') {
- $scope.canZoom = true;
- if (data.control.Control.CanZoomCon == '1') {
- $scope.zoomInCommand = "zoomConTele";
- $scope.zoomOutCommand = "zoomConWide";
-
- } else if (data.control.Control.CanZoomRel == '1') {
- $scope.zoomInCommand = "zoomRelTele";
- $scope.zoomOutCommand = "zoomRelWide";
- } else if (data.control.Control.CanZoomAbs == '1') {
- $scope.zoomInCommand = "zoomRelAbs";
- $scope.zoomOutCommand = "zoomRelAbs";
- }
- }
+ $http.get(myurl)
+ .then(function (data) {
+ data = data.data;
+ // *** Only for testing - comment out - start//
+ /*data.Control.Control.CanSleep = '1';
+ data.Control.Control.CanWake = '1';
+ data.Control.Control.CanReset = '1';
+ data.Control.Control.CanZoom = '1';
+ data.control.Control.HasPresets = '1';
+ data.control.Control.HasHomePreset = '1';*/
+ // *** Only for testing - comment out - end //
- NVRDataModel.debug("configurePTZ: control data returned " + JSON.stringify(data));
+ //data.control.Control.HasPresets = '1';
+ //data.control.Control.HasHomePreset = '1'
- if (data.control.Control.CanMoveMap == '1') {
- //seems moveMap uses Up/Down/Left/Right,
- // so no prefix
- $scope.ptzMoveCommand = "";
- $scope.ptzStopCommand = "moveStop";
- // console.log ("MoveAbs set");
- }
+ $scope.ptzMoveCommand = "move"; // start with as move;
+ $scope.ptzStopCommand = "";
- if (data.control.Control.CanMoveAbs == '1') {
+ // console.log ("GOT CONTROL "+JSON.stringify(data.control.Control));
- $scope.ptzMoveCommand = "moveAbs";
- $scope.ptzStopCommand = "moveStop";
- // console.log ("MoveAbs set");
- }
+ if (data.control.Control.CanZoom == '1') {
+ $scope.canZoom = true;
+ if (data.control.Control.CanZoomCon == '1') {
+ $scope.zoomInCommand = "zoomConTele";
+ $scope.zoomOutCommand = "zoomConWide";
- if (data.control.Control.CanMoveRel == '1') {
+ } else if (data.control.Control.CanZoomRel == '1') {
+ $scope.zoomInCommand = "zoomRelTele";
+ $scope.zoomOutCommand = "zoomRelWide";
+ } else if (data.control.Control.CanZoomAbs == '1') {
+ $scope.zoomInCommand = "zoomRelAbs";
+ $scope.zoomOutCommand = "zoomRelAbs";
+ }
+ }
- $scope.ptzMoveCommand = "moveRel";
- $scope.ptzStopCommand = "moveStop";
- }
+ NVRDataModel.debug("configurePTZ: control data returned " + JSON.stringify(data));
+ if (data.control.Control.CanMoveMap == '1') {
- // Prefer con over rel if both enabled
- // I've tested con
+ //seems moveMap uses Up/Down/Left/Right,
+ // so no prefix
+ $scope.ptzMoveCommand = "";
+ $scope.ptzStopCommand = "moveStop";
+ // console.log ("MoveAbs set");
+ }
- if (data.control.Control.CanMoveCon == '1') {
+ if (data.control.Control.CanMoveAbs == '1') {
- $scope.ptzMoveCommand = "moveCon";
- $scope.ptzStopCommand = "moveStop";
- }
- //CanMoveMap
+ $scope.ptzMoveCommand = "moveAbs";
+ $scope.ptzStopCommand = "moveStop";
+ // console.log ("MoveAbs set");
+ }
- // presets
- NVRDataModel.debug("ConfigurePTZ Preset value is " + data.control.Control.HasPresets);
- $scope.ptzPresets = [];
+ if (data.control.Control.CanMoveRel == '1') {
+ $scope.ptzMoveCommand = "moveRel";
+ $scope.ptzStopCommand = "moveStop";
+ }
- if (data.control.Control.HasPresets == '1') {
- //$scope.presetAndControl = $translate.instant('kPresets');
+ // Prefer con over rel if both enabled
+ // I've tested con
- $scope.ptzPresetCount = parseInt(data.control.Control.NumPresets);
- //$scope.ptzPresetCount =80;
+ if (data.control.Control.CanMoveCon == '1') {
- NVRDataModel.debug("ConfigurePTZ Number of presets is " + $scope.ptzPresetCount);
+ $scope.ptzMoveCommand = "moveCon";
+ $scope.ptzStopCommand = "moveStop";
+ }
+ //CanMoveMap
- for (var p = 0; p < $scope.ptzPresetCount; p++) {
- $scope.ptzPresets.push({
- name: (p + 1).toString(),
- icon: '',
- cmd: "presetGoto" + (p + 1).toString(),
- style: 'button-royal'
- });
+ // presets
+ NVRDataModel.debug("ConfigurePTZ Preset value is " + data.control.Control.HasPresets);
+ $scope.ptzPresets = [];
- }
- if (data.control.Control.HasHomePreset == '1') {
- $scope.ptzPresets.unshift({
- name: '',
- icon: "ion-ios-home",
- cmd: 'presetHome',
- style: 'button-royal'
- });
- }
- /* MAKE SURE THIS IS THE FIRST ICON */
- $scope.ptzPresets.unshift({
- // name: 'W',
- icon: "ion-chevron-up",
- cmd: 'special-hide-unhide',
- style: 'button-royal button-dark ',
- });
+ if (data.control.Control.HasPresets == '1') {
+ //$scope.presetAndControl = $translate.instant('kPresets');
+ $scope.ptzPresetCount = parseInt(data.control.Control.NumPresets);
+ //$scope.ptzPresetCount =80;
- }
- /*else
- {
- $scope.presetAndControl = $translate.instant('kMore');
- }*/
- // lets add these to the end
- // strictly speaking, they aren't really presets, but meh for now
+ NVRDataModel.debug("ConfigurePTZ Number of presets is " + $scope.ptzPresetCount);
- // no need to darken these buttons if presets are not there
- var buttonAccent = "button-dark";
- if ($scope.ptzPresets.length == 0) {
- buttonAccent = "";
- }
+ for (var p = 0; p < $scope.ptzPresetCount; p++) {
+ $scope.ptzPresets.push({
+ name: (p + 1).toString(),
+ icon: '',
+ cmd: "presetGoto" + (p + 1).toString(),
+ style: 'button-royal'
+ });
- if (data.control.Control.CanWake == '1') {
+ }
- $scope.ptzPresets.push({
- name: 'W',
- icon: "ion-eye",
- cmd: 'wake',
- style: 'button-royal ' + buttonAccent
- });
+ if (data.control.Control.HasHomePreset == '1') {
+ $scope.ptzPresets.unshift({
+ name: '',
+ icon: "ion-ios-home",
+ cmd: 'presetHome',
+ style: 'button-royal'
+ });
- }
+ }
- if (data.control.Control.CanSleep == '1') {
- $scope.ptzPresets.push({
- name: 'S',
- icon: "ion-eye-disabled",
- cmd: 'sleep',
- style: 'button-royal ' + buttonAccent
- });
+ /* MAKE SURE THIS IS THE FIRST ICON */
+ $scope.ptzPresets.unshift({
+ // name: 'W',
+ icon: "ion-chevron-up",
+ cmd: 'special-hide-unhide',
+ style: 'button-royal button-dark ',
+ });
- }
- if (data.control.Control.CanReset == '1') {
- $scope.ptzPresets.push({
- name: 'R',
- icon: "ion-ios-loop-strong",
- cmd: 'reset',
- style: 'button-royal ' + buttonAccent
- });
+ }
+ /*else
+ {
+ $scope.presetAndControl = $translate.instant('kMore');
+ }*/
+ // lets add these to the end
+ // strictly speaking, they aren't really presets, but meh for now
- }
+ // no need to darken these buttons if presets are not there
+ var buttonAccent = "button-dark";
+ if ($scope.ptzPresets.length == 0) {
+ buttonAccent = "";
+ }
- NVRDataModel.log("ConfigurePTZ Modal: ControlDB reports PTZ command to be " + $scope.ptzMoveCommand);
- },
- function (data) {
- // console.log("** Error retrieving move PTZ command");
- NVRDataModel.log("ConfigurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error");
- });
+ if (data.control.Control.CanWake == '1') {
- } else {
- NVRDataModel.log("configurePTZ " + mid + " is not PTZ controllable");
- }
- },
- function (data) {
- // console.log("** Error retrieving move PTZ command");
- NVRDataModel.log("configurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error");
- });
+ $scope.ptzPresets.push({
+ name: 'W',
+ icon: "ion-eye",
+ cmd: 'wake',
+ style: 'button-royal ' + buttonAccent
+ });
+
+ }
+
+ if (data.control.Control.CanSleep == '1') {
+ $scope.ptzPresets.push({
+ name: 'S',
+ icon: "ion-eye-disabled",
+ cmd: 'sleep',
+ style: 'button-royal ' + buttonAccent
+ });
+
+ }
+
+ if (data.control.Control.CanReset == '1') {
+ $scope.ptzPresets.push({
+ name: 'R',
+ icon: "ion-ios-loop-strong",
+ cmd: 'reset',
+ style: 'button-royal ' + buttonAccent
+ });
+
+ }
+
+ NVRDataModel.log("ConfigurePTZ Modal: ControlDB reports PTZ command to be " + $scope.ptzMoveCommand);
+ },
+ function (data) {
+ // console.log("** Error retrieving move PTZ command");
+ NVRDataModel.log("ConfigurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error");
+ });
+
+ } else {
+ NVRDataModel.log("configurePTZ " + mid + " is not PTZ controllable");
+ }
+ },
+ function (data) {
+ // console.log("** Error retrieving move PTZ command");
+ NVRDataModel.log("configurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error");
+ });
}
@@ -1799,11 +1813,10 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
document.addEventListener("pause", onPause, false);
document.addEventListener("resume", onResume, false);
- }
- else {
- NVRDataModel.debug ("MonitorModal: Android detected, using cordova-multiwindow plugin for onStop/onStart instead");
- window.MultiWindowPlugin.registerOnStop("monitormodal-pause", onPause);
- window.MultiWindowPlugin.registerOnStart("monitormodal-resume", onResume);
+ } else {
+ NVRDataModel.debug("MonitorModal: Android detected, using cordova-multiwindow plugin for onStop/onStart instead");
+ window.MultiWindowPlugin.registerOnStop("monitormodal-pause", onPause);
+ window.MultiWindowPlugin.registerOnStart("monitormodal-resume", onResume);
}
diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js
index f4c77a80..161a1025 100644
--- a/www/js/MontageCtrl.js
+++ b/www/js/MontageCtrl.js
@@ -35,7 +35,7 @@ angular.module('zmApp.controllers')
SNAPSHOT: 1,
ACTIVE: 2,
STOPPED: 3,
- PAUSED:4
+ PAUSED: 4
};
var currentStreamState = streamState.SNAPSHOT; // first load snapshot
@@ -49,7 +49,7 @@ angular.module('zmApp.controllers')
var as = $scope.$on("auth-success", function () {
- /* var tnow = new Date();
+ /* var tnow = new Date();
var s = Math.round((tnow - timeInMontage) / 1000);
NVRDataModel.debug ("Montage re-auth: time since we are here: " + s +
" seconds");
@@ -313,7 +313,7 @@ angular.module('zmApp.controllers')
pckry = new Packery('.grid', {
itemSelector: '.grid-item',
percentPosition: true,
- //columnWidth: '.grid-sizer',
+ //columnWidth: '.grid-sizer',
gutter: 0,
initLayout: layouttype,
shiftPercentResize: true,
@@ -334,15 +334,15 @@ angular.module('zmApp.controllers')
progressCalled = true;
loadCount++;
- // console.log ("loaded "+loadCount+" of "+positions.length);
+ // console.log ("loaded "+loadCount+" of "+positions.length);
// if (layouttype) $timeout (function(){layout(pckry);},100);
});
- $timeout (function() {
+ $timeout(function () {
if ($scope.areImagesLoading) {
- NVRDataModel.debug ("Images still loading after 15secs?");
+ NVRDataModel.debug("Images still loading after 15secs?");
allImagesLoadedOrFailed();
}
@@ -365,10 +365,12 @@ angular.module('zmApp.controllers')
});
function allImagesLoadedOrFailed() {
-
- $timeout (function() {$scope.areImagesLoading = false;});
-
+
+ $timeout(function () {
+ $scope.areImagesLoading = false;
+ });
+
currentStreamState = streamState.SNAPSHOT;
if (simulStreaming) {
@@ -664,7 +666,7 @@ angular.module('zmApp.controllers')
else
$scope.timeNow = moment().tz(NVRDataModel.getTimeZoneNow()).format(NVRDataModel.getTimeFormatSec());
-
+
if (simulStreaming) {
// console.log ("Skipping timer as simulStreaming");
return;
@@ -683,7 +685,7 @@ angular.module('zmApp.controllers')
// if you see the time move, montage should move
-
+
//$scope.timeNow = moment().format(NVRDataModel.getTimeFormatSec());
//console.log ("Inside Montage timer...");
@@ -1187,11 +1189,11 @@ angular.module('zmApp.controllers')
if (simulStreaming) {
NVRDataModel.debug("Pausing all streams in montage to save memory/nw...");
-
- for (var i = 0; i < $scope.MontageMonitors.length; i++) {
- if ($scope.MontageMonitors[i].Monitor.listDisplay == 'show') NVRDataModel.pauseLiveStream($scope.MontageMonitors[i].Monitor.connKey, $scope.MontageMonitors[i].Monitor.controlURL, $scope.MontageMonitors[i].Monitor.Name);
- }
-
+
+ for (var i = 0; i < $scope.MontageMonitors.length; i++) {
+ if ($scope.MontageMonitors[i].Monitor.listDisplay == 'show') NVRDataModel.pauseLiveStream($scope.MontageMonitors[i].Monitor.connKey, $scope.MontageMonitors[i].Monitor.controlURL, $scope.MontageMonitors[i].Monitor.Name);
+ }
+
}
});
@@ -1325,12 +1327,12 @@ angular.module('zmApp.controllers')
for (var i = 0; i < $scope.MontageMonitors.length; i++) {
if ($scope.MontageMonitors[i].Monitor.listDisplay == 'show') NVRDataModel.resumeLiveStream($scope.MontageMonitors[i].Monitor.connKey, $scope.MontageMonitors[i].Monitor.controlURL, $scope.MontageMonitors[i].Monitor.Name);
}
- /* NVRDataModel.regenConnKeys();
- $scope.monitors = NVRDataModel.getMonitorsNow();
- $scope.MontageMonitors = angular.copy($scope.monitors);*/
+ /* NVRDataModel.regenConnKeys();
+ $scope.monitors = NVRDataModel.getMonitorsNow();
+ $scope.MontageMonitors = angular.copy($scope.monitors);*/
}
-
+
}
@@ -1377,7 +1379,7 @@ angular.module('zmApp.controllers')
broadcastHandles = [];
-
+
$timeout(function () {
if (!$scope.singleMonitorModalOpen && simulStreaming) {
NVRDataModel.debug("Killing all streams in montage to save memory/nw...");
@@ -1432,9 +1434,9 @@ angular.module('zmApp.controllers')
$scope.$on('$ionicView.leave', function () {
// console.log("**VIEW ** Montage Ctrl Left, force removing modal");
if ($rootScope.platformOS == 'android') {
- NVRDataModel.debug ("Deregistering handlers for multi-window");
+ NVRDataModel.debug("Deregistering handlers for multi-window");
window.MultiWindowPlugin.deregisterOnStop("montage-pause");
-
+
}
if ($scope.modal) $scope.modal.remove();
});
@@ -1771,7 +1773,7 @@ angular.module('zmApp.controllers')
var stream;
if (currentStreamState == streamState.STOPPED || monitor.Monitor.listDisplay == 'noshow' || $rootScope.authSession == 'undefined') {
- // console.log ("STREAM=empty and auth="+$rootScope.authSession);
+ // console.log ("STREAM=empty and auth="+$rootScope.authSession);
return "";
}
@@ -1794,7 +1796,7 @@ angular.module('zmApp.controllers')
//"&rand="+$scope.randToAvoidCacheMem +
- // console.log("STREAM=" + stream);
+ // console.log("STREAM=" + stream);
return stream;
};
@@ -2004,10 +2006,9 @@ angular.module('zmApp.controllers')
if ($rootScope.platformOS != 'android') {
document.addEventListener("pause", onPause, false);
- }
- else {
- NVRDataModel.debug ("MontageCtrl: Android detected, using cordova-multiwindow plugin for onStop/onStart instead");
- window.MultiWindowPlugin.registerOnStop("montage-pause", onPause);
+ } else {
+ NVRDataModel.debug("MontageCtrl: Android detected, using cordova-multiwindow plugin for onStop/onStart instead");
+ window.MultiWindowPlugin.registerOnStop("montage-pause", onPause);
}
// document.addEventListener("resume", onResume, false);
@@ -2189,18 +2190,18 @@ angular.module('zmApp.controllers')
pckry.once('layoutComplete', resizeComplete);
pckry.layout();
- /* pckry.getItemElements().forEach(function (elem) {
- var id = elem.getAttribute("data-item-id");
- var sz = elem.getAttribute("data-item-size");
- if (isNaN(sz)) sz = 20;
- //console.log("NOW IT IS-> " + id + ":" + sz);
- if (oldScales[id] != sz) {
- //console.log("Calling FIT on " + id + " size:" + oldScales[id] + "->" + sz);
- pckry.once('fitComplete', resizeComplete);
- pckry.fit(elem);
-
- }
- });*/
+ /* pckry.getItemElements().forEach(function (elem) {
+ var id = elem.getAttribute("data-item-id");
+ var sz = elem.getAttribute("data-item-size");
+ if (isNaN(sz)) sz = 20;
+ //console.log("NOW IT IS-> " + id + ":" + sz);
+ if (oldScales[id] != sz) {
+ //console.log("Calling FIT on " + id + " size:" + oldScales[id] + "->" + sz);
+ pckry.once('fitComplete', resizeComplete);
+ pckry.fit(elem);
+
+ }
+ });*/
} else //shrink
{
//console.log("Calling shift");
diff --git a/www/js/NewsCtrl.js b/www/js/NewsCtrl.js
index 55712753..ba45fb0e 100644
--- a/www/js/NewsCtrl.js
+++ b/www/js/NewsCtrl.js
@@ -88,12 +88,12 @@ angular.module('zmApp.controllers').controller('zmApp.NewsCtrl', ['$scope', '$ro
$http.get(zm.blogUrl, {
- responseType:'text'
+ responseType: 'text'
})
.then(function (datastr) {
datastr = datastr.data;
var trunc = "])}while(1);</x>";
- datastr= datastr.substr(trunc.length);
+ datastr = datastr.substr(trunc.length);
// console.log ("DATA:"+data);
//
var data = JSON.parse(datastr);
diff --git a/www/js/PortalLoginCtrl.js b/www/js/PortalLoginCtrl.js
index 2397adef..7fb4cc50 100644
--- a/www/js/PortalLoginCtrl.js
+++ b/www/js/PortalLoginCtrl.js
@@ -3,7 +3,7 @@
/*This is for the loop closure I am using in line 143 */
/* jslint browser: true*/
/* global vis,cordova,StatusBar,angular,console,moment */
-angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionicPlatform', '$scope', 'zm', 'NVRDataModel', '$ionicSideMenuDelegate', '$rootScope', '$http', '$q', '$state', '$ionicLoading', '$ionicPopover', '$ionicScrollDelegate', '$ionicModal', '$timeout', 'zmAutoLogin', '$ionicHistory', 'EventServer', '$translate', '$ionicPopup',function ($ionicPlatform, $scope, zm, NVRDataModel, $ionicSideMenuDelegate, $rootScope, $http, $q, $state, $ionicLoading, $ionicPopover, $ionicScrollDelegate, $ionicModal, $timeout, zmAutoLogin, $ionicHistory, EventServer, $translate, $ionicPopup) {
+angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionicPlatform', '$scope', 'zm', 'NVRDataModel', '$ionicSideMenuDelegate', '$rootScope', '$http', '$q', '$state', '$ionicLoading', '$ionicPopover', '$ionicScrollDelegate', '$ionicModal', '$timeout', 'zmAutoLogin', '$ionicHistory', 'EventServer', '$translate', '$ionicPopup', function ($ionicPlatform, $scope, zm, NVRDataModel, $ionicSideMenuDelegate, $rootScope, $http, $q, $state, $ionicLoading, $ionicPopover, $ionicScrollDelegate, $ionicModal, $timeout, zmAutoLogin, $ionicHistory, EventServer, $translate, $ionicPopup) {
var processPush = false;
var broadcastHandles = [];
@@ -437,18 +437,18 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
EventServer.init();
NVRDataModel.zmPrivacyProcessed()
- .then (function (val) {
- console.log(">>>>>>>>>>>>>>>>>>> PRIVACY PROCEESSED:"+val);
- if (!val) {
- var alertPopup = $ionicPopup.alert({
- title: $translate.instant ('kNote'),
- template: $translate.instant('kDataPrivacyZM'),
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
- });
+ .then(function (val) {
+ console.log(">>>>>>>>>>>>>>>>>>> PRIVACY PROCEESSED:" + val);
+ if (!val) {
+ var alertPopup = $ionicPopup.alert({
+ title: $translate.instant('kNote'),
+ template: $translate.instant('kDataPrivacyZM'),
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+ });
- }
- });
+ }
+ });
// if push broadcast happens BEFORE this, then no
// state change will occur here which is good
@@ -551,6 +551,6 @@ angular.module('zmApp.controllers').controller('zmApp.PortalLoginCtrl', ['$ionic
NVRDataModel.log("Entering Portal Main");
var loginData;
$ionicSideMenuDelegate.canDragContent(true);
-
+
}]);
diff --git a/www/js/StateCtrl.js b/www/js/StateCtrl.js
index d845d02a..62bffb81 100644
--- a/www/js/StateCtrl.js
+++ b/www/js/StateCtrl.js
@@ -63,16 +63,16 @@ angular.module('zmApp.controllers').controller('zmApp.StateCtrl', ['$ionicPopup'
$scope.$on('$ionicView.enter', function () {
// console.log("**VIEW ** Montage Ctrl Entered");
NVRDataModel.setAwake(false);
-
+
});
$scope.$on('$ionicView.afterEnter', function () {
// console.log("**VIEW ** Montage Ctrl Entered");
-
- console.log ("STATE SHORTCUT: " + JSON.stringify($stateParams));
- $stateParams.shortcut && $stateParams.shortcut.fn &&
- $scope[$stateParams.shortcut.fn]($stateParams.shortcut.fnargs); // jshint ignore:line
-
+
+ console.log("STATE SHORTCUT: " + JSON.stringify($stateParams));
+ $stateParams.shortcut && $stateParams.shortcut.fn &&
+ $scope[$stateParams.shortcut.fn]($stateParams.shortcut.fnargs); // jshint ignore:line
+
});
//---------------------------------------------------------
diff --git a/www/js/TimelineCtrl.js b/www/js/TimelineCtrl.js
index a5c7f818..e1fbc4ef 100644
--- a/www/js/TimelineCtrl.js
+++ b/www/js/TimelineCtrl.js
@@ -277,10 +277,10 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
//-------------------------------------------------
$scope.$on('$ionicView.leave', function () {
- if ($rootScope.platformOS == 'desktop') {
- NVRDataModel.debug ("Removing keyboard handler");
+ if ($rootScope.platformOS == 'desktop') {
+ NVRDataModel.debug("Removing keyboard handler");
window.removeEventListener('keydown', keyboardHandler, true);
-
+
}
NVRDataModel.debug("Timeline: Deregistering broadcast handles");
@@ -311,16 +311,16 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
timeline = '';
$scope.newEvents = '';
- if ($rootScope.platformOS == 'desktop') {
+ if ($rootScope.platformOS == 'desktop') {
window.addEventListener('keydown', keyboardHandler, true);
-
+
}
-
+
});
// Keyboard handler for desktop versions
- function keyboardHandler(evt) {
+ function keyboardHandler(evt) {
var handled = false;
var keyCodes = {
@@ -328,51 +328,42 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
//events
LEFT: 37,
RIGHT: 39,
- UP:38,
- DOWN:40,
+ UP: 38,
+ DOWN: 40,
ESC: 27,
-
+
PREVDAY_A: 65,
NEXTDAY_D: 68,
-
+
};
- $timeout (function () {
+ $timeout(function () {
var keyCode = evt.keyCode;
-
- console.log (keyCode + " PRESSED");
+
+ console.log(keyCode + " PRESSED");
if (keyCode == keyCodes.UP) {
timeline.zoomIn(0.2);
- }
- else if (keyCode == keyCodes.DOWN) {
+ } else if (keyCode == keyCodes.DOWN) {
timeline.zoomIn(0.2);
- }
- else if (keyCode == keyCodes.LEFT) {
-
- move (-0.2);
- }
- else if (keyCode == keyCodes.RIGHT) {
- move (0.2);
- }
+ } else if (keyCode == keyCodes.LEFT) {
- else if (keyCode == keyCodes.ESC) {
+ move(-0.2);
+ } else if (keyCode == keyCodes.RIGHT) {
+ move(0.2);
+ } else if (keyCode == keyCodes.ESC) {
timeline.fit();
- }
-
- else if (keyCode == keyCodes.PREVDAY_A) {
+ } else if (keyCode == keyCodes.PREVDAY_A) {
$scope.moveDays(-1);
- }
-
- else if (keyCode == keyCodes.NEXTDAY_D) {
+ } else if (keyCode == keyCodes.NEXTDAY_D) {
$scope.moveDays(1);
}
-
+
handled = true;
return handled;
@@ -1104,7 +1095,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
NVRDataModel.getEventsPages(0, fromDateNoLang, toDateNoLang)
.then(function (epData) {
- var pages = 1;
+ var pages = 1;
var itemsPerPage = parseInt(epData.limit);
var iterCount;
@@ -1120,7 +1111,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
while ((pages <= epData.pageCount) && (iterCount > 0)) {
var promise = NVRDataModel.getEvents(0, pages, "none", fromDateNoLang, toDateNoLang);
promises.push(promise);
-
+
pages++;
iterCount--;
@@ -1128,7 +1119,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
$q.all(promises)
.then(function (data) {
- NVRDataModel.debug("TimelineCtrl/drawgraph: all pages of graph data received " );
+ NVRDataModel.debug("TimelineCtrl/drawgraph: all pages of graph data received ");
graphIndex = 0;
NVRDataModel.log("Creating " + $scope.monitors.length + " groups for the graph");
// create groups
@@ -1146,8 +1137,8 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
for (var j = 0; j < data.length; j++) {
var myevents = data[j].events;
- // console.log ("****************DATA ="+JSON.stringify(data[j]));
- // console.log ("**********************************");
+ // console.log ("****************DATA ="+JSON.stringify(data[j]));
+ // console.log ("**********************************");
if (graphIndex > count) {
NVRDataModel.log("Exiting page count graph - reached limit of " + count);
break;
@@ -1208,30 +1199,30 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla
//console.log ("ADDED "+tzs+" " +tze);
if (!graphData.get(myevents[i].Event.Id)) {
- graphData.add({
- //id: graphIndex,
- id: myevents[i].Event.Id,
- content: "<span class='my-vis-font'>" + "( <i class='ion-android-notifications'></i>" + myevents[i].Event.AlarmFrames + ") " + "(" + myevents[i].Event.Id + ") " + myevents[i].Event.Notes + "</span>",
-
- start: tzs,
- //start: myevents[i].Event.StartTime,
- //end: myevents[i].Event.EndTime,
- end: tze,
- group: myevents[i].Event.MonitorId,
- //type: "range",
- style: "background-color:" + colors[parseInt(myevents[i].Event.MonitorId) % colors.length] +
- ";border-color:" + colors[parseInt(myevents[i].Event.MonitorId) % colors.length],
- myframes: myevents[i].Event.Frames,
- mydur: myevents[i].Event.Length,
- myeid: myevents[i].Event.Id,
- myename: myevents[i].Event.Name,
- myvideo: myevents[i].Event.DefaultVideo,
- myevent: myevents[i]
-
- });
- //console.log ("IED="+myevents[i].Event.Id);
- graphIndex++;
- }
+ graphData.add({
+ //id: graphIndex,
+ id: myevents[i].Event.Id,
+ content: "<span class='my-vis-font'>" + "( <i class='ion-android-notifications'></i>" + myevents[i].Event.AlarmFrames + ") " + "(" + myevents[i].Event.Id + ") " + myevents[i].Event.Notes + "</span>",
+
+ start: tzs,
+ //start: myevents[i].Event.StartTime,
+ //end: myevents[i].Event.EndTime,
+ end: tze,
+ group: myevents[i].Event.MonitorId,
+ //type: "range",
+ style: "background-color:" + colors[parseInt(myevents[i].Event.MonitorId) % colors.length] +
+ ";border-color:" + colors[parseInt(myevents[i].Event.MonitorId) % colors.length],
+ myframes: myevents[i].Event.Frames,
+ mydur: myevents[i].Event.Length,
+ myeid: myevents[i].Event.Id,
+ myename: myevents[i].Event.Name,
+ myvideo: myevents[i].Event.DefaultVideo,
+ myevent: myevents[i]
+
+ });
+ //console.log ("IED="+myevents[i].Event.Id);
+ graphIndex++;
+ }
} else {
//console.log ("SKIPPED GRAPH ID " + graphIndex);
}
diff --git a/www/js/WizardCtrl.js b/www/js/WizardCtrl.js
index a152f537..f4b3d456 100644
--- a/www/js/WizardCtrl.js
+++ b/www/js/WizardCtrl.js
@@ -39,32 +39,32 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
}
})
.then(function (data, status, headers) {
- data = data.data;
- //console.log("LOOKING FOR " + zm.loginScreenString);
- //console.log("DATA RECEIVED " + JSON.stringify(data));
- if (data.indexOf(zm.loginScreenString) == -1) {
-
- $scope.wizard.loginURL = $scope.wizard.fqportal;
- $scope.wizard.portalValidText = $translate.instant('kPortal') + ": " + $scope.wizard.loginURL;
- $scope.wizard.portalColor = "#16a085";
- d.resolve(true);
- return d.promise;
- } else {
- //console.log("************ERROR");
+ data = data.data;
+ //console.log("LOOKING FOR " + zm.loginScreenString);
+ //console.log("DATA RECEIVED " + JSON.stringify(data));
+ if (data.indexOf(zm.loginScreenString) == -1) {
+
+ $scope.wizard.loginURL = $scope.wizard.fqportal;
+ $scope.wizard.portalValidText = $translate.instant('kPortal') + ": " + $scope.wizard.loginURL;
+ $scope.wizard.portalColor = "#16a085";
+ d.resolve(true);
+ return d.promise;
+ } else {
+ //console.log("************ERROR");
+ $scope.wizard.portalValidText = $translate.instant('kPortalDetectionFailed');
+ $scope.wizard.portalColor = "#e74c3c";
+ d.reject(false);
+ return d.promise;
+ }
+ },
+ function (error) {
+ // console.log("************ERROR:"+ JSON.stringify(error));
$scope.wizard.portalValidText = $translate.instant('kPortalDetectionFailed');
$scope.wizard.portalColor = "#e74c3c";
d.reject(false);
return d.promise;
- }
- },
- function (error) {
- // console.log("************ERROR:"+ JSON.stringify(error));
- $scope.wizard.portalValidText = $translate.instant('kPortalDetectionFailed');
- $scope.wizard.portalColor = "#e74c3c";
- d.reject(false);
- return d.promise;
- });
+ });
return d.promise;
@@ -141,7 +141,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
return d.promise;
}
-
+
return findFirstReachableUrl(urls.slice(1), tail);
});
} else {
@@ -196,11 +196,11 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
var urls = [a1, a2, a3, a4, a5];
// can't use getPathZms as loginData is not inited yet
- $http.get ($scope.wizard.apiURL+"/configs/viewByName/ZM_PATH_ZMS.json")
- //NVRDataModel.getPathZms() // what does ZM have stored in PATH_ZMS?
+ $http.get($scope.wizard.apiURL + "/configs/viewByName/ZM_PATH_ZMS.json")
+ //NVRDataModel.getPathZms() // what does ZM have stored in PATH_ZMS?
.then(function (data) {
// remove zms or nph-zms
- var str = data.data.config.Value;
+ var str = data.data.config.Value;
var path = str.trim();
path = path.replace("/nph-zms", "");
path = path.replace("/zms", "");
@@ -396,7 +396,7 @@ angular.module('zmApp.controllers').controller('zmApp.WizardCtrl', ['$scope', '$
//--------------------------------------------------------------------------
function validateDataNewAPI() {
-
+
}
function validateData() {
diff --git a/www/js/app.js b/www/js/app.js
index fabcea3a..fef31358 100755
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -11,8 +11,6 @@
var appVersion = "0.0.0";
-
-
// core app start stuff
angular.module('zmApp', [
'ionic',
@@ -25,7 +23,6 @@ angular.module('zmApp', [
'com.2fdevs.videogular',
'com.2fdevs.videogular.plugins.controls',
'com.2fdevs.videogular.plugins.overlayplay',
- //'ionic-native-transitions',
'mgo-angular-wizard',
'pascalprecht.translate',
'uk.ac.soton.ecs.videogular.plugins.cuepoints',
@@ -120,7 +117,7 @@ angular.module('zmApp', [
// window title and going out of sync
// seems to get stuck in mobile
.controller('zmApp.appCtrl', function ($scope, $rootScope) {
- $scope.$on('$ionicView.afterEnter', function(ev, data) {
+ $scope.$on('$ionicView.afterEnter', function (ev, data) {
if ($rootScope.platformOS == 'desktop') ev.stopPropagation();
});
})
@@ -763,7 +760,7 @@ angular.module('zmApp', [
// $localstorage.set("lastUpdateCheck", moment().toISOString());
//console.log ("FULL STRING " + success.data.tag_name);
- // console.log ("^^^^^^^^^^^^^ GOT: " + JSON.stringify(success));
+ // console.log ("^^^^^^^^^^^^^ GOT: " + JSON.stringify(success));
var res = success.data.tag_name.match("v(.*)");
zmUpdateVersion = res[1];
@@ -785,8 +782,8 @@ angular.module('zmApp', [
NVRDataModel.log("Checking for news updates");
$http.get(zm.blogUrl, {
- responseType:'text',
- transformResponse:undefined
+ responseType: 'text',
+ transformResponse: undefined
})
.then(function (datastr) {
@@ -914,22 +911,22 @@ angular.module('zmApp', [
// we need AUTH_HASH_LOGIN to be on for WKWebView /mobile
if (ld.isUseAuth && $rootScope.platformOS != 'desktop') {
- NVRDataModel.getAuthHashLogin()
- .then (function (data) {
-
- if (data.data && data.data.config.Value != '1') {
- $ionicPopup.alert({
- title: $translate.instant('kError'),
- template: $translate.instant('kAuthHashDisabled')
- });
- }
+ NVRDataModel.getAuthHashLogin()
+ .then(function (data) {
- },
- function (err) {
- console.log ("AUTH HASH ERROR: "+JSON.stringify(conf));
- });
+ if (data.data && data.data.config.Value != '1') {
+ $ionicPopup.alert({
+ title: $translate.instant('kError'),
+ template: $translate.instant('kAuthHashDisabled')
+ });
+ }
+
+ },
+ function (err) {
+ console.log("AUTH HASH ERROR: " + JSON.stringify(conf));
+ });
}
-
+
});
@@ -974,7 +971,7 @@ angular.module('zmApp', [
var ld = NVRDataModel.getLogin();
var statename = $ionicHistory.currentStateName();
-
+
if (statename == "montage-history") {
NVRDataModel.log("Skipping login process as we are in montage history. Re-logging will mess up the stream");
@@ -1009,8 +1006,8 @@ angular.module('zmApp', [
$ionicLoading.show({
template: $translate.instant('kReachabilityFailed'),
noBackdrop: true,
-
- });
+
+ });
NVRDataModel.debug(">>>>>>>>>>>> Failed first login, trying reachability");
NVRDataModel.getReachableConfig(true)
.then(function (data) {
@@ -1064,7 +1061,7 @@ angular.module('zmApp', [
}
- if (!str) str = $translate.instant ('kAuthenticating');
+ if (!str) str = $translate.instant('kAuthenticating');
if (str) {
$ionicLoading.show({
@@ -1082,102 +1079,106 @@ angular.module('zmApp', [
//first login using new API
var loginAPI = loginData.apiurl + '/host/login.json';
-
+
$http({
- method:'post',
- url: loginAPI,
- timeout:httpDelay,
- headers: {'Content-Type': 'application/x-www-form-urlencoded'},
- responseType:'text',
- transformResponse: undefined,
- transformRequest: function(obj) {
- var str = [];
- for(var p in obj)
- str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
- return str.join("&");
- },
- data: {user: loginData.username, pass: loginData.password}
- })
- //$http.get(loginAPI)
+ method: 'post',
+ url: loginAPI,
+ timeout: httpDelay,
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ responseType: 'text',
+ transformResponse: undefined,
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
+ return str.join("&");
+ },
+ data: {
+ user: loginData.username,
+ pass: loginData.password
+ }
+ })
+ //$http.get(loginAPI)
.then(function (textsucc) {
- $ionicLoading.hide();
+ $ionicLoading.hide();
var succ;
-
+
try {
succ = JSON.parse(textsucc.data);
- if (!succ.version) {
- NVRDataModel.debug ("API login returned fake success, going back to webscrape");
- var ld = NVRDataModel.getLogin();
- ld.loginAPISupported = false;
- NVRDataModel.setLogin(ld);
-
- loginWebScrape()
- .then ( function (succ) {
+ if (!succ.version) {
+ NVRDataModel.debug("API login returned fake success, going back to webscrape");
+ var ld = NVRDataModel.getLogin();
+ ld.loginAPISupported = false;
+ NVRDataModel.setLogin(ld);
+
+ loginWebScrape()
+ .then(function (succ) {
d.resolve("Login Success");
return d.promise;
- },
- function (err) {
- $ionicLoading.hide();
- d.reject("Login Error");
- return (d.promise);
- });
- return d.promise;
- }
- NVRDataModel.debug ("API based login returned... ");
- NVRDataModel.setCurrentServerVersion(succ.version);
- $ionicLoading.hide();
- //$rootScope.loggedIntoZm = 1;
- $rootScope.authSession = '';
-
- if (succ.credentials) {
- $rootScope.authSession = "&" + succ.credentials;
- if (succ.append_password == '1') {
- $rootScope.authSession = $rootScope.authSession +
- loginData.password;
- }
+ },
+ function (err) {
+ $ionicLoading.hide();
+ d.reject("Login Error");
+ return (d.promise);
+ });
+ return d.promise;
+ }
+ NVRDataModel.debug("API based login returned... ");
+ NVRDataModel.setCurrentServerVersion(succ.version);
+ $ionicLoading.hide();
+ //$rootScope.loggedIntoZm = 1;
+ $rootScope.authSession = '';
+
+ if (succ.credentials) {
+ $rootScope.authSession = "&" + succ.credentials;
+ if (succ.append_password == '1') {
+ $rootScope.authSession = $rootScope.authSession +
+ loginData.password;
}
-
- var ldg = NVRDataModel.getLogin();
- ldg.loginAPISupported = true;
- NVRDataModel.setLogin(ldg);
-
- NVRDataModel.log("Stream authentication construction: " +
+ }
+
+ var ldg = NVRDataModel.getLogin();
+ ldg.loginAPISupported = true;
+ NVRDataModel.setLogin(ldg);
+
+ NVRDataModel.log("Stream authentication construction: " +
$rootScope.authSession);
-
- NVRDataModel.log("zmAutologin successfully logged into Zoneminder via API");
-
-
-
- d.resolve("Login Success");
-
- $rootScope.$broadcast('auth-success', succ);
- }
- catch (e) {
- NVRDataModel.debug ("Login API approach did not work...");
+
+ NVRDataModel.log("zmAutologin successfully logged into Zoneminder via API");
+
+
+
+ d.resolve("Login Success");
+
+ $rootScope.$broadcast('auth-success', succ);
+ } catch (e) {
+ NVRDataModel.debug("Login API approach did not work...");
var ld = NVRDataModel.getLogin();
- ld.loginAPISupported = false;
- NVRDataModel.setLogin(ld);
- loginWebScrape()
- .then ( function (succ) {
+ ld.loginAPISupported = false;
+ NVRDataModel.setLogin(ld);
+ loginWebScrape()
+ .then(function (succ) {
d.resolve("Login Success");
return d.promise;
- },
- function (err) {
- $ionicLoading.hide();
- d.reject("Login Error");
- return (d.promise);
- });
- return d.promise;
+ },
+ function (err) {
+ $ionicLoading.hide();
+ d.reject("Login Error");
+ return (d.promise);
+ });
+ return d.promise;
}
-
+
},
function (err) {
@@ -1186,36 +1187,35 @@ angular.module('zmApp', [
if (1) {
- //if (err && err.data && 'success' in err.data) {
+ //if (err && err.data && 'success' in err.data) {
console.log("API based login not supported, need to use web scraping...");
// login using old web scraping
var ld = NVRDataModel.getLogin();
ld.loginAPISupported = false;
NVRDataModel.setLogin(ld);
loginWebScrape()
- .then ( function (succ) {
- d.resolve("Login Success");
- return d.promise;
- },
- function (err) {
- d.reject("Login Error");
- return (d.promise);
- });
+ .then(function (succ) {
+ d.resolve("Login Success");
+ return d.promise;
+ },
+ function (err) {
+ d.reject("Login Error");
+ return (d.promise);
+ });
- }
- else {
+ } else {
// $rootScope.loggedIntoZm = -1;
- //console.log("**** ZM Login FAILED");
- NVRDataModel.log("zmAutologin Error via API: some meta foo", "error");
- $rootScope.$broadcast('auth-error', "I'm confused why");
+ //console.log("**** ZM Login FAILED");
+ NVRDataModel.log("zmAutologin Error via API: some meta foo", "error");
+ $rootScope.$broadcast('auth-error', "I'm confused why");
- d.reject("Login Error");
- return (d.promise);
+ d.reject("Login Error");
+ return (d.promise);
}
-
+
}
);
@@ -1238,7 +1238,7 @@ angular.module('zmApp', [
noBackdrop: true,
duration: httpDelay
});
-
+
NVRDataModel.isReCaptcha()
.then(function (result) {
@@ -1294,83 +1294,83 @@ angular.module('zmApp', [
}
})
.then(function (data, status, headers) {
- // console.log(">>>>>>>>>>>>>> PARALLEL POST SUCCESS");
- data = data.data;
- $ionicLoading.hide();
+ // console.log(">>>>>>>>>>>>>> PARALLEL POST SUCCESS");
+ data = data.data;
+ $ionicLoading.hide();
- // Coming here does not mean success
- // it could also be a bad login, but
- // ZM returns you to login.php and returns 200 OK
- // so we will check if the data has
- // <title>ZM - Login</title> -- it it does then its the login page
+ // Coming here does not mean success
+ // it could also be a bad login, but
+ // ZM returns you to login.php and returns 200 OK
+ // so we will check if the data has
+ // <title>ZM - Login</title> -- it it does then its the login page
- if (data.indexOf(zm.loginScreenString) == -1) {
- //eventServer.start();
- //$rootScope.loggedIntoZm = 1;
+ if (data.indexOf(zm.loginScreenString) == -1) {
+ //eventServer.start();
+ //$rootScope.loggedIntoZm = 1;
- NVRDataModel.log("zmAutologin successfully logged into Zoneminder");
- $rootScope.apiValid = true;
+ NVRDataModel.log("zmAutologin successfully logged into Zoneminder");
+ $rootScope.apiValid = true;
- // now go to authKey part, so don't return yet...
+ // now go to authKey part, so don't return yet...
- } else // this means login error
- {
- // $rootScope.loggedIntoZm = -1;
- //console.log("**** ZM Login FAILED");
- NVRDataModel.log("zmAutologin Error: Bad Credentials ", "error");
- $rootScope.$broadcast('auth-error', "incorrect credentials");
+ } else // this means login error
+ {
+ // $rootScope.loggedIntoZm = -1;
+ //console.log("**** ZM Login FAILED");
+ NVRDataModel.log("zmAutologin Error: Bad Credentials ", "error");
+ $rootScope.$broadcast('auth-error', "incorrect credentials");
- d.reject("Login Error");
- return (d.promise);
- // no need to go to next code, so return above
- }
+ d.reject("Login Error");
+ return (d.promise);
+ // no need to go to next code, so return above
+ }
- // Now go ahead and re-get auth key
- // if login was a success
- $rootScope.authSession = "undefined";
- var ld = NVRDataModel.getLogin();
- NVRDataModel.getAuthKey($rootScope.validMonitorId)
- .then(function (success) {
+ // Now go ahead and re-get auth key
+ // if login was a success
+ $rootScope.authSession = "undefined";
+ var ld = NVRDataModel.getLogin();
+ NVRDataModel.getAuthKey($rootScope.validMonitorId)
+ .then(function (success) {
- //console.log(success);
- $rootScope.authSession = success;
- NVRDataModel.log("Stream authentication construction: " +
- $rootScope.authSession);
+ //console.log(success);
+ $rootScope.authSession = success;
+ NVRDataModel.log("Stream authentication construction: " +
+ $rootScope.authSession);
d.resolve("Login Success");
$rootScope.$broadcast('auth-success', data);
return d.promise;
- },
- function (error) {
- //console.log(error);
+ },
+ function (error) {
+ //console.log(error);
- NVRDataModel.log("Modal: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession);
- NVRDataModel.debug("Error was: " + JSON.stringify(error));
- d.resolve("Login Success");
- $rootScope.$broadcast('auth-success', data);
- });
+ NVRDataModel.log("Modal: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession);
+ NVRDataModel.debug("Error was: " + JSON.stringify(error));
+ d.resolve("Login Success");
+ $rootScope.$broadcast('auth-success', data);
+ });
- return (d.promise);
+ return (d.promise);
- },
- function (error, status) {
+ },
+ function (error, status) {
- // console.log(">>>>>>>>>>>>>> PARALLEL POST ERROR");
- $ionicLoading.hide();
+ // console.log(">>>>>>>>>>>>>> PARALLEL POST ERROR");
+ $ionicLoading.hide();
- //console.log("**** ZM Login FAILED");
+ //console.log("**** ZM Login FAILED");
- // FIXME: Is this sometimes results in null
+ // FIXME: Is this sometimes results in null
- NVRDataModel.log("zmAutologin Error " + JSON.stringify(error) + " and status " + status);
- // bad urls etc come here
- //$rootScope.loggedIntoZm = -1;
- $rootScope.$broadcast('auth-error', error);
+ NVRDataModel.log("zmAutologin Error " + JSON.stringify(error) + " and status " + status);
+ // bad urls etc come here
+ //$rootScope.loggedIntoZm = -1;
+ $rootScope.$broadcast('auth-error', error);
- d.reject("Login Error");
- return d.promise;
- });
- return d.promise;
+ d.reject("Login Error");
+ return d.promise;
+ });
+ return d.promise;
}
function start() {
@@ -1392,7 +1392,7 @@ angular.module('zmApp', [
var ld = NVRDataModel.getLogin();
$interval.cancel(zmAutoLoginHandle);
- // $rootScope.loggedIntoZm = 0;
+ // $rootScope.loggedIntoZm = 0;
NVRDataModel.log("Cancelling zmAutologin timer");
}
@@ -1482,7 +1482,7 @@ angular.module('zmApp', [
$rootScope.toTime = "";
$rootScope.fromString = "";
$rootScope.toString = "";
- // $rootScope.loggedIntoZm = 0;
+ // $rootScope.loggedIntoZm = 0;
$rootScope.apnsToken = '';
$rootScope.tappedNotification = 0;
$rootScope.tappedMid = 0;
@@ -1514,7 +1514,7 @@ angular.module('zmApp', [
NVRDataModel.debug("**EXCEPTION**" + error.reason + " caused by " + error.cause);
};
-
+
if ($rootScope.platformOS == 'desktop' && 0) {
window.addEventListener('beforeunload', function (ev) {
@@ -1540,7 +1540,7 @@ angular.module('zmApp', [
});
});
- }
+ }
// DPAD Handler - disabled for now
// when ready add ionic cordova plugin add https://github.com/pliablepixels/cordova-plugin-android-tv.git
@@ -1677,7 +1677,7 @@ angular.module('zmApp', [
$rootScope.online = true;
$timeout(function () {
- // NVRDataModel.debug ("Ignoring - Alex R. Hack");
+ // NVRDataModel.debug ("Ignoring - Alex R. Hack");
if (0) {
var networkState = "browser not supported";
if (navigator.connection) networkState = navigator.connection.type;
@@ -1693,12 +1693,12 @@ angular.module('zmApp', [
NVRDataModel.debug("Not changing bandwidth state, as auto change is not on");
}
NVRDataModel.log("Your network is online, re-authenticating");
- zmAutoLogin.doLogin($translate.instant('kReAuthenticating'));
+ zmAutoLogin.doLogin($translate.instant('kReAuthenticating'));
}
-
+
}, 1000); // need a time gap, seems network type registers late
-
+
});
}, false);
@@ -1767,7 +1767,7 @@ angular.module('zmApp', [
$rootScope.dpadId = 0;
-
+
if ($rootScope.apiValid == false && toState.name != 'app.invalidapi' && toState.data.requireLogin == true) {
event.preventDefault();
@@ -1778,27 +1778,26 @@ angular.module('zmApp', [
}
-
- if ((NVRDataModel.hasLoginInfo() || toState.data.requireLogin == false) && toState.name != "app.invalidapi" ) {
+
+ if ((NVRDataModel.hasLoginInfo() || toState.data.requireLogin == false) && toState.name != "app.invalidapi") {
//console.log("State transition is authorized");
- if (toState.name != "app.refresh" &&
- toState.name != "app.first-use" &&
- toState.name != "app.zm-portal-login"
- )
- {
+ if (toState.name != "app.refresh" &&
+ toState.name != "app.first-use" &&
+ toState.name != "app.zm-portal-login"
+ ) {
- NVRDataModel.debug ("Setting last-desktop-state to:"+JSON.stringify(toState));
+ NVRDataModel.debug("Setting last-desktop-state to:" + JSON.stringify(toState));
localforage.setItem('last-desktop-state', {
'name': toState.name,
'params': toState.params
});
-
-
+
+
}
$rootScope.dpadState = toState.name.replace("app.", "");
return;
-
+
} else {
NVRDataModel.log("In Auth State trans: Not logged in, requested to go to " + JSON.stringify(toState));
// event.preventDefault();
@@ -1826,8 +1825,8 @@ angular.module('zmApp', [
// right about now, store last-state as the callback doesn't seem
// to work in Windows
-
- NVRDataModel.debug ("Setting last-desktop-state to:"+JSON.stringify(toState)+" with params:"+JSON.stringify(toParams));
+
+ NVRDataModel.debug("Setting last-desktop-state to:" + JSON.stringify(toState) + " with params:" + JSON.stringify(toParams));
localforage.setItem('last-desktop-state', {
'name': toState,
'params': toParams
@@ -1896,12 +1895,15 @@ angular.module('zmApp', [
//console.log("localforage config");
NVRDataModel.configureStorageDB()
- .then (function () {NVRDataModel.log ("localforage driver:"+localforage.driver()); return NVRDataModel.cloudSync(); } )
- .then(function () {
+ .then(function () {
+ NVRDataModel.log("localforage driver:" + localforage.driver());
+ return NVRDataModel.cloudSync();
+ })
+ .then(function () {
// this should alert "cordovaSQLiteDriver" when in an emulator or a device
-
+
// Now lets import old data if it exists:
- NVRDataModel.log ("Cloudsync operation complete, continuing...");
+ NVRDataModel.log("Cloudsync operation complete, continuing...");
var defaultServerName = $localstorage.get("defaultServerName");
localforage.getItem("defaultServerName")
@@ -1995,9 +1997,9 @@ angular.module('zmApp', [
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
- if (window.cordova ) {
+ if (window.cordova) {
console.log("------------->Keyboard foonone");
- //window.cordova.plugins.Keyboard.disableScroll(true);
+ //window.cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
@@ -2061,7 +2063,7 @@ angular.module('zmApp', [
NVRDataModel.log("First time detected ");
$state.go("app.first-use");
return;
-
+
} else {
continueRestOfInit();
}
@@ -2080,12 +2082,16 @@ angular.module('zmApp', [
localforage.getItem('last-desktop-state')
.then(function (succ) {
- console.log ("FOUND STATE" + JSON.stringify(succ) + ":"+succ);
+ console.log("FOUND STATE" + JSON.stringify(succ) + ":" + succ);
// sanitize this
- if (!succ.name || typeof succ.name !== 'string') {succ.name = "app.montage";}
-
- if (!succ.params) {succ.params = {};}
+ if (!succ.name || typeof succ.name !== 'string') {
+ succ.name = "app.montage";
+ }
+
+ if (!succ.params) {
+ succ.params = {};
+ }
if (succ) {
if (succ.name == 'app.invalidapi' || succ.name == 'app.refresh' || succ.name == 'app.importantmessage' || succ.name == "app.first-use" || succ.name == "app.zm-portal-login" || !succ.name) {
succ.name = 'app.montage';
@@ -2094,7 +2100,7 @@ angular.module('zmApp', [
$rootScope.lastState = succ.name;
if ($rootScope.lastState.indexOf("app.") == -1) {
$rootScope.lastState = "app." + $rootScope.lastState;
-
+
}
$rootScope.lastStateParam = succ.params;
@@ -2102,7 +2108,7 @@ angular.module('zmApp', [
NVRDataModel.debug("last state=" + $rootScope.lastState + " param=" + $rootScope.lastStateParam);
-
+
}
loadServices();
@@ -2123,7 +2129,7 @@ angular.module('zmApp', [
zmCheckUpdates.start();
NVRDataModel.log("Setting up POST LOGIN timer");
zmAutoLogin.start();
- setupPauseAndResume();
+ setupPauseAndResume();
}
@@ -2132,25 +2138,24 @@ angular.module('zmApp', [
function setupPauseAndResume() {
NVRDataModel.log("Setting up pause and resume handler AFTER language is loaded...");
-
+
if ($rootScope.platformOS != 'android') {
- document.addEventListener("resume", function () {
- resumeHandler();
+ document.addEventListener("resume", function () {
+ resumeHandler();
}, false);
document.addEventListener("pause", function () {
pauseHandler();
}, false);
- }
- else {
- NVRDataModel.debug ("Android detected, using cordova-multiwindow plugin for onStop/onStart instead");
+ } else {
+ NVRDataModel.debug("Android detected, using cordova-multiwindow plugin for onStop/onStart instead");
window.MultiWindowPlugin.registerOnStop("app-pause", pauseHandler);
window.MultiWindowPlugin.registerOnStart("app-resume", resumeHandler);
-
+
}
-
+
function resumeHandler() {
NVRDataModel.setBackground(false);
NVRDataModel.setJustResumed(true);
@@ -2281,7 +2286,7 @@ angular.module('zmApp', [
// a) https://www.exratione.com/2013/08/angularjs-wrapping-http-for-fun-and-profit/
// b) https://gist.github.com/adamreisnz/354364e2a58786e2be71
- $provide.decorator('$http', ['$delegate', '$q', function($delegate, $q) {
+ $provide.decorator('$http', ['$delegate', '$q', function ($delegate, $q) {
// create function which overrides $http function
var $http = $delegate;
@@ -2289,12 +2294,12 @@ angular.module('zmApp', [
var url;
var method;
- url = arguments[0].url;
- method = arguments[0].method;
+ url = arguments[0].url;
+ method = arguments[0].method;
var isOutgoingRequest = /^(http|https):\/\//.test(url);
if (window.cordova && isOutgoingRequest) {
-
-
+
+
var d = $q.defer();
var options = {
method: method,
@@ -2303,41 +2308,44 @@ angular.module('zmApp', [
timeout: arguments[0].timeout,
responseType: arguments[0].responseType
};
- // console.log ("**** -->"+method+"<-- using native HTTP with:"+encodeURI(url)+" payload:"+JSON.stringify(options));
- cordova.plugin.http.sendRequest(encodeURI(url),options,
+ // console.log ("**** -->"+method+"<-- using native HTTP with:"+encodeURI(url)+" payload:"+JSON.stringify(options));
+ cordova.plugin.http.sendRequest(encodeURI(url), options,
function (succ) {
// automatic JSON parse if no responseType: text
// fall back to text if JSON parse fails too
- if (options.responseType =='text') {
+ if (options.responseType == 'text') {
// don't parse into JSON
- d.resolve({"data":succ.data});
+ d.resolve({
+ "data": succ.data
+ });
return d.promise;
- }
- else {
+ } else {
try {
- d.resolve({"data":JSON.parse(succ.data)});
+ d.resolve({
+ "data": JSON.parse(succ.data)
+ });
return d.promise;
- }
- catch (e) {
+ } catch (e) {
- //console.log ("*** Native HTTP response: JSON parsing failed for "+url+", returning text");
- d.resolve({"data":succ.data});
+ //console.log ("*** Native HTTP response: JSON parsing failed for "+url+", returning text");
+ d.resolve({
+ "data": succ.data
+ });
return d.promise;
}
}
- },
+ },
function (err) {
- console.log ("*** Inside native HTTP error: "+JSON.stringify(err));
-
+ console.log("*** Inside native HTTP error: " + JSON.stringify(err));
+
d.reject(err);
return d.promise;
});
- return d.promise;
-
- }
- else { // not cordova, so lets go back to default http
- // console.log ("**** "+method+" using XHR HTTP for "+url);
+ return d.promise;
+
+ } else { // not cordova, so lets go back to default http
+ // console.log ("**** "+method+" using XHR HTTP for "+url);
return $http.apply($http, arguments);
}
@@ -2351,23 +2359,23 @@ angular.module('zmApp', [
return $http[key].apply($http, arguments);
};
});
- // wrap convenience functions
- $delegate.get = function (url,config) {
+ // wrap convenience functions
+ $delegate.get = function (url, config) {
return wrapper(angular.extend(config || {}, {
method: 'get',
url: url
}));
};
- $delegate.post = function (url,data,config) {
+ $delegate.post = function (url, data, config) {
return wrapper(angular.extend(config || {}, {
method: 'post',
url: url,
- data:data
+ data: data
}));
};
- $delegate.delete = function (url,config) {
+ $delegate.delete = function (url, config) {
return wrapper(angular.extend(config || {}, {
method: 'delete',
url: url
@@ -2436,7 +2444,7 @@ angular.module('zmApp', [
//controller: 'AppCtrl'
})
-
+
.state('app.login', {
data: {
diff --git a/www/js/ionicUtils.js b/www/js/ionicUtils.js
index c5da1304..cf75d1f4 100644
--- a/www/js/ionicUtils.js
+++ b/www/js/ionicUtils.js
@@ -21,7 +21,7 @@ angular.module('ionic.utils', [])
$window.localStorage[key] = JSON.stringify(value);
},
getObject: function (key) {
-
+
return JSON.parse($window.localStorage[key] || '{}');
}
};