diff options
| -rw-r--r-- | www/js/EventCtrl.js | 5 | ||||
| -rw-r--r-- | www/js/EventDateTimeFilterCtrl.js | 51 | ||||
| -rw-r--r-- | www/js/NVR.js | 6 | ||||
| -rw-r--r-- | www/js/TimelineCtrl.js | 2 | ||||
| -rw-r--r-- | www/templates/events-date-time-filter.html | 16 |
5 files changed, 75 insertions, 5 deletions
diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js index c1311ebd..08d54aba 100644 --- a/www/js/EventCtrl.js +++ b/www/js/EventCtrl.js @@ -450,7 +450,7 @@ angular.module('zmApp.controllers') if ($rootScope.toString) nolangTo = moment($rootScope.toString).locale('en').format("YYYY-MM-DD HH:mm:ss"); - NVR.getEvents($scope.id, currEventsPage, "", nolangFrom, nolangTo) + NVR.getEvents($scope.id, currEventsPage, "", nolangFrom, nolangTo, false, $rootScope.monitorsFilter) .then(function (data) { pageLoaded = true; @@ -1820,6 +1820,7 @@ angular.module('zmApp.controllers') $rootScope.toTime = ""; $rootScope.fromString = ""; $rootScope.toString = ""; + $rootScope.monitorsFilter = ''; $scope.id = 0; $scope.showEvent = false; @@ -2795,7 +2796,7 @@ angular.module('zmApp.controllers') if ($rootScope.toString) nolangTo = moment($rootScope.toString).locale('en').format("YYYY-MM-DD HH:mm:ss"); - NVR.getEvents($scope.id, currEventsPage, loadingStr, nolangFrom, nolangTo) + NVR.getEvents($scope.id, currEventsPage, loadingStr, nolangFrom, nolangTo, false,$rootScope.monitorsFilter) .then(function (data) { var loginData = NVR.getLogin(); // console.log("Got new page of events with Page=" + eventsPage); diff --git a/www/js/EventDateTimeFilterCtrl.js b/www/js/EventDateTimeFilterCtrl.js index 0e5f9988..ffe8cd62 100644 --- a/www/js/EventDateTimeFilterCtrl.js +++ b/www/js/EventDateTimeFilterCtrl.js @@ -27,8 +27,30 @@ angular.module('zmApp.controllers') $scope.$on('$ionicView.beforeEnter', function () { $scope.today = moment().format("YYYY-MM-DD"); + $scope.monitors = NVR.getMonitorsNow(); + if (!$scope.monitors.length) { + NVR.getMonitors(1) + .then (function (data) { + $scope.monitors = data; + for (var i=0; i < $scope.monitors.length; i++) { + if ($scope.monitors[i].Monitor.isChecked == undefined) + $scope.monitors[i].Monitor.isChecked = true; + } + }); + } + else { + for (var i=0; i < $scope.monitors.length; i++) { + if ($scope.monitors[i].Monitor.isChecked == undefined) + $scope.monitors[i].Monitor.isChecked = true; + } + } + $scope.monitorsExpanded = false; }); + $scope.toggleMonitors = function() { + $scope.monitorsExpanded = !$scope.monitorsExpanded; + + }; //-------------------------------------------------------------------------- // Clears filters //-------------------------------------------------------------------------- @@ -124,6 +146,35 @@ angular.module('zmApp.controllers') disableBack: true }); + var includeString=''; + var excludeString=''; + var totalUnchecked = 0; + var totalChecked = 0; + + for (var i=0; i < $scope.monitors.length; i++) { + if ($scope.monitors[i].Monitor.isChecked) { + totalChecked += 1; + includeString = includeString + '/MonitorId =:'+$scope.monitors[i].Monitor.Id; + } + else { + totalUnchecked +=1; + excludeString = excludeString + '/MonitorId !=:'+$scope.monitors[i].Monitor.Id; + } + } + if (!totalUnchecked) { + $rootScope.monitorsFilter = ''; + } else { + if (totalUnchecked >= totalChecked) { + $rootScope.monitorsFilter = includeString; + } + else { + $rootScope.monitorsFilter = excludeString; + } + } + + + //console.log (">>>>>>>>>>>>> MON FILTER="+$rootScope.monitorsFilter); + //console.log (" >>>>>>>> BACK VIEW = "+$ionicHistory.backTitle()); if ($ionicHistory.backTitle() == 'Timeline') { diff --git a/www/js/NVR.js b/www/js/NVR.js index fcde6fed..4eb81534 100644 --- a/www/js/NVR.js +++ b/www/js/NVR.js @@ -3189,7 +3189,7 @@ angular.module('zmApp.controllers') // new reminder // //https:///zm/api/events.json?&sort=StartTime&direction=desc&page=1 - getEvents: function (monitorId, pageId, loadingStr, startTime, endTime, noObjectFilter) { + getEvents: function (monitorId, pageId, loadingStr, startTime, endTime, noObjectFilter, monListFilter) { @@ -3226,6 +3226,10 @@ angular.module('zmApp.controllers') myurl = myurl + "/AlarmFrames >=:" + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0); + //console.log ('********* MON FILTER '+monListFilter); + if (monListFilter) + myurl = myurl + monListFilter; + // don't know why but adding page messes up Notes //https:///zm/api/events/index/Notes%20REGEXP: detected%3A.json if (loginData.objectDetectionFilter && !noObjectFilter) { diff --git a/www/js/TimelineCtrl.js b/www/js/TimelineCtrl.js index d2cc82ea..ed240a9f 100644 --- a/www/js/TimelineCtrl.js +++ b/www/js/TimelineCtrl.js @@ -1138,7 +1138,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla // I am waiting for the full data to load before I draw var promises = []; while ((pages <= epData.pageCount) && (iterCount > 0)) { - var promise = NVR.getEvents(0, pages, "none", fromDateNoLang, toDateNoLang, true); + var promise = NVR.getEvents(0, pages, "none", fromDateNoLang, toDateNoLang, true, $rootScope.monitorsFilter); promises.push(promise); pages++; diff --git a/www/templates/events-date-time-filter.html b/www/templates/events-date-time-filter.html index 262feed8..9d7b765d 100644 --- a/www/templates/events-date-time-filter.html +++ b/www/templates/events-date-time-filter.html @@ -16,7 +16,21 @@ <span class="input-label">{{'kToTime'|translate}}</span> <input type="time" ng-model="$root.toTime"> </label> - <br /> + + <ion-item class="custom-list" ng-click="toggleMonitors()"> + <i class="icon" ng-class="monitorsExpanded ? 'ion-minus' : 'ion-plus'"></i> Filter Monitors + </ion-item> + <ion-item class="item-accordion" ng-show="monitorsExpanded" ng-repeat="monitor in monitors"> + <span class="item-checkbox"> + + {{monitor.Monitor.Name}} + <label class="checkbox"> + <input type="checkbox" ng-model="monitor.Monitor.isChecked"> + </label> + </span> + </ion-item> + <br/> + <center> <button class="button" ng-click="saveFilters();"> {{'kSave'|translate}} </button> |
