diff options
Diffstat (limited to 'www/js')
| -rw-r--r-- | www/js/DataModel.js | 7 | ||||
| -rw-r--r-- | www/js/LoginCtrl.js | 3 | ||||
| -rw-r--r-- | www/js/TimelineCtrl.js | 266 |
3 files changed, 198 insertions, 78 deletions
diff --git a/www/js/DataModel.js b/www/js/DataModel.js index ad1aaff6..e6af8baa 100644 --- a/www/js/DataModel.js +++ b/www/js/DataModel.js @@ -1493,6 +1493,9 @@ angular.module('zmApp.controllers') }, + getLocalTimeZoneNow: function() { + return moment.tz.guess(); + }, //returns TZ value immediately (sync) getTimeZoneNow: function() { @@ -1507,10 +1510,10 @@ angular.module('zmApp.controllers') return isTzSupported; }, - getTimeZone: function() { + getTimeZone: function(isForce) { var d = $q.defer(); - if (!tz) { + if (!tz || isForce) { log("First invocation of TimeZone, asking server"); var apiurl = loginData.apiurl + '/host/getTimeZone.json'; diff --git a/www/js/LoginCtrl.js b/www/js/LoginCtrl.js index 4e4efc0a..db0440b4 100644 --- a/www/js/LoginCtrl.js +++ b/www/js/LoginCtrl.js @@ -606,10 +606,13 @@ angular.module('zmApp.controllers').controller('zmApp.LoginCtrl', ['$scope', '$r // possible image digits changed between servers NVRDataModel.getKeyConfigParams(0); + NVRDataModel.log("Validating APIs at " + apiurl); $http.get(apiurl) .success(function (data) { + + NVRDataModel.getTimeZone(true); var loginStatus = $translate.instant('kExploreEnjoy') + " " + $rootScope.appName + "!"; EventServer.refresh(); diff --git a/www/js/TimelineCtrl.js b/www/js/TimelineCtrl.js index 523c6d5d..0f67b085 100644 --- a/www/js/TimelineCtrl.js +++ b/www/js/TimelineCtrl.js @@ -96,7 +96,12 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla }); } - + // helps to navigate to current time quickly + // after a night of heavy navigation + $scope.gotoNow = function() + { + timeline.moveTo(timeline.getCurrentTime()); + }; $scope.move = function(percentage) { move(percentage); @@ -308,7 +313,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla $scope.$on('$ionicView.afterEnter', function() { $scope.monitors = message; - console.log("***AFTER ENTER"); + //console.log("***AFTER ENTER"); $scope.follow = { 'time': NVRDataModel.getLogin().followTimeLine }; @@ -353,11 +358,11 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla - console.log ("MONITORS:"+JSON.stringify($scope.monitors)); + //console.log ("MONITORS:"+JSON.stringify($scope.monitors)); if ($rootScope.customTimelineRange) { $scope.currentMode = 'custom'; - console.log("***** CUSTOM RANGE"); + //console.log("***** CUSTOM RANGE"); if (moment($rootScope.fromString).isValid() && moment($rootScope.toString).isValid()) { // console.log("FROM & TO IS CUSTOM"); @@ -368,15 +373,34 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla drawGraph(fromDate, toDate, maxItems); } else { console.log ("From:"+$rootScope.fromString + " To:"+$rootScope.toString); - console.log("FROM & TO IS CUSTOM INVALID"); - fromDate = moment().startOf('day').format("YYYY-MM-DD HH:mm:ss"); - toDate = moment().endOf('day').format("YYYY-MM-DD HH:mm:ss"); + //console.log("FROM & TO IS CUSTOM INVALID"); + + if (NVRDataModel.getLogin().useLocalTimeZone) + { + fromDate = moment().startOf('day').format("YYYY-MM-DD HH:mm:ss"); + toDate = moment().endOf('day').format("YYYY-MM-DD HH:mm:ss"); + } + else + { + fromDate = moment().tz(NVRDataModel.getTimeZoneNow()).startOf('day').format("YYYY-MM-DD HH:mm:ss"); + toDate = moment().tz(NVRDataModel.getTimeZoneNow()).endOf('day').format("YYYY-MM-DD HH:mm:ss"); + } + drawGraph(fromDate, toDate, maxItems); } } else { $scope.currentMode = 'day'; - fromDate = moment().startOf('day').format("YYYY-MM-DD HH:mm:ss"); - toDate = moment().endOf('day').format("YYYY-MM-DD HH:mm:ss"); + + if (NVRDataModel.getLogin().useLocalTimeZone) + { + fromDate = moment().startOf('day').format("YYYY-MM-DD HH:mm:ss"); + toDate = moment().endOf('day').format("YYYY-MM-DD HH:mm:ss"); + } + else + { + fromDate = moment().tz(NVRDataModel.getTimeZoneNow()).startOf('day').format("YYYY-MM-DD HH:mm:ss"); + toDate = moment().tz(NVRDataModel.getTimeZoneNow()).endOf('day').format("YYYY-MM-DD HH:mm:ss"); + } drawGraph(fromDate, toDate, maxItems); } @@ -449,8 +473,12 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla // fromDate and toDate will be used to plot the range for the graph // We start in day mode - var fromDate = moment().startOf('day').format("YYYY-MM-DD HH:mm:ss"); - var toDate = moment().endOf('day').format("YYYY-MM-DD HH:mm:ss"); + // + var fromDate, toDate; + + + fromDate = moment().tz(NVRDataModel.getLogin().useLocalTimeZone?NVRDataModel.getLocalTimeZoneNow():NVRDataModel.getTimeZoneNow()).startOf('day').format("YYYY-MM-DD HH:mm:ss"); + toDate = moment().tz(NVRDataModel.getLogin().useLocalTimeZone?NVRDataModel.getLocalTimeZoneNow():NVRDataModel.getTimeZoneNow()).endOf('day').format("YYYY-MM-DD HH:mm:ss"); @@ -566,8 +594,8 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla $scope.currentMode = "week"; $rootScope.customTimelineRange = false; NVRDataModel.log("Week view"); - toDate = moment().format("YYYY-MM-DD HH:mm:ss"); - fromDate = moment().subtract(1, 'week').startOf('day').format("YYYY-MM-DD HH:mm:ss"); + toDate = moment().tz(NVRDataModel.getLogin().useLocalTimeZone?NVRDataModel.getLocalTimeZoneNow():NVRDataModel.getTimeZoneNow()).format("YYYY-MM-DD HH:mm:ss"); + fromDate = moment().tz(NVRDataModel.getLogin().useLocalTimeZone?NVRDataModel.getLocalTimeZoneNow():NVRDataModel.getTimeZoneNow()).subtract(1, 'week').startOf('day').format("YYYY-MM-DD HH:mm:ss"); $scope.fromDate = fromDate; $scope.toDate = toDate; drawGraph(fromDate, toDate, maxItems); @@ -578,8 +606,8 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla $rootScope.customTimelineRange = false; NVRDataModel.log("Day view"); //toDate = moment().format("YYYY-MM-DD HH:mm:ss"); - fromDate = moment().startOf('day').format("YYYY-MM-DD HH:mm:ss"); - toDate = moment().endOf('day').format("YYYY-MM-DD HH:mm:ss"); + fromDate = moment().tz(NVRDataModel.getLogin().useLocalTimeZone?NVRDataModel.getLocalTimeZoneNow():NVRDataModel.getTimeZoneNow()).startOf('day').format("YYYY-MM-DD HH:mm:ss"); + toDate = moment().tz(NVRDataModel.getLogin().useLocalTimeZone?NVRDataModel.getLocalTimeZoneNow():NVRDataModel.getTimeZoneNow()).endOf('day').format("YYYY-MM-DD HH:mm:ss"); $scope.fromDate = fromDate; $scope.toDate = toDate; drawGraph(fromDate, toDate, maxItems); @@ -607,16 +635,24 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla var ld = NVRDataModel.getLogin(); // check for last 2 minutes to account for late DB updates and what not. 5 mins was likely enough - var from = moment(lastTimeForEvent).subtract(2, 'minutes').locale('en').format("YYYY-MM-DD HH:mm:ss"); - var to = moment().locale('en').format("YYYY-MM-DD HH:mm:ss"); - lastTimeForEvent = moment(); + // + + + // make sure these are server time + var from = moment(lastTimeForEvent).tz(NVRDataModel.getTimeZoneNow()); + from = from.subtract(2, 'minutes').locale('en').format("YYYY-MM-DD HH:mm:ss"); + + var to = moment(lastTimeForEvent).tz(NVRDataModel.getTimeZoneNow()); + to = to.locale('en').format("YYYY-MM-DD HH:mm:ss"); + + lastTimeForEvent = moment().tz(NVRDataModel.getLogin().useLocalTimeZone?NVRDataModel.getLocalTimeZoneNow():NVRDataModel.getTimeZoneNow()); // FIXME: totally ignoring event pages - hoping it wont be more than 100 or 150 whatever // the events per page limit is. Why? laziness. // - var completedEvents = ld.apiurl + '/events/index/StartTime >=:' + from; + var completedEvents = ld.apiurl + '/events/index/EndTime >=:' + from; // we can add alarmCount as this is really for completed events - completedEvents = completedEvents + "/AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0); + //completedEvents = completedEvents + "/AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0); completedEvents = completedEvents + ".json"; @@ -625,11 +661,15 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla // so, lets limiy to 15 m // - var st = moment().subtract (10,'minutes').locale('en').format("YYYY-MM-DD HH:mm:ss"); + var st = moment(lastTimeForEvent).tz(NVRDataModel.getTimeZoneNow()); + st = st.subtract (10,'minutes').locale('en').format("YYYY-MM-DD HH:mm:ss"); var ongoingEvents = ld.apiurl + '/events/index/StartTime >=:'+st+'/EndTime =:.json'; //NVRDataModel.debug("Getting incremental events using: " + completedEvents); + NVRDataModel.debug ("Completed events API:"+completedEvents); + NVRDataModel.debug ("Ongoing events API:+"+ongoingEvents); + isProcessNewEventsWaiting = true; var $httpApi = $http.get(completedEvents); @@ -651,60 +691,81 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla for (var j = 0; j < myevents.length; j++) { - // get rid of the moment js deprecation notice - myevents[j].Event.StartTime = moment.tz(myevents[j].Event.StartTime, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format('YYYY-MM-DD HH:mm:ss'); + // these are all in server timezone but no TZ + + myevents[j].Event.StartTime = moment.tz(myevents[j].Event.StartTime, NVRDataModel.getTimeZoneNow()).format('YYYY-MM-DD HH:mm:ss'); - myevents[j].Event.EndTime = moment.tz(myevents[j].Event.EndTime, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format('YYYY-MM-DD HH:mm:ss'); + myevents[j].Event.EndTime = moment.tz(myevents[j].Event.EndTime, NVRDataModel.getTimeZoneNow()).format('YYYY-MM-DD HH:mm:ss'); var itm = graphData.get(myevents[j].Event.Id); if (itm) { - console.log(myevents[j].Event.Id + " already exists, updating params"); + // console.log(myevents[j].Event.Id + " already exists, updating params"); - var content = "<span class='my-vis-font'>" + myevents[j].Event.Notes + " " + $translate.instant('kRecordingProgress') + "</span>"; + var content = "<span class='my-vis-font'>" + "("+myevents[j].Event.Id+")"+myevents[j].Event.Notes + " " + $translate.instant('kRecordingProgress') + "</span>"; var style; var recordingInProgress = false; if (moment(myevents[j].Event.EndTime).isValid()) // recording over { - - content = "<span class='my-vis-font'>" + "( <i class='ion-android-notifications'></i>" + myevents[j].Event.AlarmFrames + ") " + myevents[j].Event.Notes + "</span>"; + //console.log ("EVENT "+myevents[j].Event.Id+" emded at "+myevents[j].Event.EndTime); + + content = "<span class='my-vis-font'>" + "( <i class='ion-android-notifications'></i>" + myevents[j].Event.AlarmFrames + ") " + " ("+myevents[j].Event.Id+") "+ myevents[j].Event.Notes + "</span>"; style = "background-color:" + colors[parseInt(myevents[j].Event.MonitorId) % colors.length] + ";border-color:" + colors[parseInt(myevents[j].Event.MonitorId) % colors.length]; } else // still recording { - myevents[j].Event.EndTime = moment.tz(moment(), NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format('YYYY-MM-DD HH:mm:ss'); + + var tze; + tze = moment().tz(NVRDataModel.getTimeZoneNow()); + + myevents[j].Event.EndTime = tze.format('YYYY-MM-DD HH:mm:ss'); + + //console.log ("END TIME = "+ myevents[j].Event.EndTime); + style = "background-color:orange"; recordingInProgress = true; } - if (moment(options.max).isBefore(moment())) { - // console.log("Adjusting Range to fit in new event"); - options.max = moment().add('1', 'hours').locale('en').format("YYYY-MM-DD HH:mm:ss"); - timeline.setOptions(options); - } - // data.update({id: 2, group: 1}); - // update end time - is it needed to be updated? - // - + + // right at this point we need to decide if we keep or remove this event // if (ld.enableAlarmCount && ld.minAlarmCount > myevents[j].Event.AlarmFrames && !recordingInProgress) { // remove - NVRDataModel.debug("Removing Event:" + myevents[j].Event.Id + "as it doesn't have" + myevents[j].Event.AlarmFrames + " alarm frames"); + NVRDataModel.debug("Removing Event:" + myevents[j].Event.Id + "as it doesn't have " + myevents[j].Event.AlarmFrames + " alarm frames"); + // var old = timeline.getWindow(); graphData.remove(myevents[j].Event.Id); + // timeline.setWindow (old.start, old.end); } else { + + var tzs1, tze1; + if (NVRDataModel.getLogin().useLocalTimeZone) + { + tzs1 = moment.tz(myevents[j].Event.StartTime, NVRDataModel.getTimeZoneNow()).tz(NVRDataModel.getLocalTimeZoneNow()); + tze1 = moment.tz(myevents[j].Event.EndTime, NVRDataModel.getTimeZoneNow()).tz(NVRDataModel.getLocalTimeZoneNow()); + } + else + { + tzs1 = moment.tz(myevents[j].Event.StartTime,NVRDataModel.getTimeZoneNow()); + tze1 = moment.tz(myevents[j].Event.EndTime,NVRDataModel.getTimeZoneNow()); + } + + //tzs1 = tzs1.format("YYYY-MM-DD HH:mm:ss"); + //tze1 = tze1.format("YYYY-MM-DD HH:mm:ss"); + + NVRDataModel.debug("Updating Event:" + myevents[j].Event.Id + "StartTime:"+tzs1.format()+" EndTime:" + tze1.format()); graphData.update({ id: myevents[j].Event.Id, content: content, - start:moment.tz(myevents[j].Event.StartTime,NVRDataModel.getTimeZoneNow()), + start:tzs1, // start: myevents[j].Event.StartTime, // end: myevents[j].Event.EndTime, - end:moment.tz(myevents[j].Event.EndTime,NVRDataModel.getTimeZoneNow()), - group: myevents[j].Event.MonitorId, + end:tze1, + //group: myevents[j].Event.MonitorId, //type: "range", style: style, myframes: myevents[j].Event.Frames, @@ -716,7 +777,10 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla }); - timeline.focus(myevents[j].Event.Id); + //timeline.focus(myevents[j].Event.Id); + // + timeline.moveTo(timeline.getCurrentTime()); + //console.log ("Focus EID="+myevents[j].Event.Id); localNewEvents = localNewEvents + NVRDataModel.getMonitorName(myevents[j].Event.MonitorId) + '@' + shortenTime(myevents[j].Event.StartTime) + ' (' + myevents[j].Event.Id + '),'; @@ -754,12 +818,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla // console.log (JSON.stringify(myevents[j])); myevents[j].Event.DefaultVideo = ""; - if (NVRDataModel.getLogin().useLocalTimeZone) { - //console.log ("CHANGING TZ"); - myevents[j].Event.StartTime = moment.tz(myevents[j].Event.StartTime, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format('YYYY-MM-DD HH:mm:ss'); - //2016-08-15 17:40:00 - myevents[j].Event.EndTime = moment.tz(myevents[j].Event.EndTime, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format('YYYY-MM-DD HH:mm:ss'); - } + // now lets make sure we don't infinitely increase @@ -778,48 +837,69 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla // since this is a new add its possible dates are not defined if (!moment(myevents[j].Event.StartTime).isValid()) { - NVRDataModel.debug("Event:" + myevents[j].Event.Id + "-Invalid Start time - this should really not happen "); + NVRDataModel.log("Event:" + myevents[j].Event.Id + "-Invalid Start time - this should really not happen "); } if (!moment(myevents[j].Event.EndTime).isValid()) { - // NVRDataModel.debug ("Event:" + myevents[j].Event.Id +"-End time is invalid, likely recording, so fixing" ); - myevents[j].Event.EndTime = moment.tz(moment(), NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format('YYYY-MM-DD HH:mm:ss'); + var t1 = moment().tz(NVRDataModel.getTimeZoneNow()); + + + + myevents[j].Event.EndTime = t1.format('YYYY-MM-DD HH:mm:ss'); + + NVRDataModel.debug ("Event:" + myevents[j].Event.Id +"-End time is invalid, setting to current time"); + isBeingRecorded = true; } // if range doesn't allow for current time, we need to fix that - if (moment(options.max).isBefore(moment())) { + /*if (moment(options.max).isBefore(moment())) { // console.log("Adjusting Range to fit in new event"); options.max = moment().add('1', 'hours').locale('en').format("YYYY-MM-DD HH:mm:ss"); timeline.setOptions(options); - } + }*/ var eventText = "<span class='my-vis-font'>" + "( <i class='ion-android-notifications'></i>" + (myevents[j].Event.AlarmFrames || ' unknown ') + ") " + myevents[j].Event.Notes + "</span>"; if (isBeingRecorded) { - eventText = "<span class='my-vis-font'>" + myevents[j].Event.Notes + " " + $translate.instant('kRecordingProgress') + "</span>"; + eventText = "<span class='my-vis-font'>" + "("+myevents[j].Event.Id+") "+ myevents[j].Event.Notes + " " + $translate.instant('kRecordingProgress') + "</span>"; } // since we concated, its possible events may be repeated if (!graphData.get(myevents[j].Event.Id)) { - NVRDataModel.debug(">>> "+myevents[j].Event.Id + " at " + myevents[j].Event.StartTime + " New event updating graph"); + localNewEvents = localNewEvents + NVRDataModel.getMonitorName(myevents[j].Event.MonitorId) + '@' + shortenTime(myevents[j].Event.StartTime) + ' (' + myevents[j].Event.Id + '),'; + var tzs2, tze2; + if (NVRDataModel.getLogin().useLocalTimeZone) + { + tzs2 = moment.tz(myevents[j].Event.StartTime, NVRDataModel.getTimeZoneNow()).tz(NVRDataModel.getTimeZoneNow()).tz(NVRDataModel.getLocalTimeZoneNow()); + tze2 = moment.tz(myevents[j].Event.EndTime, NVRDataModel.getTimeZoneNow()).tz(NVRDataModel.getLocalTimeZoneNow()); + } + else + { + tzs2 = moment.tz(myevents[j].Event.StartTime,NVRDataModel.getTimeZoneNow()); + tze2 = moment.tz(myevents[j].Event.EndTime,NVRDataModel.getTimeZoneNow()); + } + + //tzs2 = tzs2.format("YYYY-MM-DD HH:mm:ss"); + //tze2 = tze2.format("YYYY-MM-DD HH:mm:ss"); + NVRDataModel.debug(">>> "+myevents[j].Event.Id + " New event updating graph " + " from:" + tzs2.format()+" to:"+tze2.format() ); graphData.add({ id: myevents[j].Event.Id, content: eventText, - start:moment.tz(myevents[j].Event.StartTime,NVRDataModel.getTimeZoneNow()), + start:tzs2, //start: myevents[j].Event.StartTime, // end: myevents[j].Event.EndTime, - end:moment.tz(myevents[j].Event.EndTime,NVRDataModel.getTimeZoneNow()), + end:tze2, group: myevents[j].Event.MonitorId, style: "background-color:orange", //type: "range", @@ -833,11 +913,13 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla }); graphIndex++; + //timeline.focus(myevents[j].Event.Id); + timeline.moveTo(timeline.getCurrentTime()); } //options.max = moment(fromDate).locale('en').format("YYYY-MM-DD HH:mm:ss"); - timeline.focus(myevents[j].Event.Id); + } //idfound @@ -918,21 +1000,48 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla //console.log ("AFTER VIS"); + var tzs, tze; + + // lets scope the time graph to either local or remote time zone + + if (NVRDataModel.getLogin().useLocalTimeZone) + { + tzs = moment.tz(fromDate, NVRDataModel.getTimeZoneNow()).tz(NVRDataModel.getLocalTimeZoneNow()); + tze = moment.tz(toDate, NVRDataModel.getTimeZoneNow()).tz(NVRDataModel.getLocalTimeZoneNow()); + } + else + { + tzs = moment.tz(fromDate,NVRDataModel.getTimeZoneNow()); + tze = moment.tz(toDate,NVRDataModel.getTimeZoneNow()); + } + + //tzs = tzs.format("YYYY-MM-DD HH:mm:ss"); + //tze = tze.format("YYYY-MM-DD HH:mm:ss"); options = { showCurrentTime: true, editable: false, + moment: function (date) { + + //var t; + if (NVRDataModel.getLogin().useLocalTimeZone) + //if (0) + return moment.tz(date,NVRDataModel.getTimeZoneNow()).tz(NVRDataModel.getLocalTimeZoneNow()); + else + // typecast to server time zone - its in server time anyway + return moment.tz(date,NVRDataModel.getTimeZoneNow()); + }, //throttleRedraw: 100, moveable: true, zoomable: true, selectable: true, - start: moment.tz(fromDate,NVRDataModel.getTimeZoneNow()), - end: moment.tz(toDate,NVRDataModel.getTimeZoneNow()), + start: tzs, + end: tze, orientation: 'top', - min: moment.tz(fromDate,NVRDataModel.getTimeZoneNow()), - max: moment.tz(toDate,NVRDataModel.getTimeZoneNow()), - zoomMin: 1 * 60 * 1000, // 1 min + min: tzs, + //max: tze, + zoomMin: 5 * 60 * 1000, // 1 min stack: false, format: { minorLabels: { @@ -1046,25 +1155,30 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla // console.log (JSON.stringify(myevents[i])); myevents[i].Event.DefaultVideo = ""; - if (NVRDataModel.getLogin().useLocalTimeZone) { - //console.log ("CHANGING TZ"); - myevents[i].Event.StartTime = moment.tz(myevents[i].Event.StartTime, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format('YYYY-MM-DD HH:mm:ss'); - //2016-08-15 17:40:00 - myevents[i].Event.EndTime = moment.tz(myevents[i].Event.EndTime, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format('YYYY-MM-DD HH:mm:ss'); - } - + //console.log ("ADDING "+myevents[i].Event.StartTime+"->"+myevents[i].Event.EndTime); - console.log ("ADDING "+myevents[i].Event.StartTime+"->"+myevents[i].Event.EndTime); + var tzs, tze; + if (NVRDataModel.getLogin().useLocalTimeZone) + { + tzs = moment.tz(myevents[i].Event.StartTime,NVRDataModel.getTimeZoneNow()).tz(NVRDataModel.getLocalTimeZoneNow()); + tze = moment.tz(myevents[i].Event.EndTime,NVRDataModel.getTimeZoneNow()).tz(NVRDataModel.getLocalTimeZoneNow()); + } + else + { + tzs = moment.tz(myevents[i].Event.StartTime,NVRDataModel.getTimeZoneNow()); + tze = moment.tz(myevents[i].Event.EndTime,NVRDataModel.getTimeZoneNow()); + } + //console.log ("ADDED "+tzs+" " +tze); 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.Notes + "</span>", + content: "<span class='my-vis-font'>" + "( <i class='ion-android-notifications'></i>" + myevents[i].Event.AlarmFrames + ") "+ "("+myevents[j].Event.Id+") " + myevents[i].Event.Notes + "</span>", - start:moment.tz(myevents[i].Event.StartTime,NVRDataModel.getTimeZoneNow()), + start:tzs, //start: myevents[i].Event.StartTime, //end: myevents[i].Event.EndTime, - end:moment.tz(myevents[i].Event.EndTime,NVRDataModel.getTimeZoneNow()), + end:tze, group: myevents[i].Event.MonitorId, //type: "range", style: "background-color:" + colors[parseInt(myevents[i].Event.MonitorId) % colors.length] + @@ -1132,7 +1246,7 @@ angular.module('zmApp.controllers').controller('zmApp.TimelineCtrl', ['$ionicPla } - lastTimeForEvent = moment(); + lastTimeForEvent = moment().tz(NVRDataModel.getLogin().useLocalTimeZone?NVRDataModel.getLocalTimeZoneNow():NVRDataModel.getTimeZoneNow()); updateInterval = $interval(function() { processNewEvents(); }.bind(this), 10 * 1000); |
