diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2020-05-06 16:04:20 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2020-05-06 16:04:20 -0400 |
| commit | 0c1a83887147350dfce9c233bc12b6f72eee449a (patch) | |
| tree | 17ec916c38abe1c212adf14ececac0b4eb6383d2 /www/js/NVR.js | |
| parent | c0329cd12b864db809937ef7e99e36332260c3e7 (diff) | |
#939 Groups support in montage screen view new API
Diffstat (limited to 'www/js/NVR.js')
| -rw-r--r-- | www/js/NVR.js | 139 |
1 files changed, 130 insertions, 9 deletions
diff --git a/www/js/NVR.js b/www/js/NVR.js index e6eadfd8..6fed062b 100644 --- a/www/js/NVR.js +++ b/www/js/NVR.js @@ -21,7 +21,7 @@ angular.module('zmApp.controllers') DO NOT TOUCH zmAppVersion It is changed by sync_version.sh */ - var zmAppVersion = "1.4.005"; + var zmAppVersion = "1.4.006"; var isBackground = false; var justResumed = false; @@ -33,6 +33,7 @@ angular.module('zmApp.controllers') var monitors = []; + var zmgroups = []; var multiservers = []; var migrationComplete = false; @@ -223,6 +224,9 @@ angular.module('zmApp.controllers') 'showAnimation': true, 'montageHideFooter': false, 'httpCordovaNoEncode': false, + 'currentZMGroupName': '', + 'unsupported': {} + }; @@ -301,6 +305,22 @@ angular.module('zmApp.controllers') return true; } + + function clear_unsupported() { + loginData.unsupported = {}; + setLogin(loginData); + } + + function set_unsupported(p) { + loginData.unsupported[p] = true; + debug ('Setting '+p+' to unsupported'); + setLogin(loginData); + } + + function get_unsupported(p) { + return p? loginData.unsupported[p]:loginData.unsupported; + } + function getBandwidth() { // if mode is not on always return high if (loginData.enableLowBandwidth == false) { @@ -370,13 +390,19 @@ angular.module('zmApp.controllers') } function delete_all_caches() { + debug ('Clearing all unsupported flags'); + clear_unsupported(); + debug ('CACHE: Flushing all network API caches...'); return localforage.removeItem('cached_monitors') .then ( function () {return localforage.removeItem('cached_api_version');}) .then ( function () {return localforage.removeItem('cached_multi_servers');}) .then ( function () {return localforage.removeItem('cached_multi_port');}) .then ( function () {return localforage.removeItem('cached_timezone');}) + .then ( function () {return localforage.removeItem('cached_zmgroups');}) .catch ( function (err) {debug ('Error removing all caches: '+JSON.stringify(err));}); + + } @@ -451,7 +477,7 @@ angular.module('zmApp.controllers') return d.promise; }) .catch ( function (err) { - log ('CACHE: error with http get '+err); + log ('CACHE: error with http get '+JSON.stringify(err)); d.reject(err); return d.promise; }); @@ -459,13 +485,67 @@ angular.module('zmApp.controllers') }) .catch ( function (err) { - debug ('cache_or_http error:'+err); - return $http.get(url); + //debug ('cache_or_http error:'+JSON.stringify(err)); + d.reject(err); + return d.promise; + //return $http.get(url); }) ; - debug ('returning promise'); + //debug ('returning promise'); return d.promise; } + function getZMGroups() { + //{"groups":[{"Group":{"Id":"1","Name":"test","ParentId":null}},{"Group":{"Id":"2","Name":"test2","ParentId":null}}]} + var d = $q.defer(); + + if (get_unsupported('groups_associations')) { + debug ('Groups Association API is marked as unsupported, not invoking'); + d.resolve(true); + return d.promise; + } + + var apiurl = loginData.apiurl+'/groups/associations.json?'+$rootScope.authSession; + + for (var m=0; m < monitors.length; m++ ) { + if (!monitors[m].Monitor.Group) monitors[m].Monitor.Group=[]; + } + + cache_or_http(apiurl, 'cached_zmgroups') + .then (function (data) { + data = data.data; +// console.log (JSON.stringify(data)); + + debug ('Groups are:'+JSON.stringify(data)); + if (data && data.groups) { + for (var i=0; i< data.groups.length; i++) { + zmgroups.push(data.groups[i].Group.Name); + //console.log( "Checking Group "+data.groups[i].Group.Name); + for (var j=0; j < data.groups[i].Monitor.length; j++) { + for (var k = 0; k < monitors.length; k++) { + // console.log(k); + if (monitors[k].Monitor.Id == data.groups[i].Monitor[j].Id) { + monitors[k].Monitor.Group.push({'id':data.groups[i].Group.Id, 'name':data.groups[i].Group.Name}); + // console.log ('Monitor: '+ monitors[k].Monitor.Name+" belongs to Group:"+data.groups[i].Group.Name); + } + } // monitors + } // groups monitors + } // groups + d.resolve(true); + return (d.promise); + } else { + debug ('No groups found'); + d.resolve(true); + return (d.promise); + } + }, function (err) { + debug('Error retrieving groups:'+JSON.stringify(err)); + set_unsupported('groups_associations'); + d.resolve(true); + return (d.promise); + }); + return (d.promise); + } + function getZmsMultiPortSupport(forceReload) { var d = $q.defer(); if (configParams.ZM_MIN_STREAMING_PORT == -1 || forceReload) { @@ -1637,13 +1717,24 @@ angular.module('zmApp.controllers') if (typeof loginData.montageHideFooter == 'undefined') { loginData.montageHideFooter = false; } + if (typeof loginData.httpCordovaNoEncode == 'undefined') { loginData.httpCordovaNoEncode = false; } + + if (typeof loginData.currentZMGroupName == 'undefined') { + loginData.currentZMGroupName = ''; + } + + if (typeof loginData.unsupported == 'undefined') { + loginData.unsupported = {}; + } + + loginData.canSwipeMonitors = true; loginData.forceImageModePath = false; @@ -1754,6 +1845,18 @@ angular.module('zmApp.controllers') return { + clear_unsupported: function () { + return clear_unsupported(); + }, + + set_unsupported: function (data) { + return set_unsupported(data); + }, + + get_unsupported: function (data) { + return get_unsupported(data); + }, + encrypt: function(data) { return encrypt(data); }, @@ -2626,6 +2729,9 @@ angular.module('zmApp.controllers') }, + getZMGroups: function () { + return getZMGroups(); + }, //----------------------------------------------------------------------------- // This function returns the numdigits for padding capture images @@ -2735,6 +2841,10 @@ angular.module('zmApp.controllers') return monitors; }, + listOfZMGroups: function () { + return zmgroups; + }, + pauseLiveStream: function (ck, url, name) { if (!url) url = loginData.url; @@ -2811,6 +2921,8 @@ angular.module('zmApp.controllers') return regenConnKeys (mon); }, + + getMonitors: function (forceReload) { //console.log("** Inside ZMData getMonitors with forceReload=" + forceReload); @@ -2832,7 +2944,7 @@ angular.module('zmApp.controllers') var apiurl = loginData.apiurl; var myurl = apiurl + "/monitors"; myurl += "/index/"+"Type !=:WebSite.json" + "?"+$rootScope.authSession; - + getZmsMultiPortSupport() .then(function (zmsPort) { @@ -3069,7 +3181,11 @@ angular.module('zmApp.controllers') } // now get packery hide if applicable reloadMonitorDisplayStatus(); - d.resolve(monitors); + getZMGroups().then ( function (succ) { + d.resolve(monitors); + return d.promise; + }); + return d.promise; }, function (err) { log("multi server list loading error"); @@ -3109,7 +3225,11 @@ angular.module('zmApp.controllers') //debug("API " + $rootScope.apiVersion + ": Monitor " + monitors[i].Monitor.Id + " will use " + monitors[i].Monitor.imageMode + " for direct image access"); } - d.resolve(monitors); + getZMGroups().then ( function (succ) { + d.resolve(monitors); + return d.promise; + }); + return d.promise; }); @@ -3128,9 +3248,10 @@ angular.module('zmApp.controllers') d.resolve(monitors); $ionicLoading.hide(); monitorsLoaded = 0; + return d.promise; }); }); - + return d.promise; } else // monitors are loaded |
