summaryrefslogtreecommitdiff
path: root/www/js/EventModalCtrl.js
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2018-05-09 12:34:59 -0400
committerPliable Pixels <pliablepixels@gmail.com>2018-05-09 12:34:59 -0400
commitbf276f8f3a973448929907efe313682ec1f5f629 (patch)
tree38faeb06ee466ccfdc1ba56e72cac0c6ec54fb01 /www/js/EventModalCtrl.js
parent44399edf47d6d4473779bd87f3fdbfb34b0045cb (diff)
variable name cleanup
Diffstat (limited to 'www/js/EventModalCtrl.js')
-rw-r--r--www/js/EventModalCtrl.js3739
1 files changed, 1744 insertions, 1995 deletions
diff --git a/www/js/EventModalCtrl.js b/www/js/EventModalCtrl.js
index d39af046..eeff3862 100644
--- a/www/js/EventModalCtrl.js
+++ b/www/js/EventModalCtrl.js
@@ -1,2351 +1,2100 @@
-
// Common Controller for the montage view
/* jshint -W041 */
/* jslint browser: true*/
/* global saveAs, cordova,StatusBar,angular,console,ionic, moment, Chart */
-angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$rootScope', 'zm', 'NVRDataModel', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$q', '$sce', 'carouselUtils', '$ionicPopup', '$translate', '$filter', 'SecuredPopups', function($scope, $rootScope, zm, NVRDataModel, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $q, $sce, carouselUtils, $ionicPopup, $translate, $filter, SecuredPopups)
-{
+angular.module('zmApp.controllers').controller('EventModalCtrl', ['$scope', '$rootScope', 'zm', 'NVRDataModel', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$q', '$sce', 'carouselUtils', '$ionicPopup', '$translate', '$filter', 'SecuredPopups', function ($scope, $rootScope, zm, NVRDataModel, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $q, $sce, carouselUtils, $ionicPopup, $translate, $filter, SecuredPopups) {
+
+
+ var playerReady = false;
+ var streamState = {
+ SNAPSHOT: 1,
+ ACTIVE: 2, // using zms
+ STOPPED: 3 // starts off in this mode
+ };
+ // from parent scope
+ var currentEvent = $scope.currentEvent;
+ var nphTimer;
+ var eventQueryHandle;
+ $scope.loginData = NVRDataModel.getLogin();
+ $scope.currentRate = '-';
+ var timeFormat = 'MM/DD/YYYY HH:mm:ss';
+ var event;
+ var gEvent;
+ var handle;
+ var showLive = true;
+ var isGlobalFid = false; // true if its set to MaxScoreFrameId in events
+ var eventId = 0;
+ var isSnapShotEnabled = false;
+
+
+
+ var broadcastHandles = [];
+ var currentStreamState = streamState.STOPPED;
+
+ var framearray = {
+
+ labels: [],
+ datasets: [{
+ //label: '# of Votes',
+ backgroundColor: 'rgba(242, 12, 12, 0.5)',
+ borderColor: 'rgba(242, 12, 12, 0.5)',
+ data: [],
+ }]
+ };
+
+ var frameoptions = [];
+
+ var eventImageDigits = 5; // failsafe
+ $scope.currentProgress = {
+ progress: 0
+ };
+ $scope.sliderProgress = {
+ progress: 0
+ };
+ NVRDataModel.getKeyConfigParams(0)
+ .then(function (data) {
+ //console.log ("***GETKEY: " + JSON.stringify(data));
+ eventImageDigits = parseInt(data);
+ //NVRDataModel.log("Image padding digits reported as " + eventImageDigits);
+ });
+ $scope.animationInProgress = false;
+ $scope.imageFit = true;
+ // FIXME: This is a hack - for some reason
+ // the custom slider view is messed up till the image loads
+ // in modal view
+ $scope.showModalRangeSider = false;
+ $scope.isModalActive = true;
- var playerReady = false;
- var streamState = {
- SNAPSHOT:1,
- ACTIVE:2,
- STOPPED:3
- };
- // from parent scope
- var currentEvent = $scope.currentEvent;
- var nphTimer;
- var eventQueryHandle;
- $scope.loginData = NVRDataModel.getLogin();
- $scope.currentRate = '-';
- var timeFormat = 'MM/DD/YYYY HH:mm:ss';
- var event;
- var gEvent;
- var handle;
- var showLive = true;
- var maxAlarmFid = 0;
- var eventId = 0;
- var isSnapShotEnabled = false;
+ $timeout(function () {
+ $scope.showModalRangeSider = true;
+ }, 2000);
+ document.addEventListener("pause", onPause, false);
+ document.addEventListener("resume", onResume, false);
- var broadcastHandles = [];
- var currentStreamState = streamState.STOPPED;
- var framearray = {
+ var ld = NVRDataModel.getLogin();
- labels: [],
- datasets: [
- {
- //label: '# of Votes',
- backgroundColor: 'rgba(242, 12, 12, 0.5)',
- borderColor: 'rgba(242, 12, 12, 0.5)',
- data: [],
- }]
- };
+ $scope.currentStreamMode = ld.gapless ? 'gapless' : 'single';
+ NVRDataModel.log("Using stream mode " + $scope.currentStreamMode);
- var frameoptions = [];
+ NVRDataModel.debug("EventModalCtrl called from " + $ionicHistory.currentStateName());
+ // This is not needed for event mode
- var eventImageDigits = 5; // failsafe
- $scope.currentProgress = {
- progress: 0
- };
- $scope.sliderProgress = {
- progress: 0
- };
- NVRDataModel.getKeyConfigParams(0)
- .then(function(data)
- {
- //console.log ("***GETKEY: " + JSON.stringify(data));
- eventImageDigits = parseInt(data);
- NVRDataModel.log("Image padding digits reported as " + eventImageDigits);
- });
-
- $scope.animationInProgress = false;
- $scope.imageFit = true;
- // FIXME: This is a hack - for some reason
- // the custom slider view is messed up till the image loads
- // in modal view
- $scope.showModalRangeSider = false;
- $scope.isModalActive = true;
+ NVRDataModel.debug("Setting playback to " + $scope.streamMode);
- $timeout(function()
- {
- $scope.showModalRangeSider = true;
- }, 2000);
+ //--------------------------------------------------------------------------------------
+ // Handles bandwidth change, if required
+ //
+ //--------------------------------------------------------------------------------------
- document.addEventListener("pause", onPause, false);
- document.addEventListener("resume", onResume, false);
+ var bc = $scope.$on("bandwidth-change", function (e, data) {
+ // not called for offline, I'm only interested in BW switches
+ NVRDataModel.debug("Got network change:" + data);
+ var ds;
+ if (data == 'lowbw') {
+ ds = $translate.instant('kLowBWDisplay');
+ } else {
+ ds = $translate.instant('kHighBWDisplay');
+ }
+ NVRDataModel.displayBanner('net', [ds]);
-
var ld = NVRDataModel.getLogin();
- $scope.currentStreamMode = ld.gapless ? 'gapless' : 'single';
- NVRDataModel.log("Using stream mode " + $scope.currentStreamMode);
+ $scope.singleImageQuality = (NVRDataModel.getBandwidth() == "lowbw") ? zm.eventSingleImageQualityLowBW : ld.singleImageQuality;
+ });
+ broadcastHandles.push(bc);
- NVRDataModel.debug("EventModalCtrl called from " + $ionicHistory.currentStateName());
- // This is not needed for event mode
+ //-------------------------------------------------------
+ // we use this to reload the connkey if authkey changed
+ //------------------------------------------------------
- NVRDataModel.debug("Setting playback to " + $scope.streamMode);
+ var as = $scope.$on("auth-success", function () {
-
- //--------------------------------------------------------------------------------------
- // Handles bandwidth change, if required
- //
- //--------------------------------------------------------------------------------------
+ NVRDataModel.debug("EventModalCtrl: Re-login detected, resetting everything & re-generating connkey");
+ // NVRDataModel.stopNetwork("Auth-Success inside EventModalCtrl");
+ $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ //console.log ("********* OFFSET FROM AUTH SUCC");
+ $timeout(function () {
+ sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
+ }, 500);
+ //$timeout.cancel(eventQueryHandle);
+ //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
- var bc = $scope.$on("bandwidth-change", function(e, data)
- {
- // not called for offline, I'm only interested in BW switches
- NVRDataModel.debug("Got network change:" + data);
- var ds;
- if (data == 'lowbw')
- {
- ds = $translate.instant('kLowBWDisplay');
- }
- else
- {
- ds = $translate.instant('kHighBWDisplay');
- }
- NVRDataModel.displayBanner('net', [ds]);
+ });
+ broadcastHandles.push(as);
- var ld = NVRDataModel.getLogin();
+ //-------------------------------------------------------
+ // tap to pause
+ //------------------------------------------------------
- $scope.singleImageQuality = (NVRDataModel.getBandwidth() == "lowbw") ? zm.eventSingleImageQualityLowBW : ld.singleImageQuality;
- });
- broadcastHandles.push(bc);
+ $scope.togglePause = function () {
+ $scope.isPaused = !$scope.isPaused;
+ NVRDataModel.debug("Paused is " + $scope.isPaused);
+ sendCommand($scope.isPaused ? '1' : '2', $scope.connKey);
- //-------------------------------------------------------
- // we use this to reload the connkey if authkey changed
- //------------------------------------------------------
+ };
- var as = $scope.$on("auth-success", function()
- {
+ $scope.onPlayerReady = function (api) {
- NVRDataModel.debug("EventModalCtrl: Re-login detected, resetting everything & re-generating connkey");
- // NVRDataModel.stopNetwork("Auth-Success inside EventModalCtrl");
- $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- //console.log ("********* OFFSET FROM AUTH SUCC");
- $timeout(function()
- {
- sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
- }, 500);
- //$timeout.cancel(eventQueryHandle);
- //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
+ // we need this timeout to avoid load interrupting
+ // play -- I suppose its an angular digest foo thing
+ //console.log ("*********** ON PLAY READY");
+ NVRDataModel.debug("On Play Ready invoked");
+ handle = api;
+ handle.mediaElement.attr("playsinline", "");
- });
- broadcastHandles.push(as);
+ $ionicLoading.show({
+ template: "<ion-spinner icon='ripple' class='spinner-energized'></ion-spinner><br/>" + $translate.instant('kVideoLoading') + "...",
- //-------------------------------------------------------
- // tap to pause
- //------------------------------------------------------
+ });
+ NVRDataModel.debug("Player is ready");
+ $timeout(function () {
+ handle.pause();
+ handle.setPlayback(NVRDataModel.getLogin().videoPlaybackSpeed);
+ handle.play();
+ NVRDataModel.debug("*** Invoking play");
+ playerReady = true;
- $scope.togglePause = function()
- {
- $scope.isPaused = !$scope.isPaused;
- NVRDataModel.debug("Paused is " + $scope.isPaused);
- sendCommand($scope.isPaused ? '1' : '2', $scope.connKey);
+ }, 300);
- };
+ // window.stop();
+ };
- $scope.onPlayerReady = function(api)
- {
+ $scope.onPlaybackUpdate = function (rate) {
+ // console.log ("UPDATED RATE TO "+rate);
+ var ld = NVRDataModel.getLogin();
+ ld.videoPlaybackSpeed = rate;
+ NVRDataModel.setLogin(ld);
+ };
+
+ $scope.onCanPlay = function () {
+
+ //console.log ("*********** CAN PLAY");
+ $ionicLoading.hide();
+ NVRDataModel.debug("This video can be played");
+ $scope.videoObject.config.cuepoints.points = [];
+ // now set up cue points
+ NVRDataModel.debug("Setting cue points..");
+ NVRDataModel.debug("API-Total length:" + currentEvent.Event.Length);
+ NVRDataModel.debug("Player-Total length:" + handle.totalTime / 1000);
+
+ for (var l = 0; l < currentEvent.Frame.length; l++) {
+ if (currentEvent.Frame[l].Type == 'Alarm') {
+ // var ft = moment(currentEvent.Frame[l].TimeStamp);
+ //var s = factor*Math.abs(st.diff(ft,'seconds'));
+
+ var s = currentEvent.Frame[l].Delta;
+
+ //console.log("START="+currentEvent.Event.StartTime);
+ //console.log("END="+currentEvent.Frame[l].TimeStamp);
+ //NVRDataModel.debug ("alarm cue at:"+s+"s");
+ $scope.videoObject.config.cuepoints.points.push({
+ time: s
+ });
+ }
+ }
+ };
+
+ $scope.onVideoError = function (event) {
+ $ionicLoading.hide();
+
+ if (!$scope.isModalActive || !playerReady) return;
+ NVRDataModel.debug("player reported a video error:" + JSON.stringify(event));
+ $rootScope.zmPopup = SecuredPopups.show('alert', {
+ title: $translate.instant('kError'),
+ template: $rootScope.platformOS == 'desktop' ? $translate.instant('kVideoError') : $translate.instant('kVideoErrorMobile'),
+ okText: $translate.instant('kButtonOk'),
+ cancelText: $translate.instant('kButtonCancel'),
+ });
- // we need this timeout to avoid load interrupting
- // play -- I suppose its an angular digest foo thing
- //console.log ("*********** ON PLAY READY");
- NVRDataModel.debug ("On Play Ready invoked");
- handle = api;
- handle.mediaElement.attr("playsinline", "");
+ };
- $ionicLoading.show(
- {
- template: "<ion-spinner icon='ripple' class='spinner-energized'></ion-spinner><br/>" + $translate.instant('kVideoLoading')+"...",
-
- });
- NVRDataModel.debug("Player is ready");
- $timeout(function()
- {
- handle.pause();
- handle.setPlayback(NVRDataModel.getLogin().videoPlaybackSpeed);
- handle.play();
- NVRDataModel.debug ("*** Invoking play");
- playerReady = true;
+ //-------------------------------------------------------
+ // This is what we call every zm.EventQueryInterval
+ // it really only queries to get status to it can display
+ // zms takes care of the display
+ //------------------------------------------------------
- }, 300);
+ function checkEvent() {
- // window.stop();
- };
+ if (currentStreamState == streamState.SNAPSHOT) return;
- $scope.onPlaybackUpdate = function(rate)
- {
- // console.log ("UPDATED RATE TO "+rate);
- var ld = NVRDataModel.getLogin();
- ld.videoPlaybackSpeed = rate;
- NVRDataModel.setLogin(ld);
- };
+ if ($scope.modalFromTimelineIsOpen == false) {
+ NVRDataModel.log("Modal was closed in timeline, cancelling timer");
+ $interval.cancel(eventQueryHandle);
+ return;
+ }
- $scope.onCanPlay = function()
- {
-
- //console.log ("*********** CAN PLAY");
- $ionicLoading.hide();
- NVRDataModel.debug("This video can be played");
- $scope.videoObject.config.cuepoints.points = [];
- // now set up cue points
- NVRDataModel.debug("Setting cue points..");
- NVRDataModel.debug ("API-Total length:"+currentEvent.Event.Length);
- NVRDataModel.debug ("Player-Total length:"+handle.totalTime/1000);
-
- for (var l=0; l<currentEvent.Frame.length; l++ )
- {
- if (currentEvent.Frame[l].Type=='Alarm')
- {
- // var ft = moment(currentEvent.Frame[l].TimeStamp);
- //var s = factor*Math.abs(st.diff(ft,'seconds'));
-
- var s = currentEvent.Frame[l].Delta;
-
- //console.log("START="+currentEvent.Event.StartTime);
- //console.log("END="+currentEvent.Frame[l].TimeStamp);
- //NVRDataModel.debug ("alarm cue at:"+s+"s");
- $scope.videoObject.config.cuepoints.points.push({time:s});
- }
- }
- };
+ //console.log ("Event timer");
+ //console.log ("Event timer");
- $scope.onVideoError = function(event)
- {
- $ionicLoading.hide();
+ if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '') {
+ //console.log("playing video, not using zms, skipping event commands");
+ } else {
+ processEvent('99', $scope.connKey)
+ .then(function (succ) {
+ $scope.checkEventOn = true;
+ },
+ function (err) {
+ //$scope.checkEventOn = true; // umm are we sure?
- if (!$scope.isModalActive || !playerReady) return;
- NVRDataModel.debug("player reported a video error:" + JSON.stringify(event));
- $rootScope.zmPopup = SecuredPopups.show('alert',
- {
- title: $translate.instant('kError'),
- template: $rootScope.platformOS == 'desktop' ? $translate.instant('kVideoError') : $translate.instant('kVideoErrorMobile'),
- okText: $translate.instant('kButtonOk'),
- cancelText: $translate.instant('kButtonCancel'),
- });
+ });
+ }
+ }
- };
+ function sendCommand(cmd, connkey, extras, rq) {
+ var d = $q.defer();
- //-------------------------------------------------------
- // This is what we call every zm.EventQueryInterval
- // it really only queries to get status to it can display
- // zms takes care of the display
- //------------------------------------------------------
+ if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '') {
+ // console.log("playing video, not using zms, skipping event commands");
+ d.resolve(true);
+ return (d.promise);
+ }
- function checkEvent()
- {
+ var loginData = NVRDataModel.getLogin();
+ //console.log("Sending CGI command to " + loginData.url);
+ var rqtoken = rq ? rq : "stream";
+ var myauthtoken = $rootScope.authSession.replace("&auth=", "");
+ //&auth=
+ $http({
+ method: 'POST',
+ /*timeout: 15000,*/
+ url: loginData.url + '/index.php',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ //'Accept': '*/*',
+ },
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" +
+ encodeURIComponent(obj[p]));
+ var foo = str.join("&");
+ if (extras) {
+ foo = foo + extras;
+ //console.log("EXTRAS****SUB RETURNING " + foo);
+ }
+ //console.log("CGI subcommand=" + foo);
+ return foo;
- if (currentStreamState == streamState.SNAPSHOT) return;
+ },
- if ($scope.modalFromTimelineIsOpen == false)
- {
- NVRDataModel.log("Modal was closed in timeline, cancelling timer");
- $interval.cancel(eventQueryHandle);
- return;
+ data: {
+ view: "request",
+ request: rqtoken,
+ connkey: connkey,
+ command: cmd,
+ auth: myauthtoken,
+ // user: loginData.username,
+ // pass: loginData.password
}
+ })
+ .then(function (resp) {
+ NVRDataModel.debug("sendCmd response:" + JSON.stringify(resp));
+ d.resolve(resp);
+ return (d.promise);
- //console.log ("Event timer");
- //console.log ("Event timer");
-
- if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '')
- {
- //console.log("playing video, not using zms, skipping event commands");
- }
- else
- {
- processEvent('99', $scope.connKey)
- .then (function (succ) {
- $scope.checkEventOn = true;
- },
- function (err) {
- //$scope.checkEventOn = true; // umm are we sure?
+ },
+ function (resp) {
+ NVRDataModel.debug("sendCmd error:" + JSON.stringify(resp));
+ d.reject(resp);
+ return (d.promise);
+ });
- });
- }
+ return (d.promise);
+ }
+
+ function processEvent(cmd, connkey) {
+
+ if ($scope.blockSlider) {
+ //console.log("Not doing ZMS Command as slider is depressed...");
+ return;
}
- function sendCommand(cmd, connkey, extras, rq)
- {
- var d = $q.defer();
+ var loginData = NVRDataModel.getLogin();
+ //console.log("sending process Event command to " + loginData.url);
+ var myauthtoken = $rootScope.authSession.replace("&auth=", "");
+ //&auth=
+ return $http({
+ method: 'POST',
+ /*timeout: 15000,*/
+ url: loginData.url + '/index.php',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ //'Accept': '*/*',
+ },
+ transformRequest: function (obj) {
+ var str = [];
+ for (var p in obj)
+ str.push(encodeURIComponent(p) + "=" +
+ encodeURIComponent(obj[p]));
+ var foo = str.join("&");
+ //console.log("****processEvent subcommands RETURNING " + foo);
+ return foo;
+ },
- if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '')
- {
- // console.log("playing video, not using zms, skipping event commands");
- d.resolve(true);
- return (d.promise);
+ data: {
+ view: "request",
+ request: "stream",
+ connkey: connkey,
+ command: cmd,
+ auth: myauthtoken,
+ // user: loginData.username,
+ // pass: loginData.password
}
+ })
+ .success(function (resp) {
+ // NVRDataModel.debug ("processEvent success:"+JSON.stringify(resp));
- var loginData = NVRDataModel.getLogin();
- //console.log("Sending CGI command to " + loginData.url);
- var rqtoken = rq ? rq : "stream";
- var myauthtoken = $rootScope.authSession.replace("&auth=", "");
- //&auth=
- $http(
- {
- method: 'POST',
- /*timeout: 15000,*/
- url: loginData.url + '/index.php',
- headers:
- {
- 'Content-Type': 'application/x-www-form-urlencoded',
- //'Accept': '*/*',
- },
- transformRequest: function(obj)
- {
- var str = [];
- for (var p in obj)
- str.push(encodeURIComponent(p) + "=" +
- encodeURIComponent(obj[p]));
- var foo = str.join("&");
- if (extras)
- {
- foo = foo + extras;
- //console.log("EXTRAS****SUB RETURNING " + foo);
- }
- //console.log("CGI subcommand=" + foo);
- return foo;
+ if (resp.result == "Ok") {
- },
+ if (resp.status) $scope.currentProgress.progress = resp.status.progress;
+ if (resp.status) $scope.eventId = resp.status.event;
+ $scope.d_eventId = $scope.eventId;
+ if (resp.status) $scope.currentRate = resp.status.rate;
- data:
- {
- view: "request",
- request: rqtoken,
- connkey: connkey,
- command: cmd,
- auth: myauthtoken,
- // user: loginData.username,
- // pass: loginData.password
- }
- })
- .then(function(resp)
- {
- NVRDataModel.debug("sendCmd response:" + JSON.stringify(resp));
- d.resolve(resp);
- return (d.promise);
+ if ($scope.currentProgress.progress > $scope.currentEventDuration) $scope.currentProgress.progress = $scope.currentEventDuration;
+ $scope.progressText = "At " + $scope.currentProgress.progress + "s of " + $scope.currentEventDuration + "s";
- },
- function(resp)
- {
- NVRDataModel.debug("sendCmd error:" + JSON.stringify(resp));
- d.reject(resp);
- return (d.promise);
- });
+ $scope.sliderProgress.progress = $scope.currentProgress.progress;
- return (d.promise);
- }
+ // lets not do this and use zms to move forward or back
+ // as this code conflicts with fast rev etc
+ //if (Math.floor(resp.status.progress) >=$scope.currentEventDuration)
- function processEvent(cmd, connkey)
- {
+ //$timeout (checkEvent(), zm.eventPlaybackQuery);
+ //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
- if ($scope.blockSlider)
- {
- //console.log("Not doing ZMS Command as slider is depressed...");
- return;
- }
+ } else // resp.result was messed up
- var loginData = NVRDataModel.getLogin();
- //console.log("sending process Event command to " + loginData.url);
- var myauthtoken = $rootScope.authSession.replace("&auth=", "");
- //&auth=
- return $http(
{
- method: 'POST',
- /*timeout: 15000,*/
- url: loginData.url + '/index.php',
- headers:
- {
- 'Content-Type': 'application/x-www-form-urlencoded',
- //'Accept': '*/*',
- },
- transformRequest: function(obj)
- {
- var str = [];
- for (var p in obj)
- str.push(encodeURIComponent(p) + "=" +
- encodeURIComponent(obj[p]));
- var foo = str.join("&");
- //console.log("****processEvent subcommands RETURNING " + foo);
- return foo;
- },
+ NVRDataModel.debug("Hmm I found an error " + JSON.stringify(resp));
+ //window.stop();
+ // $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- data:
- {
- view: "request",
- request: "stream",
- connkey: connkey,
- command: cmd,
- auth: myauthtoken,
- // user: loginData.username,
- // pass: loginData.password
- }
- })
- .success(function(resp)
- {
- // NVRDataModel.debug ("processEvent success:"+JSON.stringify(resp));
+ // console.log (JSON.stringify(resp));
+ /*$timeout(function()
+ {
+ sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
+ }, 500);
+ NVRDataModel.debug("so I'm regenerating Connkey to " + $scope.connKey);*/
- if (resp.result == "Ok")
- {
+ }
+ })
+ .error(function (resp) {
+ NVRDataModel.debug("processEvent error:" + JSON.stringify(resp));
+ //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
- if (resp.status) $scope.currentProgress.progress = resp.status.progress;
- if (resp.status) $scope.eventId = resp.status.event;
- $scope.d_eventId = $scope.eventId;
- if (resp.status) $scope.currentRate = resp.status.rate;
+ });
- if ($scope.currentProgress.progress > $scope.currentEventDuration) $scope.currentProgress.progress = $scope.currentEventDuration;
- $scope.progressText = "At " + $scope.currentProgress.progress + "s of " + $scope.currentEventDuration + "s";
+ }
- $scope.sliderProgress.progress = $scope.currentProgress.progress;
+ function onPause() {
- // lets not do this and use zms to move forward or back
- // as this code conflicts with fast rev etc
- //if (Math.floor(resp.status.progress) >=$scope.currentEventDuration)
+ broadcastHandles = [];
- //$timeout (checkEvent(), zm.eventPlaybackQuery);
- //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
- }
- else // resp.result was messed up
+ // $interval.cancel(modalIntervalHandle);
- {
- NVRDataModel.debug("Hmm I found an error " + JSON.stringify(resp));
- //window.stop();
- // $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ // FIXME: Do I need to setAwake(false) here?
- // console.log (JSON.stringify(resp));
- /*$timeout(function()
- {
- sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
- }, 500);
- NVRDataModel.debug("so I'm regenerating Connkey to " + $scope.connKey);*/
-
- }
- })
- .error(function(resp)
- {
- NVRDataModel.debug("processEvent error:" + JSON.stringify(resp));
- //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
+ if ($scope.modal !== undefined) {
+ $scope.modal.remove();
+ }
+ $interval.cancel(eventQueryHandle);
+ NVRDataModel.log("EventModalCtrl: paused");
+ if ($scope.connKey) sendCommand(17, $scope.connKey);
- });
+ }
- }
+ function onResume() {
+ /* NVRDataModel.debug("EventModalCtrl: Modal resume called");
+ $rootScope.modalRand = Math.floor((Math.random() * 100000) + 1);*/
- function onPause()
- {
-
- broadcastHandles = [];
-
+ }
- // $interval.cancel(modalIntervalHandle);
+ $scope.finishedLoadingImage = function () {
+ // console.log("***Monitor image FINISHED Loading***");
+ $ionicLoading.hide();
- // FIXME: Do I need to setAwake(false) here?
+ };
- if ($scope.modal !== undefined) {
- $scope.modal.remove();
- }
- $interval.cancel(eventQueryHandle);
- NVRDataModel.log("EventModalCtrl: paused");
- if ($scope.connKey) sendCommand(17, $scope.connKey);
+ $scope.enableSliderBlock = function () {
+ $scope.blockSlider = true;
+ };
- }
+ $scope.youChangedSlider = function () {
- function onResume()
- {
- /* NVRDataModel.debug("EventModalCtrl: Modal resume called");
- $rootScope.modalRand = Math.floor((Math.random() * 100000) + 1);*/
+ //console.log("YOU changed " + $scope.sliderProgress.progress);
+ $scope.currentProgress.progress = $scope.sliderProgress.progress;
+ sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress)
+ .then(function (s) {
+ $scope.blockSlider = false;
+ }, function (e) {
+ $scope.blockSlider = false;
+ });
- }
+ };
- $scope.finishedLoadingImage = function()
- {
- // console.log("***Monitor image FINISHED Loading***");
- $ionicLoading.hide();
+ //-----------------------------------------------------------------------
+ // Sucess/Error handlers for saving a snapshot of the
+ // monitor image to phone storage
+ //-----------------------------------------------------------------------
- };
+ function SaveSuccess() {
+ $ionicLoading.show({
+ template: $translate.instant('kDone'),
+ noBackdrop: true,
+ duration: 1000
+ });
+ NVRDataModel.debug("ModalCtrl:Photo saved successfuly");
+ }
+
+ function SaveError(e) {
+ $ionicLoading.show({
+ template: $translate.instant('kErrorSave'),
+ noBackdrop: true,
+ duration: 2000
+ });
+ NVRDataModel.log("Error saving image: " + e.message);
+ //console.log("***ERROR");
+ }
- $scope.enableSliderBlock = function()
- {
- $scope.blockSlider = true;
- };
+ $scope.jumpToOffsetInEvent = function () {
+ // streamReq.send( streamParms+"&command="+CMD_SEEK+"&offset="+offset );
+ };
- $scope.youChangedSlider = function()
- {
+ //-----------------------------------------------------------------------
+ // Saves a snapshot of the monitor image to phone storage
+ //-----------------------------------------------------------------------
- //console.log("YOU changed " + $scope.sliderProgress.progress);
- $scope.currentProgress.progress = $scope.sliderProgress.progress;
- sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress)
- .then(function(s)
- {
- $scope.blockSlider = false;
- }, function(e)
- {
- $scope.blockSlider = false;
- });
+ $scope.saveEventImageToPhoneWithPerms = function (onlyAlarms) {
- };
+ if ($rootScope.platformOS != 'android') {
+ processSaveEventImageToPhone(onlyAlarms);
+ return;
+ }
- //-----------------------------------------------------------------------
- // Sucess/Error handlers for saving a snapshot of the
- // monitor image to phone storage
- //-----------------------------------------------------------------------
+ // if we are on android do the 6.x+ hasPermissions flow
+ NVRDataModel.debug("EventModalCtrl: Permission checking for write");
+ var permissions = cordova.plugins.permissions;
+ permissions.hasPermission(permissions.WRITE_EXTERNAL_STORAGE, checkPermissionCallback, null);
- function SaveSuccess()
- {
- $ionicLoading.show(
- {
- template: $translate.instant('kDone'),
- noBackdrop: true,
- duration: 1000
- });
- NVRDataModel.debug("ModalCtrl:Photo saved successfuly");
+ function checkPermissionCallback(status) {
+ if (!status.hasPermission) {
+ SaveError("No permission to write to external storage");
+ }
+ permissions.requestPermission(permissions.WRITE_EXTERNAL_STORAGE, succ, err);
}
- function SaveError(e)
- {
- $ionicLoading.show(
- {
- template: $translate.instant('kErrorSave'),
- noBackdrop: true,
- duration: 2000
- });
- NVRDataModel.log("Error saving image: " + e.message);
- //console.log("***ERROR");
+ function succ(s) {
+ processSaveEventImageToPhone(onlyAlarms);
}
- $scope.jumpToOffsetInEvent = function()
- {
- // streamReq.send( streamParms+"&command="+CMD_SEEK+"&offset="+offset );
- };
+ function err(e) {
+ SaveError("Error in requestPermission");
+ }
+ };
- //-----------------------------------------------------------------------
- // Saves a snapshot of the monitor image to phone storage
- //-----------------------------------------------------------------------
+ function processSaveEventImageToPhone(onlyAlarms) {
- $scope.saveEventImageToPhoneWithPerms = function(onlyAlarms)
- {
+ if ($scope.loginData.useNphZmsForEvents) {
+ NVRDataModel.log("Use ZMS stream to save to phone");
+ saveEventImageToPhoneZms(onlyAlarms);
- if ($rootScope.platformOS != 'android')
- {
- processSaveEventImageToPhone(onlyAlarms);
- return;
- }
+ } else {
+ saveEventImageToPhone(onlyAlarms);
+ }
- // if we are on android do the 6.x+ hasPermissions flow
- NVRDataModel.debug("EventModalCtrl: Permission checking for write");
- var permissions = cordova.plugins.permissions;
- permissions.hasPermission(permissions.WRITE_EXTERNAL_STORAGE, checkPermissionCallback, null);
+ }
- function checkPermissionCallback(status)
- {
- if (!status.hasPermission)
- {
- SaveError("No permission to write to external storage");
- }
- permissions.requestPermission(permissions.WRITE_EXTERNAL_STORAGE, succ, err);
- }
+ function saveEventImageToPhoneZms(onlyAlarms) {
+ // The strategy here is to build the array now so we can grab frames
+ // $scope.currentProgress.progress is the seconds where we are
+ // $scope.eventId is the event Id
- function succ(s)
- {
- processSaveEventImageToPhone(onlyAlarms);
- }
+ $scope.isPaused = true;
- function err(e)
- {
- SaveError("Error in requestPermission");
- }
- };
+ $ionicLoading.show({
+ template: $translate.instant('kPleaseWait'),
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
+ sendCommand('1', $scope.connKey).
+ then(function (resp) {
+
+ // console.log ("PAUSE ANSWER IS " + JSON.stringify(resp));
+ $scope.currentProgress.progress = resp.data.status.progress;
+ // console.log ("STEP 0 progress is " + $scope.currentProgress.progress);
+ $scope.slides = [];
+
+ var apiurl = $scope.loginData.apiurl + "/events/" + $scope.eventId + ".json";
+ NVRDataModel.debug("prepared to get frame details using " + apiurl);
+ $http.get(apiurl)
+ .then(function (success) {
+
+ event = success.data.event;
+
+ event.Event.BasePath = computeBasePath(event);
+ event.Event.relativePath = computeRelativePath(event);
+ $scope.playbackURL = $scope.loginData.url;
+ $scope.eventBasePath = event.Event.BasePath;
+ $scope.relativePath = event.Event.relativePath;
+
+ // now lets get approx frame #
+
+ var totalTime = event.Event.Length;
+ var totalFrames = event.Event.Frames;
+
+ var myFrame = Math.round(totalFrames / totalTime * $scope.currentProgress.progress);
+
+ // console.log ("STEP 0: playback " + $scope.playbackURL + " total time " + totalTime + " frames " + totalFrames);
+
+ if (myFrame > totalFrames) myFrame = totalFrames;
+
+ // console.log ("STEP 0 myFrame is " + myFrame);
+ // console.log ("DUMPING " + JSON.stringify(event));
+ $scope.mycarousel.index = myFrame;
+ // console.log ("STEP 1 : Computed index as "+ $scope.mycarousel.index);
+ var i, p = 0;
+ for (i = 1; i <= event.Frame.length; i++) {
+ var fname = padToN(event.Frame[i - 1].FrameId, eventImageDigits) + "-capture.jpg";
+ // console.log ("Building " + fname);
+
+ // console.log ("DUMPING ONE " + JSON.stringify(event.Frame[i-1]));
+ // onlyAlarms means only copy alarmed frames
+ if (onlyAlarms) {
+ if (event.Frame[i - 1] && event.Frame[i - 1].Type == 'Alarm') {
+ p++;
+ $scope.slides.push({
+ id: event.Frame[i - 1].FrameId,
+ img: fname,
+ });
+ //console.log ("ALARM PUSHED " + fname);
+ }
+ } else // push all frames
+ {
+ //now handle bulk frames pushing before pushing this one
+ if (event.Frame[i - 1].Type == 'Bulk') {
+ var f1 = parseInt(event.Frame[i - 2].FrameId);
+ var f2 = parseInt(event.Frame[i - 1].FrameId);
- function processSaveEventImageToPhone(onlyAlarms)
- {
+ //console.log ("Filling in bulk from:"+f1+" to "+(f2-1));
+ for (var bulk = f1 + 1; bulk < f2; bulk++) {
+ //console.log ("Storing bulk:"+bulk);
+ var bfname = padToN(bulk, eventImageDigits) + "-capture.jpg";
+ p++;
+ $scope.slides.push({
+ id: bulk,
+ img: bfname
- if ($scope.loginData.useNphZmsForEvents)
- {
- NVRDataModel.log("Use ZMS stream to save to phone");
- saveEventImageToPhoneZms(onlyAlarms);
+ });
- }
- else
- {
- saveEventImageToPhone(onlyAlarms);
- }
- }
+ }
+ }
+ //console.log ("storing: "+event.Frame[i - 1].FrameId);
+ p++;
+ $scope.slides.push({
+ id: event.Frame[i - 1].FrameId,
+ img: fname,
+ });
- function saveEventImageToPhoneZms(onlyAlarms)
- {
- // The strategy here is to build the array now so we can grab frames
- // $scope.currentProgress.progress is the seconds where we are
- // $scope.eventId is the event Id
- $scope.isPaused = true;
- $ionicLoading.show(
- {
- template: $translate.instant('kPleaseWait'),
- noBackdrop: true,
- duration: zm.httpTimeout
- });
- sendCommand('1', $scope.connKey).
- then(function(resp)
- {
-
- // console.log ("PAUSE ANSWER IS " + JSON.stringify(resp));
- $scope.currentProgress.progress = resp.data.status.progress;
- // console.log ("STEP 0 progress is " + $scope.currentProgress.progress);
- $scope.slides = [];
-
- var apiurl = $scope.loginData.apiurl + "/events/" + $scope.eventId + ".json";
- NVRDataModel.debug("prepared to get frame details using " + apiurl);
- $http.get(apiurl)
- .then(function(success)
- {
-
- event = success.data.event;
-
- event.Event.BasePath = computeBasePath(event);
- event.Event.relativePath = computeRelativePath(event);
- $scope.playbackURL = $scope.loginData.url;
- $scope.eventBasePath = event.Event.BasePath;
- $scope.relativePath = event.Event.relativePath;
-
- // now lets get approx frame #
-
- var totalTime = event.Event.Length;
- var totalFrames = event.Event.Frames;
-
- var myFrame = Math.round(totalFrames / totalTime * $scope.currentProgress.progress);
-
- // console.log ("STEP 0: playback " + $scope.playbackURL + " total time " + totalTime + " frames " + totalFrames);
-
- if (myFrame > totalFrames) myFrame = totalFrames;
-
- // console.log ("STEP 0 myFrame is " + myFrame);
- // console.log ("DUMPING " + JSON.stringify(event));
- $scope.mycarousel.index = myFrame;
- // console.log ("STEP 1 : Computed index as "+ $scope.mycarousel.index);
- var i, p = 0;
- for (i = 1; i <= event.Frame.length; i++)
- {
- var fname = padToN(event.Frame[i - 1].FrameId, eventImageDigits) + "-capture.jpg";
- // console.log ("Building " + fname);
-
- // console.log ("DUMPING ONE " + JSON.stringify(event.Frame[i-1]));
- // onlyAlarms means only copy alarmed frames
- if (onlyAlarms)
- {
- if (event.Frame[i - 1] && event.Frame[i - 1].Type == 'Alarm')
- {
- p++;
- $scope.slides.push(
- {
- id: event.Frame[i - 1].FrameId,
- img: fname,
- });
- //console.log ("ALARM PUSHED " + fname);
- }
- }
- else // push all frames
- {
- //now handle bulk frames pushing before pushing this one
- if (event.Frame[i-1].Type == 'Bulk')
- {
- var f1 = parseInt(event.Frame[i-2].FrameId);
- var f2 = parseInt(event.Frame[i-1].FrameId);
-
- //console.log ("Filling in bulk from:"+f1+" to "+(f2-1));
- for (var bulk=f1+1; bulk < f2; bulk++)
- {
- //console.log ("Storing bulk:"+bulk);
- var bfname = padToN(bulk, eventImageDigits) + "-capture.jpg";
- p++;
- $scope.slides.push({
- id: bulk,
- img: bfname
-
- });
-
-
- }
- }
- //console.log ("storing: "+event.Frame[i - 1].FrameId);
- p++;
- $scope.slides.push(
- {
- id: event.Frame[i - 1].FrameId,
- img: fname,
- });
-
-
-
- }
-
- }
- //console.log ("I PUSHED:" + p+" BUT SLIDE LENGHT BEFORE DISPLAY:"+$scope.slides.length);
- // console.log ("STEP 2 : calling Save Event To Phone");
- $ionicLoading.hide();
- saveEventImageToPhone(onlyAlarms);
-
- },
- function(err)
- {
- $ionicLoading.hide();
- NVRDataModel.log("snapshot API Error: Could not get frames " + JSON.stringify(err));
-
- $ionicLoading.show(
- {
- template: $translate.instant('kErrorRetrievingFrames'),
- noBackdrop: true,
- duration: 4000
- });
- });
+ }
+
+ }
+ //console.log ("I PUSHED:" + p+" BUT SLIDE LENGHT BEFORE DISPLAY:"+$scope.slides.length);
+ // console.log ("STEP 2 : calling Save Event To Phone");
+ $ionicLoading.hide();
+ saveEventImageToPhone(onlyAlarms);
+
},
+ function (err) {
+ $ionicLoading.hide();
+ NVRDataModel.log("snapshot API Error: Could not get frames " + JSON.stringify(err));
- function(err)
- {
- NVRDataModel.debug("Error pausing stream before snapshot " + JSON.stringify(err));
- $ionicLoading.hide();
- }
+ $ionicLoading.show({
+ template: $translate.instant('kErrorRetrievingFrames'),
+ noBackdrop: true,
+ duration: 4000
+ });
+ });
+ },
- ); // then
+ function (err) {
+ NVRDataModel.debug("Error pausing stream before snapshot " + JSON.stringify(err));
+ $ionicLoading.hide();
+ }
+
+ ); // then
+
+ }
+
+ // don't think this is used anymore
+ function saveEventImageToPhone(onlyAlarms) {
+ // console.log ("________________UNUSED?_______________________");
+ var curState = carouselUtils.getStop();
+ carouselUtils.setStop(true);
+
+ //console.log("Your index is " + $scope.mycarousel.index);
+ //console.log("Associated image is " + $scope.slides[$scope.mycarousel.index].img);
+ NVRDataModel.debug("ModalCtrl: SaveEventImageToPhone called");
+ var canvas, context, imageDataUrl, imageData;
+ var loginData = NVRDataModel.getLogin();
+
+ // for alarms only
+ if (onlyAlarms) $scope.mycarousel.index = 0;
+ var url;
+
+ if ($scope.event.Event.imageMode == 'path') {
+ url = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.mycarousel.index].img;
+ } else {
+ url = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand +
+ "&eid=" + $scope.eventId +
+ "&fid=" + $scope.slides[$scope.mycarousel.index].id;
}
- // don't think this is used anymore
- function saveEventImageToPhone(onlyAlarms)
- {
- // console.log ("________________UNUSED?_______________________");
- var curState = carouselUtils.getStop();
- carouselUtils.setStop(true);
+ if ($rootScope.authSession != 'undefined') {
+ url += $rootScope.authSession;
- //console.log("Your index is " + $scope.mycarousel.index);
- //console.log("Associated image is " + $scope.slides[$scope.mycarousel.index].img);
+ }
+ if ($rootScope.basicAuthToken) {
+ url += "&basicauth=" + $rootScope.basicAuthToken;
- NVRDataModel.debug("ModalCtrl: SaveEventImageToPhone called");
- var canvas, context, imageDataUrl, imageData;
- var loginData = NVRDataModel.getLogin();
+ }
- // for alarms only
- if (onlyAlarms) $scope.mycarousel.index = 0;
- var url;
+ $scope.selectEventUrl = url;
+ $scope.slideIndex = $scope.mycarousel.index;
+ $scope.slideLastIndex = $scope.slides.length - 1;
+ // console.log ("FRAMES LENGTH IS " +$scope.slideLastIndex );
+
+ // console.log ("URL TO DISPLAY " + url);
+
+ $rootScope.zmPopup = $ionicPopup.show({
+ template: '<center>Frame: {{slideIndex+1}} / {{slideLastIndex+1}}</center><br/><img src="{{selectEventUrl}}" width="100%" />',
+ title: 'Select ' + (onlyAlarms ? 'Alarmed ' : '') + 'frame to save',
+ subTitle: 'use left and right arrows to change',
+ scope: $scope,
+ cssClass: 'popup95',
+ buttons: [{
+ // left 1
+ text: '',
+ type: 'button-small button-energized ion-chevron-left',
+ onTap: function (e) {
+ if ($scope.slideIndex > 0) $scope.slideIndex--;
+
+ if ($scope.event.Event.imageMode == 'path') {
+ $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
+ } else {
+ $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
+ }
+ if ($rootScope.authSession != 'undefined') {
+ $scope.selectEventUrl += $rootScope.authSession;
- if ($scope.event.Event.imageMode == 'path') {
- url = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.mycarousel.index].img;
- }
- else {
- url = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand +
- "&eid=" + $scope.eventId +
- "&fid=" + $scope.slides[$scope.mycarousel.index].id;
- }
-
- if ($rootScope.authSession !='undefined'){
- url +=$rootScope.authSession;
-
- }
- if ($rootScope.basicAuthToken) {
- url +="&basicauth="+$rootScope.basicAuthToken;
-
- }
-
- $scope.selectEventUrl = url;
- $scope.slideIndex = $scope.mycarousel.index;
- $scope.slideLastIndex = $scope.slides.length - 1;
- // console.log ("FRAMES LENGTH IS " +$scope.slideLastIndex );
-
- // console.log ("URL TO DISPLAY " + url);
-
- $rootScope.zmPopup = $ionicPopup.show(
- {
- template: '<center>Frame: {{slideIndex+1}} / {{slideLastIndex+1}}</center><br/><img src="{{selectEventUrl}}" width="100%" />',
- title: 'Select ' + (onlyAlarms ? 'Alarmed ' : '') + 'frame to save',
- subTitle: 'use left and right arrows to change',
- scope: $scope,
- cssClass: 'popup95',
- buttons: [
- {
- // left 1
- text: '',
- type: 'button-small button-energized ion-chevron-left',
- onTap: function(e)
- {
- if ($scope.slideIndex > 0) $scope.slideIndex--;
-
- if ($scope.event.Event.imageMode=='path') {
- $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
- }
- else {
- $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
- }
- if ($rootScope.authSession !='undefined'){
- $scope.selectEventUrl +=$rootScope.authSession;
-
- }
- if ($rootScope.basicAuthToken) {
- $scope.selectEventUrl +="&basicauth="+$rootScope.basicAuthToken;
-
- }
-
- //NVRDataModel.log("selected frame is " + $scope.slideIndex);
-
- //console.log("URL TO DISPLAY " + $scope.slides[$scope.slideIndex].img);
-
- e.preventDefault();
- }
- },
- {
- // right 1
- text: '',
- type: 'button-small button-energized ion-chevron-right',
- onTap: function(e)
- {
- if ($scope.slideIndex < $scope.slideLastIndex) $scope.slideIndex++;
-
- if ($scope.event.Event.imageMode=='path') {
- $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
- }
- else {
- $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
- }
- if ($rootScope.authSession !='undefined'){
- $scope.selectEventUrl +=$rootScope.authSession;
-
- }
- if ($rootScope.basicAuthToken) {
- $scope.selectEventUrl +="&basicauth="+$rootScope.basicAuthToken;
-
- }
-
- //NVRDataModel.log("selected frame is " + $scope.slideIndex);
- //console.log("URL TO DISPLAY " + $scope.slides[$scope.slideIndex].img);
- e.preventDefault();
- }
- },
- {
- // left 10
- text: '',
- type: 'button-small button-energized ion-skip-backward',
- onTap: function(e)
- {
- var tempVar = $scope.slideIndex;
- tempVar -= 10;
- if (tempVar < 0) tempVar = 0;
- $scope.slideIndex = tempVar;
-
- if ($scope.event.Event.imageMode=='path') {
- $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
- }
- else {
- $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
- }
- if ($rootScope.authSession !='undefined'){
- $scope.selectEventUrl +=$rootScope.authSession;
-
- }
- if ($rootScope.basicAuthToken) {
- $scope.selectEventUrl +="&basicauth="+$rootScope.basicAuthToken;
-
- }
- //NVRDataModel.log("selected frame is " + $scope.slideIndex);
-
- e.preventDefault();
- }
- },
- {
- // right 10
- text: '',
- type: 'button-small button-energized ion-skip-forward',
- onTap: function(e)
- {
- var tempVar = $scope.slideIndex;
- tempVar += 10;
- if (tempVar > $scope.slideLastIndex) tempVar = $scope.slideLastIndex;
- $scope.slideIndex = tempVar;
- if ($scope.slideIndex < $scope.slideLastIndex) $scope.slideIndex++;
-
- if ($scope.event.Event.imageMode=='path') {
- $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
- }
- else {
- $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
- }
- if ($rootScope.authSession !='undefined'){
- $scope.selectEventUrl +=$rootScope.authSession;
-
- }
- if ($rootScope.basicAuthToken) {
- $scope.selectEventUrl +="&basicauth="+$rootScope.basicAuthToken;
-
- }
- //NVRDataModel.log("selected frame is " + $scope.slideIndex);
- e.preventDefault();
- }
- },
+ }
+ if ($rootScope.basicAuthToken) {
+ $scope.selectEventUrl += "&basicauth=" + $rootScope.basicAuthToken;
- {
- text: '',
- type: 'button-assertive button-small ion-close-round'
- },
- {
- text: '',
- type: 'button-positive button-small ion-checkmark-round',
- onTap: function(e)
- {
- saveNow();
+ }
- }
- }
- ]
- });
+ //NVRDataModel.log("selected frame is " + $scope.slideIndex);
+
+ //console.log("URL TO DISPLAY " + $scope.slides[$scope.slideIndex].img);
- function saveNow()
+ e.preventDefault();
+ }
+ },
{
- $ionicLoading.show(
- {
- template: $translate.instant('kSavingSnapshot') + "...",
- noBackdrop: true,
- duration: zm.httpTimeout
- });
- var url = $scope.selectEventUrl;
- NVRDataModel.log("saveNow: File path to grab is " + url);
-
- var img = new Image();
- img.onload = function()
- {
- // console.log("********* ONLOAD");
- canvas = document.createElement('canvas');
- canvas.width = img.width;
- canvas.height = img.height;
- context = canvas.getContext('2d');
- context.drawImage(img, 0, 0);
-
- imageDataUrl = canvas.toDataURL('image/jpeg', 1.0);
- imageData = imageDataUrl.replace(/data:image\/jpeg;base64,/, '');
-
- if ($rootScope.platformOS != "desktop")
- {
- try
- {
-
- cordova.exec(
- SaveSuccess,
- SaveError,
- 'Canvas2ImagePlugin',
- 'saveImageDataToLibrary', [imageData]
- );
- // carouselUtils.setStop(curState);
- }
- catch (e)
- {
+ // right 1
+ text: '',
+ type: 'button-small button-energized ion-chevron-right',
+ onTap: function (e) {
+ if ($scope.slideIndex < $scope.slideLastIndex) $scope.slideIndex++;
+
+ if ($scope.event.Event.imageMode == 'path') {
+ $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
+ } else {
+ $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
+ }
+ if ($rootScope.authSession != 'undefined') {
+ $scope.selectEventUrl += $rootScope.authSession;
- SaveError(e.message);
- // carouselUtils.setStop(curState);
- }
- }
- else
- {
+ }
+ if ($rootScope.basicAuthToken) {
+ $scope.selectEventUrl += "&basicauth=" + $rootScope.basicAuthToken;
- var fname = $scope.relativePath + $scope.slides[$scope.slideIndex].img + ".png";
- fname = fname.replace(/\//, "-");
- fname = fname.replace(/\.jpg/, '');
+ }
- canvas.toBlob(function(blob)
- {
- saveAs(blob, fname);
- SaveSuccess();
- });
- }
- };
- try
- {
- img.src = url;
- // console.log ("SAVING IMAGE SOURCE");
+ //NVRDataModel.log("selected frame is " + $scope.slideIndex);
+ //console.log("URL TO DISPLAY " + $scope.slides[$scope.slideIndex].img);
+ e.preventDefault();
+ }
+ },
+ {
+ // left 10
+ text: '',
+ type: 'button-small button-energized ion-skip-backward',
+ onTap: function (e) {
+ var tempVar = $scope.slideIndex;
+ tempVar -= 10;
+ if (tempVar < 0) tempVar = 0;
+ $scope.slideIndex = tempVar;
+
+ if ($scope.event.Event.imageMode == 'path') {
+ $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
+ } else {
+ $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
}
- catch (e)
- {
- SaveError(e.message);
+ if ($rootScope.authSession != 'undefined') {
+ $scope.selectEventUrl += $rootScope.authSession;
+
}
- }
- }
+ if ($rootScope.basicAuthToken) {
+ $scope.selectEventUrl += "&basicauth=" + $rootScope.basicAuthToken;
- $scope.reloadView = function()
- {
- NVRDataModel.log("Reloading view for modal view, recomputing rand");
- $rootScope.modalRand = Math.floor((Math.random() * 100000) + 1);
- $scope.isModalActive = true;
- };
+ }
+ //NVRDataModel.log("selected frame is " + $scope.slideIndex);
+ e.preventDefault();
+ }
+ },
+ {
+ // right 10
+ text: '',
+ type: 'button-small button-energized ion-skip-forward',
+ onTap: function (e) {
+ var tempVar = $scope.slideIndex;
+ tempVar += 10;
+ if (tempVar > $scope.slideLastIndex) tempVar = $scope.slideLastIndex;
+ $scope.slideIndex = tempVar;
+ if ($scope.slideIndex < $scope.slideLastIndex) $scope.slideIndex++;
+
+ if ($scope.event.Event.imageMode == 'path') {
+ $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&path=" + $scope.relativePath + $scope.slides[$scope.slideIndex].img;
+ } else {
+ $scope.selectEventUrl = $scope.playbackURL + '/index.php?view=image&rand=' + $rootScope.rand + "&eid=" + $scope.eventId + "&fid=" + $scope.slides[$scope.slideIndex].id;
+ }
+ if ($rootScope.authSession != 'undefined') {
+ $scope.selectEventUrl += $rootScope.authSession;
- $scope.changeSnapshot = function(id) {
- $scope.snapshotFrameId = id;
- maxAlarmFid = 0;
- };
+ }
+ if ($rootScope.basicAuthToken) {
+ $scope.selectEventUrl += "&basicauth=" + $rootScope.basicAuthToken;
- $scope.constructStream = function (monitor) {
-
-
- if ($scope.animationInProgress) return "";
-
- var stream="";
- // eventId gets populated when prepareModal completes
- // if maxAlarmFrame was not set and we don't have an eventID yet,
- // we can't show a snapshot
- if (currentStreamState == streamState.STOPPED || (maxAlarmFid == 0 && !$scope.eventId)) {
- stream="";
- }
- else if (currentStreamState == streamState.SNAPSHOT) {
- stream = $scope.loginData.url +
- "/index.php?view=image" +
-
- (maxAlarmFid? "&fid="+maxAlarmFid: "&eid="+$scope.eventId+"&fid="+$scope.snapshotFrameId) +
- "&scale="+$scope.singleImageQuality +
- $rootScope.authSession ;
+ }
+ //NVRDataModel.log("selected frame is " + $scope.slideIndex);
+ e.preventDefault();
+ }
+ },
+
+ {
+ text: '',
+ type: 'button-assertive button-small ion-close-round'
+ },
+ {
+ text: '',
+ type: 'button-positive button-small ion-checkmark-round',
+ onTap: function (e) {
+ saveNow();
+
+ }
}
- else if (currentStreamState == streamState.ACTIVE) {
- stream = $scope.loginData.streamingurl +
- "/nph-zms?source=event&mode=jpeg" +
- "&event="+$scope.eventId+"&frame=1" +
- "&replay="+$scope.currentStreamMode +
- "&rate=100" +
- "&connkey="+$scope.connKey +
- "&scale="+$scope.singleImageQuality +
- $rootScope.authSession ;
+ ]
+ });
+
+ function saveNow() {
+ $ionicLoading.show({
+ template: $translate.instant('kSavingSnapshot') + "...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
+ var url = $scope.selectEventUrl;
+ NVRDataModel.log("saveNow: File path to grab is " + url);
+
+ var img = new Image();
+ img.onload = function () {
+ // console.log("********* ONLOAD");
+ canvas = document.createElement('canvas');
+ canvas.width = img.width;
+ canvas.height = img.height;
+ context = canvas.getContext('2d');
+ context.drawImage(img, 0, 0);
+
+ imageDataUrl = canvas.toDataURL('image/jpeg', 1.0);
+ imageData = imageDataUrl.replace(/data:image\/jpeg;base64,/, '');
+
+ if ($rootScope.platformOS != "desktop") {
+ try {
+
+ cordova.exec(
+ SaveSuccess,
+ SaveError,
+ 'Canvas2ImagePlugin',
+ 'saveImageDataToLibrary', [imageData]
+ );
+ // carouselUtils.setStop(curState);
+ } catch (e) {
+
+ SaveError(e.message);
+ // carouselUtils.setStop(curState);
+ }
+ } else {
+
+ var fname = $scope.relativePath + $scope.slides[$scope.slideIndex].img + ".png";
+ fname = fname.replace(/\//, "-");
+ fname = fname.replace(/\.jpg/, '');
+
+ canvas.toBlob(function (blob) {
+ saveAs(blob, fname);
+ SaveSuccess();
+ });
}
-
- // console.log ($scope.currentStreamMode );
- // console.log ("STREAM="+stream);
- //console.log ("EID="+$scope.eventId);
- if ($rootScope.basicAuthToken && stream) stream +="&basicauth="+$rootScope.basicAuthToken;
- return stream;
+ };
+ try {
+ img.src = url;
+ // console.log ("SAVING IMAGE SOURCE");
+ } catch (e) {
+ SaveError(e.message);
+ }
+ }
+ }
- };
+ $scope.reloadView = function () {
+ NVRDataModel.log("Reloading view for modal view, recomputing rand");
+ $rootScope.modalRand = Math.floor((Math.random() * 100000) + 1);
+ $scope.isModalActive = true;
+ };
+
+
+ $scope.changeSnapshot = function (id) {
+ $scope.snapshotFrameId = id;
+ isGlobalFid = false;
+ };
+
+ $scope.constructStream = function (monitor) {
+
+
+ if ($scope.animationInProgress) return "";
+
+ var stream = "";
+ // eventId gets populated when prepareModal completes
+ if (currentStreamState == streamState.STOPPED || !$scope.eventId) {
+ stream = "";
+ } else if (currentStreamState == streamState.SNAPSHOT) {
+ stream = $scope.loginData.url +
+ "/index.php?view=image" +
+ "&fid=" + $scope.snapshotFrameId +
+ (!isGlobalFid ? "&eid=" + $scope.eventId : "") +
+ "&scale=" + $scope.singleImageQuality +
+ $rootScope.authSession;
+ } else if (currentStreamState == streamState.ACTIVE) {
+ stream = $scope.loginData.streamingurl +
+ "/nph-zms?source=event&mode=jpeg" +
+ "&event=" + $scope.eventId + "&frame=1" +
+ "&replay=" + $scope.currentStreamMode +
+ "&rate=100" +
+ "&connkey=" + $scope.connKey +
+ "&scale=" + $scope.singleImageQuality +
+ $rootScope.authSession;
+ }
- $scope.isSnapShot = function () {
- // console.log (currentStreamState);
- return currentStreamState == streamState.SNAPSHOT;
- };
+ // console.log ($scope.currentStreamMode );
+ // console.log ("STREAM="+stream);
+ //console.log ("EID="+$scope.eventId);
+ if ($rootScope.basicAuthToken && stream) stream += "&basicauth=" + $rootScope.basicAuthToken;
+ return stream;
- $scope.isStreamStopped = function () {
- // console.log ("STATE = " + currentStreamState);
- return currentStreamState == streamState.STOPPED;
-
- };
+ };
- $scope.convertSnapShotToStream = function() {
- currentStreamState = streamState.ACTIVE;
- };
+ $scope.isSnapShot = function () {
+ // console.log (currentStreamState);
+ return currentStreamState == streamState.SNAPSHOT;
+ };
- $scope.scaleImage = function()
- {
+ $scope.isStreamStopped = function () {
+ // console.log ("STATE = " + currentStreamState);
+ return currentStreamState == streamState.STOPPED;
- $scope.imageFit = !$scope.imageFit;
- //console.log("Switching image style to " + $scope.imageFit);
- };
+ };
- $scope.$on('$ionicView.beforeEnter', function()
- {
- $scope.alarm_images = [];
- $scope.snapshotFrameId = 1;
- currentStreamState = streamState.STOPPED;
+ $scope.convertSnapShotToStream = function () {
+ currentStreamState = streamState.ACTIVE;
+ };
- });
+ $scope.scaleImage = function () {
-
- $scope.$on('modal.shown', function(e, m)
- {
+ $scope.imageFit = !$scope.imageFit;
+ //console.log("Switching image style to " + $scope.imageFit);
+ };
- $ionicLoading.hide();
- // console.log ("AUTH="+$rootScope.authSession);
- if (m.id != 'footage')
+ $scope.$on('$ionicView.beforeEnter', function () {
+ $scope.alarm_images = [];
+ $scope.snapshotFrameId = 1;
+ currentStreamState = streamState.STOPPED;
- return;
+ });
- showLive = true;
- if (m.snapshot == 'enabled') {
- isSnapShotEnabled = true;
- currentStreamState = streamState.SNAPSHOT;
- if (m.snapshotId) maxAlarmFid = m.snapshotId;
- eventId = m.eventId;
- $scope.eventId = m.eventId;
-
- }
+ $scope.$on('modal.shown', function (e, m) {
- else currentStreamState = streamState.ACTIVE;
+ $ionicLoading.hide();
+ if (m.id != 'footage')
-
- if (m.showLive == 'disabled') {
- showLive = false;
- NVRDataModel.debug ("I was explictly asked not to show live, cross my fingers...");
- }
- else {
+ return;
+
+ showLive = true;
- NVRDataModel.debug ("If recording is in progress, live feed will be shown");
- }
- $scope.isToggleListMenu = true;
- $scope.videoDynamicTime = "";
- $scope.videoIsReady = false;
- var ld = NVRDataModel.getLogin();
- $scope.loginData = NVRDataModel.getLogin();
+ if (m.snapshot == 'enabled') {
+ isSnapShotEnabled = true;
+ currentStreamState = streamState.SNAPSHOT;
+ if (m.snapshotId) {
+ $scope.snapshotFrameId = m.snapshotId;
+ isGlobalFid = true;
+ }
+ eventId = m.eventId;
+ $scope.eventId = m.eventId;
- $scope.singleImageQuality = (NVRDataModel.getBandwidth() == "lowbw") ? zm.eventSingleImageQualityLowBW : ld.singleImageQuality;
- $scope.blockSlider = false;
- $scope.checkEventOn = false;
- //$scope.singleImageQuality = 100;
+ } else currentStreamState = streamState.ACTIVE;
- //$scope.commandURL = $scope.currentEvent.Event.baseURL+"/index.php";
- // NVRDataModel.log (">>>>>>>>>>>>>>>>>>ZMS url command is " + $scope.commandURL);
- currentEvent = $scope.currentEvent;
+ if (m.showLive == 'disabled') {
+ showLive = false;
+ NVRDataModel.debug("I was explictly asked not to show live, cross my fingers...");
+ } else {
- //console.log("Current Event " + JSON.stringify(currentEvent));
- $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- NVRDataModel.debug("Generated Connkey:" + $scope.connKey);
+ NVRDataModel.debug("If recording is in progress, live feed will be shown");
+ }
+ $scope.isToggleListMenu = true;
+ $scope.videoDynamicTime = "";
+ $scope.videoIsReady = false;
+ var ld = NVRDataModel.getLogin();
+ $scope.loginData = NVRDataModel.getLogin();
- $scope.currentFrame = 1;
- $scope.isPaused = false;
+ $scope.singleImageQuality = (NVRDataModel.getBandwidth() == "lowbw") ? zm.eventSingleImageQualityLowBW : ld.singleImageQuality;
+ $scope.blockSlider = false;
+ $scope.checkEventOn = false;
+ //$scope.singleImageQuality = 100;
- gEvent = $scope.currentEvent;
- //console.log ("CURRENT EVENT " + JSON.stringify($scope.currentEvent));
- //
- $scope.currentEventDuration = Math.floor($scope.currentEvent.Event.Length);
- //console.log ($scope.event.Event.Frames);
- if (currentEvent && currentEvent.Event)
- {
- //console.log ("************ CALLING PREPARE MODAL ***********");
- prepareModalEvent(currentEvent.Event.Id);
- if (ld.useNphZmsForEvents)
- {
- $timeout(function()
- {
+ //$scope.commandURL = $scope.currentEvent.Event.baseURL+"/index.php";
+ // NVRDataModel.log (">>>>>>>>>>>>>>>>>>ZMS url command is " + $scope.commandURL);
- if ($scope.modal != undefined && $scope.modal.isShown())
- {
- NVRDataModel.log(">>>Starting checkAllEvents interval...");
+ currentEvent = $scope.currentEvent;
- //eventQueryHandle = $timeout (checkEvent(), zm.eventPlaybackQuery);
+ //console.log("Current Event " + JSON.stringify(currentEvent));
+ $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ NVRDataModel.debug("Generated Connkey:" + $scope.connKey);
- $interval.cancel(eventQueryHandle);
- checkEvent();
- eventQueryHandle = $interval(function()
- {
- checkEvent();
- // console.log ("Refreshing Image...");
- }.bind(this), (NVRDataModel.getBandwidth() == "lowbw") ? zm.eventPlaybackQueryLowBW : zm.eventPlaybackQuery);
- }
- else
- {
- NVRDataModel.log(">>>Modal was exited, not starting checkAllEvents");
- }
+ $scope.currentFrame = 1;
+ $scope.isPaused = false;
- }, 2000);
- }
+ gEvent = $scope.currentEvent;
+ //console.log ("CURRENT EVENT " + JSON.stringify($scope.currentEvent));
+ //
+ $scope.currentEventDuration = Math.floor($scope.currentEvent.Event.Length);
+ //console.log ($scope.event.Event.Frames);
+ if (currentEvent && currentEvent.Event) {
+ //console.log ("************ CALLING PREPARE MODAL ***********");
+ prepareModalEvent(currentEvent.Event.Id);
+ if (ld.useNphZmsForEvents) {
+ $timeout(function () {
- }
+ if ($scope.modal != undefined && $scope.modal.isShown()) {
+ NVRDataModel.log(">>>Starting checkAllEvents interval...");
- });
+ //eventQueryHandle = $timeout (checkEvent(), zm.eventPlaybackQuery);
- //var current_data;
- function drawGraph()
- {
+ $interval.cancel(eventQueryHandle);
+ checkEvent();
+ eventQueryHandle = $interval(function () {
+ checkEvent();
+ // console.log ("Refreshing Image...");
+ }.bind(this), (NVRDataModel.getBandwidth() == "lowbw") ? zm.eventPlaybackQueryLowBW : zm.eventPlaybackQuery);
+ } else {
+ NVRDataModel.log(">>>Modal was exited, not starting checkAllEvents");
+ }
- var cv = document.getElementById("eventchart");
- var ctx;
- try {
- ctx = cv.getContext("2d");
- }
- catch (e) {
- NVRDataModel.debug ("2D Context ERROR, maybe live play");
-
- }
-
-
- frameoptions = {
- responsive: true,
- legend: false,
- title:
- {
- display: false,
- text: ""
- },
- scales:
- {
- yAxes: [
- {
- display: false,
- scaleLabel:
- {
- display: false,
- labelString: 'value',
- }
+ }, 2000);
+ }
- }],
- xAxes: [
- {
- type: 'time',
- display: false,
- time:
- {
-
- format: timeFormat,
- tooltipFormat: 'll HH:mm',
- min: framearray.datasets[0].data[0].x,
- max: framearray.datasets[0].data[framearray.datasets[0].data.length - 1].x,
- displayFormats:
- {
-
- }
- },
- scaleLabel:
- {
- display: false,
- labelString: ''
- }
+ }
- }]
- }
- };
+ });
- $timeout(function()
- {
+ //var current_data;
+ function drawGraph() {
- var myChart = new Chart(ctx,
- {
- type: 'line',
- data: framearray,
- options: frameoptions,
- });
+ var cv = document.getElementById("eventchart");
+ var ctx;
+ try {
+ ctx = cv.getContext("2d");
+ } catch (e) {
+ NVRDataModel.debug("2D Context ERROR, maybe live play");
- });
}
- $scope.modalImageLoaded = function() {
- // console.log ("MODAL IMAGE LOADED");
- // if (m.snapshot != 'enabled') currentStreamState = streamState.ACTIVE;
- };
+ frameoptions = {
+ responsive: true,
+ legend: false,
+ title: {
+ display: false,
+ text: ""
+ },
+ scales: {
+ yAxes: [{
+ display: false,
+ scaleLabel: {
+ display: false,
+ labelString: 'value',
+ }
- $scope.videoTime = function(s, c)
- {
- var a, o;
- if (NVRDataModel.getLogin().useLocalTimeZone)
- {
- a = moment.tz(s, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess());
+ }],
+ xAxes: [{
+ type: 'time',
+ display: false,
+ time: {
- }
- else
- {
- a = moment(s);
- }
- a.add(c);
+ format: timeFormat,
+ tooltipFormat: 'll HH:mm',
+ min: framearray.datasets[0].data[0].x,
+ max: framearray.datasets[0].data[framearray.datasets[0].data.length - 1].x,
+ displayFormats: {
- o = a.format("MMM Do " + NVRDataModel.getTimeFormatSec());
- $scope.videoDynamicTime = o;
- //return a.format("MMM Do "+o);
+ }
+ },
+ scaleLabel: {
+ display: false,
+ labelString: ''
+ }
+ }]
+ }
};
- $scope.$on('modal.removed', function(e, m)
- {
- NVRDataModel.debug ("Deregistering broadcast handles");
- for (var i=0; i < broadcastHandles.length; i++) {
- // broadcastHandles[i]();
- }
- broadcastHandles = [];
-
- //console.log("************* REMOVE CALLED");
- $interval.cancel(eventQueryHandle);
- if (m.id != 'footage')
- return;
-
- $scope.isModalActive = false;
+ $timeout(function () {
- NVRDataModel.debug("Modal removed - killing connkey");
- if ($scope.connKey) sendCommand(17, $scope.connKey);
- //$timeout (function(){NVRDataModel.stopNetwork("Modal removed inside EventModalCtrl");},400);
+ var myChart = new Chart(ctx, {
+ type: 'line',
+ data: framearray,
+ options: frameoptions,
+ });
- // Execute action
});
+ }
- // Playback speed adjuster
- $scope.adjustSpeed = function(val)
- {
+ $scope.modalImageLoaded = function () {
+ // console.log ("MODAL IMAGE LOADED");
+ // if (m.snapshot != 'enabled') currentStreamState = streamState.ACTIVE;
+ };
- if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '')
- {
- $ionicLoading.show(
- {
- template: $translate.instant('kUseVideoControls'),
- noBackdrop: true,
- duration: 3000
- });
- return;
- }
+ $scope.videoTime = function (s, c) {
+ var a, o;
+ if (NVRDataModel.getLogin().useLocalTimeZone) {
+ a = moment.tz(s, NVRDataModel.getTimeZoneNow()).tz(moment.tz.guess());
- var ld = NVRDataModel.getLogin();
+ } else {
+ a = moment(s);
+ }
+ a.add(c);
- if (ld.useNphZmsForEvents)
- {
+ o = a.format("MMM Do " + NVRDataModel.getTimeFormatSec());
+ $scope.videoDynamicTime = o;
+ //return a.format("MMM Do "+o);
- var cmd;
- $scope.isPaused = false;
- switch (val)
- {
- case 'ff':
- cmd = 4;
- break;
- case 'fr':
- cmd = 7;
- break;
- case 'np':
- cmd = 2;
- break;
- case 'p':
- cmd = 1;
- $scope.isPaused = true;
- break;
- default:
- cmd = 0;
- }
+ };
- $ionicLoading.show(
- {
- template: $translate.instant('kPleaseWait') + "...",
- noBackdrop: true,
- duration: zm.httpTimeout
- });
+ $scope.$on('modal.removed', function (e, m) {
+ NVRDataModel.debug("Deregistering broadcast handles");
+ for (var i = 0; i < broadcastHandles.length; i++) {
+ // broadcastHandles[i]();
+ }
+ broadcastHandles = [];
- sendCommand(cmd, $scope.connKey)
- .then(function(success)
- {
- $ionicLoading.hide();
+ //console.log("************* REMOVE CALLED");
+ $interval.cancel(eventQueryHandle);
+ if (m.id != 'footage')
+ return;
- },
- function(err)
- {
- $ionicLoading.hide();
- NVRDataModel.debug("Error in adjust speed: " + JSON.stringify(err));
- }
- );
+ $scope.isModalActive = false;
- }
- else // not using nph
- {
+ NVRDataModel.debug("Modal removed - killing connkey");
+ if ($scope.connKey) sendCommand(17, $scope.connKey);
+ //$timeout (function(){NVRDataModel.stopNetwork("Modal removed inside EventModalCtrl");},400);
- switch (val)
- {
-
- case "super":
- $scope.eventSpeed = 20 / $scope.event.Event.Frames;
- carouselUtils.setDuration($scope.eventSpeed);
- break;
- case "normal":
- $scope.eventSpeed = $scope.event.Event.Length / $scope.event.Event.Frames;
- //$scope.eventSpeed = 5;
- carouselUtils.setDuration($scope.eventSpeed);
-
- break;
- case "faster":
- $scope.eventSpeed = $scope.eventSpeed / 2;
- if ($scope.eventSpeed < 20 / $scope.event.Event.Frames)
- $scope.eventSpeed = 10 / $scope.event.Event.Frames;
- carouselUtils.setDuration($scope.eventSpeed);
- break;
- case "slower":
- $scope.eventSpeed = $scope.eventSpeed * 2;
- carouselUtils.setDuration($scope.eventSpeed);
-
- break;
- default:
+ // Execute action
+ });
- }
- NVRDataModel.debug("Set playback speed to " + $scope.eventSpeed);
-
- $ionicLoading.show(
- {
- template: $translate.instant('kPlaybackInterval') + ': ' + $scope.eventSpeed.toFixed(3) + "ms",
- animation: 'fade-in',
- showBackdrop: false,
- duration: 1500,
- maxWidth: 300,
- showDelay: 0
- });
- }
+ // Playback speed adjuster
+ $scope.adjustSpeed = function (val) {
- };
+ if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '') {
- $scope.toggleListMenu = function()
- {
+ $ionicLoading.show({
+ template: $translate.instant('kUseVideoControls'),
+ noBackdrop: true,
+ duration: 3000
+ });
+ return;
+ }
- $scope.isToggleListMenu = !$scope.isToggleListMenu;
- };
+ var ld = NVRDataModel.getLogin();
+
+ if (ld.useNphZmsForEvents) {
+
+ var cmd;
+ $scope.isPaused = false;
+ switch (val) {
+ case 'ff':
+ cmd = 4;
+ break;
+ case 'fr':
+ cmd = 7;
+ break;
+ case 'np':
+ cmd = 2;
+ break;
+ case 'p':
+ cmd = 1;
+ $scope.isPaused = true;
+ break;
+ default:
+ cmd = 0;
+ }
+
+ $ionicLoading.show({
+ template: $translate.instant('kPleaseWait') + "...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
+
+ sendCommand(cmd, $scope.connKey)
+ .then(function (success) {
+ $ionicLoading.hide();
+
+ },
+ function (err) {
+ $ionicLoading.hide();
+ NVRDataModel.debug("Error in adjust speed: " + JSON.stringify(err));
+ }
+ );
- $scope.toggleGapless = function()
+ } else // not using nph
{
- // console.log(">>>>>>>>>>>>>>GAPLESS TOGGLE INSIDE MODAL");
- $scope.loginData.gapless = !$scope.loginData.gapless;
- NVRDataModel.setLogin($scope.loginData);
-
- $scope.currentStreamMode = $scope.loginData.gapless ? 'gapless' : 'single';
-
- NVRDataModel.debug("EventModalCtrl: gapless has changed resetting everything & re-generating connkey");
-
- NVRDataModel.stopNetwork("EventModalCtrl-toggle gapless");
- currentStreamState = streamState.STOPPED;
- NVRDataModel.debug("Regenerating connkey as gapless has changed");
- // console.log ("********* OFFSET FROM TOGGLE GAPLESS");
- $timeout (function() {
- $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- currentStreamState = streamState.ACTIVE;
- /* $timeout(function()
- {
- sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
- }, 500);*/
+ switch (val) {
+
+ case "super":
+ $scope.eventSpeed = 20 / $scope.event.Event.Frames;
+ carouselUtils.setDuration($scope.eventSpeed);
+ break;
+ case "normal":
+ $scope.eventSpeed = $scope.event.Event.Length / $scope.event.Event.Frames;
+ //$scope.eventSpeed = 5;
+ carouselUtils.setDuration($scope.eventSpeed);
+
+ break;
+ case "faster":
+ $scope.eventSpeed = $scope.eventSpeed / 2;
+ if ($scope.eventSpeed < 20 / $scope.event.Event.Frames)
+ $scope.eventSpeed = 10 / $scope.event.Event.Frames;
+ carouselUtils.setDuration($scope.eventSpeed);
+ break;
+ case "slower":
+ $scope.eventSpeed = $scope.eventSpeed * 2;
+ carouselUtils.setDuration($scope.eventSpeed);
+
+ break;
+ default:
+
+ }
+ NVRDataModel.debug("Set playback speed to " + $scope.eventSpeed);
+
+ $ionicLoading.show({
+ template: $translate.instant('kPlaybackInterval') + ': ' + $scope.eventSpeed.toFixed(3) + "ms",
+ animation: 'fade-in',
+ showBackdrop: false,
+ duration: 1500,
+ maxWidth: 300,
+ showDelay: 0
+ });
+ }
- });
-
+ };
-
-
- //$timeout.cancel(eventQueryHandle);
- //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
+ $scope.toggleListMenu = function () {
- };
+ $scope.isToggleListMenu = !$scope.isToggleListMenu;
+ };
- // This function returns neighbor events if applicable
+ $scope.toggleGapless = function () {
+ // console.log(">>>>>>>>>>>>>>GAPLESS TOGGLE INSIDE MODAL");
+ $scope.loginData.gapless = !$scope.loginData.gapless;
+ NVRDataModel.setLogin($scope.loginData);
+ $scope.currentStreamMode = $scope.loginData.gapless ? 'gapless' : 'single';
+ NVRDataModel.debug("EventModalCtrl: gapless has changed resetting everything & re-generating connkey");
+ NVRDataModel.stopNetwork("EventModalCtrl-toggle gapless");
+ currentStreamState = streamState.STOPPED;
+ NVRDataModel.debug("Regenerating connkey as gapless has changed");
+ // console.log ("********* OFFSET FROM TOGGLE GAPLESS");
+ $timeout(function () {
+ $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ currentStreamState = streamState.ACTIVE;
- function neighborEvents(eid,mid)
- {
+ /* $timeout(function()
+ {
+ sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
+ }, 500);*/
- var neighbors = {
- prev: "",
- next: ""
- };
- // prev https://zm/api/events/index/StartTime <: 2018-05-05 11:50:00 =:7/AlarmFrames >=:1.json?sort=StartTime&direction=desc&limit=1
+ });
- //next
- //zm/api/events/index/StartTime >: 2018-05-05 11:50:00/MonitorId =:7/AlarmFrames >=:1.json?sort=StartTime&direction=asc&limit=1
- var d = $q.defer();
- // now get event details to show alarm frames
- var loginData = NVRDataModel.getLogin();
- var myurl = loginData.apiurl + '/events/' + eid + ".json";
- var nextEvent = loginData.apiurl+"/events/index"+
- "/StartTime >: "+currentEvent.Event.StartTime+
- ($scope.followSameMonitor == '1' ? "/MonitorId =: "+currentEvent.Monitor.Id: "") +
- "/AlarmFrames >=: " + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0) +
- ".json?sort=StartTime&direction=asc&limit=1";
+ //$timeout.cancel(eventQueryHandle);
+ //eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
- var prevEvent = loginData.apiurl+"/events/index"+
- "/StartTime <: "+currentEvent.Event.StartTime+
- ($scope.followSameMonitor == '1' ? "/MonitorId =: "+currentEvent.Monitor.Id: "") +
- "/AlarmFrames >=: " + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0) +
- ".json?sort=StartTime&direction=desc&limit=1";
+ };
+ // This function returns neighbor events if applicable
- NVRDataModel.debug ("Neighbor next URL="+nextEvent);
- NVRDataModel.debug ("Neighbor pre URL="+prevEvent);
- var nextPromise = $http.get(nextEvent);
- var prePromise = $http.get(prevEvent);
- var preId = "";
- var nextId = "";
- $q.all ([nextPromise, prePromise])
- .then (function (data) {
+ function neighborEvents(eid, mid) {
- // console.log ("NEXT OBJ="+JSON.stringify(data[0]));
- // console.log ("PRE OBJ="+JSON.stringify(data[1]));
- // next
- if (data[0] && data[0].data && data[0].data.events.length >0) {
- nextId = data[0].data.events[0].Event.Id;
-
- }
+ var neighbors = {
+ prev: "",
+ next: ""
+ };
+ // prev https://zm/api/events/index/StartTime <: 2018-05-05 11:50:00 =:7/AlarmFrames >=:1.json?sort=StartTime&direction=desc&limit=1
- if (data[1] && data[1].data && data[1].data.events.length >0) {
- preId = data[1].data.events[0].Event.Id;
-
- }
- NVRDataModel.debug ("neighbors of "+currentEvent.Event.Id +"are pre="+preId+" next="+nextId);
- neighbors.next = nextId;
- neighbors.prev = preId;
- d.resolve(neighbors);
- return d.promise;
+ //next
+ //zm/api/events/index/StartTime >: 2018-05-05 11:50:00/MonitorId =:7/AlarmFrames >=:1.json?sort=StartTime&direction=asc&limit=1
+ var d = $q.defer();
+ // now get event details to show alarm frames
+ var loginData = NVRDataModel.getLogin();
+ var myurl = loginData.apiurl + '/events/' + eid + ".json";
- // prev
- // console.log ("NEXT:",JSON.stringify(data[0].data),"PREV:",JSON.stringify(data[1].data));
- }, function (error) {
- NVRDataModel.log("Error retrieving neighbors" + JSON.stringify(err));
- d.reject(neighbors);
- return (d.promise);
+ var nextEvent = loginData.apiurl + "/events/index" +
+ "/StartTime >: " + currentEvent.Event.StartTime +
+ ($scope.followSameMonitor == '1' ? "/MonitorId =: " + currentEvent.Monitor.Id : "") +
+ "/AlarmFrames >=: " + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0) +
+ ".json?sort=StartTime&direction=asc&limit=1";
- });
- return (d.promise);
+ var prevEvent = loginData.apiurl + "/events/index" +
+ "/StartTime <: " + currentEvent.Event.StartTime +
+ ($scope.followSameMonitor == '1' ? "/MonitorId =: " + currentEvent.Monitor.Id : "") +
+ "/AlarmFrames >=: " + (loginData.enableAlarmCount ? loginData.minAlarmCount : 0) +
+ ".json?sort=StartTime&direction=desc&limit=1";
- }
- $scope.zoomImage = function(val)
- {
- var zl = parseInt($ionicScrollDelegate.$getByHandle("imgscroll").getScrollPosition().zoom);
- if (zl == 1 && val == -1)
- {
- NVRDataModel.debug("Already zoomed out max");
- return;
+ NVRDataModel.debug("Neighbor next URL=" + nextEvent);
+ NVRDataModel.debug("Neighbor pre URL=" + prevEvent);
+
+ var nextPromise = $http.get(nextEvent);
+ var prePromise = $http.get(prevEvent);
+
+ var preId = "";
+ var nextId = "";
+
+ $q.all([nextPromise, prePromise])
+ .then(function (data) {
+
+ // console.log ("NEXT OBJ="+JSON.stringify(data[0]));
+ // console.log ("PRE OBJ="+JSON.stringify(data[1]));
+ // next
+ if (data[0] && data[0].data && data[0].data.events.length > 0) {
+ nextId = data[0].data.events[0].Event.Id;
+
}
- zl += val;
- NVRDataModel.debug("Zoom level is " + zl);
- $ionicScrollDelegate.$getByHandle("imgscroll").zoomTo(zl, true);
+ if (data[1] && data[1].data && data[1].data.events.length > 0) {
+ preId = data[1].data.events[0].Event.Id;
- };
+ }
+ NVRDataModel.debug("neighbors of " + currentEvent.Event.Id + "are pre=" + preId + " next=" + nextId);
+ neighbors.next = nextId;
+ neighbors.prev = preId;
+ d.resolve(neighbors);
+ return d.promise;
+
+
+ // prev
+ // console.log ("NEXT:",JSON.stringify(data[0].data),"PREV:",JSON.stringify(data[1].data));
+ }, function (error) {
+ NVRDataModel.log("Error retrieving neighbors" + JSON.stringify(err));
+ d.reject(neighbors);
+ return (d.promise);
-
+ });
- $scope.deleteAndMoveNext = function (id) {
- NVRDataModel.debug ("Delete and move next called with: "+id);
- deleteEvent(id)
- .then (function (succ) {
- $ionicLoading.hide();
- if ($scope.modalData) $scope.modalData.doRefresh = true;
+ return (d.promise);
- var dirn = 1;
- if (!$scope.nextId && $scope.prevId) dirn = -1;
- jumpToEvent(id,dirn);
+ }
- });
- };
+ $scope.zoomImage = function (val) {
+ var zl = parseInt($ionicScrollDelegate.$getByHandle("imgscroll").getScrollPosition().zoom);
+ if (zl == 1 && val == -1) {
+ NVRDataModel.debug("Already zoomed out max");
+ return;
+ }
- function deleteEvent (id) {
- //$scope.eventList.showDelete = false;
- //curl -XDELETE http://server/zm/api/events/1.json
- var loginData = NVRDataModel.getLogin();
- var apiDelete = loginData.apiurl + "/events/" + id + ".json";
- NVRDataModel.debug("DeleteEvent: ID=" + id );
- NVRDataModel.log("Delete event " + apiDelete);
+ zl += val;
+ NVRDataModel.debug("Zoom level is " + zl);
+ $ionicScrollDelegate.$getByHandle("imgscroll").zoomTo(zl, true);
- $ionicLoading.show(
- {
- template: "{{'kDeletingEvent' | translate}}...",
+ };
+
+
+
+ $scope.deleteAndMoveNext = function (id) {
+ NVRDataModel.debug("Delete and move next called with: " + id);
+ deleteEvent(id)
+ .then(function (succ) {
+ $ionicLoading.hide();
+ if ($scope.modalData) $scope.modalData.doRefresh = true;
+
+ var dirn = 1;
+ if (!$scope.nextId && $scope.prevId) dirn = -1;
+ jumpToEvent(id, dirn);
+
+ });
+ };
+
+ function deleteEvent(id) {
+ //$scope.eventList.showDelete = false;
+ //curl -XDELETE http://server/zm/api/events/1.json
+ var loginData = NVRDataModel.getLogin();
+ var apiDelete = loginData.apiurl + "/events/" + id + ".json";
+ NVRDataModel.debug("DeleteEvent: ID=" + id);
+ NVRDataModel.log("Delete event " + apiDelete);
+
+ $ionicLoading.show({
+ template: "{{'kDeletingEvent' | translate}}...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
+
+ return $http.delete(apiDelete)
+ .success(function (data) {
+ $ionicLoading.hide();
+ // NVRDataModel.debug("delete output: " + JSON.stringify(data));
+
+ if (data.message == 'Error') {
+ $ionicLoading.show({
+ template: "{{'kError' | translate}}...",
noBackdrop: true,
- duration: zm.httpTimeout
- });
+ duration: 1500
+ });
- return $http.delete(apiDelete)
- .success(function(data)
- {
- $ionicLoading.hide();
- // NVRDataModel.debug("delete output: " + JSON.stringify(data));
+ } else {
- if (data.message == 'Error')
- {
- $ionicLoading.show(
- {
- template: "{{'kError' | translate}}...",
- noBackdrop: true,
- duration: 1500
- });
+ $ionicLoading.hide();
+ $ionicLoading.show({
+ template: "{{'kSuccess' | translate}}...",
+ noBackdrop: true,
+ duration: 1000
+ });
- }
- else
- {
- $ionicLoading.hide();
- $ionicLoading.show(
- {
- template: "{{'kSuccess' | translate}}...",
- noBackdrop: true,
- duration: 1000
- });
-
-
- }
+ }
- // NVRDataModel.displayBanner('info', [$translate.instant('kDeleteEventSuccess')], 2000, 2000);
+ // NVRDataModel.displayBanner('info', [$translate.instant('kDeleteEventSuccess')], 2000, 2000);
-
- //doRefresh();
- })
- .error(function(data)
- {
- $ionicLoading.hide();
- NVRDataModel.debug("delete error: " + JSON.stringify(data));
- NVRDataModel.displayBanner('error', [$translate.instant('kDeleteEventError1'), $translate.instant('kDeleteEventError2')]);
- });
+ //doRefresh();
+
+ })
+ .error(function (data) {
+ $ionicLoading.hide();
+ NVRDataModel.debug("delete error: " + JSON.stringify(data));
+ NVRDataModel.displayBanner('error', [$translate.instant('kDeleteEventError1'), $translate.instant('kDeleteEventError2')]);
+ });
+ }
+ //--------------------------------------------------------
+ //Navigate to next/prev event in full screen mode
+ //--------------------------------------------------------
+
+ $scope.onSwipeEvent = function (eid, dirn) {
+
+ console.log("CALLED WITH " + eid + " dirn " + dirn);
+ if ($ionicScrollDelegate.$getByHandle("imgscroll").getScrollPosition().zoom != 1) {
+ //console.log("Image is zoomed in - not honoring swipe");
+ return;
}
- //--------------------------------------------------------
- //Navigate to next/prev event in full screen mode
- //--------------------------------------------------------
- $scope.onSwipeEvent = function(eid, dirn)
- {
+ //if ($scope.liveFeedMid) return;
- console.log ("CALLED WITH "+eid+" dirn "+dirn);
- if ($ionicScrollDelegate.$getByHandle("imgscroll").getScrollPosition().zoom != 1)
- {
- //console.log("Image is zoomed in - not honoring swipe");
- return;
- }
+ jumpToEvent(eid, dirn);
+ /* else
+ {
+ jumpToEvent(eid, dirn);
+ }*/
- //if ($scope.liveFeedMid) return;
-
- jumpToEvent(eid,dirn);
- /* else
- {
- jumpToEvent(eid, dirn);
- }*/
+ //console.log("JUMPING");
- //console.log("JUMPING");
+ };
- };
+ $scope.jumpToEvent = function (eid, dirn) {
+ jumpToEvent(eid, dirn);
+ };
- $scope.jumpToEvent = function(eid, dirn)
- {
- jumpToEvent (eid,dirn);
- };
+ function jumpToEvent(eid, dirn) {
+ $scope.snapshotFrameId = 1;
+ var oState;
+ NVRDataModel.log("HERE: Event jump called with:" + eid);
+ if (eid == "") {
+ $ionicLoading.show({
+ template: $translate.instant('kNoMoreEvents'),
+ noBackdrop: true,
+ duration: 2000
+ });
- function jumpToEvent(eid, dirn)
- {
- maxAlarmFid = 0;
- $scope.snapshotFrameId = 1;
- var oState;
- NVRDataModel.log("HERE: Event jump called with:" + eid);
- if (eid == "")
- {
- $ionicLoading.show(
- {
- template: $translate.instant('kNoMoreEvents'),
- noBackdrop: true,
- duration: 2000
- });
+ return;
+ }
- return;
- }
+ var slidein;
+ var slideout;
+ if (dirn == 1) {
+ slideout = "animated slideOutLeft";
+ slidein = "animated slideInRight";
+ } else {
+ slideout = "animated slideOutRight";
+ slidein = "animated slideInLeft";
+ }
- var slidein;
- var slideout;
- if (dirn == 1)
- {
- slideout = "animated slideOutLeft";
- slidein = "animated slideInRight";
- }
- else
- {
- slideout = "animated slideOutRight";
- slidein = "animated slideInLeft";
- }
+ oState = currentStreamState;
+ var element = angular.element(document.getElementById("full-screen-event"));
+ element.addClass(slideout).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', outWithOld);
+
+ function outWithOld() {
+
+ NVRDataModel.log("ModalCtrl:Stopping network pull...");
+ NVRDataModel.stopNetwork("EventModalCtrl-out with old");
+ $scope.animationInProgress = true;
+ // give digest time for image to swap
+ // 100 should be enough
+ $timeout(function () {
+ element.removeClass(slideout);
+ element.addClass(slidein)
+ .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', inWithNew);
+ processMove(eid, dirn);
+
+ currentStreamState = streamState.SNAPSHOT;
+ }, 200);
+ }
- oState = currentStreamState;
- var element = angular.element(document.getElementById("full-screen-event"));
- element.addClass(slideout).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', outWithOld);
+ function inWithNew() {
+ element.removeClass(slidein);
+ $scope.animationInProgress = false;
+ carouselUtils.setStop(false);
+ currentStreamState = oState;
- function outWithOld()
- {
- NVRDataModel.log("ModalCtrl:Stopping network pull...");
- NVRDataModel.stopNetwork("EventModalCtrl-out with old");
- $scope.animationInProgress = true;
- // give digest time for image to swap
- // 100 should be enough
- $timeout(function()
- {
- element.removeClass(slideout);
- element.addClass(slidein)
- .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', inWithNew);
- processMove(eid,dirn);
-
- currentStreamState = streamState.SNAPSHOT;
- }, 200);
- }
+ }
- function inWithNew()
- {
- element.removeClass(slidein);
- $scope.animationInProgress = false;
- carouselUtils.setStop(false);
- currentStreamState = oState;
+ }
+ function processMove(eid, dirn) {
+ var ld = NVRDataModel.getLogin();
+ if (!ld.canSwipeMonitors) return;
- }
+
+ // NVRDataModel.log("using zms to move ");
+
+ if (currentStreamState == streamState.ACTIVE && ($scope.defaultVideo == '' || $scope.defaultVideo == 'undefined')) {
+ // need to kill zms
+ currentStreamState = streamState.STOPPED;
+ $timeout(function () {
+ NVRDataModel.killLiveStream($scope.connKey);
+
+ });
}
- function processMove(eid,dirn) {
- var ld = NVRDataModel.getLogin();
- if (!ld.canSwipeMonitors) return;
+ if ($scope.defaultVideo != "" && $scope.defaultVideo != 'undefined') {
- /* if ($state.current.name=="app.moment") {
- // console.log ("Searching for eid:"+eventId);
- var i;
- for (i=0; i < $scope.moments.length;i++) {
- if ($scope.moments[i].Event.Id == eventId) break;
- }
- // console.log ("Event found at index:"+i);
- if (dirn == -1 && i > 0) i--;
- if (dirn == 1 && i < $scope.moments.length -1) i++;
- NVRDataModel.debug ("Next is index:"+i+" maxScoreId:"+$scope.moments[i].Event.MaxScoreFrameId);
- maxAlarmFid = $scope.moments[i].Event.MaxScoreFrameId;
- eventId = $scope.moments[i].Event.Id;
- return;
- }*/
-
- if (1) {
- // NVRDataModel.log("using zms to move ");
-
- if (currentStreamState == streamState.ACTIVE && ($scope.defaultVideo == '' || $scope.defaultVideo == 'undefined')) {
- // need to kill zms
- currentStreamState = streamState.STOPPED;
- $timeout (function() {
- NVRDataModel.killLiveStream($scope.connKey);
-
- });
-
- }
+ if (handle) {
- if ($scope.defaultVideo != "" && $scope.defaultVideo != 'undefined') {
+ NVRDataModel.debug("Clearing video feed...");
+ handle.stop();
+ handle.clearMedia();
- if (handle){
-
- NVRDataModel.debug ("Clearing video feed...");
- handle.stop();
- handle.clearMedia();
-
-
- }
-
-
- playerReady = false;
- $scope.defaultVideo = "";
- $scope.video_url="";
- $scope.videoObject = {};
- $scope.videoIsReady = false;
+ }
- }
-
- if (dirn==1) {
- NVRDataModel.debug ("Moving to:"+$scope.nextId) ;
- prepareModalEvent($scope.nextId);
- }
- else if (dirn==2) {
- // this is called when you delete
- var id="";
- if ($scope.nextId > 0) id = $scope.nextId ;
- else if ($scope.prevId > 0) id = $scope.prevId;
- NVRDataModel.debug ("after delete, moving to "+id);
- prepareModalEvent(id);
+ playerReady = false;
+ $scope.defaultVideo = "";
+ $scope.video_url = "";
+ $scope.videoObject = {};
+ $scope.videoIsReady = false;
+ }
- }
- else if (dirn==-1 && $scope.prevId > 0) {
- NVRDataModel.debug ("Moving to:"+$scope.prevId) ;
- prepareModalEvent($scope.prevId);
- }
- // jumpToEventZms($scope.connKey, dirn);
- }
-
+ if (dirn == 1) {
+ NVRDataModel.debug("Moving to:" + $scope.nextId);
+ prepareModalEvent($scope.nextId);
+ } else if (dirn == 2) {
+ // this is called when you delete
+ var id = "";
+ if ($scope.nextId > 0) id = $scope.nextId;
+ else if ($scope.prevId > 0) id = $scope.prevId;
+ NVRDataModel.debug("after delete, moving to " + id);
+ prepareModalEvent(id);
+
+ } else if (dirn == -1 && $scope.prevId > 0) {
+ NVRDataModel.debug("Moving to:" + $scope.prevId);
+ prepareModalEvent($scope.prevId);
}
- function humanizeTime(str)
- {
- // if (NVRDataModel.getLogin().useLocalTimeZone)
- return moment.tz(str, NVRDataModel.getTimeZoneNow()).fromNow();
- // else
- // return moment(str).fromNow();
- }
- function jumpToEventVideo (dirn) {
- var ld = NVRDataModel.getLogin();
- var url = ld.url+'/index.php?view=request&request=status&entity=nearevents&id='+$scope.eventId;
- // url += "&filter%5BQuery%5D%5Bterms%5D%5B0%5D%5Battr%5D=MonitorId&filter%5BQuery%5D%5Bterms%5D%5B0%5D%5Bop%5D=%3D&filter%5BQuery%5D%5Bterms%5D%5B0%5D%5Bval%5D=5&sort_field=StartTime&sort_asc=1"; // wtf junk
- NVRDataModel.debug ("Asking nearest video EID using "+url);
- $http.get(url)
- .then ( function (succ) {
- // console.log ("GOT "+JSON.stringify(succ));
+ }
- },
- function (err) {
- // console.log ("ERR GOT "+JSON.stringify(succ));
- }
- );
- }
+ function humanizeTime(str) {
+ // if (NVRDataModel.getLogin().useLocalTimeZone)
+ return moment.tz(str, NVRDataModel.getTimeZoneNow()).fromNow();
+ // else
+ // return moment(str).fromNow();
- function jumpToEventZms(connkey, dirn)
- {
+ }
- /* if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '')
- {
- jumpToEventVideo (dirn);
- return;
- }*/
+ function jumpToEventVideo(dirn) {
+ var ld = NVRDataModel.getLogin();
+ var url = ld.url + '/index.php?view=request&request=status&entity=nearevents&id=' + $scope.eventId;
+ // url += "&filter%5BQuery%5D%5Bterms%5D%5B0%5D%5Battr%5D=MonitorId&filter%5BQuery%5D%5Bterms%5D%5B0%5D%5Bop%5D=%3D&filter%5BQuery%5D%5Bterms%5D%5B0%5D%5Bval%5D=5&sort_field=StartTime&sort_asc=1"; // wtf junk
+ NVRDataModel.debug("Asking nearest video EID using " + url);
+ $http.get(url)
+ .then(function (succ) {
+ // console.log ("GOT "+JSON.stringify(succ));
-
- var cmd = dirn == 1 ? '13' : '12';
- $scope.d_eventId = "...";
- NVRDataModel.debug("Sending " + cmd + " to " + connkey);
+ },
+ function (err) {
+ // console.log ("ERR GOT "+JSON.stringify(succ));
+ }
+ );
+ }
- $ionicLoading.show(
- {
- template: $translate.instant('kSwitchingEvents') + "...",
- noBackdrop: true,
- duration: zm.httpTimeout
- });
+ function jumpToEventZms(connkey, dirn) {
- //console.log("Send command connkey: " + connkey);
+ /* if ($scope.defaultVideo !== undefined && $scope.defaultVideo != '')
+ {
+ jumpToEventVideo (dirn);
+ return;
+ }*/
-
- sendCommand(cmd, connkey)
- .then(
- function(success)
- {
- //console.log ("jump success " + JSON.stringify(success));
- $ionicLoading.hide();
- },
- function(error)
- {
+ var cmd = dirn == 1 ? '13' : '12';
+ $scope.d_eventId = "...";
+ NVRDataModel.debug("Sending " + cmd + " to " + connkey);
- NVRDataModel.debug("Hmm jump error " + JSON.stringify(error));
- NVRDataModel.stopNetwork("EventModalCtrl-jumptoEventZms error");
- $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- // console.log ("********* OFFSET FROM JUMPTOEVENTZMS ERROR");
- $timeout(function()
- {
- sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
- }, 500);
- NVRDataModel.debug("so I'm regenerating Connkey to " + $scope.connKey);
- //$timeout.cancel(eventQueryHandle);
- // eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
- $ionicLoading.hide();
- });
- var slidein;
- var slideout;
- if (dirn == 1)
- {
- slideout = "animated slideOutLeft";
- slidein = "animated slideInRight";
- }
- else
- {
- slideout = "animated slideOutRight";
- slidein = "animated slideInLeft";
- }
- var element = angular.element(document.getElementById("full-screen-event"));
- element.addClass(slideout).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', outWithOld);
+ $ionicLoading.show({
+ template: $translate.instant('kSwitchingEvents') + "...",
+ noBackdrop: true,
+ duration: zm.httpTimeout
+ });
- function outWithOld()
- {
+ //console.log("Send command connkey: " + connkey);
- $timeout(function()
- {
- element.removeClass(slideout);
- element.addClass(slidein)
- .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', inWithNew);
- }, 200);
- }
- function inWithNew()
- {
- element.removeClass(slidein);
- }
+ sendCommand(cmd, connkey)
+ .then(
+ function (success) {
+ //console.log ("jump success " + JSON.stringify(success));
+ $ionicLoading.hide();
+ },
+ function (error) {
+ NVRDataModel.debug("Hmm jump error " + JSON.stringify(error));
+ NVRDataModel.stopNetwork("EventModalCtrl-jumptoEventZms error");
+ $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
+ // console.log ("********* OFFSET FROM JUMPTOEVENTZMS ERROR");
+ $timeout(function () {
+ sendCommand('14', $scope.connKey, '&offset=' + $scope.currentProgress.progress);
+ }, 500);
+ NVRDataModel.debug("so I'm regenerating Connkey to " + $scope.connKey);
+ //$timeout.cancel(eventQueryHandle);
+ // eventQueryHandle = $timeout (function(){checkEvent();}, zm.eventPlaybackQuery);
+ $ionicLoading.hide();
+ });
+ var slidein;
+ var slideout;
+ if (dirn == 1) {
+ slideout = "animated slideOutLeft";
+ slidein = "animated slideInRight";
+ } else {
+ slideout = "animated slideOutRight";
+ slidein = "animated slideInLeft";
}
+ var element = angular.element(document.getElementById("full-screen-event"));
+ element.addClass(slideout).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', outWithOld);
- //--------------------------------------------------------
- // utility function
- //--------------------------------------------------------
+ function outWithOld() {
- function computeRelativePath(event)
- {
- var relativePath = "";
- var loginData = NVRDataModel.getLogin();
- var str = event.Event.StartTime;
- var yy = moment(str).locale('en').format('YY');
- var mm = moment(str).locale('en').format('MM');
- var dd = moment(str).locale('en').format('DD');
- var hh = moment(str).locale('en').format('HH');
- var min = moment(str).locale('en').format('mm');
- var sec = moment(str).locale('en').format('ss');
- relativePath = event.Event.MonitorId + "/" +
- yy + "/" +
- mm + "/" +
- dd + "/" +
- hh + "/" +
- min + "/" +
- sec + "/";
- return relativePath;
+ $timeout(function () {
+ element.removeClass(slideout);
+ element.addClass(slidein)
+ .one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', inWithNew);
+ }, 200);
}
- //--------------------------------------------------------
- // utility function
- //--------------------------------------------------------
+ function inWithNew() {
+ element.removeClass(slidein);
- function computeBasePath(event)
- {
- var basePath = "";
- var loginData = NVRDataModel.getLogin();
- var str = event.Event.StartTime;
- var yy = moment(str).locale('en').format('YY');
- var mm = moment(str).locale('en').format('MM');
- var dd = moment(str).locale('en').format('DD');
- var hh = moment(str).locale('en').format('HH');
- var min = moment(str).locale('en').format('mm');
- var sec = moment(str).locale('en').format('ss');
-
- basePath = loginData.url + "/events/" +
- event.Event.MonitorId + "/" +
- yy + "/" +
- mm + "/" +
- dd + "/" +
- hh + "/" +
- min + "/" +
- sec + "/";
- return basePath;
}
- //-------------------------------------------------------------------------
- // Called when rncarousel or video player finished playing event
- //-------------------------------------------------------------------------
+ }
+
+ //--------------------------------------------------------
+ // utility function
+ //--------------------------------------------------------
+
+ function computeRelativePath(event) {
+ var relativePath = "";
+ var loginData = NVRDataModel.getLogin();
+ var str = event.Event.StartTime;
+ var yy = moment(str).locale('en').format('YY');
+ var mm = moment(str).locale('en').format('MM');
+ var dd = moment(str).locale('en').format('DD');
+ var hh = moment(str).locale('en').format('HH');
+ var min = moment(str).locale('en').format('mm');
+ var sec = moment(str).locale('en').format('ss');
+ relativePath = event.Event.MonitorId + "/" +
+ yy + "/" +
+ mm + "/" +
+ dd + "/" +
+ hh + "/" +
+ min + "/" +
+ sec + "/";
+ return relativePath;
+
+ }
+
+ //--------------------------------------------------------
+ // utility function
+ //--------------------------------------------------------
+
+ function computeBasePath(event) {
+ var basePath = "";
+ var loginData = NVRDataModel.getLogin();
+ var str = event.Event.StartTime;
+ var yy = moment(str).locale('en').format('YY');
+ var mm = moment(str).locale('en').format('MM');
+ var dd = moment(str).locale('en').format('DD');
+ var hh = moment(str).locale('en').format('HH');
+ var min = moment(str).locale('en').format('mm');
+ var sec = moment(str).locale('en').format('ss');
+
+ basePath = loginData.url + "/events/" +
+ event.Event.MonitorId + "/" +
+ yy + "/" +
+ mm + "/" +
+ dd + "/" +
+ hh + "/" +
+ min + "/" +
+ sec + "/";
+ return basePath;
+ }
+
+ //-------------------------------------------------------------------------
+ // Called when rncarousel or video player finished playing event
+ //-------------------------------------------------------------------------
+
+ $scope.playbackFinished = function () {
+ playbackFinished();
+ };
+
+ function playbackFinished() {
+ // currentEvent is updated with the currently playing event in prepareModalEvent()
+ NVRDataModel.log("Playback of event " + currentEvent.Event.Id + " is finished");
+
+ if ($scope.loginData.gapless) {
+
+ neighborEvents(currentEvent.Event.Id, currentEvent.Monitor.Id)
+ .then(function (success) {
+
+ // lets give a second before gapless transition to the next event
+ $timeout(function () {
+ $scope.nextId = success.next;
+ $scope.prevId = success.prev;
+ NVRDataModel.debug("Gapless move to event " + $scope.nextId);
+ jumpToEvent($scope.nextId, 1);
+ }, 1000);
+ },
+ function (error) {
+ NVRDataModel.debug("Error in neighbor call " +
+ JSON.stringify(error));
+ });
+ } else {
+ NVRDataModel.debug("not going to next event, gapless is off");
+ }
+ }
- $scope.playbackFinished = function()
- {
- playbackFinished();
- };
+ function computeAlarmFrames(data) {
+ $scope.alarm_images = [];
+ tempAlarms = [];
+ $scope.FrameArray = data.event.Frame;
- function playbackFinished()
- {
- // currentEvent is updated with the currently playing event in prepareModalEvent()
- NVRDataModel.log("Playback of event " + currentEvent.Event.Id + " is finished");
+ for (i = 0; i < data.event.Frame.length; i++) {
+ if (data.event.Frame[i].Type == "Alarm") {
- if ($scope.loginData.gapless)
- {
+ // console.log ("**ONLY ALARM AT " + i + "of " + data.event.Frame.length);
+
+ tempAlarms.push({
+
+ id: data.event.Frame[i].Id,
+ frameid: data.event.Frame[i].FrameId,
+ });
+
+ }
- neighborEvents(currentEvent.Event.Id, currentEvent.Monitor.Id)
- .then(function(success)
- {
-
- // lets give a second before gapless transition to the next event
- $timeout(function()
- {
- $scope.nextId = success.next;
- $scope.prevId = success.prev;
- NVRDataModel.debug("Gapless move to event " + $scope.nextId);
- jumpToEvent($scope.nextId, 1);
- }, 1000);
- },
- function(error)
- {
- NVRDataModel.debug("Error in neighbor call " +
- JSON.stringify(error));
- });
- }
- else
- {
- NVRDataModel.debug("not going to next event, gapless is off");
- }
}
+ if (tempAlarms.length > 1) // don't do it for just one too
+ $scope.alarm_images = tempAlarms;
- function computeAlarmFrames(data) {
- $scope.alarm_images = [];
- tempAlarms = [];
- $scope.FrameArray = data.event.Frame;
+ }
- for (i = 0; i < data.event.Frame.length; i++)
- {
- if (data.event.Frame[i].Type == "Alarm")
- {
+ $scope.constructFrame = function (fid) {
- // console.log ("**ONLY ALARM AT " + i + "of " + data.event.Frame.length);
-
- tempAlarms.push(
- {
-
- id: data.event.Frame[i].Id,
- frameid: data.event.Frame[i].FrameId,
- });
-
- }
+ var frame = "";
+ frame = currentEvent.Event.baseURL + "/index.php?view=image" +
+ "&eid=" + currentEvent.Event.Id +
+ "&fid=" + fid +
+ "&height=" + 200;
- }
- if (tempAlarms.length > 1) // don't do it for just one too
- $scope.alarm_images = tempAlarms;
-
- }
+ if ($rootScope.authSession != 'undefined') frame += $rootScope.authSession;
+ frame += NVRDataModel.insertBasicAuthToken();
+ // console.log (frame);
+ return frame;
+ };
- $scope.constructFrame = function (fid) {
+ //--------------------------------------------------------
+ // Called by openModal as well as jump to event
+ // what it basically does is get a detailed event API
+ // for an event ID and constructs required playback
+ // parameters
+ // Note that openModal is called with the top level event
+ // API. Some parameters are repeated across both
+ //--------------------------------------------------------
- var frame = "";
- frame = currentEvent.Event.baseURL+"/index.php?view=image" +
- "&eid="+currentEvent.Event.Id +
- "&fid="+fid +
- "&height="+200;
+ function prepareModalEvent(eid) {
- if ($rootScope.authSession != 'undefined') frame +=$rootScope.authSession;
- frame += NVRDataModel.insertBasicAuthToken();
- // console.log (frame);
- return frame;
- };
- //--------------------------------------------------------
- // Called by openModal as well as jump to event
- // what it basically does is get a detailed event API
- // for an event ID and constructs required playback
- // parameters
- // Note that openModal is called with the top level event
- // API. Some parameters are repeated across both
- //--------------------------------------------------------
- function prepareModalEvent(eid)
- {
+ // Lets get the detailed event API
+ var loginData = NVRDataModel.getLogin();
+ var myurl = loginData.apiurl + '/events/' + eid + ".json";
+ NVRDataModel.log("*** Constructed API for detailed events: " + myurl);
+ $scope.humanizeTime = "...";
+ $scope.mName = "...";
+ $scope.liveFeedMid = '';
+ $http.get(myurl)
+ .then(function (success) {
- // Lets get the detailed event API
- var loginData = NVRDataModel.getLogin();
- var myurl = loginData.apiurl + '/events/' + eid + ".json";
- NVRDataModel.log("*** Constructed API for detailed events: " + myurl);
- $scope.humanizeTime = "...";
- $scope.mName = "...";
- $scope.liveFeedMid = '';
+ // console.log ("DUCCESS::"+JSON.stringify(success));
-
- $http.get(myurl)
- .then(function(success)
- {
- // console.log ("DUCCESS::"+JSON.stringify(success));
+ var event = success.data.event;
+ currentEvent = event;
-
- var event = success.data.event;
- currentEvent = event;
+ computeAlarmFrames(success.data);
+ $scope.eventWarning = '';
- computeAlarmFrames(success.data);
- $scope.eventWarning = '';
+ if (!event.Event.EndTime && showLive) {
+ $scope.eventWarning = $translate.instant('kEventStillRecording');
+ // if this happens we get to live feed
+ $scope.liveFeedMid = event.Event.MonitorId;
+ NVRDataModel.log("Event not ready, setting live view, with MID=" + $scope.liveFeedMid);
+ }
- if (!event.Event.EndTime && showLive) {
- $scope.eventWarning = $translate.instant('kEventStillRecording');
- // if this happens we get to live feed
- $scope.liveFeedMid = event.Event.MonitorId;
- NVRDataModel.log ("Event not ready, setting live view, with MID="+$scope.liveFeedMid);
- }
+ event.Event.BasePath = computeBasePath(event);
+ event.Event.relativePath = computeRelativePath(event);
+
+ event.Event.streamingURL = NVRDataModel.getStreamingURL(event.Event.MonitorId);
+ // event.Event.baseURL = NVRDataModel.getBaseURL (event.Event.MonitorId);
+ event.Event.baseURL = loginData.url;
+ event.Event.imageMode = NVRDataModel.getImageMode(event.Event.MonitorId);
+
+ //console.log (JSON.stringify( success));
+ $scope.eventName = event.Event.Name;
+ $scope.eventId = event.Event.Id;
+ $scope.d_eventId = $scope.eventId;
+ $scope.eFramesNum = event.Event.Frames;
+ $scope.eventDur = Math.round(event.Event.Length);
+ $scope.loginData = NVRDataModel.getLogin();
+ $scope.humanizeTime = humanizeTime(event.Event.StartTime);
+ $scope.mName = NVRDataModel.getMonitorName(event.Event.MonitorId);
+ //console.log (">>>>>>>>HUMANIZE " + $scope.humanizeTime);
+
+ // console.log("**** VIDEO STATE IS " + event.Event.DefaultVideo);
+ if (typeof event.Event.DefaultVideo === 'undefined' || event.Event.DefaultVideo == '') {
+ event.Event.DefaultVideo = "";
+ }
- event.Event.BasePath = computeBasePath(event);
- event.Event.relativePath = computeRelativePath(event);
-
- event.Event.streamingURL = NVRDataModel.getStreamingURL(event.Event.MonitorId);
- // event.Event.baseURL = NVRDataModel.getBaseURL (event.Event.MonitorId);
- event.Event.baseURL = loginData.url;
- event.Event.imageMode = NVRDataModel.getImageMode(event.Event.MonitorId);
-
- //console.log (JSON.stringify( success));
- $scope.eventName = event.Event.Name;
- $scope.eventId = event.Event.Id;
- $scope.d_eventId = $scope.eventId;
- $scope.eFramesNum = event.Event.Frames;
- $scope.eventDur = Math.round(event.Event.Length);
- $scope.loginData = NVRDataModel.getLogin();
- $scope.humanizeTime = humanizeTime(event.Event.StartTime);
- $scope.mName = NVRDataModel.getMonitorName(event.Event.MonitorId);
- //console.log (">>>>>>>>HUMANIZE " + $scope.humanizeTime);
-
- // console.log("**** VIDEO STATE IS " + event.Event.DefaultVideo);
- if (typeof event.Event.DefaultVideo === 'undefined' || event.Event.DefaultVideo == '') {
- event.Event.DefaultVideo = "";
- }
-
-
- $scope.defaultVideo = event.Event.DefaultVideo;
-
- $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
-
- if (currentStreamState!=streamState.SNAPSHOT)
- currentStreamState = streamState.ACTIVE;
-
-
- //console.log("loginData is " + JSON.stringify($scope.loginData));
- //console.log("Event ID is " + $scope.eventId);
- //console.log("video is " + $scope.defaultVideo);
-
- neighborEvents(event.Event.Id)
- .then(function(success)
- {
- $scope.nextId = success.next;
- $scope.prevId = success.prev;
- },
- function(error)
- {
- //console.log(JSON.stringify(error));
- });
-
- $scope.nextId = "...";
- $scope.prevId = "...";
-
- event.Event.video = {};
- var videoURL;
-
- if ((event.Event.imageMode == 'path') || NVRDataModel.getLogin().forceImageModePath)
- videoURL = event.Event.baseURL + "/events/" + event.Event.relativePath + event.Event.DefaultVideo;
- else
- videoURL = event.Event.baseURL + "/index.php?view=view_video&eid=" + event.Event.Id;
-
- if ($rootScope.authSession != 'undefined') videoURL +=$rootScope.authSession;
- if ($rootScope.basicAuthToken) videoURL = videoURL+"&basicauth="+$rootScope.basicAuthToken;
-
- // hack
- //videoURL = "http://static.videogular.com/assets/videos/videogular.mp4";
-
- $scope.video_url = videoURL;
-
- //console.log("************** VIDEO IS " + videoURL);
-
- NVRDataModel.debug("Video url passed to player is: " + videoURL);
-
- // console.log (">>>>>>>>>>>>>"+loginData.url+"-VS-"+event.Event.baseURL);
-
- //console.log("************** VIDEO IS " + videoURL);
-
- $scope.videoObject = {
- config:
- {
- autoPlay: true,
- responsive: false,
- nativeControls: false,
- nativeFullScreen:false,
-
- playsInline: true,
- sources: [
- {
- src: $sce.trustAsResourceUrl(videoURL),
- type: "video/mp4"
- }
-
- ],
-
- theme: "lib/videogular-themes-default/videogular.css",
- cuepoints: {
- theme: {
- url:"lib/videogular-cuepoints/cuepoints.css"
- },
- points: [],
- }
- }
- };
-
- // $scope.videoObject = angular.copy(event.Event.video);
-
- $scope.playbackURL = $scope.loginData.url;
-
- $scope.videoIsReady = true;
-
- /* we don't need this for electron
- if ($rootScope.platformOS == "desktop") {
- $scope.playbackURL = zm.desktopUrl;
- } */
-
- $scope.eventBasePath = event.Event.BasePath;
- $scope.relativePath = event.Event.relativePath;
- $rootScope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
-
- $scope.slider_modal_options = {
- from: 1,
- to: event.Event.Frames,
- realtime: true,
- step: 1,
- className: "mySliderClass",
- callback: function(value, released)
- {
- //console.log("CALLBACK"+value+released);
- $ionicScrollDelegate.freezeScroll(!released);
-
- },
- //modelLabels:function(val) {return "";},
- smooth: false,
- css:
- {
- background:
- {
- "background-color": "silver"
- },
- before:
- {
- "background-color": "purple"
- },
- default:
- {
- "background-color": "white"
- }, // default value: 1px
- after:
- {
- "background-color": "green"
- }, // zone after default value
- pointer:
- {
- "background-color": "red"
- }, // circle pointer
- range:
- {
- "background-color": "red"
- } // use it if double value
- },
- scale: []
-
- };
-
- $scope.mycarousel.index = 0;
- $scope.ionRange.index = 1;
- $scope.eventSpeed = $scope.event.Event.Length / $scope.event.Event.Frames;
-
- //console.log("**Resetting range");
- $scope.slides = [];
- var i;
- for (i = 1; i <= event.Event.Frames; i++)
- {
- var fname = padToN(i, eventImageDigits) + "-capture.jpg";
- // console.log ("Building " + fname);
- $scope.slides.push(
- {
- id: i,
- img: fname
- });
- }
- // now get event details to show alarm frames
+ $scope.defaultVideo = event.Event.DefaultVideo;
- //$scope.FrameArray = event.Frame;
- // $scope.slider_options.scale=[];
- // $scope.slider_modal_options.scale = [];
+ $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString();
- // lets
- framearray.datasets[0].data = [];
- for (i = 0; i < event.Frame.length; i++)
- {
+ if (currentStreamState != streamState.SNAPSHOT)
+ currentStreamState = streamState.ACTIVE;
- var ts = moment(event.Frame[i].TimeStamp).format(timeFormat);
- //console.log ("pushing s:" + event.Frame[i].Score+" t:"+ts);
+ //console.log("loginData is " + JSON.stringify($scope.loginData));
+ //console.log("Event ID is " + $scope.eventId);
+ //console.log("video is " + $scope.defaultVideo);
- framearray.datasets[0].data.push(
- {
- x: ts,
- y: event.Frame[i].Score
- });
- framearray.labels.push("");
+ neighborEvents(event.Event.Id)
+ .then(function (success) {
+ $scope.nextId = success.next;
+ $scope.prevId = success.prev;
+ },
+ function (error) {
+ //console.log(JSON.stringify(error));
+ });
- }
- $scope.totalEventTime = Math.round(parseFloat(event.Event.Length)) - 1;
- $scope.currentEventTime = 0;
-
- // video mode doesn't need this graph - it won't really work
- if ($scope.defaultVideo == undefined || $scope.defaultVideo == '')
- {
- $timeout(function()
- {
- drawGraph();
- }, 500);
- }
+ $scope.nextId = "...";
+ $scope.prevId = "...";
- },
- function(err)
- {
- NVRDataModel.log("Error retrieving detailed frame API " + JSON.stringify(err));
- NVRDataModel.displayBanner('error', ['could not retrieve frame details', 'please try again']);
- });
+ event.Event.video = {};
+ var videoURL;
- }
+ if ((event.Event.imageMode == 'path') || NVRDataModel.getLogin().forceImageModePath)
+ videoURL = event.Event.baseURL + "/events/" + event.Event.relativePath + event.Event.DefaultVideo;
+ else
+ videoURL = event.Event.baseURL + "/index.php?view=view_video&eid=" + event.Event.Id;
- if (typeof $scope.ionRange !== 'undefined')
- {
- $scope.$watch('ionRange.index', function()
- {
- //
- $scope.mycarousel.index = parseInt($scope.ionRange.index) - 1;
+ if ($rootScope.authSession != 'undefined') videoURL += $rootScope.authSession;
+ if ($rootScope.basicAuthToken) videoURL = videoURL + "&basicauth=" + $rootScope.basicAuthToken;
- if (carouselUtils.getStop() == true)
- return;
+ // hack
+ //videoURL = "http://static.videogular.com/assets/videos/videogular.mp4";
- //console.log ("***ION RANGE CHANGED TO " + $scope.mycarousel.index);
- });
- }
+ $scope.video_url = videoURL;
- if (typeof $scope.mycarousel !== 'undefined')
- {
- $scope.$watch('mycarousel.index', function()
- {
+ //console.log("************** VIDEO IS " + videoURL);
- if (currentEvent && $scope.ionRange.index == parseInt(currentEvent.Event.Frames - 1))
- {
- playbackFinished();
- }
- // end of playback from quick scrub
- // so ignore gapless
+ NVRDataModel.debug("Video url passed to player is: " + videoURL);
- if ($scope.event && $scope.ionRange.index == parseInt($scope.event.Event.Frames) - 1)
- {
- if (!$scope.modal || $scope.modal.isShown() == false)
- {
- // console.log("quick scrub playback over");
- carouselUtils.setStop(true);
- $scope.ionRange.index = 0;
- $scope.mycarousel.index = 1;
+ // console.log (">>>>>>>>>>>>>"+loginData.url+"-VS-"+event.Event.baseURL);
+
+ //console.log("************** VIDEO IS " + videoURL);
+
+ $scope.videoObject = {
+ config: {
+ autoPlay: true,
+ responsive: false,
+ nativeControls: false,
+ nativeFullScreen: false,
+
+ playsInline: true,
+ sources: [{
+ src: $sce.trustAsResourceUrl(videoURL),
+ type: "video/mp4"
}
+ ],
+
+ theme: "lib/videogular-themes-default/videogular.css",
+ cuepoints: {
+ theme: {
+ url: "lib/videogular-cuepoints/cuepoints.css"
+ },
+ points: [],
+ }
}
- if (carouselUtils.getStop() == true)
- return;
- $scope.ionRange.index = ($scope.mycarousel.index + 1).toString();
- // console.log ("***IONRANGE RANGE CHANGED TO " + $scope.ionRange.index);
+ };
+
+ // $scope.videoObject = angular.copy(event.Event.video);
+
+ $scope.playbackURL = $scope.loginData.url;
+
+ $scope.videoIsReady = true;
+ /* we don't need this for electron
+ if ($rootScope.platformOS == "desktop") {
+ $scope.playbackURL = zm.desktopUrl;
+ } */
+
+ $scope.eventBasePath = event.Event.BasePath;
+ $scope.relativePath = event.Event.relativePath;
+ $rootScope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
+
+ $scope.slider_modal_options = {
+ from: 1,
+ to: event.Event.Frames,
+ realtime: true,
+ step: 1,
+ className: "mySliderClass",
+ callback: function (value, released) {
+ //console.log("CALLBACK"+value+released);
+ $ionicScrollDelegate.freezeScroll(!released);
+
+ },
+ //modelLabels:function(val) {return "";},
+ smooth: false,
+ css: {
+ background: {
+ "background-color": "silver"
+ },
+ before: {
+ "background-color": "purple"
+ },
+ default: {
+ "background-color": "white"
+ }, // default value: 1px
+ after: {
+ "background-color": "green"
+ }, // zone after default value
+ pointer: {
+ "background-color": "red"
+ }, // circle pointer
+ range: {
+ "background-color": "red"
+ } // use it if double value
+ },
+ scale: []
+
+ };
+
+ $scope.mycarousel.index = 0;
+ $scope.ionRange.index = 1;
+ $scope.eventSpeed = $scope.event.Event.Length / $scope.event.Event.Frames;
+
+ //console.log("**Resetting range");
+ $scope.slides = [];
+ var i;
+ for (i = 1; i <= event.Event.Frames; i++) {
+ var fname = padToN(i, eventImageDigits) + "-capture.jpg";
+ // console.log ("Building " + fname);
+ $scope.slides.push({
+ id: i,
+ img: fname
+ });
+ }
+
+ // now get event details to show alarm frames
+
+ //$scope.FrameArray = event.Frame;
+ // $scope.slider_options.scale=[];
+ // $scope.slider_modal_options.scale = [];
+
+ // lets
+ framearray.datasets[0].data = [];
+ for (i = 0; i < event.Frame.length; i++) {
+
+ var ts = moment(event.Frame[i].TimeStamp).format(timeFormat);
+
+ //console.log ("pushing s:" + event.Frame[i].Score+" t:"+ts);
+
+ framearray.datasets[0].data.push({
+ x: ts,
+ y: event.Frame[i].Score
+ });
+ framearray.labels.push("");
+
+ }
+ $scope.totalEventTime = Math.round(parseFloat(event.Event.Length)) - 1;
+ $scope.currentEventTime = 0;
+
+ // video mode doesn't need this graph - it won't really work
+ if ($scope.defaultVideo == undefined || $scope.defaultVideo == '') {
+ $timeout(function () {
+ drawGraph();
+ }, 500);
+ }
+
+ },
+ function (err) {
+ NVRDataModel.log("Error retrieving detailed frame API " + JSON.stringify(err));
+ NVRDataModel.displayBanner('error', ['could not retrieve frame details', 'please try again']);
});
- }
- function padToN(number, digits)
- {
+ }
- var i;
- var stringMax = "";
- var stringLeading = "";
- for (i = 1; i <= digits; i++)
- {
- stringMax = stringMax + "9";
- if (i != digits) stringLeading = stringLeading + "0";
- }
- var numMax = parseInt(stringMax);
+ if (typeof $scope.ionRange !== 'undefined') {
+ $scope.$watch('ionRange.index', function () {
+ //
+ $scope.mycarousel.index = parseInt($scope.ionRange.index) - 1;
- if (number <= numMax)
- {
- number = (stringLeading + number).slice(-digits);
+ if (carouselUtils.getStop() == true)
+ return;
+
+ //console.log ("***ION RANGE CHANGED TO " + $scope.mycarousel.index);
+ });
+ }
+
+ if (typeof $scope.mycarousel !== 'undefined') {
+ $scope.$watch('mycarousel.index', function () {
+
+ if (currentEvent && $scope.ionRange.index == parseInt(currentEvent.Event.Frames - 1)) {
+ playbackFinished();
+ }
+ // end of playback from quick scrub
+ // so ignore gapless
+
+ if ($scope.event && $scope.ionRange.index == parseInt($scope.event.Event.Frames) - 1) {
+ if (!$scope.modal || $scope.modal.isShown() == false) {
+ // console.log("quick scrub playback over");
+ carouselUtils.setStop(true);
+ $scope.ionRange.index = 0;
+ $scope.mycarousel.index = 1;
}
- //console.log ("PADTON: returning " + number);
- return number;
+
+ }
+ if (carouselUtils.getStop() == true)
+ return;
+ $scope.ionRange.index = ($scope.mycarousel.index + 1).toString();
+ // console.log ("***IONRANGE RANGE CHANGED TO " + $scope.ionRange.index);
+
+ });
+ }
+
+ function padToN(number, digits) {
+
+ var i;
+ var stringMax = "";
+ var stringLeading = "";
+ for (i = 1; i <= digits; i++) {
+ stringMax = stringMax + "9";
+ if (i != digits) stringLeading = stringLeading + "0";
+ }
+ var numMax = parseInt(stringMax);
+
+ if (number <= numMax) {
+ number = (stringLeading + number).slice(-digits);
}
+ //console.log ("PADTON: returning " + number);
+ return number;
+ }
}]);