Compare commits
40 commits
974d86c2d9
...
baade40d77
Author | SHA1 | Date | |
---|---|---|---|
![]() |
baade40d77 | ||
![]() |
3bf0c34a5f | ||
![]() |
8690e381c8 | ||
![]() |
41e1c32ee0 | ||
![]() |
46c4a5dc92 | ||
![]() |
03e2be0a46 | ||
![]() |
39edc419df | ||
![]() |
027bce6dfc | ||
![]() |
da730a2d18 | ||
![]() |
dd370d86e3 | ||
![]() |
ca7e4c6189 | ||
![]() |
19e3567c78 | ||
![]() |
6a68ad1c3f | ||
![]() |
3047db28f6 | ||
![]() |
2d5de569ae | ||
![]() |
5a6fe1c472 | ||
![]() |
1b3660eb83 | ||
![]() |
69df212fde | ||
![]() |
434879c26c | ||
![]() |
c5d5c389dd | ||
![]() |
03f350f303 | ||
![]() |
7e319e34c9 | ||
![]() |
60774f6324 | ||
![]() |
db647c6e7c | ||
![]() |
45749afe69 | ||
![]() |
2cce3f3ab4 | ||
![]() |
a67e43e537 | ||
![]() |
ce5d6d2837 | ||
![]() |
f9260976df | ||
![]() |
5c0cf5fc33 | ||
![]() |
8a2724de5e | ||
![]() |
7aa83b1d99 | ||
![]() |
2c9d3baafa | ||
![]() |
a5f15e5c06 | ||
![]() |
c1aa0769bb | ||
![]() |
6be1060cff | ||
![]() |
42498ca1c4 | ||
![]() |
029fdd85b9 | ||
![]() |
8bb4a1c893 | ||
![]() |
7c51f586ce |
30 changed files with 773 additions and 11 deletions
|
@ -15,7 +15,7 @@ function Header({ username }: { username: string }): JSX.Element {
|
||||||
>
|
>
|
||||||
<Link to="/your-projects">
|
<Link to="/your-projects">
|
||||||
<img
|
<img
|
||||||
src="/src/assets/TTIMElogo.png"
|
src="/src/assets/Logo.svg"
|
||||||
alt="TTIME Logo"
|
alt="TTIME Logo"
|
||||||
className="w-11 h-14 cursor-pointer"
|
className="w-11 h-14 cursor-pointer"
|
||||||
/>
|
/>
|
||||||
|
|
59
frontend/src/Components/TimeReport.tsx
Normal file
59
frontend/src/Components/TimeReport.tsx
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
function NewTimeReport(): JSX.Element {
|
||||||
|
const activities = [
|
||||||
|
"Development",
|
||||||
|
"Meeting",
|
||||||
|
"Administration",
|
||||||
|
"Own Work",
|
||||||
|
"Studies",
|
||||||
|
"Testing",
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div className="border-4 border-black bg-white flex flex-col justify-start min-h-[65vh] h-fit w-[50vw] rounded-3xl overflow-scroll space-y-[2vh] p-[30px] items-center">
|
||||||
|
<input
|
||||||
|
className="w-fill h-[5vh] font-sans text-[3vh] pl-[1vw] rounded-full text-center pt-[1vh] pb-[1vh] border-2 border-black"
|
||||||
|
type="week"
|
||||||
|
placeholder="Week"
|
||||||
|
onKeyDown={(event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
}}
|
||||||
|
onPaste={(event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<table className="w-full text-center divide-y divide-x divide-white text-[30px]">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th className="w-1/2 py-2 border-b-2 border-black">Activity</th>
|
||||||
|
<th className="w-1/2 py-2 border-b-2 border-black">
|
||||||
|
Total Time (min)
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody className="divide-y divide-black">
|
||||||
|
{activities.map((activity, index) => (
|
||||||
|
<tr key={index} className="h-[10vh]">
|
||||||
|
<td>{activity}</td>
|
||||||
|
<td>
|
||||||
|
<input
|
||||||
|
type="number"
|
||||||
|
min="0"
|
||||||
|
className="border-2 border-black rounded-md text-center w-1/2"
|
||||||
|
onKeyDown={(event) => {
|
||||||
|
const keyValue = event.key;
|
||||||
|
if (!/\d/.test(keyValue) && keyValue !== "Backspace")
|
||||||
|
event.preventDefault();
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default NewTimeReport;
|
26
frontend/src/Pages/AdminPages/AdminAddProject.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminAddProject.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminAddProject(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Finish"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminAddProject;
|
26
frontend/src/Pages/AdminPages/AdminAddUser.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminAddUser.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminAddUser(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Finish"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminAddUser;
|
26
frontend/src/Pages/AdminPages/AdminChangeUsername.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminChangeUsername.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminChangeUsername(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Finish"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminChangeUsername;
|
26
frontend/src/Pages/AdminPages/AdminManageProjects.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminManageProjects.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminManageProjects(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Add Project"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminManageProjects;
|
26
frontend/src/Pages/AdminPages/AdminManageUsers.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminManageUsers.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminManageUsers(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Add User"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminManageUsers;
|
26
frontend/src/Pages/AdminPages/AdminProjectAddMember.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminProjectAddMember.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminProjectAddMember(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Add"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminProjectAddMember;
|
26
frontend/src/Pages/AdminPages/AdminProjectChangeUserRole.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminProjectChangeUserRole.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminProjectChangeUserRole(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Change"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminProjectChangeUserRole;
|
26
frontend/src/Pages/AdminPages/AdminProjectManageMembers.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminProjectManageMembers.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminProjectManageMembers(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Add Member"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminProjectManageMembers;
|
26
frontend/src/Pages/AdminPages/AdminProjectPage.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminProjectPage.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminProjectPage(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Delete"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminProjectPage;
|
20
frontend/src/Pages/AdminPages/AdminProjectStatistics.tsx
Normal file
20
frontend/src/Pages/AdminPages/AdminProjectStatistics.tsx
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminProjectStatistics(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminProjectStatistics;
|
26
frontend/src/Pages/AdminPages/AdminProjectViewMemberInfo.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminProjectViewMemberInfo.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminProjectViewMemberInfo(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Remove"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminProjectViewMemberInfo;
|
26
frontend/src/Pages/AdminPages/AdminViewUserInfo.tsx
Normal file
26
frontend/src/Pages/AdminPages/AdminViewUserInfo.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function AdminViewUserInfo(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Delete"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default AdminViewUserInfo;
|
|
@ -1,5 +1,5 @@
|
||||||
import Button from "../Components/Button";
|
import Button from "../Components/Button";
|
||||||
import Logo from "/src/assets/TTIMElogo.png";
|
import Logo from "/src/assets/Logo.svg";
|
||||||
import "./LoginPage.css";
|
import "./LoginPage.css";
|
||||||
import { useEffect } from "react";
|
import { useEffect } from "react";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
|
|
26
frontend/src/Pages/ProjectManagerPages/PMChangeRole.tsx
Normal file
26
frontend/src/Pages/ProjectManagerPages/PMChangeRole.tsx
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function ChangeRole(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Save"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default ChangeRole;
|
20
frontend/src/Pages/ProjectManagerPages/PMOtherUsersTR.tsx
Normal file
20
frontend/src/Pages/ProjectManagerPages/PMOtherUsersTR.tsx
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function PMOtherUsersTR(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default PMOtherUsersTR;
|
32
frontend/src/Pages/ProjectManagerPages/PMProjectMembers.tsx
Normal file
32
frontend/src/Pages/ProjectManagerPages/PMProjectMembers.tsx
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function PMProjectMembers(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Time / Activity"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Time / Role"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default PMProjectMembers;
|
|
@ -0,0 +1,28 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
import TimeReport from "../../Components/TimeReport";
|
||||||
|
|
||||||
|
function PMTotalTimeActivity(): JSX.Element {
|
||||||
|
const content = (
|
||||||
|
<>
|
||||||
|
<h1 className="font-bold text-[30px] mb-[20px]">
|
||||||
|
Total Time Per Activity
|
||||||
|
</h1>
|
||||||
|
<TimeReport />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default PMTotalTimeActivity;
|
20
frontend/src/Pages/ProjectManagerPages/PMTotalTimeRole.tsx
Normal file
20
frontend/src/Pages/ProjectManagerPages/PMTotalTimeRole.tsx
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function PMTotalTimeRole(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default PMTotalTimeRole;
|
20
frontend/src/Pages/ProjectManagerPages/PMUnsignedReports.tsx
Normal file
20
frontend/src/Pages/ProjectManagerPages/PMUnsignedReports.tsx
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function PMUnsignedReports(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default PMUnsignedReports;
|
|
@ -0,0 +1,40 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
import TimeReport from "../../Components/TimeReport";
|
||||||
|
|
||||||
|
function PMViewUnsignedReport(): JSX.Element {
|
||||||
|
const content = (
|
||||||
|
<>
|
||||||
|
<h1 className="font-bold text-[30px] mb-[20px]">
|
||||||
|
Username's Time Report
|
||||||
|
</h1>
|
||||||
|
<TimeReport />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Sign"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Save"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default PMViewUnsignedReport;
|
32
frontend/src/Pages/UserPages/UserEditTimeReportPage.tsx
Normal file
32
frontend/src/Pages/UserPages/UserEditTimeReportPage.tsx
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
import NewTimeReport from "../../Components/TimeReport";
|
||||||
|
|
||||||
|
function UserEditTimeReportPage(): JSX.Element {
|
||||||
|
const content = (
|
||||||
|
<>
|
||||||
|
<h1 className="font-bold text-[30px] mb-[20px]">Edit Time Report</h1>
|
||||||
|
<NewTimeReport />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Save"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default UserEditTimeReportPage;
|
35
frontend/src/Pages/UserPages/UserNewTimeReportPage.tsx
Normal file
35
frontend/src/Pages/UserPages/UserNewTimeReportPage.tsx
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
import NewTimeReport from "../../Components/TimeReport";
|
||||||
|
import { Link } from "react-router-dom";
|
||||||
|
|
||||||
|
function UserNewTimeReportPage(): JSX.Element {
|
||||||
|
const content = (
|
||||||
|
<>
|
||||||
|
<h1 className="font-bold text-[30px] mb-[20px]">New Time Report</h1>
|
||||||
|
<NewTimeReport />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Submit"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Link to="/project">
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Link>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default UserNewTimeReportPage;
|
|
@ -5,16 +5,16 @@ import Button from "../../Components/Button";
|
||||||
function UserProjectPage(): JSX.Element {
|
function UserProjectPage(): JSX.Element {
|
||||||
const content = (
|
const content = (
|
||||||
<>
|
<>
|
||||||
<Link to="/settingsPage">
|
<h1 className="font-bold text-[30px] mb-[20px]">ProjectNameExample</h1>
|
||||||
<h1 className="font-bold text-[30px] mb-[20px]">ProjectNameExample</h1>
|
|
||||||
</Link>
|
|
||||||
<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]">
|
<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]">
|
||||||
<h1 className="font-bold underline text-[30px] cursor-pointer">
|
<h1 className="font-bold underline text-[30px] cursor-pointer">
|
||||||
Your Time Reports
|
Your Time Reports
|
||||||
</h1>
|
</h1>
|
||||||
<h1 className="font-bold underline text-[30px] cursor-pointer">
|
<Link to="/new-time-report">
|
||||||
New Time Report
|
<h1 className="font-bold underline text-[30px] cursor-pointer">
|
||||||
</h1>
|
New Time Report
|
||||||
|
</h1>
|
||||||
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
20
frontend/src/Pages/UserPages/UserViewTimeReportsPage.tsx
Normal file
20
frontend/src/Pages/UserPages/UserViewTimeReportsPage.tsx
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import BasicWindow from "../../Components/BasicWindow";
|
||||||
|
import Button from "../../Components/Button";
|
||||||
|
|
||||||
|
function UserViewTimeReportsPage(): JSX.Element {
|
||||||
|
const content = <></>;
|
||||||
|
|
||||||
|
const buttons = (
|
||||||
|
<>
|
||||||
|
<Button
|
||||||
|
text="Back"
|
||||||
|
onClick={(): void => {
|
||||||
|
return;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
return <BasicWindow username="Admin" content={content} buttons={buttons} />;
|
||||||
|
}
|
||||||
|
export default UserViewTimeReportsPage;
|
|
@ -12,13 +12,13 @@ function YourProjectsPage(): JSX.Element {
|
||||||
</h1>
|
</h1>
|
||||||
</Link>
|
</Link>
|
||||||
<h1 className="underline text-[24px] cursor-pointer font-bold">
|
<h1 className="underline text-[24px] cursor-pointer font-bold">
|
||||||
ProjectNameExample
|
ProjectNameExample2
|
||||||
</h1>
|
</h1>
|
||||||
<h1 className="underline text-[24px] cursor-pointer font-bold">
|
<h1 className="underline text-[24px] cursor-pointer font-bold">
|
||||||
ProjectNameExample
|
ProjectNameExample3
|
||||||
</h1>
|
</h1>
|
||||||
<h1 className="underline text-[24px] cursor-pointer font-bold">
|
<h1 className="underline text-[24px] cursor-pointer font-bold">
|
||||||
ProjectNameExample
|
ProjectNameExample4
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|
9
frontend/src/assets/Logo.svg
Normal file
9
frontend/src/assets/Logo.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 348 KiB |
Binary file not shown.
Before Width: | Height: | Size: 261 KiB |
|
@ -6,6 +6,29 @@ import LoginPage from "./Pages/LoginPage.tsx";
|
||||||
import YourProjectsPage from "./Pages/YourProjectsPage.tsx";
|
import YourProjectsPage from "./Pages/YourProjectsPage.tsx";
|
||||||
import UserProjectPage from "./Pages/UserPages/UserProjectPage.tsx";
|
import UserProjectPage from "./Pages/UserPages/UserProjectPage.tsx";
|
||||||
import AdminMenuPage from "./Pages/AdminPages/AdminMenuPage.tsx";
|
import AdminMenuPage from "./Pages/AdminPages/AdminMenuPage.tsx";
|
||||||
|
import UserEditTimeReportPage from "./Pages/UserPages/UserEditTimeReportPage.tsx";
|
||||||
|
import UserNewTimeReportPage from "./Pages/UserPages/UserNewTimeReportPage.tsx";
|
||||||
|
import UserViewTimeReportsPage from "./Pages/UserPages/UserViewTimeReportsPage.tsx";
|
||||||
|
import PMChangeRole from "./Pages/ProjectManagerPages/PMChangeRole.tsx";
|
||||||
|
import PMOtherUsersTR from "./Pages/ProjectManagerPages/PMOtherUsersTR.tsx";
|
||||||
|
import PMProjectMembers from "./Pages/ProjectManagerPages/PMProjectMembers.tsx";
|
||||||
|
import PMProjectPage from "./Pages/ProjectManagerPages/PMProjectPage.tsx";
|
||||||
|
import PMTotalTimeActivity from "./Pages/ProjectManagerPages/PMTotalTimeActivity.tsx";
|
||||||
|
import PMTotalTimeRole from "./Pages/ProjectManagerPages/PMTotalTimeRole.tsx";
|
||||||
|
import PMUnsignedReports from "./Pages/ProjectManagerPages/PMUnsignedReports.tsx";
|
||||||
|
import PMViewUnsignedReport from "./Pages/ProjectManagerPages/PMViewUnsignedReport.tsx";
|
||||||
|
import AdminManageUsers from "./Pages/AdminPages/AdminManageUsers.tsx";
|
||||||
|
import AdminViewUserInfo from "./Pages/AdminPages/AdminViewUserInfo.tsx";
|
||||||
|
import AdminManageProjects from "./Pages/AdminPages/AdminManageProjects.tsx";
|
||||||
|
import AdminAddProject from "./Pages/AdminPages/AdminAddProject.tsx";
|
||||||
|
import AdminAddUser from "./Pages/AdminPages/AdminAddUser.tsx";
|
||||||
|
import AdminChangeUsername from "./Pages/AdminPages/AdminChangeUsername.tsx";
|
||||||
|
import AdminProjectAddMember from "./Pages/AdminPages/AdminProjectAddMember.tsx";
|
||||||
|
import AdminProjectChangeUserRole from "./Pages/AdminPages/AdminProjectChangeUserRole.tsx";
|
||||||
|
import AdminProjectManageMembers from "./Pages/AdminPages/AdminProjectManageMembers.tsx";
|
||||||
|
import AdminProjectStatistics from "./Pages/AdminPages/AdminProjectStatistics.tsx";
|
||||||
|
import AdminProjectViewMemberInfo from "./Pages/AdminPages/AdminProjectViewMemberInfo.tsx";
|
||||||
|
import AdminProjectPage from "./Pages/AdminPages/AdminProjectPage.tsx";
|
||||||
|
|
||||||
// This is where the routes are mounted
|
// This is where the routes are mounted
|
||||||
const router = createBrowserRouter([
|
const router = createBrowserRouter([
|
||||||
|
@ -17,14 +40,106 @@ const router = createBrowserRouter([
|
||||||
path: "/your-projects",
|
path: "/your-projects",
|
||||||
element: <YourProjectsPage />,
|
element: <YourProjectsPage />,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/edit-time-report",
|
||||||
|
element: <UserEditTimeReportPage />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/new-time-report",
|
||||||
|
element: <UserNewTimeReportPage />,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/project",
|
path: "/project",
|
||||||
element: <UserProjectPage />,
|
element: <UserProjectPage />,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/project-page",
|
||||||
|
element: <UserViewTimeReportsPage />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/change-role",
|
||||||
|
element: <PMChangeRole />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/other-users-time-reports",
|
||||||
|
element: <PMOtherUsersTR />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/project-members",
|
||||||
|
element: <PMProjectMembers />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/PM-project-page",
|
||||||
|
element: <PMProjectPage />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/PM-time-activity",
|
||||||
|
element: <PMTotalTimeActivity />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/PM-time-role",
|
||||||
|
element: <PMTotalTimeRole />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/PM-unsigned-reports",
|
||||||
|
element: <PMUnsignedReports />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/PM-view-unsigned-report",
|
||||||
|
element: <PMViewUnsignedReport />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-add-project",
|
||||||
|
element: <AdminAddProject />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-add-user",
|
||||||
|
element: <AdminAddUser />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-change-username",
|
||||||
|
element: <AdminChangeUsername />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-manage-projects",
|
||||||
|
element: <AdminManageProjects />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-manage-users",
|
||||||
|
element: <AdminManageUsers />,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/admin-menu",
|
path: "/admin-menu",
|
||||||
element: <AdminMenuPage />,
|
element: <AdminMenuPage />,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-project-add-member",
|
||||||
|
element: <AdminProjectAddMember />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-project-change-user-role",
|
||||||
|
element: <AdminProjectChangeUserRole />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-project-manage-members",
|
||||||
|
element: <AdminProjectManageMembers />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-project-page",
|
||||||
|
element: <AdminProjectPage />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-project-statistics",
|
||||||
|
element: <AdminProjectStatistics />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-project-view-members",
|
||||||
|
element: <AdminProjectViewMemberInfo />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/admin-view-user",
|
||||||
|
element: <AdminViewUserInfo />,
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Semi-hacky way to get the root element
|
// Semi-hacky way to get the root element
|
||||||
|
|
Loading…
Reference in a new issue