Added component for PM to view other users time reports
This commit is contained in:
parent
9f931a2643
commit
b656204457
1 changed files with 71 additions and 0 deletions
71
frontend/src/Components/AllTimeReportsInProjectOtherUser.tsx
Normal file
71
frontend/src/Components/AllTimeReportsInProjectOtherUser.tsx
Normal file
|
@ -0,0 +1,71 @@
|
|||
//Info: This component is used to display all the time reports for a project. It will display the week number,
|
||||
//total time spent, and if the report has been signed or not. The user can click on a report to edit it.
|
||||
import { useEffect, useState } from "react";
|
||||
import { WeeklyReport } from "../Types/goTypes";
|
||||
import { Link, useParams } from "react-router-dom";
|
||||
import { api } from "../API/API";
|
||||
|
||||
/**
|
||||
* Renders a component that displays all the time reports for a specific project.
|
||||
* @returns {JSX.Element} representing the component.
|
||||
*/
|
||||
function AllTimeReportsInProject(): JSX.Element {
|
||||
const { projectName } = useParams();
|
||||
const [weeklyReports, setWeeklyReports] = useState<WeeklyReport[]>([]);
|
||||
|
||||
// Call getProjects when the component mounts
|
||||
useEffect(() => {
|
||||
const getWeeklyReports = async (): Promise<void> => {
|
||||
const token = localStorage.getItem("accessToken") ?? "";
|
||||
const response = await api.getWeeklyReportsForUser(
|
||||
projectName ?? "",
|
||||
token,
|
||||
);
|
||||
console.log(response);
|
||||
if (response.success) {
|
||||
setWeeklyReports(response.data ?? []);
|
||||
} else {
|
||||
console.error(response.message);
|
||||
}
|
||||
};
|
||||
|
||||
void getWeeklyReports();
|
||||
}, [projectName]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="border-4 border-black bg-white flex flex-col items-center justify-center min-h-[65vh] h-fit w-[50vw] rounded-3xl content-center overflow-scroll space-y-[10vh] p-[30px] text-[30px]">
|
||||
{weeklyReports.map((newWeeklyReport, index) => (
|
||||
<Link
|
||||
to={`/editTimeReport/${projectName}/${newWeeklyReport.week}`}
|
||||
key={index}
|
||||
className="border-b-2 border-black w-full"
|
||||
>
|
||||
<div className="flex justify-between">
|
||||
<h1>
|
||||
<span className="font-bold">{"Week: "}</span>
|
||||
{newWeeklyReport.week}
|
||||
</h1>
|
||||
<h1>
|
||||
<span className="font-bold">{"Total Time: "}</span>
|
||||
{newWeeklyReport.developmentTime +
|
||||
newWeeklyReport.meetingTime +
|
||||
newWeeklyReport.adminTime +
|
||||
newWeeklyReport.ownWorkTime +
|
||||
newWeeklyReport.studyTime +
|
||||
newWeeklyReport.testingTime}{" "}
|
||||
min
|
||||
</h1>
|
||||
<h1>
|
||||
<span className="font-bold">{"Signed: "}</span>
|
||||
{newWeeklyReport.signedBy ? "YES" : "NO"}
|
||||
</h1>
|
||||
</div>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default AllTimeReportsInProject;
|
Loading…
Reference in a new issue