summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
Diffstat (limited to 'www')
-rw-r--r--www/js/DataModel.js21
-rw-r--r--www/js/EventCtrl.js2
-rw-r--r--www/js/ModalCtrl.js140
-rw-r--r--www/js/MonitorCtrl.js9
-rw-r--r--www/js/MontageCtrl.js12
-rw-r--r--www/js/MontageHistoryCtrl.js53
-rw-r--r--www/js/app.js1
-rw-r--r--www/templates/monitors-modal.html5
-rw-r--r--www/templates/monitors.html2
-rw-r--r--www/templates/montage-history.html4
-rw-r--r--www/templates/montage.html4
11 files changed, 221 insertions, 32 deletions
diff --git a/www/js/DataModel.js b/www/js/DataModel.js
index 88a0ac38..28228e1c 100644
--- a/www/js/DataModel.js
+++ b/www/js/DataModel.js
@@ -64,6 +64,7 @@ angular.module('zmApp.controllers')
'useNphZms':true,
'packMontage':true,
'exitOnSleep':false,
+ 'forceNetworkStop':false
};
@@ -243,6 +244,13 @@ angular.module('zmApp.controllers')
loginData.packMontage = true;
}
+ if (typeof loginData.forceNetworkStop == 'undefined')
+ {
+ zmDebug ("forceNetwork does not exist. Setting to false");
+ loginData.forceNetworkStop = false;
+ }
+
+
if (typeof loginData.exitOnSleep == 'undefined')
{
@@ -263,6 +271,11 @@ angular.module('zmApp.controllers')
zmDebug ( "loginData structure values: " + JSON.stringify(loginData));
},
+
+ isForceNetworkStop: function()
+ {
+ return loginData.forceNetworkStop;
+ },
isLoggedIn: function () {
@@ -491,7 +504,7 @@ angular.module('zmApp.controllers')
// need a mid as restricted users won't be able to get
// auth with just &watch
- getAuthKey: function (mid)
+ getAuthKey: function (mid, ck)
{
var d=$q.defer();
@@ -504,7 +517,7 @@ angular.module('zmApp.controllers')
// Skipping monitor number as I only need an auth key
// so no need to generate an image
- var myurl =loginData.url+"/index.php?view=watch&mid="+mid;
+ var myurl =loginData.url+"/index.php?view=watch&mid="+mid+"&connkey="+ck;
zmDebug ("DataModel: Getting auth from " + myurl + " with mid="+mid);
$http.get (myurl)
.then (function (success) {
@@ -776,6 +789,10 @@ angular.module('zmApp.controllers')
{
monitors[i].Monitor.listDisplay='show';
monitors[i].Monitor.isAlarmed = 'false';
+ monitors[i].Monitor.connKey = monitors[i].Monitor.Id.toString() + Math.floor((Math.random() * 100000) + 1);
+ zmLog("ConnKey for "+monitors[i].Monitor.Id+" is :"+monitors[i].Monitor.connKey);
+
+
// monitors[i].Monitor.sortOrder=i;
}
d.resolve(monitors);
diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js
index 47aa629c..f4ca7da8 100644
--- a/www/js/EventCtrl.js
+++ b/www/js/EventCtrl.js
@@ -1033,6 +1033,8 @@ angular.module('zmApp.controllers')
//--------------------------------------------------------
function controlEventStream(cmd, disp) {
+
+ ZMDataModel.zmDebug ("OH CRAP!! THE WORLD HAS COME TO AN END****************");
// console.log("Command value " + cmd);
if (disp) {
diff --git a/www/js/ModalCtrl.js b/www/js/ModalCtrl.js
index 0dbda85c..90804473 100644
--- a/www/js/ModalCtrl.js
+++ b/www/js/ModalCtrl.js
@@ -70,7 +70,7 @@ angular.module('zmApp.controllers').controller('ModalCtrl', ['$scope', '$rootSco
$rootScope.validMonitorId = $scope.monitors[0].Monitor.Id;
- ZMDataModel.getAuthKey($rootScope.validMonitorId)
+ ZMDataModel.getAuthKey($rootScope.validMonitorId, $scope.monitors[0].Monitor.connKey)
.then(function (success) {
$ionicLoading.hide();
$rootScope.authSession = success;
@@ -309,7 +309,142 @@ angular.module('zmApp.controllers').controller('ModalCtrl', ['$scope', '$rootSco
// ZMDataModel.isBackground());
return ZMDataModel.isBackground();
};
+
+
+
+
+
+ $scope.controlStream = function (cmd,disp,connkey,ndx)
+ {
+ controlStream(cmd,disp,connkey,ndx);
+ };
+
+ function controlStream(cmd, disp, connkey, ndx) {
+ // console.log("Command value " + cmd);
+
+ if (disp) {
+ $ionicLoading.hide();
+ $ionicLoading.show({
+ template: "please wait...",
+ 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;
+ */
+
+
+
+ // You need to POST commands to control zms
+ // Note that I am url encoding the parameters into the URL
+ // If I leave it as JSON, it gets converted to OPTONS due
+ // to CORS behaviour and ZM/Apache don't seem to handle it
+
+ //console.log("POST: " + loginData.url + '/index.php');
+
+ //console.log ("AUTH IS " + $rootScope.authSession);
+
+ 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;
+ },
+
+ data: {
+ view: "request",
+ request: "stream",
+ connkey: connkey,
+ command: cmd,
+ auth: myauthtoken,
+ // user: loginData.username,
+ // pass: loginData.password
+ }
+ });
+ req.success(function (resp) {
+
+ console.log("SUCCESS FOR: " + JSON.stringify(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);
+
+ }
+
+ })
+ .error (function (data)
+ {
+ $scope.MontageMonitors[ndx].eventUrlTime="-";
+ });
+
+ }
+ //var str = toast_blurb + "event:" + resp.status.event;
+ // console.log(str);
+ // $ionicLoading.hide();
+
+
+
+
+ });
+ req.error(function (resp) {
+ //console.log("ERROR: " + JSON.stringify(resp));
+ ZMDataModel.zmLog("Error sending event command " + JSON.stringify(resp), "error");
+ });
+ }
+
+
+
+
+
//-------------------------------------------------------------
// Send PTZ command to ZM
// Note: PTZ fails on desktop, don't bother about it
@@ -874,6 +1009,9 @@ angular.module('zmApp.controllers').controller('ModalCtrl', ['$scope', '$rootSco
$scope.isModalActive = false;
console.log("**MODAL REMOVED: Stopping modal timer");
$interval.cancel(intervalModalHandle);
+ ZMDataModel.zmDebug ("Modal removed - killing connkey");
+ controlStream(17,"",$scope.connKey,-1);
+
// Execute action
});
diff --git a/www/js/MonitorCtrl.js b/www/js/MonitorCtrl.js
index 6d77b4fe..6b712507 100644
--- a/www/js/MonitorCtrl.js
+++ b/www/js/MonitorCtrl.js
@@ -20,6 +20,8 @@ angular.module('zmApp.controllers')
$scope.monitors = [];
$scope.monitors = message;
+
+
if ($scope.monitors.length == 0)
{
@@ -283,7 +285,7 @@ angular.module('zmApp.controllers')
console.log("**VIEW ** Monitor Ctrl Unloaded");
});
- $scope.openModal = function (mid, controllable, controlid) {
+ $scope.openModal = function (mid, controllable, controlid, connKey) {
ZMDataModel.zmDebug("MonitorCtrl:Open Monitor Modal with monitor Id=" + mid +
" and Controllable:" + controllable + " with control ID:" + controlid);
@@ -293,10 +295,13 @@ angular.module('zmApp.controllers')
$scope.LoginData = ZMDataModel.getLogin();
$scope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
$rootScope.rand = Math.floor(Math.random() * (999999 - 111111 + 1)) + 111111;
+ $scope.connKey = connKey;
$scope.ptzMoveCommand = "";
$scope.presetOn = false;
+
+
// This is a modal to show the monitor footage
// We need to switch to always awake if set so the feed doesn't get interrupted
@@ -400,7 +405,7 @@ angular.module('zmApp.controllers')
// switch off awake, as liveview is finished
ZMDataModel.setAwake(false);
$scope.modal.remove();
- $timeout (function() {ZMDataModel.zmLog("Stopping network pull...");window.stop();},50);
+ $timeout (function() {ZMDataModel.zmLog("Stopping network pull...");if (ZMDataModel.isForceNetworkStop()) window.stop();},50);
};
//Cleanup the modal when we're done with it!
$scope.$on('$destroy', function () {
diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js
index 2e64d3e5..9a564dd1 100644
--- a/www/js/MontageCtrl.js
+++ b/www/js/MontageCtrl.js
@@ -61,6 +61,9 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
// console.log ("TEMP MONITORS IS " + JSON.stringify(tempMonitors));
var tempResponse = ZMDataModel.applyMontageMonitorPrefs(message, 0);
$scope.monitors = tempResponse[0];
+
+
+
montageOrder = tempResponse[1];
hiddenOrder = tempResponse[2];
@@ -191,7 +194,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
//console.log ("MONITORS " + JSON.stringify($scope.monitors));
$rootScope.validMonitorId = $scope.monitors[0].Monitor.Id;
- ZMDataModel.getAuthKey($rootScope.validMonitorId)
+ ZMDataModel.getAuthKey($rootScope.validMonitorId, $scope.monitors[0].Monitor.connKey)
.then(function (success) {
$ionicLoading.hide();
console.log(success);
@@ -565,7 +568,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
//---------------------------------------------------------------------
// main monitor modal open
//---------------------------------------------------------------------
- $scope.openModal = function (mid, controllable, controlid) {
+ $scope.openModal = function (mid, controllable, controlid, connKey) {
ZMDataModel.zmDebug("MontageCtrl: Open Monitor Modal with monitor Id=" + mid + " and Controllable:" + controllable + " with control ID:" + controlid);
// $scope.isModalActive = true;
// Note: no need to setAwake(true) as its already awake
@@ -589,6 +592,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
$scope.ptzMoveCommand = "";
$scope.ptzStopCommand = "";
$scope.presetOn = false;
+ $scope.connKey = connKey;
// This is a modal to show the monitor footage
// We need to switch to always awake if set so the feed doesn't get interrupted
@@ -682,7 +686,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
$scope.modal.remove();
- $timeout (function() {ZMDataModel.zmLog("Stopping network pull...");window.stop();},50);
+ $timeout (function() {ZMDataModel.zmLog("Stopping network pull...");if (ZMDataModel.isForceNetworkStop()) window.stop();},50);
$rootScope.rand = Math.floor((Math.random() * 100000) + 1);
$scope.isModalActive = false;
@@ -853,7 +857,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageCtrl', ['$scope', '
// make sure this is applied in scope digest to stop network pull
// thats why we are doing it beforeLeave
- window.stop();
+ if (ZMDataModel.isForceNetworkStop()) window.stop();
});
diff --git a/www/js/MontageHistoryCtrl.js b/www/js/MontageHistoryCtrl.js
index 0afa5b6a..844031be 100644
--- a/www/js/MontageHistoryCtrl.js
+++ b/www/js/MontageHistoryCtrl.js
@@ -59,7 +59,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
var cmd = $scope.MontageMonitors[m].isPaused? 1:2;
ZMDataModel.zmDebug ("Sending CMD:"+cmd+" for monitor "+$scope.MontageMonitors[m].Monitor.Name);
- controlEventStream(cmd,"",$scope.MontageMonitors[m].connKey,-1);
+ controlEventStream(cmd,"",$scope.MontageMonitors[m].Monitor.connKey,-1);
}
};
@@ -79,6 +79,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
console.log ("******************COLLAPSE");
+ window.stop();
$scope.sliderVal.realRate = $scope.sliderVal.rate *100;
ZMDataModel.zmDebug ("Playback rate is:" + $scope.sliderVal.realRate);
@@ -90,13 +91,13 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
var TimeObjectTo = moment(TimeObjectFrom).add(1,'hour').format('YYYY-MM-DD HH:mm');
- if ($scope.datetimeValue.value == $scope.oldTime)
+ /*if ($scope.datetimeValue.value == $scope.oldTime)
{
ZMDataModel.zmLog ("********** Date HAS NOT CHANGED");
return;
- }
+ }*/
- window.stop();
+ if (ZMDataModel.isForceNetworkStop()) window.stop();
$scope.oldTime = $scope.datetimeValue.value;
@@ -105,10 +106,17 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
for (var i=0; i< $scope.MontageMonitors.length; i++)
{
- $scope.MontageMonitors[i].eventUrl = "img/noevent.png";
- $scope.MontageMonitors[i].eventUrlTime="";
- $scope.MontageMonitors[i].isPaused=false;
- $scope.MontageMonitors[i].connKey = $rootScope.rand = Math.floor((Math.random() * 100000) + 1);
+ // generate new connKeys if timeline changes
+ if ($scope.MontageMonitors[i].Monitor.connKey)
+ {
+ ZMDataModel.zmLog ("Calling kill with " + $scope.MontageMonitors[i].Monitor.connKey);
+ controlEventStream(17,"",$scope.MontageMonitors[i].Monitor.connKey,-1);
+ $scope.MontageMonitors[i].Monitor.connKey = $scope.MontageMonitors[i].Monitor.Id.toString() + Math.floor((Math.random() * 100000) + 1);
+ }
+ $scope.MontageMonitors[i].eventUrl = "img/noevent.png";
+ // $scope.MontageMonitors[i].eventUrlTime="";
+ // $scope.MontageMonitors[i].isPaused=false;
+
// $scope.MontageMonitors[i].connkey= i;
@@ -154,6 +162,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
if (!ZMDataModel.isBackground())
{
$scope.MontageMonitors[j].eventUrl=ld.streamingurl+"/nph-zms?source=event&mode=jpeg&event="+eid+"&frame=1&replay="+($scope.sliderVal.enableGapless?"gapless":"single");
+ console.log ("SWITCHING TO " + $scope.MontageMonitors[j].eventUrl);
$scope.MontageMonitors[j].eventUrlTime = stime;
@@ -213,6 +222,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
{
$scope.MontageMonitors[i].eventUrl=ld.streamingurl+"/nph-zms?source=event&mode=jpeg&event="+data.events[0].Event.Id+"&frame=1&replay="+($scope.sliderVal.enableGapless?"gapless":"single");
+ console.log ("SWITCHING TO " + $scope.MontageMonitors[i].eventUrl);
$scope.MontageMonitors[i].eventUrlTime = data.events[0].Event.StartTime;
@@ -253,7 +263,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
if ($scope.MontageMonitors[i].eventUrl !="" && $scope.MontageMonitors[i].eventUrl !='img/noevent.png')
{
console.log ("Checking event status for " + $scope.MontageMonitors[i].Monitor.Name);
- controlEventStream('99','',$scope.MontageMonitors[i].connKey, i);
+ controlEventStream('99','',$scope.MontageMonitors[i].Monitor.connKey, i);
}
}
@@ -373,13 +383,16 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
if ($scope.MontageMonitors[ndx].eventUrlTime!=data.event.Event.StartTime)
{
+ var ld = ZMDataModel.getLogin();
var element = angular.element(document.getElementById($scope.MontageMonitors[ndx].Monitor.Id+"-timeline"));
- element.removeClass ('animated slideInRight');
- element.addClass('animated slideOutRight');
+ element.removeClass ('animated flipInX');
+ element.addClass('animated flipOutX');
$timeout (function() {
- element.removeClass ('animated slideOutRight');
- element.addClass('animated slideInRight');
+ element.removeClass ('animated flipOutX');
+ element.addClass('animated flipInX');
$scope.MontageMonitors[ndx].eventUrlTime=data.event.Event.StartTime;
+
+ $scope.MontageMonitors[ndx].eventUrl=ld.streamingurl+"/nph-zms?source=event&mode=jpeg&event="+data.event.Event.Id+"&frame=1&replay="+($scope.sliderVal.enableGapless?"gapless":"single");
},300);
}
@@ -602,7 +615,9 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
for (i=0; i< $scope.MontageMonitors.length; i++)
{
$scope.MontageMonitors[i].eventUrl = "img/noevent.png";
-
+ $scope.MontageMonitors[i].eventUrlTime="";
+ $scope.MontageMonitors[i].isPaused=false;
+
}
@@ -1218,7 +1233,7 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
$scope.modal.remove();
- $timeout (function() {ZMDataModel.zmLog("Stopping network pull...");window.stop();},50);
+ $timeout (function() {ZMDataModel.zmLog("Stopping network pull...");if (ZMDataModel.isForceNetworkStop()) window.stop();},50);
$rootScope.rand = Math.floor((Math.random() * 100000) + 1);
$scope.isModalActive = false;
@@ -1395,7 +1410,13 @@ angular.module('zmApp.controllers').controller('zmApp.MontageHistoryCtrl', ['$sc
// make sure this is applied in scope digest to stop network pull
// thats why we are doing it beforeLeave
- window.stop();
+ for (var i=0; i<$scope.MontageMonitors.length; i++)
+ {
+ ZMDataModel.zmLog ("Calling kill with " + $scope.MontageMonitors[i].Monitor.connKey);
+ controlEventStream(17,"",$scope.MontageMonitors[i].Monitor.connKey,-1);
+ }
+
+ //window.stop();
/*
$timeout ( function()
{
diff --git a/www/js/app.js b/www/js/app.js
index 5f67ee44..071f2783 100644
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -68,6 +68,7 @@ angular.module('zmApp', [
latestRelease: "https://api.github.com/repos/pliablepixels/zmNinja/releases/latest",
nphSwitchTimer:6000,
eventHistoryTimer:10000,
+
})
diff --git a/www/templates/monitors-modal.html b/www/templates/monitors-modal.html
index 0aac4bd1..d993ca7b 100644
--- a/www/templates/monitors-modal.html
+++ b/www/templates/monitors-modal.html
@@ -15,9 +15,9 @@
<div ng-if="$root.authSession!='undefined'">
- <div ng-if="!animationInProgress && !isBackground()">
+ <div ng-if="!animationInProgress && !isBackground() && connKey">
- <img style="width:100vw; height:100vh" imageonload="finishedLoadingImage()" image-spinner-loader="lines" image-spinner-src="{{LoginData.streamingurl}}/nph-zms?mode={{currentStreamMode}}&monitor={{monitorId}}{{$root.authSession}}&rand={{$root.modalRand}}" ng-class="{'object-fit_cover':imageFit==false, 'object-fit_contain':imageFit==true}" on-swipe-left="onSwipe(monitorId,1)" on-swipe-right="onSwipe(monitorId,-1)" />
+ <img style="width:100vw; height:100vh" imageonload="finishedLoadingImage()" image-spinner-loader="lines" image-spinner-src="{{LoginData.streamingurl}}/nph-zms?mode={{currentStreamMode}}&monitor={{monitorId}}{{$root.authSession}}&rand={{$root.modalRand}}&connkey={{connKey}}" ng-class="{'object-fit_cover':imageFit==false, 'object-fit_contain':imageFit==true}" on-swipe-left="onSwipe(monitorId,1)" on-swipe-right="onSwipe(monitorId,-1)" />
</div>
<div ng-if="animationInProgress || isBackground()">
@@ -57,6 +57,7 @@
</div>
+ <button class="button" style="position:absolute;top:50%;left:50%;-index:999" ng-click="killThis()">KILL</button>
</ion-modal-view>
diff --git a/www/templates/monitors.html b/www/templates/monitors.html
index 43e9582d..e692a643 100644
--- a/www/templates/monitors.html
+++ b/www/templates/monitors.html
@@ -44,7 +44,7 @@
<a class="button button-small icon icon-left icon ion-gear-a"
href="" ng-click="changeConfig(monitor.Monitor.Name, monitor.Monitor.Id,monitor.Monitor.Enabled,monitor.Monitor.Function);">Configuration</a>
<a class="button button-small icon icon-left ion-calendar" href="#/events/{{monitor.Monitor.Id}}">Events</a>
- <a class="button button-small icon icon-left ion-ios-eye" ng-click="openModal(monitor.Monitor.Id, monitor.Monitor.Controllable, monitor.Monitor.ControlId)">Live View</a>
+ <a class="button button-small icon icon-left ion-ios-eye" ng-click="openModal(monitor.Monitor.Id, monitor.Monitor.Controllable, monitor.Monitor.ControlId, monitor.Monitor.connKey)">Live View</a>
</div>
</div>
</div>
diff --git a/www/templates/montage-history.html b/www/templates/montage-history.html
index 4c808894..e385dd24 100644
--- a/www/templates/montage-history.html
+++ b/www/templates/montage-history.html
@@ -58,9 +58,9 @@
</div>
</div>
- <div ng-if = "!minimal && monitor.eventUrl != 'img/noevent.png' && monitor.connKey">
+ <div ng-if = "!minimal && monitor.eventUrl != 'img/noevent.png' && monitor.Monitor.connKey">
- <img ng-if="!isBackground()" id="img-$index" image-spinner-src="{{monitor.eventUrl}}&scale={{LoginData.singleImageQuality}}{{$root.authSession}}&rand={{$root.rand}}&rate={{sliderVal.realRate}}&connkey={{monitor.connKey}}" image-spinner-loader="lines" style="
+ <img ng-if="!isBackground()" id="img-$index" image-spinner-src="{{monitor.eventUrl}}&scale={{LoginData.singleImageQuality}}{{$root.authSession}}&rand={{$root.rand}}&rate={{sliderVal.realRate}}&connkey={{monitor.Monitor.connKey}}" image-spinner-loader="lines" style="
width: 100% !important;
height: auto !important;" on-tap="togglePause(monitor.Monitor.Id)" />
diff --git a/www/templates/montage.html b/www/templates/montage.html
index bb0597cb..91108446 100644
--- a/www/templates/montage.html
+++ b/www/templates/montage.html
@@ -60,13 +60,13 @@
<div ng-if="!isModalActive">
<div ng-if="$root.authSession!='undefined' && !isBackground()">
<div ng-if = "!minimal">
- <img id="img-$index" image-spinner-src="{{LoginData.streamingurl}}/nph-zms?mode=single&monitor={{monitor.Monitor.Id}}&scale={{LoginData.montageQuality}}{{$root.authSession}}&rand={{$root.rand}}" ng-click="openModal(monitor.Monitor.Id, monitor.Monitor.Controllable, monitor.Monitor.ControlId)" image-spinner-loader="lines" style="
+ <img id="img-$index" image-spinner-src="{{LoginData.streamingurl}}/nph-zms?mode=single&monitor={{monitor.Monitor.Id}}&scale={{LoginData.montageQuality}}{{$root.authSession}}&rand={{$root.rand}}" ng-click="openModal(monitor.Monitor.Id, monitor.Monitor.Controllable, monitor.Monitor.ControlId, monitor.Monitor.connKey)" image-spinner-loader="lines" style="
width: 100% !important;
height: auto !important;" />
</div>
<div ng-if = "minimal">
- <img id="img-$index" image-spinner-src="{{LoginData.streamingurl}}/nph-zms?mode=single&monitor={{monitor.Monitor.Id}}&scale={{LoginData.montageQuality}}{{$root.authSession}}&rand={{$root.rand}}" ng-click="openModal(monitor.Monitor.Id, monitor.Monitor.Controllable, monitor.Monitor.ControlId)" image-spinner-loader="lines" style="margin-top:0px;
+ <img id="img-$index" image-spinner-src="{{LoginData.streamingurl}}/nph-zms?mode=single&monitor={{monitor.Monitor.Id}}&scale={{LoginData.montageQuality}}{{$root.authSession}}&rand={{$root.rand}}" ng-click="openModal(monitor.Monitor.Id, monitor.Monitor.Controllable, monitor.Monitor.ControlId, monitor.Monitor.connKey)" image-spinner-loader="lines" style="margin-top:0px;
width: 100% !important;
height: auto !important;" />
</div>