GetProjectTimes component
This commit is contained in:
parent
644d0ee12c
commit
ca88daf493
1 changed files with 59 additions and 0 deletions
59
frontend/src/Components/GetProjectTimes.tsx
Normal file
59
frontend/src/Components/GetProjectTimes.tsx
Normal file
|
@ -0,0 +1,59 @@
|
|||
import { Dispatch, SetStateAction, useEffect } from "react";
|
||||
import { api } from "../API/API";
|
||||
|
||||
/**
|
||||
* Interface for reported time per category + total time reported
|
||||
*/
|
||||
export interface projectTimes {
|
||||
admin: number;
|
||||
development: number;
|
||||
meeting: number;
|
||||
own_work: number;
|
||||
study: number;
|
||||
testing: number;
|
||||
totalTime?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all reported times for this project
|
||||
* @param {Dispatch} props.setTimesProp - A setStateAction for the map you want to put times in
|
||||
* @param {string} props.projectName - Username
|
||||
* @returns {void} Nothing
|
||||
* @example
|
||||
* const projectName = "Example";
|
||||
* const [times, setTimes] = useState<Times>();
|
||||
* GetProjectTimes({ setTimesProp: setTimes, projectName: projectName });
|
||||
*/
|
||||
function GetProjectTimes(props: {
|
||||
setTimesProp: Dispatch<SetStateAction<projectTimes | undefined>>;
|
||||
projectName: string;
|
||||
}): void {
|
||||
const setTimes: Dispatch<SetStateAction<projectTimes | undefined>> =
|
||||
props.setTimesProp;
|
||||
useEffect(() => {
|
||||
const fetchUsers = async (): Promise<void> => {
|
||||
try {
|
||||
const token = localStorage.getItem("accessToken") ?? "";
|
||||
const response = await api.getProjectTimes(props.projectName, token);
|
||||
if (response.success && response.data) {
|
||||
// Calculates total time reported
|
||||
response.data.totalTime = response.data.admin;
|
||||
response.data.totalTime += response.data.development;
|
||||
response.data.totalTime += response.data.meeting;
|
||||
response.data.totalTime += response.data.own_work;
|
||||
response.data.totalTime += response.data.study;
|
||||
response.data.totalTime += response.data.testing;
|
||||
setTimes(response.data);
|
||||
} else {
|
||||
console.error("Failed to fetch project times:", response.message);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error fetching times:", error);
|
||||
}
|
||||
};
|
||||
|
||||
void fetchUsers();
|
||||
}, [props.projectName, setTimes]);
|
||||
}
|
||||
|
||||
export default GetProjectTimes;
|
Loading…
Reference in a new issue