2025-09-12 08:21:52 +01:00
|
|
|
import { useFetchCameraConfig } from "../../hooks/useCameraConfig";
|
2025-10-02 16:07:05 +01:00
|
|
|
|
2025-08-13 14:23:48 +01:00
|
|
|
import Card from "../UI/Card";
|
2025-08-15 09:32:33 +01:00
|
|
|
import CardHeader from "../UI/CardHeader";
|
|
|
|
|
import CameraSettingFields from "./CameraSettingFields";
|
|
|
|
|
import { faWrench } from "@fortawesome/free-solid-svg-icons";
|
2025-08-13 14:23:48 +01:00
|
|
|
|
2025-09-29 15:21:22 +01:00
|
|
|
const CameraSettings = ({
|
|
|
|
|
title,
|
|
|
|
|
side,
|
|
|
|
|
zoomLevel,
|
|
|
|
|
onZoomLevelChange,
|
|
|
|
|
}: {
|
|
|
|
|
title: string;
|
|
|
|
|
side: string;
|
2025-10-02 16:07:05 +01:00
|
|
|
zoomLevel?: number;
|
|
|
|
|
onZoomLevelChange?: (level: number) => void;
|
2025-09-29 15:21:22 +01:00
|
|
|
}) => {
|
|
|
|
|
const { data, isError, isPending, updateCameraConfig } =
|
|
|
|
|
useFetchCameraConfig(side);
|
2025-08-13 14:23:48 +01:00
|
|
|
return (
|
2025-09-26 13:38:47 +01:00
|
|
|
<Card className="overflow-hidden min-h-[40vh] md:min-h-[60vh] max-h-[80vh] lg:w-[40%] p-4">
|
2025-09-21 20:10:05 +01:00
|
|
|
{isPending && <>Loading camera config</>}
|
|
|
|
|
{isError && <>Error fetching camera config</>}
|
2025-09-26 13:38:47 +01:00
|
|
|
<div className="relative flex flex-col space-y-3">
|
2025-09-21 20:10:05 +01:00
|
|
|
<CardHeader title={title} icon={faWrench} />
|
2025-09-29 15:55:25 +01:00
|
|
|
{!isPending && (
|
|
|
|
|
<CameraSettingFields
|
|
|
|
|
initialData={data}
|
|
|
|
|
updateCameraConfig={updateCameraConfig}
|
|
|
|
|
zoomLevel={zoomLevel}
|
|
|
|
|
onZoomLevelChange={onZoomLevelChange}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
2025-09-21 20:10:05 +01:00
|
|
|
</div>
|
2025-08-13 14:23:48 +01:00
|
|
|
</Card>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default CameraSettings;
|