mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-04-05 22:57:40 +03:00
Address Copilot review: touch handling, null guards, and test accuracy
- Add touch-none class to drag overlay for reliable touch event capture - Guard status.Position access when GetStatus fails (status is None) - Make RelativeZoomTranslationSpace lookup resilient to missing/None fields - Fix test inputs to use "relative_" prefix matching actual dispatcher format Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
6be57614dd
commit
0760704db8
@ -255,23 +255,30 @@ class OnvifController:
|
|||||||
status = None
|
status = None
|
||||||
|
|
||||||
# Check for relative zoom support
|
# Check for relative zoom support
|
||||||
zoom_space_id = next(
|
zoom_spaces = getattr(
|
||||||
(
|
getattr(ptz_config, "Spaces", None),
|
||||||
i
|
"RelativeZoomTranslationSpace",
|
||||||
for i, space in enumerate(
|
|
||||||
ptz_config.Spaces.RelativeZoomTranslationSpace
|
|
||||||
)
|
|
||||||
if "TranslationGenericSpace" in space["URI"]
|
|
||||||
),
|
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
|
zoom_space_id = (
|
||||||
|
next(
|
||||||
|
(
|
||||||
|
i
|
||||||
|
for i, space in enumerate(zoom_spaces)
|
||||||
|
if "TranslationGenericSpace" in space["URI"]
|
||||||
|
),
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
if zoom_spaces
|
||||||
|
else None
|
||||||
|
)
|
||||||
|
|
||||||
# setup relative moving request (for click-to-move, drag-to-zoom, and autotracking)
|
# setup relative moving request (for click-to-move, drag-to-zoom, and autotracking)
|
||||||
if fov_space_id is not None:
|
if fov_space_id is not None:
|
||||||
move_request = ptz.create_type("RelativeMove")
|
move_request = ptz.create_type("RelativeMove")
|
||||||
move_request.ProfileToken = profile.token
|
move_request.ProfileToken = profile.token
|
||||||
logger.debug(f"{camera_name}: Relative move request: {move_request}")
|
logger.debug(f"{camera_name}: Relative move request: {move_request}")
|
||||||
if move_request.Translation is None:
|
if move_request.Translation is None and status is not None:
|
||||||
move_request.Translation = status.Position
|
move_request.Translation = status.Position
|
||||||
move_request.Translation.PanTilt.space = ptz_config["Spaces"][
|
move_request.Translation.PanTilt.space = ptz_config["Spaces"][
|
||||||
"RelativePanTiltTranslationSpace"
|
"RelativePanTiltTranslationSpace"
|
||||||
|
|||||||
@ -35,25 +35,25 @@ class TestMoveRelativeParsing(TestCase):
|
|||||||
return float(pan), float(tilt), zoom
|
return float(pan), float(tilt), zoom
|
||||||
|
|
||||||
def test_pan_tilt_only(self):
|
def test_pan_tilt_only(self):
|
||||||
pan, tilt, zoom = self._parse_move_relative("move_0.5_-0.3")
|
pan, tilt, zoom = self._parse_move_relative("relative_0.5_-0.3")
|
||||||
self.assertAlmostEqual(pan, 0.5)
|
self.assertAlmostEqual(pan, 0.5)
|
||||||
self.assertAlmostEqual(tilt, -0.3)
|
self.assertAlmostEqual(tilt, -0.3)
|
||||||
self.assertAlmostEqual(zoom, 0)
|
self.assertAlmostEqual(zoom, 0)
|
||||||
|
|
||||||
def test_pan_tilt_with_zoom(self):
|
def test_pan_tilt_with_zoom(self):
|
||||||
pan, tilt, zoom = self._parse_move_relative("move_0.5_-0.3_0.8")
|
pan, tilt, zoom = self._parse_move_relative("relative_0.5_-0.3_0.8")
|
||||||
self.assertAlmostEqual(pan, 0.5)
|
self.assertAlmostEqual(pan, 0.5)
|
||||||
self.assertAlmostEqual(tilt, -0.3)
|
self.assertAlmostEqual(tilt, -0.3)
|
||||||
self.assertAlmostEqual(zoom, 0.8)
|
self.assertAlmostEqual(zoom, 0.8)
|
||||||
|
|
||||||
def test_zero_zoom(self):
|
def test_zero_zoom(self):
|
||||||
pan, tilt, zoom = self._parse_move_relative("move_0.0_0.0_0.0")
|
pan, tilt, zoom = self._parse_move_relative("relative_0.0_0.0_0.0")
|
||||||
self.assertAlmostEqual(pan, 0.0)
|
self.assertAlmostEqual(pan, 0.0)
|
||||||
self.assertAlmostEqual(tilt, 0.0)
|
self.assertAlmostEqual(tilt, 0.0)
|
||||||
self.assertAlmostEqual(zoom, 0.0)
|
self.assertAlmostEqual(zoom, 0.0)
|
||||||
|
|
||||||
def test_negative_values(self):
|
def test_negative_values(self):
|
||||||
pan, tilt, zoom = self._parse_move_relative("move_-1.0_-1.0_0.5")
|
pan, tilt, zoom = self._parse_move_relative("relative_-1.0_-1.0_0.5")
|
||||||
self.assertAlmostEqual(pan, -1.0)
|
self.assertAlmostEqual(pan, -1.0)
|
||||||
self.assertAlmostEqual(tilt, -1.0)
|
self.assertAlmostEqual(tilt, -1.0)
|
||||||
self.assertAlmostEqual(zoom, 0.5)
|
self.assertAlmostEqual(zoom, 0.5)
|
||||||
|
|||||||
@ -760,7 +760,7 @@ export default function LiveCameraView({
|
|||||||
>
|
>
|
||||||
{clickOverlay && (
|
{clickOverlay && (
|
||||||
<div
|
<div
|
||||||
className="absolute inset-0 z-40 cursor-crosshair select-none"
|
className="absolute inset-0 z-40 cursor-crosshair select-none touch-none"
|
||||||
onMouseDown={handleOverlayMouseDown}
|
onMouseDown={handleOverlayMouseDown}
|
||||||
onMouseMove={handleOverlayMouseMove}
|
onMouseMove={handleOverlayMouseMove}
|
||||||
onMouseUp={handleOverlayMouseUp}
|
onMouseUp={handleOverlayMouseUp}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user