import { Formik, Field, Form } from "formik"; import type { CameraConfig, CameraSettingErrorValues, CameraSettingValues, ZoomLevel, } from "../../types/types"; import { useMemo, useState } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faEye, faEyeSlash } from "@fortawesome/free-regular-svg-icons"; import CardHeader from "../UI/CardHeader"; type CameraSettingsProps = { initialData: CameraConfig; updateCameraConfig: (values: CameraSettingValues) => Promise | void; zoomLevel?: ZoomLevel; onZoomLevelChange?: (level: ZoomLevel) => void; }; const CameraSettingFields = ({ initialData, updateCameraConfig, zoomLevel, onZoomLevelChange, }: CameraSettingsProps) => { const [showPwd, setShowPwd] = useState(false); console.log(initialData); const initialValues = useMemo( () => ({ friendlyName: initialData?.id ?? "", cameraAddress: initialData?.propURI?.value ?? "", userName: "", password: "", id: initialData?.id, zoom: zoomLevel?.level ? zoomLevel.level : 1, }), [initialData?.id, initialData?.propURI?.value, zoomLevel?.level] ); 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; }; const handleSubmit = (values: CameraSettingValues) => { console.log(values); updateCameraConfig(values); }; const handleRadioButtonChange = (levelNumber: number) => { if (!onZoomLevelChange || !zoomLevel) return; onZoomLevelChange({ ...zoomLevel, level: zoomLevel?.level !== levelNumber ? levelNumber : zoomLevel?.level, }); }; return ( {({ errors, touched }) => (
{touched.friendlyName && errors.friendlyName && ( {errors.friendlyName} )}
{touched.cameraAddress && errors.cameraAddress && ( {errors.cameraAddress} )}
{touched.userName && errors.userName && ( {errors.userName} )}
{touched.password && errors.password && ( {errors.password} )}
setShowPwd((s) => !s)} icon={showPwd ? faEyeSlash : faEye} />
handleRadioButtonChange(1)} />
handleRadioButtonChange(2)} />
handleRadioButtonChange(4)} />
handleRadioButtonChange(8)} />
)}
); }; export default CameraSettingFields;