diff --git a/Client/src/Components/TabPanels/Account/TeamPanel.jsx b/Client/src/Components/TabPanels/Account/TeamPanel.jsx index 59ed4fb88..5fda4cc0f 100644 --- a/Client/src/Components/TabPanels/Account/TeamPanel.jsx +++ b/Client/src/Components/TabPanels/Account/TeamPanel.jsx @@ -2,8 +2,8 @@ import { useTheme } from "@emotion/react"; import TabPanel from "@mui/lab/TabPanel"; import { Box, + ButtonGroup, Checkbox, - Container, Divider, MenuItem, Modal, @@ -45,8 +45,9 @@ const TeamPanel = () => { email: "", role: "", }); - const [teamStates, setTeamStates] = useState({}); const [tableData, setTableData] = useState({}); + const [members, setMembers] = useState([]); + const [filter, setFilter] = useState("all"); const [errors, setErrors] = useState({}); useEffect(() => { @@ -55,30 +56,8 @@ const TeamPanel = () => { const response = await axiosInstance.get("/auth/users", { headers: { Authorization: `Bearer ${authToken}` }, }); - setTeamStates({ members: response.data.data, filters: "" }); - const data = { - cols: [ - { id: 1, name: "NAME" }, - { id: 2, name: "EMAIL" }, - { id: 3, name: "ROLE" }, - ], - rows: response.data.data.map((member, idx) => { - return { - id: member._id, - data: [ - { id: idx, data: member.firstName + " " + member.lastName }, - { id: idx + 1, data: member.email }, - { - id: idx + 2, - data: member.role[0] === "admin" ? "Administrator" : "Member", - }, - ], - }; - }), - }; - - setTableData(data); + setMembers(response.data.data); } catch (error) { createToast({ body: error.message || "Error fetching team members.", @@ -89,41 +68,61 @@ const TeamPanel = () => { fetchTeam(); }, []); + useEffect(() => { + let team = members; + if (filter !== "all") + team = members.filter((member) => member.role[0] === filter); + + const data = { + cols: [ + { id: 1, name: "NAME" }, + { id: 2, name: "EMAIL" }, + { id: 3, name: "ROLE" }, + ], + rows: team?.map((member, idx) => { + return { + id: member._id, + data: [ + { + id: idx, + data: ( + + + {member.firstName + " " + member.lastName} + + + Created {new Date(member.createdAt).toLocaleDateString()} + + + ), + }, + { id: idx + 1, data: member.email }, + { + id: idx + 2, + data: member.role[0] === "admin" ? "Administrator" : "Member", + }, + ], + }; + }), + }; + + setTableData(data); + }, [members, filter]); + // RENAME ORGANIZATION const toggleEdit = () => { setOrgStates((prev) => ({ ...prev, isEdit: !prev.isEdit })); }; const handleRename = () => {}; - // TABLE ACTIONS - const handleMembersQuery = (type) => { - let count = 0; - tableData.rows?.forEach((member) => { - type === "" ? count++ : member.data[2].data === type ? count++ : ""; - }); - return count; - }; - - // const handleCheckCell = (id) => { - // const updatedTeamStates = [...teamStates.members]; - // updatedTeamStates[id] = { - // ...updatedTeamStates[id], - // isChecked: !updatedTeamStates[id].isChecked, - // }; - // setTeamStates((prev) => ({ - // ...prev, - // members: updatedTeamStates, - // })); - // }; - // const handleFilter = (filter) => { - // setTeamStates((prev) => ({ - // ...prev, - // filter: filter, - // })); - // }; //TODO - implement save team function const handleSaveTeam = () => {}; + // INVITE MEMBER + const [isOpen, setIsOpen] = useState(false); + const handleChange = (event) => { const { value } = event.target; setToInvite((prev) => ({ @@ -148,8 +147,6 @@ const TeamPanel = () => { }); }; - // INVITE MEMBER - const [isOpen, setIsOpen] = useState(false); const handleInviteMember = async () => { if (toInvite.role !== "user" || toInvite !== "admin") setToInvite((prev) => ({ ...prev, role: "user" })); @@ -193,87 +190,94 @@ const TeamPanel = () => { return (
-
- - Organization name - - - - setOrgStates((prev) => ({ - ...prev, - name: event.target.value, - })) - } - disabled={!orgStates.isEdit} - sx={{ - color: theme.palette.otherColors.bluishGray, - "& .Mui-disabled": { - WebkitTextFillColor: "initial !important", - }, - "& .Mui-disabled fieldset": { - borderColor: "transparent !important", - }, - }} - inputProps={{ - sx: { textAlign: "end", padding: theme.gap.small }, - }} - /> -
-