import {ChangeEvent, memo, useEffect, useState} from 'react'; import Paper from '@mui/material/Paper'; import {FormControlLabel, Checkbox, Stack, Radio, RadioGroup, Typography} from "@mui/material"; import NumberTextField from "./NumberTextField"; import {azim_int_settings} from "../client"; import _ from "lodash"; import ButtonWithSnackbar from "./ButtonWithSnackbar"; import FormControl from "@mui/material/FormControl"; type MyProps = { s?: azim_int_settings }; const default_azim_int_settings : azim_int_settings = { solid_angle_corr: true, polarization_corr: true, high_q_recipA: 5, low_q_recipA: 0.1, q_spacing: 0.1, azimuthal_bins: 1, force_cpu: false } function AzIntSettings({s: serverS}: MyProps) { const [s, setS] = useState(default_azim_int_settings); const [lastDownloadedS, setLastDownloadedS] = useState(default_azim_int_settings); const [downloadCounter, setDownloadCounter] = useState(0); const [lowQError, setLowQError] = useState(false); const [highQError, setHighQError] = useState(false); const [qSpacingError, setQSpacingError] = useState(false); useEffect(() => { if ((serverS !== undefined) && !_.isEqual(serverS, lastDownloadedS)) { setS(serverS); setLastDownloadedS(serverS); setDownloadCounter(c => c + 1); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [serverS]); return
Azimuthal integration settings
{ setS(prev => ({...prev, q_spacing: val})); setQSpacingError(err); }} fullWidth/> { setS(prev => ({...prev, low_q_recipA: val})); setLowQError(err); }} fullWidth/> { setS(prev => ({...prev, high_q_recipA: val})); setHighQError(err); }} fullWidth/> ) => { setS(prev => ({...prev, solid_angle_corr: event.target.checked})); }} />} label="Solid angle correction"/> ) => { setS(prev => ({...prev, polarization_corr: event.target.checked})); }} />} label="Polarization correction"/> ) => { setS(prev => ({...prev, force_cpu: event.target.checked})); }} />} label="Force CPU calculation in FPGA workflow"/> Azimuthal bins ) => { setS(prev => ({...prev, azimuthal_bins: Number(event.target.value)})); }} > {[1, 2, 4, 8, 16, 32, 64, 128].map((value) => ( } label={value.toString()} /> ))}

} export default memo(AzIntSettings);