diff --git a/web/skins/classic/views/js/control.js b/web/skins/classic/views/js/control.js index 8a4d2d257..b288fb12b 100644 --- a/web/skins/classic/views/js/control.js +++ b/web/skins/classic/views/js/control.js @@ -1,7 +1,7 @@ var form = $j('#controlForm'); function controlReq(data) { - $j.getJSON(zmAuth.appendTo(thisUrl + '?view=request&request=control'), data) + $j.getJSON(zmAuth.appendTo(monitorUrl + '?view=request&request=control'), data) .done(getControlResponse) .fail(logAjaxFail); } @@ -16,39 +16,44 @@ function getControlResponse(respObj, respText) { } } -function controlCmd( control, event, xtell, ytell ) { - var mid = $j('#mid').getAttribute('value'); +// Bound by ptzControls() as data-on-mousedown/mouseup (or data-on-click): +// the button's value is the command, releasing a continuous move stops it. +function controlCmd(event) { + const button = event.currentTarget || event.target; + const control = (event.type == 'mouseup') ? 'moveStop' : button.getAttribute('value'); + const xtell = button.getAttribute('data-xtell'); + const ytell = button.getAttribute('data-ytell'); + const data = {}; - if ( event && (xtell || ytell) ) { - var data = {}; - var target = $j(event.target); - var offset = target.offset(); - var width = target.width(); - var height = target.height(); + if (xtell || ytell) { + const target = $j(button); + const offset = target.offset(); + const width = target.width(); + const height = target.height(); - var x = event.pageX - offset.left; - var y = event.pageY - offset.top; + const x = event.pageX - offset.left; + const y = event.pageY - offset.top; - if ( xtell ) { - var xge = parseInt( (x*100)/width ); - if ( xtell == -1 ) { + if (xtell) { + let xge = parseInt((x*100)/width); + if (xtell == -1) { xge = 100 - xge; - } else if ( xtell == 2 ) { + } else if (xtell == 2) { xge = 2*(50 - xge); } data.xge = xge; } - if ( ytell ) { - var yge = parseInt( (y*100)/height ); - if ( ytell == -1 ) { + if (ytell) { + let yge = parseInt((y*100)/height); + if (ytell == -1) { yge = 100 - yge; - } else if ( ytell == 2 ) { + } else if (ytell == 2) { yge = 2*(50 - yge); } data.yge = yge; } } - data.id = mid; + data.id = $j('#mid').val(); data.control = control; controlReq(data); } diff --git a/web/skins/classic/views/js/control.js.php b/web/skins/classic/views/js/control.js.php new file mode 100644 index 000000000..7ca01dfa8 --- /dev/null +++ b/web/skins/classic/views/js/control.js.php @@ -0,0 +1,6 @@ + +// PTZ requests go to the server that runs the monitor, as on the watch view: +// only that server's zmcontrol.pl can drive the camera. +var monitorUrl = 'UrlToIndex(ZM_MIN_STREAMING_PORT ? ($monitor->Id() + ZM_MIN_STREAMING_PORT) : '') ?>';