diff --git a/src/components/CameraSettings/CameraSettingFields.tsx b/src/components/CameraSettings/CameraSettingFields.tsx index 74db4bc..284d249 100644 --- a/src/components/CameraSettings/CameraSettingFields.tsx +++ b/src/components/CameraSettings/CameraSettingFields.tsx @@ -48,7 +48,6 @@ const CameraSettingFields = ({ }; const handleSubmit = (values: CameraSettingValues) => { - console.log(values); updateCameraConfig(values); }; diff --git a/src/components/FrontCameraOverview/FrontCameraOverviewCard.tsx b/src/components/FrontCameraOverview/FrontCameraOverviewCard.tsx index 6c449dd..b7689fa 100644 --- a/src/components/FrontCameraOverview/FrontCameraOverviewCard.tsx +++ b/src/components/FrontCameraOverview/FrontCameraOverviewCard.tsx @@ -10,6 +10,7 @@ const FrontCameraOverviewCard = () => { const navigate = useNavigate(); const handlers = useSwipeable({ onSwipedRight: () => navigate("/camera-settings"), + onSwipedLeft: () => navigate("/rear-camera-settings"), trackMouse: true, }); diff --git a/src/components/FrontCameraSettings/OverviewVideoContainer.tsx b/src/components/FrontCameraSettings/OverviewVideoContainer.tsx index db16aeb..c58d3cd 100644 --- a/src/components/FrontCameraSettings/OverviewVideoContainer.tsx +++ b/src/components/FrontCameraSettings/OverviewVideoContainer.tsx @@ -1,7 +1,7 @@ import clsx from "clsx"; import { SnapshotContainer } from "../CameraOverview/SnapshotContainer"; import Card from "../UI/Card"; -import { useNavigate } from "react-router"; +import { useNavigate, useLocation } from "react-router"; import { useSwipeable } from "react-swipeable"; import type { ZoomLevel } from "../../types/types"; @@ -18,8 +18,16 @@ const OverviewVideoContainer = ({ onZoomLevelChange?: (level: ZoomLevel) => void; }) => { const navigate = useNavigate(); + const location = useLocation(); const handlers = useSwipeable({ - onSwipedLeft: () => navigate("/"), + onSwipedLeft: () => { + if (location.pathname === "/rear-camera-settings") return; + navigate("/"); + }, + onSwipedRight: () => { + if (location.pathname === "/camera-settings") return; + navigate("/"); + }, trackMouse: true, }); return ( diff --git a/src/components/SightingOverview/SightingOverview.tsx b/src/components/SightingOverview/SightingOverview.tsx index 14b012b..07b62c0 100644 --- a/src/components/SightingOverview/SightingOverview.tsx +++ b/src/components/SightingOverview/SightingOverview.tsx @@ -30,6 +30,7 @@ const SightingOverview = () => { return (
+
{mostRecent && (
diff --git a/src/components/UI/CardHeader.tsx b/src/components/UI/CardHeader.tsx index d39e675..2d7c369 100644 --- a/src/components/UI/CardHeader.tsx +++ b/src/components/UI/CardHeader.tsx @@ -17,7 +17,6 @@ const CardHeader = ({ img, sighting, }: CameraOverviewHeaderProps) => { - // console.log(sighting?.debug.toLowerCase()); return (
{ - try { - const res = await fetch("http://192.168.75.11/api/versions", { signal }); - if (!res.ok) throw new Error(`HTTP ${res.status}`); - return res.json(); - } catch (error) { - console.log(error); - return undefined; - } -} - -const pad = (n: number) => String(n).padStart(2, "0"); -const normalizeToMs = (ts: number) => (ts < 1e12 ? ts * 1000 : ts); // seconds → ms if needed - -function formatFromMs(ms: number, tz: "local" | "utc" = "local") { - const d = new Date(ms); - const h = tz === "utc" ? d.getUTCHours() : d.getHours(); - const m = tz === "utc" ? d.getUTCMinutes() : d.getMinutes(); - const s = tz === "utc" ? d.getUTCSeconds() : d.getSeconds(); - const day = tz === "utc" ? d.getUTCDate() : d.getDate(); - const month = (tz === "utc" ? d.getUTCMonth() : d.getMonth()) + 1; - const year = tz === "utc" ? d.getUTCFullYear() : d.getFullYear(); - return `${pad(h)}:${pad(m)}:${pad(s)} ${pad(day)}-${pad(month)}-${year}`; -} - export default function Header() { - const [offsetMs, setOffsetMs] = useState(null); - const [nowMs, setNowMs] = useState(Date.now()); const [isFullscreen, setIsFullscreen] = useState(false); const { sessionStarted } = useNPEDContext(); const toggleFullscreen = () => { if (!document.fullscreenElement) { - // Enter fullscreen on the entire app document.documentElement.requestFullscreen(); setIsFullscreen(true); } else { - // Exit fullscreen document.exitFullscreen(); setIsFullscreen(false); } @@ -62,38 +31,8 @@ export default function Header() { window.location.reload(); }; - useEffect(() => { - const ac = new AbortController(); - fetchVersions(ac.signal) - .then((data) => { - if (!data) throw new Error("No data"); - const serverMs = normalizeToMs(data?.timeStamp); - setOffsetMs(serverMs - Date.now()); - }) - .catch((err) => { - console.log(err); - }); - return () => ac.abort("failed"); - }, []); - - useEffect(() => { - let timer: number; - const schedule = () => { - const now = Date.now(); - setNowMs(now); - const delay = 1000 - (now % 1000); - timer = window.setTimeout(schedule, delay); - }; - schedule(); - return () => clearTimeout(timer); - }, []); - - const serverNowMs = offsetMs == null ? nowMs : nowMs + offsetMs; - const localStr = formatFromMs(serverNowMs, "local"); - const utcStr = formatFromMs(serverNowMs, "utc"); - return ( -
+
Logo @@ -103,11 +42,11 @@ export default function Header() { {sessionStarted && (
Session Active
)} -
-

Local: {localStr}

-

UTC: {utcStr}

-
+
+ + +
{isFullscreen ? ( diff --git a/src/components/UI/NavigationArrow.tsx b/src/components/UI/NavigationArrow.tsx index 65c14d7..a879255 100644 --- a/src/components/UI/NavigationArrow.tsx +++ b/src/components/UI/NavigationArrow.tsx @@ -9,7 +9,6 @@ type NavigationArrowProps = { const NavigationArrow = ({ side, settingsPage }: NavigationArrowProps) => { const navigate = useNavigate(); - const navigationDest = (side: string | undefined) => { if (settingsPage) { navigate("/"); @@ -44,19 +43,17 @@ const NavigationArrow = ({ side, settingsPage }: NavigationArrowProps) => { } return ( <> - {side === "Front" ? ( - navigationDest(side)} - /> - ) : ( - navigationDest(side)} - /> - )} + navigationDest(side)} + /> + + navigationDest(side)} + /> ); }; diff --git a/src/hooks/useCameraConfig.ts b/src/hooks/useCameraConfig.ts index 284468f..cd04942 100644 --- a/src/hooks/useCameraConfig.ts +++ b/src/hooks/useCameraConfig.ts @@ -3,7 +3,6 @@ import { toast } from "sonner"; import { CAM_BASE } from "../utils/config"; const base_url = `${CAM_BASE}/api`; -console.log(base_url); const fetchCameraSideConfig = async ({ queryKey }: { queryKey: string[] }) => { const [, cameraSide] = queryKey; diff --git a/src/hooks/useNPEDAuth.ts b/src/hooks/useNPEDAuth.ts index ed48fc1..f1844d4 100644 --- a/src/hooks/useNPEDAuth.ts +++ b/src/hooks/useNPEDAuth.ts @@ -48,8 +48,6 @@ async function signIn(loginDetails: NPEDFieldType) { if (!frontCameraResponse.ok) throw new Error("cannot reach NPED endpoint"); if (!rearCameraResponse.ok) throw new Error("cannot reach NPED endpoint"); - const data = await frontCameraResponse.json(); - console.log(data); return { frontResponse: frontCameraResponse.json(), rearResponse: rearCameraResponse.json(), diff --git a/src/pages/Dashboard.tsx b/src/pages/Dashboard.tsx index 844a26b..7af2040 100644 --- a/src/pages/Dashboard.tsx +++ b/src/pages/Dashboard.tsx @@ -6,7 +6,7 @@ import { CAM_BASE } from "../utils/config"; const Dashboard = () => { const base_url = `${CAM_BASE}/SightingListFront/sightingSummary?mostRecentRef=`; return ( - +
diff --git a/src/pages/FrontCamera.tsx b/src/pages/FrontCamera.tsx index cc4bc03..3393e5e 100644 --- a/src/pages/FrontCamera.tsx +++ b/src/pages/FrontCamera.tsx @@ -18,7 +18,7 @@ const FrontCamera = () => {
{ - const navigate = useNavigate(); - const handlers = useSwipeable({ - onSwipedRight: () => navigate("/"), - trackMouse: true, + const [zoomLevel, setZoomLevel] = useState({ + left: 0, + top: 0, + x: 0, + y: 0, + px: 0, + py: 0, + level: 1, }); - return ( -
- - -
- -
+
+ +
);