diff options
Diffstat (limited to 'www/js/MonitorModalCtrl.js')
| -rw-r--r-- | www/js/MonitorModalCtrl.js | 968 |
1 files changed, 478 insertions, 490 deletions
diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js index 13ded330..9d84e2a3 100644 --- a/www/js/MonitorModalCtrl.js +++ b/www/js/MonitorModalCtrl.js @@ -8,8 +8,8 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$rootScope', 'zm', 'ZMDataModel', '$ionicSideMenuDelegate', '$timeout', '$interval', '$ionicModal', '$ionicLoading', '$http', '$state', '$stateParams', '$ionicHistory', '$ionicScrollDelegate', '$q', '$sce', 'carouselUtils', '$ionicPopup', 'SecuredPopups', '$translate', function ($scope, $rootScope, zm, ZMDataModel, $ionicSideMenuDelegate, $timeout, $interval, $ionicModal, $ionicLoading, $http, $state, $stateParams, $ionicHistory, $ionicScrollDelegate, $q, $sce, carouselUtils, $ionicPopup, SecuredPopups, $translate) { - - + + $scope.animationInProgress = false; $scope.imageFit = true; @@ -17,11 +17,11 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ var intervalModalHandle; var nphTimer; var ld = ZMDataModel.getLogin(); - + $rootScope.authSession = "undefined"; - + $ionicLoading.show({ - template: $translate.instant('kNegotiatingStreamAuth')+'...', + template: $translate.instant('kNegotiatingStreamAuth') + '...', animation: 'fade-in', showBackdrop: true, duration: zm.loadingTimeout, @@ -33,8 +33,8 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ $scope.currentStreamMode = 'single'; ZMDataModel.zmLog("Using stream mode " + $scope.currentStreamMode); - ZMDataModel.zmDebug ("MonitorModalCtrl called from " + $ionicHistory.currentStateName()); - + ZMDataModel.zmDebug("MonitorModalCtrl called from " + $ionicHistory.currentStateName()); + $rootScope.validMonitorId = $scope.monitors[0].Monitor.Id; ZMDataModel.getAuthKey($rootScope.validMonitorId, $scope.monitors[0].Monitor.connKey) .then(function (success) { @@ -50,10 +50,10 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ //$rootScope.authSession=""; ZMDataModel.zmLog("Modal: Error returned Stream authentication construction. Retaining old value of: " + $rootScope.authSession); }); - - - - $interval.cancel(intervalModalHandle); + + + + $interval.cancel(intervalModalHandle); intervalModalHandle = $interval(function () { loadModalNotifications(); @@ -61,12 +61,12 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ }.bind(this), 5000); - $timeout.cancel(nphTimer); - nphTimer = $timeout(function () { - $scope.currentStreamMode = 'jpeg'; - ZMDataModel.zmLog("Switching playback via nphzms"); - }, zm.nphSwitchTimer); - + $timeout.cancel(nphTimer); + nphTimer = $timeout(function () { + $scope.currentStreamMode = 'jpeg'; + ZMDataModel.zmLog("Switching playback via nphzms"); + }, zm.nphSwitchTimer); + // This is the PTZ menu $scope.ptzRadialMenuOptions = { @@ -111,7 +111,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ empty: true, onclick: function () { - // console.log('About'); + // console.log('About'); } }, @@ -182,86 +182,87 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ //------------------------------------------------------------- // On re-auth, we need a new zms //------------------------------------------------------------- - - $rootScope.$on("auth-success", function () { - - ZMDataModel.zmDebug("MonitorModalCtrl: Re-login detected, resetting everything & re-generating connkey"); - ZMDataModel.stopNetwork("MonitorModal-auth success"); - $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString(); - - + + $rootScope.$on("auth-success", function () { + + ZMDataModel.zmDebug("MonitorModalCtrl: Re-login detected, resetting everything & re-generating connkey"); + ZMDataModel.stopNetwork("MonitorModal-auth success"); + $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString(); + + }); - - $scope.cast = function(mid, mon) - { - - console.log ("PASSED WITH " + JSON.stringify(mon)); - //ConnectSDK.discoveryManager.startDiscovery(); - - console.log ("Stopping"); - ConnectSDK.discoveryManager.stopDiscovery(); - - console.log ("Starting"); - ConnectSDK.discoveryManager.startDiscovery(); - console.log ("picking"); - ConnectSDK.discoveryManager.pickDevice() - .success(function (device) { - //device.disconnect(); - function sendVideo (mid,mon) { + + $scope.cast = function (mid, mon) { + + //console.log ("PASSED WITH " + JSON.stringify(mon)); + //ConnectSDK.discoveryManager.startDiscovery(); + + //console.log ("Stopping"); + ConnectSDK.discoveryManager.stopDiscovery(); + + //console.log ("Starting"); + ConnectSDK.discoveryManager.startDiscovery(); + //console.log ("picking"); + ConnectSDK.discoveryManager.pickDevice() + .success(function (device) { + //device.disconnect(); + function sendVideo(mid, mon) { //device.getMediaPlayer().playMedia("http://media.w3.org/2010/05/sintel/trailer.mp4", "video/mp4"); - - // var url = "http://www.connectsdk.com/files/9613/9656/8539/test_image.jpg"; - - //var url = mon.Monitor.streamingURL+"/nph-zms?mode=jpeg&monitor="+mid+$rootScope.authSession+"&rand="+$rootScope.modalRand; - - var ld = ZMDataModel.getLogin(); - var url = mon.Monitor.streamingURL+"/nph-zms?mode=jpeg&monitor="+mid+"&user="+ld.username+"&pass="+ld.password+"&rand="+$rootScope.modalRand; - - console.log ("URL: " + url); - var iconUrl = "http://www.connectsdk.com/files/9613/9656/8539/test_image.jpg"; - var mimeType = "image/jpeg"; - - device.getMediaPlayer().displayImage(url, mimeType, { - title: "Monitor: "+mid, - description: "Monitor feed", - }).success(function (launchSession, mediaControl) { - console.log("Image launch successful"); - }).error(function (err) { - console.log("error: " + err.message); - }); + + // var url = "http://www.connectsdk.com/files/9613/9656/8539/test_image.jpg"; + + //var url = mon.Monitor.streamingURL+"/nph-zms?mode=jpeg&monitor="+mid+$rootScope.authSession+"&rand="+$rootScope.modalRand; + + var ld = ZMDataModel.getLogin(); + var url = mon.Monitor.streamingURL + "/nph-zms?mode=jpeg&monitor=" + mid + "&user=" + ld.username + "&pass=" + ld.password + "&rand=" + $rootScope.modalRand; + + //console.log ("URL: " + url); + var iconUrl = "http://www.connectsdk.com/files/9613/9656/8539/test_image.jpg"; + var mimeType = "image/jpeg"; + + device.getMediaPlayer().displayImage(url, mimeType, { + title: "Monitor: " + mid, + description: "Monitor feed", + }).success(function (launchSession, mediaControl) { + //console.log("Image launch successful"); + }).error(function (err) { + //console.log("error: " + err.message); + }); } if (device.isReady()) { // already connected - console.log (">>> device ready sending video"); - sendVideo(mid,mon); + // console.log (">>> device ready sending video"); + sendVideo(mid, mon); } else { - device.on("ready", function() {sendVideo(mid,mon);}); - console.log (">>> device not ready connecting"); + device.on("ready", function () { + sendVideo(mid, mon); + }); + //console.log (">>> device not ready connecting"); device.connect(); } - }) - .error ( + }) + .error( function (error) { - console.log ("ERROR"); - }); + // console.log ("ERROR"); + }); }; - + //------------------------------------------------------------- // PTZ enable/disable //------------------------------------------------------------- - - - $scope.togglePTZ = function () { + + + $scope.togglePTZ = function () { //console.log("PTZ"); if ($scope.isControllable == '1') { //console.log ("iscontrollable is true"); $scope.showPTZ = !$scope.showPTZ; - - + + } else { $ionicLoading.show({ template: $translate.instant('kPTZnotConfigured'), @@ -271,9 +272,9 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ } }; - - + + //------------------------------------------------------------- // Pause and resume handlers //------------------------------------------------------------- @@ -295,11 +296,11 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ $interval.cancel(intervalModalHandle); var ld = ZMDataModel.getLogin(); - - intervalModalHandle = $interval(function () { - loadModalNotifications(); - }.bind(this),5000); - + + intervalModalHandle = $interval(function () { + loadModalNotifications(); + }.bind(this), 5000); + $rootScope.modalRand = Math.floor((Math.random() * 100000) + 1); } @@ -311,14 +312,13 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ // Queries the 1.30 API for recording state of current monitor //------------------------------------------------------------- function loadModalNotifications() { - - if (ZMDataModel.versionCompare($rootScope.apiVersion,"1.30")==-1) - { - + + if (ZMDataModel.versionCompare($rootScope.apiVersion, "1.30") == -1) { + return; } - var status = [$translate.instant('kMonIdle'), + var status = [$translate.instant('kMonIdle'), $translate.instant('kMonPreAlarm'), $translate.instant('kMonAlarmed'), $translate.instant('kMonAlert'), @@ -326,41 +326,38 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ ]; //console.log ("Inside Modal timer..."); var apiurl = ZMDataModel.getLogin().apiurl; - var alarmurl = apiurl+"/monitors/alarm/id:"+$scope.monitorId+"/command:status.json"; - ZMDataModel.zmLog ("Invoking " + alarmurl); - - + var alarmurl = apiurl + "/monitors/alarm/id:" + $scope.monitorId + "/command:status.json"; + ZMDataModel.zmLog("Invoking " + alarmurl); + + $http.get(alarmurl) - .then (function (data) { - // ZMDataModel.zmDebug ("Success in monitor alarmed status " + JSON.stringify(data)); - - $scope.monStatus = status[parseInt(data.data.status)]; - - }, + .then(function (data) { + // ZMDataModel.zmDebug ("Success in monitor alarmed status " + JSON.stringify(data)); + + $scope.monStatus = status[parseInt(data.data.status)]; + + }, function (error) { - - - $scope.monStatus = ""; - ZMDataModel.zmDebug ("Error in monitor alarmed status "); - }); - + + + $scope.monStatus = ""; + ZMDataModel.zmDebug("Error in monitor alarmed status "); + }); + } - + //------------------------------------------------------------- // Enable/Disable preset list //------------------------------------------------------------- $scope.togglePresets = function () { $scope.presetOn = !$scope.presetOn; - - if ($scope.presetOn) - { + + if ($scope.presetOn) { $scope.controlToggle = "hide buttons"; - } - else - { + } else { $scope.controlToggle = "show buttons"; } //console.log("Changing preset to " + $scope.presetOn); @@ -392,12 +389,12 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ // ZMDataModel.isBackground()); return ZMDataModel.isBackground(); }; - - - - - - + + + + + + //------------------------------------------------------------- // Send PTZ command to ZM // Note: PTZ fails on desktop, don't bother about it @@ -452,7 +449,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ //console.log("PTZDATA is " + JSON.stringify(ptzData)); $ionicLoading.hide(); $ionicLoading.show({ - template: $translate.instant('kPleaseWait')+"...", + template: $translate.instant('kPleaseWait') + "...", noBackdrop: true, duration: zm.loadingTimeout, }); @@ -460,7 +457,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ var loginData = ZMDataModel.getLogin(); $ionicLoading.hide(); $ionicLoading.show({ - template: $translate.instant('kSendingPTZ')+"...", + template: $translate.instant('kSendingPTZ') + "...", noBackdrop: true, duration: zm.loadingTimeout, }); @@ -483,14 +480,14 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ //console.log("****RETURNING " + foo); return foo; }, - + data: ptzData }); req.success(function (resp) { $ionicLoading.hide(); - + }); req.error(function (resp) { @@ -500,9 +497,9 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ }); } - - + + $scope.getZoomLevel = function () { //console.log("ON RELEASE"); var zl = $ionicScrollDelegate.$getByHandle("imgscroll").getScrollPosition(); @@ -514,7 +511,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ moveToMonitor(m, d); }; - + $scope.onSwipe = function (m, d) { var ld = ZMDataModel.getLogin(); if (!ld.canSwipeMonitors) return; @@ -630,7 +627,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ $ionicLoading.hide(); - + } @@ -664,111 +661,104 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ //------------------------------------------------------------- // Turns on or off an alarm forcibly (mode true = on, false = off) //------------------------------------------------------------- - $scope.enableAlarm = function(mid,mode) - { - + $scope.enableAlarm = function (mid, mode) { + if (mode) // trigger alarm { - $rootScope.zmPopup = SecuredPopups.show('show',{ - title: 'Confirm', - template: $translate.instant('kForceAlarmConfirm')+$scope.monitorName+"?", - buttons: [ - { - text: $translate.instant('kButtonYes'), - onTap: function(e) - { - enableAlarm(mid, mode); - } + $rootScope.zmPopup = SecuredPopups.show('show', { + title: 'Confirm', + template: $translate.instant('kForceAlarmConfirm') + $scope.monitorName + "?", + buttons: [ + { + text: $translate.instant('kButtonYes'), + onTap: function (e) { + enableAlarm(mid, mode); + } }, - { - text: $translate.instant('kButtonNo'), - onTap: function (e) - { - return; - } + { + text: $translate.instant('kButtonNo'), + onTap: function (e) { + return; + } } ] - - }); - } - else - enableAlarm(mid,mode); - - function enableAlarm(mid,mode) - { + + }); + } else + enableAlarm(mid, mode); + + function enableAlarm(mid, mode) { var apiurl = ZMDataModel.getLogin().apiurl; - var c = mode? "on":"off"; - var alarmurl = apiurl+"/monitors/alarm/id:"+mid+"/command:"+c+".json"; - ZMDataModel.zmLog ("Invoking " + alarmurl); - - var status = mode? $translate.instant('kForcingAlarm'): $translate.instant('kCancellingAlarm'); + var c = mode ? "on" : "off"; + var alarmurl = apiurl + "/monitors/alarm/id:" + mid + "/command:" + c + ".json"; + ZMDataModel.zmLog("Invoking " + alarmurl); + + var status = mode ? $translate.instant('kForcingAlarm') : $translate.instant('kCancellingAlarm'); $ionicLoading.show({ - template: status, - noBackdrop: true, - duration: zm.largeHttpTimeout, - }); - + template: status, + noBackdrop: true, + duration: zm.largeHttpTimeout, + }); + $http.get(alarmurl) - .then (function (data) { - $ionicLoading.show({ + .then(function (data) { + $ionicLoading.show({ template: $translate.instant('kSuccess'), noBackdrop: true, duration: 2000, }); - }, - function (error) { - - $ionicLoading.show({ + }, + function (error) { + + $ionicLoading.show({ template: $translate.instant('kAlarmAPIError'), noBackdrop: true, duration: 3000, }); - ZMDataModel.zmDebug ("Error in enableAlarm " + JSON.stringify(error)); - }); + ZMDataModel.zmDebug("Error in enableAlarm " + JSON.stringify(error)); + }); } - - - + + + }; - - + + //----------------------------------------------------------------------- // color for monitor state //----------------------------------------------------------------------- - - $scope.stateColor = function() - { - var status = [$translate.instant('kMonIdle'), + + $scope.stateColor = function () { + var status = [$translate.instant('kMonIdle'), $translate.instant('kMonPreAlarm'), $translate.instant('kMonAlarmed'), $translate.instant('kMonAlert'), $translate.instant('kMonRecord') ]; //console.log ("***MONSTATUS**"+$scope.monStatus+"**"); - var color=""; - switch ($scope.monStatus) - { + var color = ""; + switch ($scope.monStatus) { case "": - color="background-color:none"; + color = "background-color:none"; break; case status[0]: - color="background-color:#4B77BE"; + color = "background-color:#4B77BE"; break; case status[1]: - color="background-color:#e67e22"; + color = "background-color:#e67e22"; break; - case status[2]: - color="background-color:#D91E18"; + case status[2]: + color = "background-color:#D91E18"; break; case status[3]: - color="background-color:#e67e22"; + color = "background-color:#e67e22"; break; case status[4]: - color="background-color:#26A65B"; + color = "background-color:#26A65B"; break; } - - return "padding-left:4px;padding-right:4px;"+color; + + return "padding-left:4px;padding-right:4px;" + color; }; @@ -778,7 +768,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ $scope.saveImageToPhone = function (mid) { $ionicLoading.show({ - template: $translate.instant('kSavingSnapshot')+'...', + template: $translate.instant('kSavingSnapshot') + '...', noBackdrop: true, duration: zm.httpTimeout }); @@ -824,7 +814,7 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ canvas.toBlob(function (blob) { saveAs(blob, fname); SaveSuccess(); - + }); } }; @@ -854,42 +844,41 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ $scope.scaleImage = function () { $scope.imageFit = !$scope.imageFit; - // console.log("Switching image style to " + $scope.imageFit); + // console.log("Switching image style to " + $scope.imageFit); }; $scope.$on('$ionicView.enter', function () { - - - + + + }); $scope.$on('$ionicView.leave', function () { - // console.log("**MODAL: Stopping modal timer"); + // console.log("**MODAL: Stopping modal timer"); $scope.isModalActive = false; $interval.cancel(intervalModalHandle); }); - - + + $scope.$on('$ionicView.beforeLeave', function () { - - ZMDataModel.zmLog ("Nullifying the streams..."); - - + + ZMDataModel.zmLog("Nullifying the streams..."); + + var element = document.getElementById("singlemonitor"); - if (element) - { + if (element) { ZMDataModel.zmDebug("Nullifying " + element.src); - element.src=""; + element.src = ""; } - - - + + + }); $scope.$on('$ionicView.unloaded', function () { $scope.isModalActive = false; - + $interval.cancel(intervalModalHandle); }); @@ -898,11 +887,11 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ $scope.isModalActive = false; //console.log("**MODAL REMOVED: Stopping modal timer"); $interval.cancel(intervalModalHandle); - - ZMDataModel.zmDebug ("Modal removed - killing connkey"); - controlStream(17,"",$scope.connKey,-1); - - + + ZMDataModel.zmDebug("Modal removed - killing connkey"); + controlStream(17, "", $scope.connKey, -1); + + // Execute action }); @@ -913,128 +902,123 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ // anyway //------------------------------------------------------------- - + function controlStream(cmd, disp, connkey, ndx) { - // console.log("Command value " + cmd); + // console.log("Command value " + cmd); - if (disp) { - $ionicLoading.hide(); - $ionicLoading.show({ - template: $translate.instant('kPleaseWait')+'...', - noBackdrop: true, - duration: zm.loadingTimeout, - }); - } - var loginData = ZMDataModel.getLogin(); - - /* - var CMD_NONE = 0; - var CMD_PAUSE = 1; - var CMD_PLAY = 2; - var CMD_STOP = 3; - var CMD_FASTFWD = 4; - var CMD_SLOWFWD = 5; - var CMD_SLOWREV = 6; - var CMD_FASTREV = 7; - var CMD_ZOOMIN = 8; - var CMD_ZOOMOUT = 9; - var CMD_PAN = 10; - var CMD_SCALE = 11; - var CMD_PREV = 12; - var CMD_NEXT = 13; - var CMD_SEEK = 14; - var CMD_QUIT = 17; - var CMD_QUERY = 99; - */ - - var myauthtoken = $rootScope.authSession.replace("&auth=",""); + if (disp) { + $ionicLoading.hide(); + $ionicLoading.show({ + template: $translate.instant('kPleaseWait') + '...', + noBackdrop: true, + duration: zm.loadingTimeout, + }); + } + var loginData = ZMDataModel.getLogin(); + + /* + var CMD_NONE = 0; + var CMD_PAUSE = 1; + var CMD_PLAY = 2; + var CMD_STOP = 3; + var CMD_FASTFWD = 4; + var CMD_SLOWFWD = 5; + var CMD_SLOWREV = 6; + var CMD_FASTREV = 7; + var CMD_ZOOMIN = 8; + var CMD_ZOOMOUT = 9; + var CMD_PAN = 10; + var CMD_SCALE = 11; + var CMD_PREV = 12; + var CMD_NEXT = 13; + var CMD_SEEK = 14; + var CMD_QUIT = 17; + var CMD_QUERY = 99; + */ + + var myauthtoken = $rootScope.authSession.replace("&auth=", ""); //&auth= - var req = $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("****RETURNING " + foo); - return foo; - }, + var req = $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("****RETURNING " + foo); + return foo; + }, - data: { - view: "request", - request: "stream", - connkey: connkey, - command: cmd, - auth: myauthtoken, - - } - }); - req.success(function (resp) { + data: { + view: "request", + request: "stream", + connkey: connkey, + command: cmd, + auth: myauthtoken, + + } + }); + req.success(function (resp) { + + if (resp.result == "Ok" && ndx != -1) { + var ld = ZMDataModel.getLogin(); + var apiurl = ld.apiurl + "/events/" + resp.status.event + ".json"; + //console.log ("API " + apiurl); + $http.get(apiurl) + .success(function (data) { + if ($scope.MontageMonitors[ndx].eventUrlTime != data.event.Event.StartTime) { + + var element = angular.element(document.getElementById($scope.MontageMonitors[ndx].Monitor.Id + "-timeline")); + element.removeClass('animated slideInRight'); + element.addClass('animated slideOutRight'); + $timeout(function () { + element.removeClass('animated slideOutRight'); + element.addClass('animated slideInRight'); + $scope.MontageMonitors[ndx].eventUrlTime = data.event.Event.StartTime; + }, 300); - if (resp.result=="Ok" && ndx != -1) - { - var ld = ZMDataModel.getLogin(); - var apiurl= ld.apiurl + "/events/"+resp.status.event+".json"; - //console.log ("API " + apiurl); - $http.get (apiurl) - .success (function (data) - { - if ($scope.MontageMonitors[ndx].eventUrlTime!=data.event.Event.StartTime) - { - - var element = angular.element(document.getElementById($scope.MontageMonitors[ndx].Monitor.Id+"-timeline")); - element.removeClass ('animated slideInRight'); - element.addClass('animated slideOutRight'); - $timeout (function() { - element.removeClass ('animated slideOutRight'); - element.addClass('animated slideInRight'); - $scope.MontageMonitors[ndx].eventUrlTime=data.event.Event.StartTime; - },300); - } - + }) - .error (function (data) - { - $scope.MontageMonitors[ndx].eventUrlTime="-"; + .error(function (data) { + $scope.MontageMonitors[ndx].eventUrlTime = "-"; }); - - } - }); + } - req.error(function (resp) { - //console.log("ERROR: " + JSON.stringify(resp)); - ZMDataModel.zmLog("Error sending event command " + JSON.stringify(resp), "error"); - }); - } + }); + + req.error(function (resp) { + //console.log("ERROR: " + JSON.stringify(resp)); + ZMDataModel.zmLog("Error sending event command " + JSON.stringify(resp), "error"); + }); + } //------------------------------------------------------------- // Zoom in and out via +- for desktops //------------------------------------------------------------- - $scope.zoomImage = function (val) - { + $scope.zoomImage = function (val) { var zl = parseInt($ionicScrollDelegate.$getByHandle("imgscroll").getScrollPosition().zoom); - if (zl == 1 && val == -1) - { - ZMDataModel.zmDebug ("Already zoomed out max"); + if (zl == 1 && val == -1) { + ZMDataModel.zmDebug("Already zoomed out max"); return; } - - - zl+=val; - ZMDataModel.zmDebug ("Zoom level is " + zl); $ionicScrollDelegate.$getByHandle("imgscroll").zoomTo(zl,true); - + + + zl += val; + ZMDataModel.zmDebug("Zoom level is " + zl); + $ionicScrollDelegate.$getByHandle("imgscroll").zoomTo(zl, true); + }; - + //------------------------------------------------------------- // Retrieves PTZ state for each monitor @@ -1043,206 +1027,210 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$ // $scope.isControllable // $scope.controlid // - function configurePTZ(mid) - { + function configurePTZ(mid) { $scope.presetAndControl = $translate.instant('kMore'); - $scope.ptzWakeCommand = ""; + $scope.ptzWakeCommand = ""; $scope.ptzSleepCommand = ""; $scope.ptzResetCommand = ""; $scope.ptzMoveCommand = ""; $scope.ptzStopCommand = ""; - + $scope.zoomInCommand = ""; $scope.zoomOutCommand = ""; $scope.zoomStopCommand = "zoomStop"; $scope.canZoom = false; - + $scope.presetOn = true; $scope.controlToggle = "hide buttons"; - - ZMDataModel.zmDebug ("configurePTZ: called with mid="+mid); + + ZMDataModel.zmDebug("configurePTZ: called with mid=" + mid); var ld = ZMDataModel.getLogin(); - var url = ld.apiurl+"/monitors/"+mid+".json"; - $http.get (url) - .success (function (data) - { - $scope.isControllable = data.monitor.Monitor.Controllable; - - // *** Only for testing - comment out // - //$scope.isControllable = '1'; - // for testing only - // $scope.isControllable = 1; - $scope.controlid = data.monitor.Monitor.ControlId; - if ($scope.isControllable=='1' ) - { - - - var apiurl = ZMDataModel.getLogin().apiurl; - var myurl = apiurl + "/controls/" + $scope.controlid + ".json"; - ZMDataModel.zmDebug("configurePTZ : getting controllable data " + myurl); + var url = ld.apiurl + "/monitors/" + mid + ".json"; + $http.get(url) + .success(function (data) { + $scope.isControllable = data.monitor.Monitor.Controllable; + + // *** Only for testing - comment out // + //$scope.isControllable = '1'; + // for testing only + // $scope.isControllable = 1; + $scope.controlid = data.monitor.Monitor.ControlId; + if ($scope.isControllable == '1') { + + + var apiurl = ZMDataModel.getLogin().apiurl; + var myurl = apiurl + "/controls/" + $scope.controlid + ".json"; + ZMDataModel.zmDebug("configurePTZ : getting controllable data " + myurl); + + $http.get(myurl) + .success(function (data) { + + // *** Only for testing - comment out - start// + /*data.Control.Control.CanSleep = '1'; + data.Control.Control.CanWake = '1'; + data.Control.Control.CanReset = '1'; + data.Control.Control.CanZoom = '1'; + data.control.Control.HasPresets = '1'; + data.control.Control.HasHomePreset = '1';*/ + // *** Only for testing - comment out - end // + + + + $scope.ptzMoveCommand = "move"; // start with as move; + $scope.ptzStopCommand = ""; + + if (data.control.Control.CanZoom == '1') { + $scope.canZoom = true; + if (data.control.Control.CanZoomCon == '1') { + $scope.zoomInCommand = "zoomConTele"; + $scope.zoomOutCommand = "zoomConWide"; + + } else if (data.control.Control.CanZoomRel == '1') { + $scope.zoomInCommand = "zoomRelTele"; + $scope.zoomOutCommand = "zoomRelWide"; + } else if (data.control.Control.CanZoomAbs == '1') { + $scope.zoomInCommand = "zoomRelAbs"; + $scope.zoomOutCommand = "zoomRelAbs"; + } + } - $http.get(myurl) - .success(function (data) { - - // *** Only for testing - comment out - start// - /*data.Control.Control.CanSleep = '1'; - data.Control.Control.CanWake = '1'; - data.Control.Control.CanReset = '1'; - data.Control.Control.CanZoom = '1'; - data.control.Control.HasPresets = '1'; - data.control.Control.HasHomePreset = '1';*/ - // *** Only for testing - comment out - end // - - - - $scope.ptzMoveCommand = "move"; // start with as move; - $scope.ptzStopCommand = ""; - - if (data.control.Control.CanZoom=='1') - { - $scope.canZoom = true; - if (data.control.Control.CanZoomCon == '1') - { - $scope.zoomInCommand = "zoomConTele"; - $scope.zoomOutCommand = "zoomConWide"; - - } - else if (data.control.Control.CanZoomRel == '1') - { - $scope.zoomInCommand = "zoomRelTele"; - $scope.zoomOutCommand = "zoomRelWide"; - } - - else if (data.control.Control.CanZoomAbs == '1') - { - $scope.zoomInCommand = "zoomRelAbs"; - $scope.zoomOutCommand = "zoomRelAbs"; - } - } - - ZMDataModel.zmDebug("configurePTZ: control data returned " + JSON.stringify(data)); - - if (data.control.Control.CanMoveRel == '1') - { - - $scope.ptzMoveCommand = "moveRel"; - $scope.ptzStopCommand = "moveStop"; - } - - // Prefer con over rel if both enabled - // I've tested con - - if (data.control.Control.CanMoveCon == '1') - { - - $scope.ptzMoveCommand = "moveCon"; - $scope.ptzStopCommand = "moveStop"; - } - - - - // presets - ZMDataModel.zmDebug ("ConfigurePTZ Preset value is " +data.control.Control.HasPresets); - $scope.ptzPresets = []; - - if (data.control.Control.HasPresets == '1') - { - //$scope.presetAndControl = $translate.instant('kPresets'); - - $scope.ptzPresetCount = parseInt(data.control.Control.NumPresets); - - ZMDataModel.zmDebug ("ConfigurePTZ Number of presets is " + $scope.ptzPresetCount); - - - for (var p=0; p<$scope.ptzPresetCount; p++) - { - $scope.ptzPresets.push ({name:(p+1).toString(), icon:'', cmd:"presetGoto"+(p+1).toString(), style:'button-royal'}); - - } - - if (data.control.Control.HasHomePreset == '1') - { - $scope.ptzPresets.unshift({name:'', icon:"ion-ios-home", cmd:'presetHome' , style:'button-royal'}); - - } - - - - } - /*else - { - $scope.presetAndControl = $translate.instant('kMore'); - }*/ - // lets add these to the end - // strictly speaking, they aren't really presets, but meh for now - - // no need to darken these buttons if presets are not there - var buttonAccent = "button-dark"; - if ($scope.ptzPresets.length == 0) - { - buttonAccent = ""; - } - - if (data.control.Control.CanWake == '1') - { + ZMDataModel.zmDebug("configurePTZ: control data returned " + JSON.stringify(data)); - $scope.ptzPresets.push({name:'W', icon:"ion-eye", cmd:'wake', style:'button-royal '+buttonAccent}); + if (data.control.Control.CanMoveRel == '1') { - } + $scope.ptzMoveCommand = "moveRel"; + $scope.ptzStopCommand = "moveStop"; + } + + // Prefer con over rel if both enabled + // I've tested con + + if (data.control.Control.CanMoveCon == '1') { + + $scope.ptzMoveCommand = "moveCon"; + $scope.ptzStopCommand = "moveStop"; + } + + + + // presets + ZMDataModel.zmDebug("ConfigurePTZ Preset value is " + data.control.Control.HasPresets); + $scope.ptzPresets = []; + + if (data.control.Control.HasPresets == '1') { + //$scope.presetAndControl = $translate.instant('kPresets'); + + $scope.ptzPresetCount = parseInt(data.control.Control.NumPresets); + + ZMDataModel.zmDebug("ConfigurePTZ Number of presets is " + $scope.ptzPresetCount); + + + for (var p = 0; p < $scope.ptzPresetCount; p++) { + $scope.ptzPresets.push({ + name: (p + 1).toString(), + icon: '', + cmd: "presetGoto" + (p + 1).toString(), + style: 'button-royal' + }); + + } + + if (data.control.Control.HasHomePreset == '1') { + $scope.ptzPresets.unshift({ + name: '', + icon: "ion-ios-home", + cmd: 'presetHome', + style: 'button-royal' + }); + + } + + + + } + /*else + { + $scope.presetAndControl = $translate.instant('kMore'); + }*/ + // lets add these to the end + // strictly speaking, they aren't really presets, but meh for now + + // no need to darken these buttons if presets are not there + var buttonAccent = "button-dark"; + if ($scope.ptzPresets.length == 0) { + buttonAccent = ""; + } + + if (data.control.Control.CanWake == '1') { + + $scope.ptzPresets.push({ + name: 'W', + icon: "ion-eye", + cmd: 'wake', + style: 'button-royal ' + buttonAccent + }); + + } + + if (data.control.Control.CanSleep == '1') { + $scope.ptzPresets.push({ + name: 'S', + icon: "ion-eye-disabled", + cmd: 'sleep', + style: 'button-royal ' + buttonAccent + }); + + } + + if (data.control.Control.CanReset == '1') { + $scope.ptzPresets.push({ + name: 'R', + icon: "ion-ios-loop-strong", + cmd: 'reset', + style: 'button-royal ' + buttonAccent + }); + + } + + + ZMDataModel.zmLog("ConfigurePTZ Modal: ControlDB reports PTZ command to be " + $scope.ptzMoveCommand); + }) + .error(function (data) { + // console.log("** Error retrieving move PTZ command"); + ZMDataModel.zmLog("ConfigurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error"); + }); + + } else { + ZMDataModel.zmLog("configurePTZ " + mid + " is not PTZ controllable"); + } + }) + .error(function (data) { + // console.log("** Error retrieving move PTZ command"); + ZMDataModel.zmLog("configurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error"); + }); - if (data.control.Control.CanSleep == '1') - { - $scope.ptzPresets.push({name:'S', icon:"ion-eye-disabled", cmd:'sleep', style:'button-royal '+buttonAccent}); - } - if (data.control.Control.CanReset == '1') - { - $scope.ptzPresets.push({name:'R', icon:"ion-ios-loop-strong", cmd:'reset', style:'button-royal '+buttonAccent}); - - } - - - ZMDataModel.zmLog("ConfigurePTZ Modal: ControlDB reports PTZ command to be " + $scope.ptzMoveCommand); - }) - .error(function (data) { - // console.log("** Error retrieving move PTZ command"); - ZMDataModel.zmLog("ConfigurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error"); - }); - - } - else - { - ZMDataModel.zmLog ("configurePTZ " + mid+" is not PTZ controllable"); - } - }) - .error(function (data) { - // console.log("** Error retrieving move PTZ command"); - ZMDataModel.zmLog("configurePTZ : Error retrieving PTZ command " + JSON.stringify(data), "error"); - }); - - - } - - + + $scope.$on('modal.shown', function () { - + $scope.monStatus = ""; document.addEventListener("pause", onPause, false); document.addEventListener("resume", onResume, false); - + var ld = ZMDataModel.getLogin(); //currentEvent = $scope.currentEvent; - $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString(); - console.log ("************* GENERATED CONNKEY " + $scope.connKey); + $scope.connKey = (Math.floor((Math.random() * 999999) + 1)).toString(); + //console.log ("************* GENERATED CONNKEY " + $scope.connKey); $scope.currentFrame = 1; $scope.monStatus = ""; - + configurePTZ($scope.monitorId); }); -}]); +}]);
\ No newline at end of file |
