diff --git a/.env b/.env
index 207d8b3..6c5ddb9 100644
--- a/.env
+++ b/.env
@@ -6,16 +6,4 @@ VITE_OUTSIDE_BASEURL=http://100.82.205.44
VITE_FOLKESTONE_URL=http://100.116.253.81/mergedHistory/sightingSummary?mostRecentRef=
VITE_MAV_URL=http://192.168.75.11/SightingListFront/sightingSummary?mostRecentRef=
-VITE_AGX_BOX_FRONT_URL=http://192.168.0.90:8080/SightingListFront/sightingSummary?mostRecentRef=
-VITE_AGX_BOX_REAR_URL=http://192.168.0.90:8080/SightingListRear/sightingSummary?mostRecentRef=
-
-VITE_AGX=http://100.72.72.70:8080/SightingListRear/sightingSummary?mostRecentRef=
-VITE_AGX_FRONT=http://100.72.72.70:8080/SightingListFront/sightingSummary?mostRecentRef=
-
-VITE_AGX_FRONT_BASE=http://100.72.72.70:8080/
-
-VITE_LOCAL=http://10.42.0.1:8080/SightingListRear/sightingSummary?mostRecentRef=
-VITE_LOCAL_FRONT=http://10.42.0.1:8080/SightingListFront/sightingSummary?mostRecentRef=
-
-VITE_LOCAL_BASE=http://10.42.0.1:8080/
-VITE_LOCAL_BASE_NEW=http://100.113.222.39
\ No newline at end of file
+VITE_AGX_BOX_URL=http://100.118.196.113:8080
diff --git a/src/components/CameraOverview/SnapshotContainer.tsx b/src/components/CameraOverview/SnapshotContainer.tsx
index cc491db..c7a26b9 100644
--- a/src/components/CameraOverview/SnapshotContainer.tsx
+++ b/src/components/CameraOverview/SnapshotContainer.tsx
@@ -1,12 +1,14 @@
import { useGetOverviewSnapshot } from "../../hooks/useGetOverviewSnapshot";
-import type { ZoomLevel } from "../../types/types";
+import type { ZoomInOptions } from "../../types/types";
import NavigationArrow from "../UI/NavigationArrow";
+import { useCameraZoom } from "../../hooks/useCameraZoom";
+import { useEffect } from "react";
type SnapshotContainerProps = {
side: string;
settingsPage?: boolean;
- zoomLevel?: ZoomLevel;
- onZoomLevelChange?: (level: ZoomLevel) => void;
+ zoomLevel?: number;
+ onZoomLevelChange?: (level: number) => void;
};
export const SnapshotContainer = ({
@@ -15,38 +17,34 @@ export const SnapshotContainer = ({
zoomLevel,
onZoomLevelChange,
}: SnapshotContainerProps) => {
- const { canvasRef, isError, isPending } = useGetOverviewSnapshot();
- if (isError) return
Loading...
;
+ const { canvasRef, isError, isPending } = useGetOverviewSnapshot(side);
+ const cameraControllerSide =
+ side === "CameraA" ? "CameraControllerA" : "CameraControllerB";
+ const { mutation } = useCameraZoom({ camera: cameraControllerSide });
- const handleZoomClick = (event: React.MouseEvent) => {
- const bounds = canvasRef.current?.getBoundingClientRect();
- if (!bounds) return;
- const left = bounds.left;
- const top = bounds.top;
- const x = event.pageX;
- const y = event.pageY;
- const cw = canvasRef.current?.clientWidth;
- const ch = canvasRef.current?.clientHeight;
- if (!cw || !ch) return;
- const px = x / cw;
- const py = y / ch;
-
- const baseLevel = zoomLevel?.level ?? 1;
+ const handleZoomClick = () => {
+ const baseLevel = zoomLevel ?? 1;
const newLevel = baseLevel >= 8 ? 1 : baseLevel * 2;
- if (onZoomLevelChange)
- onZoomLevelChange({
- left,
- top,
- x,
- y,
- px,
- py,
- level: newLevel,
- });
+ if (onZoomLevelChange) onZoomLevelChange(newLevel);
+
+ if (!zoomLevel) return;
};
+ useEffect(() => {
+ if (zoomLevel) {
+ const zoomInOptions: ZoomInOptions = {
+ camera: cameraControllerSide,
+ multiplier: zoomLevel,
+ };
+ mutation.mutate(zoomInOptions);
+ }
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [zoomLevel]);
+
+ if (isError) return An error occurred
;
+ if (isPending) return Loading...
;
+
return (
diff --git a/src/components/CameraSettings/CameraSettingFields.tsx b/src/components/CameraSettings/CameraSettingFields.tsx
index 284d249..d530db3 100644
--- a/src/components/CameraSettings/CameraSettingFields.tsx
+++ b/src/components/CameraSettings/CameraSettingFields.tsx
@@ -3,18 +3,19 @@ import type {
CameraConfig,
CameraSettingErrorValues,
CameraSettingValues,
- ZoomLevel,
+ ZoomInOptions,
} from "../../types/types";
-import { useMemo, useState } from "react";
+import { useEffect, useMemo, useState } from "react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faEye, faEyeSlash } from "@fortawesome/free-regular-svg-icons";
import CardHeader from "../UI/CardHeader";
+import { useCameraZoom } from "../../hooks/useCameraZoom";
type CameraSettingsProps = {
initialData: CameraConfig;
updateCameraConfig: (values: CameraSettingValues) => Promise | void;
- zoomLevel?: ZoomLevel;
- onZoomLevelChange?: (level: ZoomLevel) => void;
+ zoomLevel?: number;
+ onZoomLevelChange?: (level: number) => void;
};
const CameraSettingFields = ({
@@ -24,7 +25,38 @@ const CameraSettingFields = ({
onZoomLevelChange,
}: CameraSettingsProps) => {
const [showPwd, setShowPwd] = useState(false);
+ const cameraControllerSide =
+ initialData?.id === "CameraA" ? "CameraControllerA" : "CameraControllerB";
+ const { mutation, query } = useCameraZoom({ camera: cameraControllerSide });
+ const zoomOptions = [1, 2, 4, 8];
+ useEffect(() => {
+ if (!query.data) return;
+ const apiZoom = getZoomLevel(query.data);
+ onZoomLevelChange?.(apiZoom);
+ }, [query.data, onZoomLevelChange]);
+
+ const getZoomLevel = (levelstring: string | undefined) => {
+ switch (levelstring) {
+ case "1x":
+ return 1;
+ break;
+ case "2x":
+ return 2;
+ break;
+ case "4x":
+ return 4;
+ break;
+ case "8x":
+ return 8;
+ default:
+ return 1;
+ }
+ };
+ const level = getZoomLevel(query.data);
+
+ console.log("level from get", level);
+ console.log("zoomLevel state", zoomLevel);
const initialValues = useMemo(
() => ({
friendlyName: initialData?.id ?? "",
@@ -32,18 +64,16 @@ const CameraSettingFields = ({
userName: "",
password: "",
id: initialData?.id,
- zoom: zoomLevel?.level ? zoomLevel.level : 1,
+
+ zoom: zoomLevel,
}),
- [initialData?.id, initialData?.propURI?.value, zoomLevel?.level]
+ [initialData?.id, initialData?.propURI?.value, zoomLevel]
);
const validateValues = (values: CameraSettingValues) => {
const errors: CameraSettingErrorValues = {};
if (!values.friendlyName) errors.friendlyName = "Required";
if (!values.cameraAddress) errors.cameraAddress = "Required";
- if (!values.userName) errors.userName = "Required";
- if (!values.password) errors.password = "Required";
-
return errors;
};
@@ -51,20 +81,26 @@ const CameraSettingFields = ({
updateCameraConfig(values);
};
- const handleRadioButtonChange = (levelNumber: number) => {
+ const handleRadioButtonChange = async (levelNumber: number) => {
if (!onZoomLevelChange || !zoomLevel) return;
- onZoomLevelChange({
- ...zoomLevel,
- level: zoomLevel?.level !== levelNumber ? levelNumber : zoomLevel?.level,
- });
- };
+ onZoomLevelChange(levelNumber);
+ const zoomInOptions: ZoomInOptions = {
+ camera: cameraControllerSide,
+ multiplier: levelNumber,
+ };
+
+ mutation.mutate(zoomInOptions);
+ };
+ const selectedZoom = zoomLevel ?? 1;
+ console.log(selectedZoom);
return (
{({ errors, touched }) => (
-
-
- handleRadioButtonChange(1)}
- />
-
-
-
-
- handleRadioButtonChange(2)}
- />
-
-
-
-
- handleRadioButtonChange(4)}
- />
-
-
-
-
- handleRadioButtonChange(8)}
- />
-
-
+
+ {zoomOptions.map((zoom) => (
+
+ handleRadioButtonChange(zoom)}
+ />
+
+
+ ))}