From 1b21b2574aa51dc16443792fe084a6dae55fd572 Mon Sep 17 00:00:00 2001 From: Mattias <mattias.rasmusson.1032@student.lu.se> Date: Wed, 20 Mar 2024 12:36:30 +0100 Subject: [PATCH] Comp for displaying projectmembers and changed path in main --- frontend/src/Components/ProjectMembers.tsx | 99 +++++++++++++++++++ .../ProjectManagerPages/PMProjectMembers.tsx | 13 ++- frontend/src/main.tsx | 8 +- 3 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 frontend/src/Components/ProjectMembers.tsx diff --git a/frontend/src/Components/ProjectMembers.tsx b/frontend/src/Components/ProjectMembers.tsx new file mode 100644 index 0000000..e1f261e --- /dev/null +++ b/frontend/src/Components/ProjectMembers.tsx @@ -0,0 +1,99 @@ +import { useEffect, useState } from "react"; +import { Link, useParams } from "react-router-dom"; + +function ProjectMembers(): JSX.Element { + const { projectName } = useParams(); + const [projectMembers, setProjectMembers] = useState<ProjectMember[]>([]); + + // const getProjectMembers = async (): Promise<void> => { + // const token = localStorage.getItem("accessToken") ?? ""; + // const response = await api.getProjectMembers(projectName ?? "", token); + // console.log(response); + // if (response.success) { + // setProjectMembers(response.data ?? []); + // } else { + // console.error(response.message); + // } + // }; + + interface ProjectMember { + username: string; + role: string; + } + + const mockProjectMembers = [ + { + username: "username1", + role: "Project Manager", + }, + { + username: "username2", + role: "System Manager", + }, + { + username: "username3", + role: "Developer", + }, + { + username: "username4", + role: "Tester", + }, + { + username: "username5", + role: "Tester", + }, + { + username: "username6", + role: "Tester", + }, + ]; + + const getProjectMembers = async (): Promise<void> => { + // Use the mock data + setProjectMembers(mockProjectMembers); + + await Promise.resolve(); + }; + + useEffect(() => { + void getProjectMembers(); + }, []); + + return ( + <> + <div className="border-4 border-black bg-white flex flex-col items-center justify-center min-h-[65vh] h-fit w-[70vw] rounded-3xl content-center overflow-scroll space-y-[10vh] p-[30px] text-[20px]"> + {projectMembers.map((projectMember, index) => ( + <h1 key={index} className="border-b-2 border-black w-full"> + <div className="flex justify-between"> + <div className="flex"> + <h1>{projectMember.username}</h1> + <span className="ml-6 mr-2 font-bold">Role:</span> + <h1>{projectMember.role}</h1> + </div> + <div className="flex"> + <div className="ml-auto flex space-x-4"> + <Link + to={`/viewReports/${projectName}/${projectMember.username}`} + > + <h1 className="underline cursor-pointer font-bold"> + View Reports + </h1> + </Link> + <Link + to={`/changeRole/${projectName}/${projectMember.username}`} + > + <h1 className="underline cursor-pointer font-bold"> + Change Role + </h1> + </Link> + </div> + </div> + </div> + </h1> + ))} + </div> + </> + ); +} + +export default ProjectMembers; diff --git a/frontend/src/Pages/ProjectManagerPages/PMProjectMembers.tsx b/frontend/src/Pages/ProjectManagerPages/PMProjectMembers.tsx index 9fe96cf..11b8636 100644 --- a/frontend/src/Pages/ProjectManagerPages/PMProjectMembers.tsx +++ b/frontend/src/Pages/ProjectManagerPages/PMProjectMembers.tsx @@ -1,10 +1,19 @@ import BasicWindow from "../../Components/BasicWindow"; import Button from "../../Components/Button"; import BackButton from "../../Components/BackButton"; -import { Link } from "react-router-dom"; +import { Link, useParams } from "react-router-dom"; +import ProjectMembers from "../../Components/ProjectMembers"; function PMProjectMembers(): JSX.Element { - const content = <></>; + const { projectName } = useParams(); + const content = ( + <> + <h1 className="font-bold text-[30px] mb-[20px]"> + All Members In: {projectName}{" "} + </h1> + <ProjectMembers /> + </> + ); const buttons = ( <> diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index 25c7a35..bac2292 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -64,7 +64,7 @@ const router = createBrowserRouter([ element: <UserEditTimeReportPage />, }, { - path: "/changeRole", + path: "/changeRole/:projectName/:username", element: <PMChangeRole />, }, { @@ -72,11 +72,11 @@ const router = createBrowserRouter([ element: <PMOtherUsersTR />, }, { - path: "/projectMembers", + path: "/projectMembers/:projectName", element: <PMProjectMembers />, }, { - path: "/PMProjectPage", + path: "/PMProjectPage/:projectName", element: <PMProjectPage />, }, { @@ -88,7 +88,7 @@ const router = createBrowserRouter([ element: <PMTotalTimeRole />, }, { - path: "/unsignedReports", + path: "/unsignedReports/:projectName", element: <PMUnsignedReports />, }, {