import { FC, useEffect, useState } from 'react'; import { GSX_SERVICE_CALLED, GSX_SERVICE_FINISHED } from '../../constants'; import { LoadingState } from '../../types/general'; import { WASMDataPax } from '../../types/WASMData'; import { CoherentCallOptionsSet } from '../../utils/utils'; import ToggleComponentKH from '../toggleComponent/ToggleComponent'; interface OptionsPaxProps { WASMData: WASMDataPax; loadingState: LoadingState; } const OptionsPax: FC = ({ WASMData, loadingState }) => { const [paxWeight, setPaxWeight] = useState(WASMData.options.paxWeight); const [bagWeight, setBagWeight] = useState(WASMData.options.bagWeight); const GSXActive = () => { return ( (WASMData.GSX.boardingState >= GSX_SERVICE_CALLED || WASMData.GSX.deboardingState >= GSX_SERVICE_CALLED) && WASMData.GSX.deboardingState !== GSX_SERVICE_FINISHED ); }; const updateData = () => { CoherentCallOptionsSet(undefined, paxWeight, bagWeight); }; const handleInput = (input: string, maxValue: number, setter: (value: number) => void) => { if (!input) { setter(0); return; } const converted = parseInt(input); if (converted) { if (converted < 0) setter(0); else if (converted > maxValue) setter(maxValue); else setter(converted); } }; useEffect(() => updateData(), [paxWeight, bagWeight]); return ( <>
{ CoherentCallOptionsSet(value); }} disabled={loadingState !== 'preview' || GSXActive()} />
handleInput(e.target.value, Number.MAX_VALUE, setPaxWeight)} disabled={loadingState !== 'preview' || GSXActive()} />
handleInput(e.target.value, Number.MAX_VALUE, setBagWeight)} disabled={loadingState !== 'preview' || GSXActive()} />
); }; export default OptionsPax;