import * as React from "react"; import { useState, useEffect } from "react"; import { useNavigate, useParams } from "react-router-dom"; import { AccordionDetails, AccordionSummary, Accordion, Skeleton, Radio, Box, Typography, TextField, Button, Table, TableHead, TableBody, TableCell, TableRow, } from "@mui/material"; import { GridSelectionModel } from "@mui/x-data-grid"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import ConditionalRender from "@root/pages/Setting/ConditionalRender"; import ModalUser from "@root/pages/dashboard/ModalUser"; import ServiceUsersDG from "./ServiceUsersDG"; import { useUsers, useManagers, useAdmins } from "@root/api/user/swr"; import { getRoles } from "@root/api/privilegies"; import { getRoles_mock, TMockData } from "../../../api/roles"; import theme from "../../../theme"; type Pages = { adminPage: number; managerPage: number; userPage: number; }; type PagesSize = { adminPageSize: number; managerPageSize: number; userPageSize: number; }; const Users: React.FC = () => { const radioboxes = ["admin", "manager", "user"]; const [selectedValue, setSelectedValue] = React.useState("admin"); const navigate = useNavigate(); const [mockData, setMockData] = React.useState([]); const handleChangeData = () => { getRoles_mock().then((mockdata) => { setMockData(mockdata); setAccordionText(mockdata[0].desc || ""); }); }; const [accordionState, setAccordionState] = React.useState(true); const [accordionText, setAccordionText] = React.useState(""); const handleChange = (value: string) => { setSelectedValue(value); setAccordionText(mockData.find(({ name }) => name === value)?.desc || ""); if (selectedValue === "manager") { } }; const handleToggleAccordion = () => { setAccordionState(!accordionState); }; const [roles, setRoles] = React.useState([]); const [page, setPage] = useState({ adminPage: 0, managerPage: 0, userPage: 0, }); const [pageSize, setPageSize] = useState({ adminPageSize: 10, managerPageSize: 10, userPageSize: 10, }); const [openUserModal, setOpenUserModal] = useState(false); const [activeUserId, setActiveUserId] = useState(""); const { userId } = useParams(); const { data: adminData, adminPages } = useAdmins( page.adminPage + 1, pageSize.adminPageSize ); const { data: managerData, managerPages } = useManagers( page.managerPage + 1, pageSize.managerPageSize ); const { data: userData, userPagesCount } = useUsers( page.userPage + 1, pageSize.userPageSize ); useEffect(() => { handleChangeData(); }, []); useEffect(() => { if (userId) { setActiveUserId(userId); setOpenUserModal(true); return; } setActiveUserId(""); setOpenUserModal(false); }, [userId]); useEffect(() => { getRoles().then(([rolesResponse]) => { if (rolesResponse) { setRoles(rolesResponse); } }); }, [selectedValue]); const [selectedTariffs, setSelectedTariffs] = useState( [] ); return ( {/* */} } aria-controls="panel1a-content" id="panel1a-header" > {accordionText} Имя Описание Отобразить {mockData.length ? ( mockData.map(function (item, index) { return ( handleChange(radioboxes[index])} > {item.name} {item.desc} ); }) ) : ( )}
setPage((pages) => ({ ...pages, adminPage })) } pagesCount={adminPages} pageSize={pageSize.adminPageSize} handleSelectionChange={setSelectedTariffs} onPageSizeChange={(adminPageSize) => setPageSize((pageSize) => ({ ...pageSize, adminPageSize })) } /> } childrenManager={ setPage((pages) => ({ ...pages, managerPage })) } pagesCount={managerPages} pageSize={pageSize.managerPageSize} handleSelectionChange={setSelectedTariffs} onPageSizeChange={(managerPageSize) => setPageSize((pageSize) => ({ ...pageSize, managerPageSize })) } /> } childrenUser={ setPage((pages) => ({ ...pages, userPage })) } pagesCount={userPagesCount} pageSize={pageSize.userPageSize} handleSelectionChange={setSelectedTariffs} onPageSizeChange={(userPageSize) => setPageSize((pageSize) => ({ ...pageSize, userPageSize })) } /> } /> { setOpenUserModal(false); navigate(-1); }} />
); }; export default Users;