diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2020-09-08 18:57:29 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2020-09-08 18:57:29 -0400 |
| commit | 7dfe1929c106caf71b00caa81fd4dcd8c92887a9 (patch) | |
| tree | d567298a7a474978fc471fa924fae5da72f57b7b /www/js/EventCtrl.js | |
| parent | cc58763cf182ec18efeb374bee0d9091dfb647df (diff) | |
#970 reset event loadMore and getInitialEvents code, keep delta and maxEventsToLoad
Diffstat (limited to 'www/js/EventCtrl.js')
| -rw-r--r-- | www/js/EventCtrl.js | 307 |
1 files changed, 303 insertions, 4 deletions
diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js index 909830c3..2a75cccc 100644 --- a/www/js/EventCtrl.js +++ b/www/js/EventCtrl.js @@ -62,7 +62,7 @@ angular.module('zmApp.controllers') var currentPageLength = 0; var currentPageData; var loadMoreTime; - var maxEventsToLoad = 5; //limit to 5 to minimise memory usage when displaying gifs + var maxEventsToLoad = 50; $scope.typeOfFrames = $translate.instant('kShowTimeDiffFrames'); $scope.outlineMotion = false; @@ -250,6 +250,12 @@ angular.module('zmApp.controllers') $scope.rowHeight = $scope.rowHeightRegular; $scope.mid = ''; + if (ld.eventViewThumbs != 'objdetect_gif') { + maxEventsToLoad = 50; + } else { + maxEventsToLoad = 5;//limit to 5 to minimise memory usage when displaying gifs + } + $scope.$on ("alarm", function() { NVR.debug ("EventCtrl: new event notification, doing an immediate reload"); @@ -450,6 +456,170 @@ angular.module('zmApp.controllers') function getInitialEvents() { NVR.debug("getInitialEvents called"); + var lData = NVR.getLogin(); + loadMoreTime = Date.now(); + + + // If you came from Monitors, disregard hidden monitors in montage + /* if (lData.persistMontageOrder && stackState != "Monitors") { + var tempMon = message; + $scope.monitors = NVR.applyMontageMonitorPrefs(tempMon, 2)[0]; + } else*/ + $scope.monitors = message; + currEventsPage = 1; + maxEventsPage = 1; + + if ($scope.monitors.length == 0) { + var pTitle = $translate.instant('kNoMonitors'); + $ionicPopup.alert({ + title: pTitle, + template: "{{'kCheckCredentials' | translate }}", + okText: $translate.instant('kButtonOk'), + cancelText: $translate.instant('kButtonCancel'), + }); + $ionicHistory.nextViewOptions({ + disableBack: true + }); + $state.go("app.login", { + "wizard": false + }); + return; + } + + $scope.events = []; + + // First get total pages and then + // start from the latest. If this fails, nothing displays + + NVR.debug("EventCtrl: grabbing # of event pages"); + 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"); + + //NVR.debug ("GETTING EVENTS USING "+$scope.id+" "+nolangFrom+" "+ nolangTo); + + + NVR.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"); + + NVR.getEvents($scope.id, currEventsPage, "", nolangFrom, nolangTo, false, $rootScope.monitorsFilter) + .then(function (data) { + + pageLoaded = true; + //$scope.viewTitle.title = data.pagination.count; + + // console.log(JSON.stringify(data.pagination)); + if (data.pagination && data.pagination.pageCount) + maxEventsPage = data.pagination.pageCount; + + NVR.debug("We have a total of " + maxEventsPage + " and are at page=" + currEventsPage); + + // console.log ("WE GOT EVENTS="+JSON.stringify(data)); + var myevents = data.events; + + NVR.debug("EventCtrl: success, got " + myevents.length + " events"); + var loginData = NVR.getLogin(); + + //console.log ("-------->MON LEN"+$scope.monitors.length); + + 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 && (NVR.isNotHidden(myevents[i].Event.MonitorId) || showHiddenMonitors)) { + // console.log ("FOUND IT"); + + idfound = true; + break; + } + } + } + + //console.log ("IDFOUND="+idfound + " AND MON LEN="+$scope.monitors.length); + + myevents[i].Event.humanizeTime = humanizeTime(myevents[i].Event.StartTime); + myevents[i].Event.streamingURL = NVR.getStreamingURL(myevents[i].Event.MonitorId); + myevents[i].Event.recordingURL = NVR.getRecordingURL(myevents[i].Event.MonitorId); + myevents[i].Event.imageMode = NVR.getImageMode(myevents[i].Event.MonitorId); + + //console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL); + + // console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.recordingURL); + + myevents[i].Event.MonitorName = NVR.getMonitorName(myevents[i].Event.MonitorId); + myevents[i].Event.ShowScrub = false; + myevents[i].Event.rowHeight = $scope.rowHeightRegular; + // now construct base path + + + // get thumbW/H + + var tempMon = NVR.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 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 + + // console.log ("COMPARING "+NVR.getLogin().url+ " TO " +myevents[i].Event.recordingURL); + + + + myevents[i].Event.videoPath = myevents[i].Event.recordingURL + "/index.php?view=view_video&eid=" + myevents[i].Event.Id; + + // if (idfound) + if (idfound) { + + //NVR.debug ("PUSHING "+JSON.stringify(myevents[i])); + $scope.events.push(myevents[i]); + //console.log ("SCOPE EVENTS LEN="+$scope.events.length); + } else { + //NVR.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 < maxEventsToLoad) { + //console.log ("EVENTS LOADED="+JSON.stringify($scope.events)); + NVR.debug("EventCtrl:loading one more page just in case we don't have enough to display"); + loadMore(); + } + }); + + } + + function getInitiaNew() { + NVR.debug("getInitialEvents called"); $scope.eventsBeingLoaded = true; $ionicScrollDelegate.$getByHandle("mainScroll").scrollTop(); var lData = NVR.getLogin(); @@ -459,6 +629,7 @@ angular.module('zmApp.controllers') var tempMon = message; $scope.monitors = NVR.applyMontageMonitorPrefs(tempMon, 2)[0]; } else*/ + moreEvents = false; $scope.monitors = message; currEventsPage = 1; maxEventsPage = 1; @@ -515,7 +686,7 @@ angular.module('zmApp.controllers') maxEventsToLoad = 50; //limit to 5 to minimise memory usage when displaying gifs } NVR.debug("maxEventsToLoad: " + maxEventsToLoad); - + NVR.getEvents($scope.id, currEventsPage, "", nolangFrom, nolangTo, false, $rootScope.monitorsFilter) .then(function (data) { // console.log(JSON.stringify(data.pagination)); @@ -535,6 +706,7 @@ angular.module('zmApp.controllers') // so this can be false once we have _some_ content $scope.eventsBeingLoaded = false; moreEvents = true; + // to avoid only few events being displayed // if last page has less events //console.log("**Loading Next Page ***"); @@ -2829,6 +3001,132 @@ angular.module('zmApp.controllers') // except greater page limits than reported //console.log("***** LOADING MORE INFINITE SCROLL ****"); + + if ((currEventsPage >= maxEventsPage) && (pageLoaded)) { + moreEvents = false; + NVR.debug("No more - We have a total of " + maxEventsPage + " and are at page=" + currEventsPage); + + // console.log("*** At Page " + currEventsPage + " of " + maxEventsPage + ", not proceeding"); + $ionicLoading.hide(); + return; + } + + currEventsPage++; + if (!enableLoadMore) { + $ionicLoading.hide(); + moreEvents = false; // Don't ion-scroll till enableLoadMore is true; + $scope.$broadcast('scroll.infiniteScrollComplete'); + + // console.log("**** LOADMORE ARTIFICALLY DISABLED"); + return; + } + + var loadingStr = ""; + if ($scope.search.text != "") { + + var toastStr = $translate.instant('kPleaseWait') +'...'+ currEventsPage; + // console.log ("SHOW " + toastStr ); + $ionicLoading.show({ + maxwidth: 100, + noBackdrop:true, + scope: $scope, + template: toastStr, + //template: '<button class="button button-clear icon-left ion-close-circled button-text-wrap" ng-click="cancelSearch()" >' + toastStr + '</button>' + }); + + loadingStr = "none"; + } + + 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"); + + 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); + var myevents = data.events; + + + for (var i = 0; i < myevents.length; i++) { + + var idfound = true; + var ld = NVR.getLogin(); + + if (ld.persistMontageOrder) { + idfound = false; + for (var ii = 0; ii < $scope.monitors.length; ii++) { + if ($scope.monitors[ii].Monitor.Id == myevents[i].Event.MonitorId && (NVR.isNotHidden(myevents[i].Event.MonitorId) || showHiddenMonitors)) { + + //console.log ( $scope.monitors[ii].Monitor.Id + " MATCHES " + myevents[i].Event.MonitorId); + idfound = true; + + break; + } + } + } + + myevents[i].Event.humanizeTime = humanizeTime(myevents[i].Event.StartTime); + myevents[i].Event.MonitorName = NVR.getMonitorName(myevents[i].Event.MonitorId); + // now construct base path + + myevents[i].Event.streamingURL = NVR.getStreamingURL(myevents[i].Event.MonitorId); + myevents[i].Event.recordingURL = NVR.getRecordingURL(myevents[i].Event.MonitorId); + myevents[i].Event.imageMode = NVR.getImageMode(myevents[i].Event.MonitorId); + // console.log ("***** MULTISERVER STREAMING URL FOR EVENTS " + myevents[i].Event.streamingURL); + + // console.log ("***** MULTISERVER BASE URL FOR EVENTS " + myevents[i].Event.recordingURL); + + myevents[i].Event.ShowScrub = false; + myevents[i].Event.rowHeight = $scope.rowHeightRegular; + + + // get thumbW/H + + var tempMon = NVR.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 th = computeThumbnailSize(mw, mh, mo); + myevents[i].Event.thumbWidth = th.w; + myevents[i].Event.thumbHeight = th.h; + + } + + + + myevents[i].Event.videoPath = myevents[i].Event.recordingURL + "/index.php?view=view_video&eid=" + myevents[i].Event.Id; + + if (idfound) $scope.events.push(myevents[i]); + } + + //console.log("Got new page of events"); + moreEvents = true; + $scope.$broadcast('scroll.infiniteScrollComplete'); + }, + + function (error) { + // console.log("*** No More Events to Load, Stop Infinite Scroll ****"); + moreEvents = false; + $ionicLoading.hide(); + $scope.$broadcast('scroll.infiniteScrollComplete'); + + }); + } + + function loadMoreNew() { + // the events API does not return an error for anything + // except greater page limits than reported + + //console.log("***** LOADING MORE INFINITE SCROLL ****"); loadMoreTime = Date.now(); if (currentPagePosition > 0 && currentPagePosition >= currentPageLength) { @@ -2908,6 +3206,7 @@ angular.module('zmApp.controllers') } $scope.loadMore = function () { + var now = Date.now(); if (now - loadMoreTime > 1500) { NVR.debug("$scope.loadMore > loadMore() ... delta: " + (now - loadMoreTime)); @@ -3222,7 +3521,7 @@ angular.module('zmApp.controllers') //-------------------------------------------------------- $scope.dummyDoRefresh = function () { - $scope.$broadcast('scroll.refreshComplete'); + // $scope.$broadcast('scroll.refreshComplete'); }; $scope.doRefresh = function () { @@ -3257,7 +3556,7 @@ angular.module('zmApp.controllers') moreEvents = true; }); - $scope.$broadcast('scroll.refreshComplete'); + //$scope.$broadcast('scroll.refreshComplete'); } }]); |
