summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2019-05-29 11:45:23 -0400
committerPliable Pixels <pliablepixels@gmail.com>2019-05-29 11:45:23 -0400
commit2e44ed65be3ad42190af1e590a30ac2866ef65c4 (patch)
treee833d7214a9183412be90c38fd12cf94b55510eb
parent2f59a4e6ade708f320bb2212c11e6ff2d4259eec (diff)
add ability to filter events by monitor
-rw-r--r--www/js/EventCtrl.js5
-rw-r--r--www/js/EventDateTimeFilterCtrl.js51
-rw-r--r--www/js/NVR.js6
-rw-r--r--www/js/TimelineCtrl.js2
-rw-r--r--www/templates/events-date-time-filter.html16
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> &nbsp;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>