import { useEffect } from 'react'; import { useHistory } from 'react-router'; import { TableContainer, TableHeaderWrapper, TableTitle, Table, TableHead, TableRow, TableBody, TableCell, ButtonTableCell, ToggleAccoutStatusButton, CreateEmployeeButton, AddIcon, SearchField, IdentityIcon, } from './styles'; import InputAdornment from '@mui/material/InputAdornment'; import DropdownViewer from '../../DropdownViewer'; import { employeeStatus, accountStatus } from '../../../config/enums'; import useGetData from '../../../hooks/useGetData'; import useToggleAccountStatus from '../../../hooks/useToggleAccountStatus'; import AbsoluteLoader from '../../Loaders/AbsoluteLoader'; // import { employees } from './mockData'; import { useState } from 'react'; const EmployeesTable = () => { let history = useHistory(); const { toggleAccountStatus, isLoading: isLoadingAccountStatus } = useToggleAccountStatus(); const { data: employees, isLoading: isLoadingEmployees } = useGetData({ url: `/vraboten`, }); const [filteredEmployees, setFilteredEmployees] = useState([]); const [search, setSearch] = useState(''); const onRowClick = (workerId) => { history.push(`/employees/${workerId}`); }; const changeAccoutStatusOnEmployee = ({ workerId }) => { const emp = filteredEmployees.find((e) => e.workerId === workerId); emp.accountNonLocked = !emp.accountNonLocked; }; const onAccountStatusClick = (event, workerId) => { event.stopPropagation(); toggleAccountStatus({ workerId, changeAccoutStatusOnEmployee }); }; const onChangeSearch = (e) => { let newSearchValue = e.target.value; setSearch(newSearchValue); const filteredData = employees.filter((employee) => employee.firstName .concat(` ${employee.lastName}`) .toLowerCase() .includes(newSearchValue.trim().toLowerCase()) ); setFilteredEmployees(filteredData); }; useEffect(() => { setFilteredEmployees(employees); }, [employees]); return ( !isLoadingEmployees && ( {isLoadingAccountStatus ? ( ) : null} Вработени onChangeSearch(e)} placeholder='Пребарај...' InputProps={{ startAdornment: ( ), }} /> history.push('/employees/create')} > Додади вработен Емаил Име и Презиме Зона Телефон Статус Акаунт {filteredEmployees.map((employeeData) => ( onRowClick(employeeData.workerId) } > {employeeData.email} {employeeData.firstName}{' '} {employeeData.lastName} z.pzName )} // TODO DELETE - after backend fix width='200px' /> {employeeData.mobile} {employeeStatus[employeeData.status]} onAccountStatusClick( event, employeeData.workerId ) } $enabled={employeeData.accountNonLocked} > {/* $ added because https://styled-components.com/docs/api#transient-props*/} {employeeData.accountNonLocked ? accountStatus.enabled : accountStatus.disabled} ))}
) ); }; export default EmployeesTable;