import { useState } from 'react'; import { SessionInfo, PlateSelectInput, PlateAndAddPlateBtnWrapper, ZoneSelectInput, DropdownItem, AddIcon, AddPlate, Input, SavePlate, SaveIcon, PlateDropdownItem, RemoveIcon, } from './styles'; import { sessionStatus as enumsSessionStatus } from '../../../../config/enums'; import useForm from '../../../../hooks/useForm'; import useSaveUserPlate from '../../../../hooks/useSaveUserPlate'; import useDeleteUserPlate from '../../../../hooks/useDeleteUserPlate'; import AbsoluteLoader from '../../../Loaders/AbsoluteLoader'; import { IconButton } from '@mui/material'; import useGetData from '../../../../hooks/useGetData'; const MenuProps = { PaperProps: { style: { maxHeight: 150, width: '35px', }, }, }; const SessionUser = ({ sessionStatus, zones, data, onFormChange, setNewData, }) => { const { data: plates, isLoading: isLoadingPlates, setData: setPlates } = useGetData({ url: '/registiranParkirac/tablici', }); const [newPlate, setNewPlate] = useState(''); const [toggleAddPlate, setToggleAddPlate] = useState(false); const { saveUserPlate } = useSaveUserPlate(); const { deleteUserPlate } = useDeleteUserPlate(); const [isLoadingSavePlate, setIsLoadingSavePlate] = useState(false); const [isLoadingDeletePlate, setIsLoadingDeletePlate] = useState({ state: false, itemInd: null, }); const savePlate = (plate) => { setPlates(prevState => [...prevState, plate]); setToggleAddPlate(false); setNewData({ ...data, plate: newPlate }); setNewPlate(''); }; const handleSavePlate = () => { saveUserPlate({ savePlate, plate: newPlate, setIsLoadingSavePlate, }); }; const deletePlate = (plate) => { let index = plates.indexOf(plate); let _plates = [...plates]; _plates.splice(index, 1); if (_plates.length > index) { setNewData({ ...data, plate: _plates[index] }); } else { index--; if (_plates.length !== 0) { setNewData({ ...data, plate: _plates[_plates.length - 1], }); } else { setNewData({ ...data, plate: 'NONE' }); } } setPlates(_plates); }; const handleDeletePlate = (e, plate) => { e.stopPropagation(); let ind = plates.indexOf(plate); deleteUserPlate({ deletePlate, plate, ind, setIsLoadingDeletePlate }); }; return ( {!toggleAddPlate ? ( v} inputProps={{ readOnly: sessionStatus === null ? false : true, }} $show={sessionStatus === null} > NONE {!isLoadingPlates && plates.map((p, ind) => ( {p} {isLoadingDeletePlate.state && isLoadingDeletePlate.itemInd === ind ? ( ) : ( handleDeletePlate(e, p, ind) } > )} ))} ) : ( setNewPlate(e.target.value)} /> )} {sessionStatus === null ? ( !toggleAddPlate ? ( setToggleAddPlate(true)}> таблица ) : isLoadingSavePlate ? ( ) : ( сочувај ) ) : null} NONE {zones.map((z, ind) => ( {z} ))} ); }; export default SessionUser;