diff options
Diffstat (limited to 'www/js/MontageHistoryCtrl.js')
| -rw-r--r-- | www/js/MontageHistoryCtrl.js | 719 |
1 files changed, 454 insertions, 265 deletions
diff --git a/www/js/MontageHistoryCtrl.js b/www/js/MontageHistoryCtrl.js index 7b1ca2c1..ab902973 100644 --- a/www/js/MontageHistoryCtrl.js +++ b/www/js/MontageHistoryCtrl.js @@ -3,16 +3,18 @@ /* jslint browser: true*/ /* global cordova,StatusBar,angular,console,ionic,Masonry,moment,Packery, Draggabilly, imagesLoaded, Chart */ // FIXME: This is a copy of montageCtrl - needs a lot of code cleanup -angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$scope', '$rootScope', 'NVRDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$ionicPopup', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', 'zm', '$ionicPopover', '$controller', 'imageLoadingDataShare', '$window', '$translate', 'qHttp', '$q', function ($scope, $rootScope, NVRDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $ionicPopup, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, zm, $ionicPopover, $controller, imageLoadingDataShare, $window, $translate, qHttp, $q) { +angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$scope', '$rootScope', 'NVRDataModel', 'message', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$ionicPopup', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$ionicPlatform', 'zm', '$ionicPopover', '$controller', 'imageLoadingDataShare', '$window', '$translate', 'qHttp', '$q', function($scope, $rootScope, NVRDataModel, message, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $ionicPopup, $stateParams, $ionicHistory, $ionicScrollDelegate, $ionicPlatform, zm, $ionicPopover, $controller, imageLoadingDataShare, $window, $translate, qHttp, $q) +{ //-------------------------------------------------------------------------------------- // Handles bandwidth change, if required // //-------------------------------------------------------------------------------------- - $rootScope.$on("bandwidth-change", function (e, data) { + $rootScope.$on("bandwidth-change", function(e, data) + { // nothing to do for now // eventUrl will use lower BW in next query cycle }); - + $scope.getLocalTZ = function() { return moment.tz.guess(); @@ -20,70 +22,83 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc //-------------------------------------- // formats events dates in a nice way //--------------------------------------- - $scope.prettifyDateTimeFirst = function (str) { - if (NVRDataModel.getLogin().useLocalTimeZone) - return moment.tz(str, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format(NVRDataModel.getTimeFormat() + '/MMM Do'); + $scope.prettifyDateTimeFirst = function(str) + { + if (NVRDataModel.getLogin().useLocalTimeZone) + return moment.tz(str, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format(NVRDataModel.getTimeFormat() + '/MMM Do'); else return moment(str).format(NVRDataModel.getTimeFormat() + '/MMM Do'); }; - $scope.prettifyDate = function (str) { + $scope.prettifyDate = function(str) + { return moment(str).format('MMM Do, YYYY ' + NVRDataModel.getTimeFormat()); }; - function prettifyDate(str) { - if (NVRDataModel.getLogin().useLocalTimeZone) + function prettifyDate(str) + { + if (NVRDataModel.getLogin().useLocalTimeZone) return moment.tz(str, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format('MMM Do'); else - return moment(str).format('MMM Do'); + return moment(str).format('MMM Do'); } - $scope.prettifyTime = function (str) { + $scope.prettifyTime = function(str) + { if (NVRDataModel.getLogin().useLocalTimeZone) return moment.tz(str, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format('h:mm a'); else return moment(str).format('h:mm a'); }; - $scope.prettify = function (str) { + $scope.prettify = function(str) + { if (NVRDataModel.getLogin().useLocalTimeZone) return moment.tz(str, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess()).format(NVRDataModel.getTimeFormat() + ' on MMMM Do YYYY'); else return moment(str).format(NVRDataModel.getTimeFormat() + ' on MMMM Do YYYY'); }; - $scope.humanizeTime = function (str) { - // if (NVRDataModel.getLogin().useLocalTimeZone) - return moment.tz(str, NVRDataModel.getTimeZoneNow()).fromNow(); - // else - // return moment(str).fromNow(); - + $scope.humanizeTime = function(str) + { + // if (NVRDataModel.getLogin().useLocalTimeZone) + return moment.tz(str, NVRDataModel.getTimeZoneNow()).fromNow(); + // else + // return moment(str).fromNow(); + }; // if you change date in footer, change hrs - $scope.dateChanged = function () { + $scope.dateChanged = function() + { $scope.datetimeValueFrom.hrs = Math.round(moment.duration(moment().diff(moment($scope.datetimeValueFrom.value))).asHours()); }; // if you change hrs in footer, change date - $scope.hrsChanged = function () { + $scope.hrsChanged = function() + { $scope.datetimeValueFrom.value = moment().subtract($scope.datetimeValueFrom.hrs, 'hours').toDate(); timefrom.toDate(); }; - function orientationChanged() { - // NVRDataModel.debug("Detected orientation change, redoing packery resize"); - /* $timeout(function () { - pckry.onresize(); - });*/ + function orientationChanged() + { + // NVRDataModel.debug("Detected orientation change, redoing packery resize"); + /* $timeout(function () { + pckry.onresize(); + });*/ } //-------------------------------------- // pause/unpause nph-zms //--------------------------------------- - $scope.togglePause = function (mid) { + $scope.togglePause = function(mid) + { //console.log ("TOGGLE PAUSE " + mid); var m = -1; - for (var i = 0; i < $scope.MontageMonitors.length; i++) { - if ($scope.MontageMonitors[i].Monitor.Id == mid) { + for (var i = 0; i < $scope.MontageMonitors.length; i++) + { + if ($scope.MontageMonitors[i].Monitor.Id == mid) + { m = i; break; } } - if (m != -1) { + if (m != -1) + { $scope.MontageMonitors[m].Monitor.isPaused = !$scope.MontageMonitors[m].Monitor.isPaused; var cmd = 1; @@ -92,66 +107,79 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc } }; - function sendCmd(mid, cmd, extra) { - - + function sendCmd(mid, cmd, extra) + { var m = -1; - for (var i = 0; i < $scope.MontageMonitors.length; i++) { - if ($scope.MontageMonitors[i].Monitor.Id == mid) { + for (var i = 0; i < $scope.MontageMonitors.length; i++) + { + if ($scope.MontageMonitors[i].Monitor.Id == mid) + { m = i; break; } } - if (m != -1) { + if (m != -1) + { NVRDataModel.debug("Sending CMD:" + cmd + " for monitor " + $scope.MontageMonitors[m].Monitor.Name); return controlEventStream(cmd, "", $scope.MontageMonitors[m].Monitor.connKey, -1, extra); } } - $scope.seek = function (mid, p) { + $scope.seek = function(mid, p) + { NVRDataModel.debug("Slider called with mid=" + mid + " progress=" + p); var m = -1; - for (var i = 0; i < $scope.MontageMonitors.length; i++) { - if ($scope.MontageMonitors[i].Monitor.Id == mid) { + for (var i = 0; i < $scope.MontageMonitors.length; i++) + { + if ($scope.MontageMonitors[i].Monitor.Id == mid) + { m = i; break; } } - if (m != -1) { + if (m != -1) + { $scope.MontageMonitors[i].Monitor.seek = true; } - sendCmd(mid, '14', "&offset=" + p) - .then(function (success) { + .then(function(success) + { //console.log ("Removing seek status from " + $scope.MontageMonitors[i].Monitor.Name); $scope.MontageMonitors[i].Monitor.seek = false; }, - function (err) { + function(err) + { //console.log ("Removing seek status from " + $scope.MontageMonitors[i].Monitor.Name); $scope.MontageMonitors[i].Monitor.seek = false; }); }; - $scope.moveFaster = function (mid) { + $scope.moveFaster = function(mid) + { sendCmd(mid, 4); }; - $scope.moveSlower = function (mid) { + $scope.moveSlower = function(mid) + { sendCmd(mid, 5); }; - $scope.movePlay = function (mid) { + $scope.movePlay = function(mid) + { var m = -1; - for (var i = 0; i < $scope.MontageMonitors.length; i++) { - if ($scope.MontageMonitors[i].Monitor.Id == mid) { + for (var i = 0; i < $scope.MontageMonitors.length; i++) + { + if ($scope.MontageMonitors[i].Monitor.Id == mid) + { m = i; break; } } - if (m != -1) { + if (m != -1) + { $scope.MontageMonitors[m].Monitor.isPaused = false; var cmd = 2; NVRDataModel.debug("Sending CMD:" + cmd + " for monitor " + $scope.MontageMonitors[m].Monitor.Name); @@ -162,20 +190,24 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // Called when ion-footer collapses // note that on init it is also called //--------------------------------------- - $scope.footerExpand = function () { + $scope.footerExpand = function() + { // console.log ("**************** EXPAND CALLED ***************"); $ionicSideMenuDelegate.canDragContent(false); }; - $scope.footerCollapse = function () { + $scope.footerCollapse = function() + { footerCollapse(); }; /* Note this is also called when the view is first loaded */ - function footerCollapse() { - if (readyToRun == false) { + function footerCollapse() + { + if (readyToRun == false) + { NVRDataModel.debug("fake call to footerCollapse - ignoring"); return; } - + if ($scope.MontageMonitors == undefined) { NVRDataModel.debug("montage array is undefined and not ready"); @@ -183,7 +215,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc } $interval.cancel($rootScope.eventQueryInterval); - $ionicLoading.show({ + $ionicLoading.show( + { template: $translate.instant('kPleaseWait'), noBackdrop: true, duration: zm.httpTimeout @@ -195,39 +228,37 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc NVRDataModel.stopNetwork("MontageHistory-footerCollapse"); var ld = NVRDataModel.getLogin(); $scope.sliderVal.realRate = $scope.sliderVal.rate * 100; - - - + var TimeObjectFrom = moment($scope.datetimeValueFrom.value).format("YYYY-MM-DD HH:mm"); var TimeObjectTo = moment().format('YYYY-MM-DD HH:mm'); - + // At this point of time, we need to ensure From and To are changed to server time //if (NVRDataModel.getLogin().useLocalTimeZone) if (1) { var localtz = moment.tz.guess(); var servertz = NVRDataModel.getTimeZoneNow(); - - NVRDataModel.log ("Local timezone conversion is on, converting from "+localtz+" to " +servertz); - NVRDataModel.log ("Original From: " + TimeObjectFrom + " Original To: " + TimeObjectTo); - + + NVRDataModel.log("Local timezone conversion is on, converting from " + localtz + " to " + servertz); + NVRDataModel.log("Original From: " + TimeObjectFrom + " Original To: " + TimeObjectTo); + TimeObjectFrom = moment.tz(TimeObjectFrom, localtz).tz(servertz).format("YYYY-MM-DD HH:mm"); TimeObjectTo = moment.tz(TimeObjectTo, localtz).tz(servertz).format("YYYY-MM-DD HH:mm"); - - NVRDataModel.log ("Converted From: " + TimeObjectFrom + " Converted To: " + TimeObjectTo); - + + NVRDataModel.log("Converted From: " + TimeObjectFrom + " Converted To: " + TimeObjectTo); + } - - - + var apiurl; // release all active streams - for (var i = 0; i < $scope.MontageMonitors.length; i++) { + for (var i = 0; i < $scope.MontageMonitors.length; i++) + { $scope.MontageMonitors[i].Monitor.selectStyle = ""; $scope.MontageMonitors[i].Monitor.eid = "-1"; // generate new connKeys if timeline changes - if ($scope.MontageMonitors[i].Monitor.eventUrl != 'img/noevent.png') { + if ($scope.MontageMonitors[i].Monitor.eventUrl != 'img/noevent.png') + { // this means this mid was showing a message, now we need to change it // so kill prev. stream first NVRDataModel.log("footerCollapse: Calling kill with " + $scope.MontageMonitors[i].Monitor.connKey + " for Monitor:" + $scope.MontageMonitors[i].Monitor.Name); @@ -247,24 +278,30 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // make sure there are no more than 5 active streams (noevent is ok) $scope.currentLimit = $scope.monLimit; //qHttp.get(apiurl) - $http({ + $http( + { method: 'get', url: apiurl - }).then(function (succ) { + }).then(function(succ) + { var data = succ.data; var ld = NVRDataModel.getLogin(); NVRDataModel.debug("Got " + data.events.length + "new history events..."); var eid, mid, stime; - for (i = 0; i < data.events.length; i++) { + for (i = 0; i < data.events.length; i++) + { mid = data.events[i].Event.MonitorId; eid = data.events[i].Event.Id; stime = data.events[i].Event.StartTime; // only take the first one for each monitor - for (var j = 0; j < $scope.MontageMonitors.length; j++) { + for (var j = 0; j < $scope.MontageMonitors.length; j++) + { $scope.MontageMonitors[j].Monitor.isPaused = false; // that's the earliest match and play gapless from there - if ($scope.MontageMonitors[j].Monitor.Id == mid) { - if ($scope.MontageMonitors[j].Monitor.eventUrl == 'img/noevent.png') { + if ($scope.MontageMonitors[j].Monitor.Id == mid) + { + if ($scope.MontageMonitors[j].Monitor.eventUrl == 'img/noevent.png') + { // console.log ("Old value of event url " + $scope.MontageMonitors[j].eventUrl); //console.log ("ldurl is " + ld.streamingurl); var bw = NVRDataModel.getBandwidth() == "lowbw" ? zm.eventMontageQualityLowBW : ld.montageHistoryQuality; @@ -281,7 +318,6 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // now lets get the API for that event for graphing $scope.MontageMonitors[j].Monitor.noGraph = true; - } } } @@ -290,9 +326,11 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // in the above call, is possible some did not make the cut in the first page NVRDataModel.log("Making sure all monitors have a fair chance..."); var promises = []; - for (i = 0; i < $scope.MontageMonitors.length; i++) { + for (i = 0; i < $scope.MontageMonitors.length; i++) + { //console.log("Fair chance check for " + $scope.MontageMonitors[i].Monitor.Name); - if ($scope.MontageMonitors[i].Monitor.eventUrl == 'img/noevent.png') { + if ($scope.MontageMonitors[i].Monitor.eventUrl == 'img/noevent.png') + { var indivGrab = ld.apiurl + "/events/index/MonitorId:" + $scope.MontageMonitors[i].Monitor.Id + "/StartTime >=:" + TimeObjectFrom + "/AlarmFrames >=:" + (ld.enableAlarmCount ? ld.minAlarmCount : 0) + ".json"; NVRDataModel.debug("Monitor " + $scope.MontageMonitors[i].Monitor.Id + ":" + $scope.MontageMonitors[i].Monitor.Name + " does not have events, trying " + indivGrab); var p = getExpandedEvents(i, indivGrab); @@ -305,13 +343,16 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // At this stage, we have both a general events grab, and specific event grabs for MIDS that were empty - function doPackery() { + function doPackery() + { // $ionicLoading.hide(); //console.log("REDOING PACKERY & DRAG"); NVRDataModel.debug("Re-creating packery and draggy"); - if (pckry !== undefined) { + if (pckry !== undefined) + { // remove current draggies - draggies.forEach(function (drag) { + draggies.forEach(function(drag) + { drag.destroy(); }); draggies = []; @@ -319,27 +360,34 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc pckry.destroy(); initPackery(); - $rootScope.eventQueryInterval = $interval(function () { + $rootScope.eventQueryInterval = $interval(function() + { checkAllEvents(); }.bind(this), zm.eventHistoryTimer); } } - }, function (err) { + }, function(err) + { NVRDataModel.debug("history ERROR:" + JSON.stringify(err)); }); - function getExpandedEvents(i, indivGrab) { + function getExpandedEvents(i, indivGrab) + { var d = $q.defer(); var ld = NVRDataModel.getLogin(); // console.log ("Expanded API: " + indivGrab); - $http({ + $http( + { method: 'get', url: indivGrab - }).then(function (succ) { + }).then(function(succ) + { var data = succ.data; // console.log ("EXPANDED DATA FOR MONITOR " + i + JSON.stringify(data)); - if (data.events.length > 0) { - if (!NVRDataModel.isBackground()) { + if (data.events.length > 0) + { + if (!NVRDataModel.isBackground()) + { var bw = NVRDataModel.getBandwidth() == "lowbw" ? zm.eventMontageQualityLowBW : ld.montageHistoryQuality; $scope.MontageMonitors[i].Monitor.eventUrl = ld.streamingurl + "/nph-zms?source=event&mode=jpeg&event=" + data.events[0].Event.Id + "&frame=1&replay=gapless&rate=" + $scope.sliderVal.realRate + "&connkey=" + $scope.MontageMonitors[i].Monitor.connKey + "&scale=" + bw + "&rand=" + $rootScope.rand; //console.log ("SWITCHING TO " + $scope.MontageMonitors[i].eventUrl); @@ -352,7 +400,9 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc $scope.MontageMonitors[i].Monitor.eventDuration = data.events[0].Event.Length; //console.log(">>> Setting Event for " + $scope.MontageMonitors[i].Monitor.Name + " to " + data.events[0].Event.Id); NVRDataModel.log("Found expanded event " + data.events[0].Event.Id + " for monitor " + $scope.MontageMonitors[i].Monitor.Id); - } else { + } + else + { // $scope.MontageMonitors[i].eventUrl="img/noevent.png"; // $scope.MontageMonitors[i].eventUrlTime = ""; // NVRDataModel.log ("Setting img src to null as data received in background"); @@ -361,7 +411,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc d.resolve(true); return d.promise; }, - function (err) { + function(err) + { d.resolve(true); return d.promise; } @@ -376,16 +427,19 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // Its a 2 step process - get event Id then go a Event // API call to get time stamp. Sucks //--------------------------------------------------------- - function checkAllEvents() { + function checkAllEvents() + { //console.log("Timer:Events are checked...."); - //if (pckry && !$scope.isDragabillyOn) pckry.shiftLayout(); + //if (pckry && !$scope.isDragabillyOn) pckry.shiftLayout(); - for (var i = 0; i < $scope.MontageMonitors.length; i++) { + for (var i = 0; i < $scope.MontageMonitors.length; i++) + { // don't check for monitors that are not shown // because nph connkey won't exist and the response // will fail - if ($scope.MontageMonitors[i].Monitor.eventUrl != "" && $scope.MontageMonitors[i].Monitor.eventUrl != 'img/noevent.png' && $scope.MontageMonitors[i].Monitor.connKey != '' && $scope.MontageMonitors[i].Monitor.Function != 'None' && $scope.MontageMonitors[i].Monitor.listDisplay != 'noshow' && $scope.MontageMonitors[i].Monitor.Enabled != '0') { + if ($scope.MontageMonitors[i].Monitor.eventUrl != "" && $scope.MontageMonitors[i].Monitor.eventUrl != 'img/noevent.png' && $scope.MontageMonitors[i].Monitor.connKey != '' && $scope.MontageMonitors[i].Monitor.Function != 'None' && $scope.MontageMonitors[i].Monitor.listDisplay != 'noshow' && $scope.MontageMonitors[i].Monitor.Enabled != '0') + { // NVRDataModel.debug("Checking event status for " + $scope.MontageMonitors[i].Monitor.Name + ":" + $scope.MontageMonitors[i].Monitor.eventUrl + ":" + $scope.MontageMonitors[i].Monitor.Function + ":" + $scope.MontageMonitors[i].Monitor.listDisplay); // console.log ("Sending query 99 for " + $scope.MontageMonitors[i].Monitor.Name + " with ck="+$scope.MontageMonitors[i].Monitor.connKey); controlEventStream('99', '', $scope.MontageMonitors[i].Monitor.connKey, i); @@ -397,37 +451,45 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // then it also calls an event API for the returned eid // and stores its time in the montage monitors array //-------------------------------------------------------------- - $scope.controlEventStream = function (cmd, disp, connkey, ndx) { + $scope.controlEventStream = function(cmd, disp, connkey, ndx) + { controlEventStream(cmd, disp, connkey, ndx); }; - function timedControlEventStream(mTime, cmd, disp, connkey, ndx) { + function timedControlEventStream(mTime, cmd, disp, connkey, ndx) + { var mMtime = mTime || 2000; NVRDataModel.debug("Deferring control " + cmd + " by " + mMtime); - $timeout(function () { + $timeout(function() + { subControlStream(cmd, connkey); }, mMtime); } - function subControlStream(cmd, connkey) { + function subControlStream(cmd, connkey) + { var loginData = NVRDataModel.getLogin(); var myauthtoken = $rootScope.authSession.replace("&auth=", ""); //&auth= - var req = qHttp({ + var req = qHttp( + { method: 'POST', /*timeout: 15000,*/ url: loginData.url + '/index.php', - headers: { + headers: + { 'Content-Type': 'application/x-www-form-urlencoded', //'Accept': '*/*', }, - transformRequest: function (obj) { + transformRequest: function(obj) + { var str = []; for (var p in obj) str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); var foo = str.join("&"); //console.log("****SUB RETURNING " + foo); return foo; }, - data: { + data: + { view: "request", request: "stream", connkey: connkey, @@ -436,20 +498,25 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // pass: loginData.password } }); - req.then(function (succ) { + req.then(function(succ) + { NVRDataModel.debug("subControl success:" + JSON.stringify(succ)); - }, function (err) { + }, function(err) + { NVRDataModel.debug("subControl error:" + JSON.stringify(err)); }); } - function controlEventStream(cmd, disp, connkey, ndx, extras) { + function controlEventStream(cmd, disp, connkey, ndx, extras) + { // console.log("Command value " + cmd); var d = $q.defer(); - if (disp) { + if (disp) + { $ionicLoading.hide(); - $ionicLoading.show({ + $ionicLoading.show( + { template: $translate.instant('kPleaseWait') + "...", noBackdrop: true, duration: zm.loadingTimeout, @@ -482,14 +549,17 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc //console.log ("AUTH IS " + $rootScope.authSession); var myauthtoken = $rootScope.authSession.replace("&auth=", ""); //&auth= - var req = qHttp({ + var req = qHttp( + { method: 'POST', /*timeout: 15000,*/ url: loginData.url + '/index.php', - headers: { + headers: + { 'Content-Type': 'application/x-www-form-urlencoded', //'Accept': '*/*', }, - transformRequest: function (obj) { + transformRequest: function(obj) + { var str = []; for (var p in obj) str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); var foo = str.join("&"); @@ -497,7 +567,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc //console.log("****RETURNING " + foo); return foo; }, - data: { + data: + { view: "request", request: "stream", connkey: connkey, @@ -506,31 +577,39 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // pass: loginData.password } }); - req.then(function (succ) { + req.then(function(succ) + { var resp = succ.data; //console.log ("zms response: " + JSON.stringify(resp)); // move progress bar if event id is the same - if (resp.result == "Ok" && ndx != -1 && (resp.status.event == $scope.MontageMonitors[ndx].Monitor.eid)) { - if (!$scope.MontageMonitors[ndx].Monitor.seek) { + if (resp.result == "Ok" && ndx != -1 && (resp.status.event == $scope.MontageMonitors[ndx].Monitor.eid)) + { + if (!$scope.MontageMonitors[ndx].Monitor.seek) + { $scope.MontageMonitors[ndx].Monitor.sliderProgress.progress = resp.status.progress; - } else { + } + else + { NVRDataModel.debug("Skipping progress as seek is active for " + $scope.MontageMonitors[ndx].Monitor.Name); } } - if (resp.result == "Ok" && ndx != -1 && ((resp.status.event != $scope.MontageMonitors[ndx].Monitor.eid) || $scope.MontageMonitors[ndx].Monitor.noGraph == true)) { + if (resp.result == "Ok" && ndx != -1 && ((resp.status.event != $scope.MontageMonitors[ndx].Monitor.eid) || $scope.MontageMonitors[ndx].Monitor.noGraph == true)) + { $scope.MontageMonitors[ndx].Monitor.noGraph = false; // $scope.MontageMonitors[ndx].Monitor.sliderProgress.progress = 0; NVRDataModel.debug("Fetching details, as event changed for " + $scope.MontageMonitors[ndx].Monitor.Name + " from " + $scope.MontageMonitors[ndx].Monitor.eid + " to " + resp.status.event); var ld = NVRDataModel.getLogin(); var apiurl = ld.apiurl + "/events/" + resp.status.event + ".json"; //console.log ("API " + apiurl); - qHttp({ + qHttp( + { method: 'get', url: apiurl - }).then(function (succ) { + }).then(function(succ) + { var data = succ.data; var currentEventTime = moment(data.event.Event.StartTime); var maxTime = moment(); @@ -539,31 +618,36 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc NVRDataModel.debug("creating graph for " + $scope.MontageMonitors[ndx].Monitor.Name); var framearray = { labels: [], - datasets: [{ + datasets: [ + { backgroundColor: 'rgba(242, 12, 12, 0.5)', borderColor: 'rgba(242, 12, 12, 0.5)', data: [], - }] + }] }; framearray.labels = []; var ld = NVRDataModel.getLogin(); //console.log(">>>>> GRAPH"); - for (i = 0; i < data.event.Frame.length; i++) { + for (i = 0; i < data.event.Frame.length; i++) + { var ts = moment(data.event.Frame[i].TimeStamp).format(timeFormat); //console.log ("pushing s:" + event.Frame[i].Score+" t:"+ts); - framearray.datasets[0].data.push({ + framearray.datasets[0].data.push( + { x: ts, y: data.event.Frame[i].Score }); framearray.labels.push(""); } - $timeout(function () { + $timeout(function() + { drawGraph(framearray, $scope.MontageMonitors[ndx].Monitor.Id); }, 100); var element = angular.element(document.getElementById($scope.MontageMonitors[ndx].Monitor.Id + "-timeline")); element.removeClass('animated flipInX'); element.addClass('animated flipOutX'); - $timeout(function () { + $timeout(function() + { element.removeClass('animated flipOutX'); element.addClass('animated flipInX'); $scope.MontageMonitors[ndx].Monitor.eventUrlTime = data.event.Event.StartTime; @@ -577,59 +661,71 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc //console.log(">>> Setting Event for " + $scope.MontageMonitors[ndx].Monitor.Name + " to " + data.event.Event.Id); }, 700); - - }, function (err) { + }, function(err) + { NVRDataModel.debug("skipping graph as detailed API failed for " + $scope.MontageMonitors[ndx].Monitor.Name); $scope.MontageMonitors[ndx].Monitor.eventUrlTime = "-"; }); } d.resolve(true); return d.promise; - }, function (err) { + }, function(err) + { d.reject(false); NVRDataModel.log("Error sending event command " + JSON.stringify(err), "error"); return d.promise; }); return d.promise; } - $scope.isBackground = function () { + $scope.isBackground = function() + { return NVRDataModel.isBackground(); }; //---------------------------------------------------------------- // Alarm notification handling //---------------------------------------------------------------- - $scope.handleAlarms = function () { + $scope.handleAlarms = function() + { $rootScope.isAlarm = !$rootScope.isAlarm; - if (!$rootScope.isAlarm) { + if (!$rootScope.isAlarm) + { $rootScope.alarmCount = "0"; - $ionicHistory.nextViewOptions({ + $ionicHistory.nextViewOptions( + { disableBack: true }); - $state.go("events", { + $state.go("events", + { "id": 0, "playEvent": false - }, { + }, + { reload: true }); return; } }; - $scope.handleAlarmsWhileMinimized = function () { + $scope.handleAlarmsWhileMinimized = function() + { $rootScope.isAlarm = !$rootScope.isAlarm; $scope.minimal = !$scope.minimal; NVRDataModel.debug("MontageHistoryCtrl: switch minimal is " + $scope.minimal); ionic.Platform.fullScreen($scope.minimal, !$scope.minimal); $interval.cancel(intervalHandle); $interval.cancel($rootScope.eventQueryInterval); - if (!$rootScope.isAlarm) { + if (!$rootScope.isAlarm) + { $rootScope.alarmCount = "0"; - $ionicHistory.nextViewOptions({ + $ionicHistory.nextViewOptions( + { disableBack: true }); - $state.go("events", { + $state.go("events", + { "id": 0, "playEvent": false, - }, { + }, + { reload: true }); return; @@ -640,18 +736,24 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // when app is in background. This is a problem with Android, // for example //------------------------------------------------------------- - $scope.isBackground = function () { + $scope.isBackground = function() + { //console.log ("Is background called from Montage and returned " + //NVRDataModel.isBackground()); return NVRDataModel.isBackground(); }; - $scope.toggleControls = function () { + $scope.toggleControls = function() + { $scope.showControls = !$scope.showControls; }; - $scope.toggleSelectItem = function (ndx) { - if ($scope.MontageMonitors[ndx].Monitor.selectStyle !== "undefined" && $scope.MontageMonitors[ndx].Monitor.selectStyle == "dragborder-selected") { + $scope.toggleSelectItem = function(ndx) + { + if ($scope.MontageMonitors[ndx].Monitor.selectStyle !== "undefined" && $scope.MontageMonitors[ndx].Monitor.selectStyle == "dragborder-selected") + { $scope.MontageMonitors[ndx].Monitor.selectStyle = ""; - } else { + } + else + { $scope.MontageMonitors[ndx].Monitor.selectStyle = "dragborder-selected"; } //console.log ("Switched value to " + $scope.MontageMonitors[ndx].Monitor.selectStyle); @@ -659,39 +761,49 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc //--------------------------------------------------------------------- // Called when you enable/disable dragging //--------------------------------------------------------------------- - $scope.dragToggle = function () { + $scope.dragToggle = function() + { dragToggle(); }; - function dragToggle() { + function dragToggle() + { var i; $scope.isDragabillyOn = !$scope.isDragabillyOn; $ionicSideMenuDelegate.canDragContent($scope.isDragabillyOn ? false : true); //$timeout(function(){pckry.reloadItems();},10); NVRDataModel.debug("setting dragabilly to " + $scope.isDragabillyOn); - if ($scope.isDragabillyOn) { + if ($scope.isDragabillyOn) + { $scope.showSizeButtons = true; $scope.dragBorder = "dragborder"; NVRDataModel.debug("Enabling drag for " + draggies.length + " items"); - for (i = 0; i < draggies.length; i++) { + for (i = 0; i < draggies.length; i++) + { draggies[i].enable(); draggies[i].bindHandles(); } // reflow and reload as some may be hidden // $timeout(function(){pckry.reloadItems();$timeout(function(){pckry.layout();},300);},100); - } else { + } + else + { $scope.dragBorder = ""; NVRDataModel.debug("Disabling drag for " + draggies.length + " items"); - for (i = 0; i < draggies.length; i++) { + for (i = 0; i < draggies.length; i++) + { draggies[i].disable(); draggies[i].unbindHandles(); } - for (i = 0; i < $scope.MontageMonitors.length; i++) { + for (i = 0; i < $scope.MontageMonitors.length; i++) + { $scope.MontageMonitors[i].Monitor.selectStyle = ""; } // reflow and reload as some may be hidden - $timeout(function () { - $timeout(function () { + $timeout(function() + { + $timeout(function() + { pckry.shiftLayout(); /*var positions = pckry.getShiftPositions('data-item-id'); //console.log ("POSITIONS MAP " + JSON.stringify(positions)); @@ -705,13 +817,16 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc //--------------------------------------------------------------------- // Show/Hide PTZ control in monitor view //--------------------------------------------------------------------- - $scope.togglePTZ = function () { + $scope.togglePTZ = function() + { $scope.showPTZ = !$scope.showPTZ; }; - $scope.callback = function () { + $scope.callback = function() + { // console.log("dragging"); }; - $scope.onDropComplete = function (index, obj, event) { + $scope.onDropComplete = function(index, obj, event) + { //console.log("dragged"); var otherObj = $scope.MontageMonitors[index]; var otherIndex = $scope.MontageMonitors.indexOf(obj); @@ -721,7 +836,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc //--------------------------------------------------------------------- // changes order of montage display //--------------------------------------------------------------------- - $scope.toggleMontageDisplayOrder = function () { + $scope.toggleMontageDisplayOrder = function() + { $scope.packMontage = !$scope.packMontage; loginData.packMontage = $scope.packMontage; NVRDataModel.setLogin(loginData); @@ -733,7 +849,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // So while this view, we DON'T want Android to keep sending 1 second // refreshes to the server for images we are not seeing //--------------------------------------------------------------------- - function onPause() { + function onPause() + { NVRDataModel.debug("MontageHistoryCtrl: onpause called"); $interval.cancel($rootScope.eventQueryInterval); $interval.cancel(intervalHandle); @@ -741,21 +858,27 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // FIXME: Do I need to setAwake(false) here? } - function onResume() {} - $scope.openMenu = function () { - $timeout(function () { + function onResume() + {} + $scope.openMenu = function() + { + $timeout(function() + { $rootScope.stateofSlide = $ionicSideMenuDelegate.isOpen(); }, 500); $ionicSideMenuDelegate.toggleLeft(); }; - $scope.$on('$destroy', function () { + $scope.$on('$destroy', function() + { NVRDataModel.debug("Cancelling eventQueryInterval"); $interval.cancel($rootScope.eventQueryInterval); }); - $scope.$on('$ionicView.loaded', function () { + $scope.$on('$ionicView.loaded', function() + { //console.log("**VIEW ** MontageHistoryCtrl Loaded"); }); - $scope.$on('$ionicView.enter', function () { + $scope.$on('$ionicView.enter', function() + { NVRDataModel.debug("**VIEW ** MontageHistory Ctrl Entered"); var ld = NVRDataModel.getLogin(); //console.log("Setting Awake to " + NVRDataModel.getKeepAwake()); @@ -763,7 +886,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc NVRDataModel.debug("query timer started"); $interval.cancel($rootScope.eventQueryInterval); //console.log ("****************** TIMER STARTED INSIDE ENTER"); - $rootScope.eventQueryInterval = $interval(function () { + $rootScope.eventQueryInterval = $interval(function() + { checkAllEvents(); }.bind(this), zm.eventHistoryTimer); }); @@ -771,14 +895,17 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc console.log ("******** HISTORY UNLOADED KILLING WINDOW ************"); window.stop(); });*/ - $scope.$on('$ionicView.beforeEnter', function () { + $scope.$on('$ionicView.beforeEnter', function() + { // NVRDataModel.log ("Before Enter History: initing connkeys"); }); - $scope.$on('$ionicView.beforeLeave', function () { + $scope.$on('$ionicView.beforeLeave', function() + { //console.log("**VIEW ** Event History Ctrl Left, force removing modal"); if ($scope.modal) $scope.modal.remove(); NVRDataModel.log("BeforeLeave: Nullifying the streams..."); - for (i = 0; i < $scope.MontageMonitors.length; i++) { + for (i = 0; i < $scope.MontageMonitors.length; i++) + { var element = document.getElementById("img-" + i); /*if (element) { @@ -795,8 +922,10 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc NVRDataModel.log("MontageHistory:Stopping network pull..."); // make sure this is applied in scope digest to stop network pull // thats why we are doing it beforeLeave - for (i = 0; i < $scope.MontageMonitors.length; i++) { - if ($scope.MontageMonitors[i].Monitor.connKey != '' && $scope.MontageMonitors[i].Monitor.eventUrl != 'img/noevent.png' && $scope.MontageMonitors[i].Monitor.Function != 'None' && $scope.MontageMonitors[i].Monitor.lisDisplay != 'noshow' && $scope.MontageMonitors[i].Monitor.Enabled != '0') { + for (i = 0; i < $scope.MontageMonitors.length; i++) + { + if ($scope.MontageMonitors[i].Monitor.connKey != '' && $scope.MontageMonitors[i].Monitor.eventUrl != 'img/noevent.png' && $scope.MontageMonitors[i].Monitor.Function != 'None' && $scope.MontageMonitors[i].Monitor.lisDisplay != 'noshow' && $scope.MontageMonitors[i].Monitor.Enabled != '0') + { NVRDataModel.log("Before leave: Calling kill with " + $scope.MontageMonitors[i].Monitor.connKey); var tmpCK = angular.copy($scope.MontageMonitors[i].Monitor.connKey); timedControlEventStream(2500, 17, "", tmpCK, -1); @@ -807,10 +936,12 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc NVRDataModel.log("Forcing a window.stop() here"); NVRDataModel.stopNetwork("MontageHistory-beforeLeave"); }); - $scope.$on('$ionicView.unloaded', function () {}); - $scope.sliderChanged = function (dirn) { + $scope.$on('$ionicView.unloaded', function() {}); + $scope.sliderChanged = function(dirn) + { //console.log("SLIDER CHANGED"); - if ($scope.sliderChanging) { + if ($scope.sliderChanging) + { // console.log ("too fast my friend"); //$scope.slider.monsize = oldSliderVal; // return; @@ -818,19 +949,24 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc $scope.sliderChanging = true; var somethingReset = false; // this only changes items that are selected - for (var i = 0; i < $scope.MontageMonitors.length; i++) { + for (var i = 0; i < $scope.MontageMonitors.length; i++) + { var curVal = parseInt($scope.MontageMonitors[i].Monitor.gridScale); curVal = curVal + (10 * dirn); if (curVal < 10) curVal = 10; if (curVal > 100) curVal = 100; //console.log ("For Index: " + i + " From: " + $scope.MontageMonitors[i].Monitor.gridScale + " To: " + curVal); - if ($scope.isDragabillyOn) { + if ($scope.isDragabillyOn) + { // only do this for selected monitors - if ($scope.MontageMonitors[i].Monitor.selectStyle == "dragborder-selected") { + if ($scope.MontageMonitors[i].Monitor.selectStyle == "dragborder-selected") + { $scope.MontageMonitors[i].Monitor.gridScale = curVal; somethingReset = true; } - } else { + } + else + { $scope.MontageMonitors[i].Monitor.gridScale = curVal; //somethingReset = true; } @@ -838,7 +974,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // this changes all items if none were selected if (!somethingReset && $scope.isDragabillyOn) // nothing was selected { - for (i = 0; i < $scope.MontageMonitors.length; i++) { + for (i = 0; i < $scope.MontageMonitors.length; i++) + { var cv = parseInt($scope.MontageMonitors[i].Monitor.gridScale); cv = cv + (10 * dirn); if (cv < 10) cv = 10; @@ -847,7 +984,8 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc } } //pckry.reloadItems(); - pckry.once('layoutComplete', function () { + pckry.once('layoutComplete', function() + { /* $timeout(function () { var positions = pckry.EHgetShiftPositions('eh-data-item-id'); //console.log ("POSITIONS MAP " + JSON.stringify(positions)); @@ -858,58 +996,77 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc $scope.sliderChanging = false; }, zm.packeryTimer);*/ }); - if (!somethingReset) { + if (!somethingReset) + { //console.log (">>>SOMETHING NOT RESET"); - $timeout(function () { + $timeout(function() + { pckry.layout(); }, zm.packeryTimer); - } else { + } + else + { //console.log (">>>SOMETHING RESET"); - $timeout(function () { + $timeout(function() + { layout(pckry); }, zm.packeryTimer); } }; - function layout(pckry) { + function layout(pckry) + { pckry.shiftLayout(); } - $scope.resetSizes = function () { + $scope.resetSizes = function() + { var somethingReset = false; - for (var i = 0; i < $scope.MontageMonitors.length; i++) { - if ($scope.isDragabillyOn) { - if ($scope.MontageMonitors[i].Monitor.selectStyle == "dragborder-selected") { + for (var i = 0; i < $scope.MontageMonitors.length; i++) + { + if ($scope.isDragabillyOn) + { + if ($scope.MontageMonitors[i].Monitor.selectStyle == "dragborder-selected") + { $scope.MontageMonitors[i].Monitor.gridScale = "50"; somethingReset = true; } - } else { + } + else + { $scope.MontageMonitors[i].Monitor.gridScale = "50"; // somethingReset = true; } } if (!somethingReset && $scope.isDragabillyOn) // nothing was selected { - for (i = 0; i < $scope.MontageMonitors.length; i++) { + for (i = 0; i < $scope.MontageMonitors.length; i++) + { $scope.MontageMonitors[i].Monitor.gridScale = "50"; } } - $timeout(function () { + $timeout(function() + { pckry.reloadItems(); - $timeout(function () { + $timeout(function() + { pckry.layout(); }, zm.packeryTimer); // force here - no shiftlayout }, 100); }; - function isEmpty(obj) { - for (var prop in obj) { + function isEmpty(obj) + { + for (var prop in obj) + { return false; } return true; } // called by afterEnter to load Packery - function initPackery() { - $ionicLoading.show({ + function initPackery() + { + $ionicLoading.show( + { template: $translate.instant('kArrangingImages'), noBackdrop: true, duration: zm.loadingTimeout @@ -920,40 +1077,44 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc var ld = NVRDataModel.getLogin(); var elem = angular.element(document.getElementById("mygrid")); - pckry = new Packery('.grid', { - itemSelector: '.grid-item', - percentPosition: true, - columnWidth: '.grid-sizer', - gutter: 0, - initLayout: true + pckry = new Packery('.grid', + { + itemSelector: '.grid-item', + percentPosition: true, + columnWidth: '.grid-sizer', + gutter: 0, + initLayout: true - }); + }); //console.log ("**** mygrid is " + JSON.stringify(elem)); - imagesLoaded(elem).on('progress', function (instance, img) { + imagesLoaded(elem).on('progress', function(instance, img) + { var result = img.isLoaded ? 'loaded' : 'broken'; - NVRDataModel.debug( '~~loaded image is ' + result + ' for ' + img.img.src ); + NVRDataModel.debug('~~loaded image is ' + result + ' for ' + img.img.src); pckry.layout(); progressCalled = true; // if (layouttype) $timeout (function(){layout(pckry);},100); }); - imagesLoaded(elem).once('always', function () { + imagesLoaded(elem).once('always', function() + { //console.log("******** ALL IMAGES LOADED"); $scope.$digest(); NVRDataModel.debug("All images loaded"); $ionicLoading.hide(); $scope.areImagesLoading = false; - - - if (!progressCalled) { + + if (!progressCalled) + { NVRDataModel.log("*** PROGRESS WAS NOT CALLED"); pckry.reloadItems(); } + $timeout(function() + { - $timeout(function () { - - pckry.getItemElements().forEach(function (itemElem) { + pckry.getItemElements().forEach(function(itemElem) + { draggie = new Draggabilly(itemElem); pckry.bindDraggabillyEvents(draggie); draggies.push(draggie); @@ -963,8 +1124,6 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc pckry.on('dragItemPositioned', itemDragged); - - /*if (!isEmpty(positions)) { NVRDataModel.log("Arranging as per packery grid"); @@ -986,26 +1145,24 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc }, 0); }*/ - - - $timeout(function () { + $timeout(function() + { NVRDataModel.log("Force calling resize"); pckry.layout(); $scope.packeryDone = true; }, zm.packeryTimer); // don't ask - - }, zm.packeryTimer); - }); - function itemDragged(item) { + function itemDragged(item) + { NVRDataModel.debug("drag complete"); } } - $scope.$on('$ionicView.beforeEnter', function () { + $scope.$on('$ionicView.beforeEnter', function() + { // This rand is really used to reload the monitor image in img-src so it is not cached // I am making sure the image in montage view is always fresh // I don't think I am using this anymore FIXME: check and delete if needed @@ -1014,69 +1171,79 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc $scope.packeryDone = false; readyToRun = false; $scope.MontageMonitors = message; - doInitCode(); - - - }); - $scope.reloadView = function () { + $scope.reloadView = function() + { $rootScope.rand = Math.floor((Math.random() * 100000) + 1); NVRDataModel.log("User action: image reload " + $rootScope.rand); }; - $scope.doRefresh = function () { + $scope.doRefresh = function() + { //console.log("***Pull to Refresh, recomputing Rand"); NVRDataModel.log("Reloading view for montage view, recomputing rand"); $rootScope.rand = Math.floor((Math.random() * 100000) + 1); $scope.MontageMonitors = []; imageLoadingDataShare.set(0); var refresh = NVRDataModel.getMonitors(1); - refresh.then(function (data) { + refresh.then(function(data) + { $scope.MontageMonitors = data.data; $scope.$broadcast('scroll.refreshComplete'); }); }; - function drawGraph(f, mid) { + function drawGraph(f, mid) + { //console.log("Graphing on " + "eventchart-" + mid); var cv = document.getElementById("eventchart-" + mid); var ctx = cv.getContext("2d"); frameoptions = { responsive: true, legend: false, - title: { + title: + { display: false, text: "" }, - scales: { - yAxes: [{ + scales: + { + yAxes: [ + { display: false, - scaleLabel: { + scaleLabel: + { display: false, labelString: 'value', } - }], - xAxes: [{ + }], + xAxes: [ + { type: 'time', display: false, - time: { + time: + { format: timeFormat, tooltipFormat: 'll HH:mm', min: f.datasets[0].data[0].x, max: f.datasets[0].data[f.datasets[0].data.length - 1].x, - displayFormats: {} + displayFormats: + {} }, - scaleLabel: { + scaleLabel: + { display: false, labelString: '' } }] } }; - $timeout(function () { - var myChart = new Chart(ctx, { + $timeout(function() + { + var myChart = new Chart(ctx, + { type: 'line', data: f, options: frameoptions, @@ -1166,27 +1333,32 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc $scope.datetimeValueFrom.hrs = Math.round(moment.duration(moment().diff(moment($scope.datetimeValueFrom.value))).asHours()); commonCss = { - background: { + background: + { "background-color": "silver" }, - before: { + before: + { "background-color": "purple" }, - default: { + default: + { "background-color": "white" }, // default value: 1px - after: { + after: + { "background-color": "green" }, // zone after default value - pointer: { + pointer: + { "background-color": "red" }, // circle pointer - range: { + range: + { "background-color": "red" } // use it if double value }; - $scope.monitorSize = []; // array with montage sizes per monitor $scope.scaleDirection = []; // 1 = increase -1 = decrease // The difference between old and original is this: @@ -1200,24 +1372,28 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc var montageOrder = []; // This array will keep the ordering in montage view var hiddenOrder = []; // 1 = hide, 0 = don't hide var tempMonitors = message; - if (tempMonitors.length == 0) { - $rootScope.zmPopup = $ionicPopup.alert({ + if (tempMonitors.length == 0) + { + $rootScope.zmPopup = $ionicPopup.alert( + { title: $translate.instant('kNoMonitors'), template: $translate.instant('kPleaseCheckCredentials') }); - $ionicHistory.nextViewOptions({ + $ionicHistory.nextViewOptions( + { disableBack: true }); $state.go("login"); return; } - + NVRDataModel.log("Inside MontageHistoryCtrl:We found " + $scope.MontageMonitors.length + " monitors"); // $scope.MontageMonitors = NVRDataModel.applyMontageMonitorPrefs(message, 1)[0]; var loginData = NVRDataModel.getLogin(); // init monitors NVRDataModel.debug(">>Initializing connkeys and images..."); - for (i = 0; i < $scope.MontageMonitors.length; i++) { + for (i = 0; i < $scope.MontageMonitors.length; i++) + { //$scope.MontageMonitors[i].Monitor.connKey=''; $scope.MontageMonitors[i].Monitor.eid = "-1"; $scope.MontageMonitors[i].Monitor.connKey = (Math.floor((Math.random() * 999999) + 1)).toString(); @@ -1237,19 +1413,26 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc // Handling of back button in case modal is open should // close the modal // -------------------------------------------------------- - $ionicPlatform.registerBackButtonAction(function (e) { + $ionicPlatform.registerBackButtonAction(function(e) + { e.preventDefault(); - if ($scope.modal && $scope.modal.isShown()) { + if ($scope.modal && $scope.modal.isShown()) + { // switch off awake, as liveview is finished NVRDataModel.debug("Modal is open, closing it"); NVRDataModel.setAwake(false); $scope.modal.remove(); $scope.isModalActive = false; - } else { + } + else + { NVRDataModel.debug("Modal is closed, so toggling or exiting"); - if (!$ionicSideMenuDelegate.isOpenLeft()) { + if (!$ionicSideMenuDelegate.isOpenLeft()) + { $ionicSideMenuDelegate.toggleLeft(); - } else { + } + else + { navigator.app.exitApp(); } } @@ -1260,13 +1443,15 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc $scope.LoginData = NVRDataModel.getLogin(); $scope.monLimit = $scope.LoginData.maxMontage; $scope.currentLimit = $scope.LoginData.maxMontage; - if ($rootScope.platformOS != 'ios') { + if ($rootScope.platformOS != 'ios') + { NVRDataModel.log("Limiting montage to 5, thanks to Chrome's stupid connection limit"); $scope.currentLimit = 5; $scope.monLimit = 5; } $rootScope.authSession = "undefined"; - $ionicLoading.show({ + $ionicLoading.show( + { template: $translate.instant('kNegotiatingStreamAuth'), animation: 'fade-in', showBackdrop: true, @@ -1277,23 +1462,27 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc ld = NVRDataModel.getLogin(); //console.log ("MONITORS " + JSON.stringify($scope.monitors)); $rootScope.validMonitorId = $scope.MontageMonitors[0].Monitor.Id; - NVRDataModel.getAuthKey($rootScope.validMonitorId).then(function (success) { + NVRDataModel.getAuthKey($rootScope.validMonitorId).then(function(success) + { $ionicLoading.hide(); //console.log(success); $rootScope.authSession = success; NVRDataModel.log("Stream authentication construction: " + $rootScope.authSession); - $timeout(function () { + $timeout(function() + { initPackery(); readyToRun = true; footerCollapse(); }, zm.packeryTimer); - }, function (error) { + }, function(error) + { $ionicLoading.hide(); NVRDataModel.debug("MontageHistoryCtrl: Error in authkey retrieval " + error); //$rootScope.authSession=""; NVRDataModel.log("MontageHistoryCtrl: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession); - $timeout(function () { + $timeout(function() + { initPackery(); readyToRun = true; footerCollapse(); @@ -1301,4 +1490,4 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc }); } -}]);
\ No newline at end of file +}]); |
