Merge branch 'gruppPP' into frontend
This commit is contained in:
		
						commit
						03f6edd320
					
				
					 5 changed files with 79 additions and 29 deletions
				
			
		|  | @ -3,10 +3,11 @@ import Button from "./Button"; | ||||||
| import { UserProjectMember } from "../Types/goTypes"; | import { UserProjectMember } from "../Types/goTypes"; | ||||||
| import GetUsersInProject from "./GetUsersInProject"; | import GetUsersInProject from "./GetUsersInProject"; | ||||||
| 
 | 
 | ||||||
| function UserInfoModal(props: { | function ProjectInfoModal(props: { | ||||||
|   isVisible: boolean; |   isVisible: boolean; | ||||||
|   projectname: string; |   projectname: string; | ||||||
|   onClose: () => void; |   onClose: () => void; | ||||||
|  |   onClick: (username: string) => void; | ||||||
| }): JSX.Element { | }): JSX.Element { | ||||||
|   const [users, setUsers] = useState<UserProjectMember[]>([]); |   const [users, setUsers] = useState<UserProjectMember[]>([]); | ||||||
|   GetUsersInProject({ projectName: props.projectname, setUsersProp: setUsers }); |   GetUsersInProject({ projectName: props.projectname, setUsersProp: setUsers }); | ||||||
|  | @ -17,23 +18,31 @@ function UserInfoModal(props: { | ||||||
|       className="fixed inset-0 bg-black bg-opacity-30 backdrop-blur-sm  |       className="fixed inset-0 bg-black bg-opacity-30 backdrop-blur-sm  | ||||||
|       flex justify-center items-center" |       flex justify-center items-center" | ||||||
|     > |     > | ||||||
|       <div className="border-4 border-black bg-white p-2 rounded-lg text-center"> |       <div className="border-4 border-black bg-white p-2 rounded-2xl text-center h-[41vh] w-[40vw] flex flex-col"> | ||||||
|         <p className="font-bold text-[30px]">{props.projectname}</p> |         <div className="pl-20 pr-20"> | ||||||
|         <div> |           <h1 className="font-bold text-[32px] mb-[20px]">Project members:</h1> | ||||||
|           <h2 className="font-bold text-[22px] mb-[20px]"> |           <div className="border-2 border-black p-2 rounded-lg text-center overflow-scroll h-[26vh]"> | ||||||
|             Members of this project: |             <ul className="text-left font-medium space-y-2"> | ||||||
|           </h2> |               <div></div> | ||||||
|           <div className="border-2 border-black bg-white p-2 rounded-lg text-center pl-6 pr-6"> |  | ||||||
|             <ul> |  | ||||||
|               {users.map((user) => ( |               {users.map((user) => ( | ||||||
|                 <li key={user.Username}> |                 <li | ||||||
|                   <span>{user.Username}</span> |                   className="items-start p-1 border-2 border-black rounded-lg bg-orange-200 hover:bg-orange-600 hover:text-slate-100 hover:cursor-pointer" | ||||||
|  |                   key={user.Username} | ||||||
|  |                   onClick={() => { | ||||||
|  |                     props.onClick(user.Username); | ||||||
|  |                   }} | ||||||
|  |                 > | ||||||
|  |                   <span> | ||||||
|  |                     Name: {user.Username} | ||||||
|  |                     <div></div> | ||||||
|  |                     Role: {user.UserRole} | ||||||
|  |                   </span> | ||||||
|                 </li> |                 </li> | ||||||
|               ))} |               ))} | ||||||
|             </ul> |             </ul> | ||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
|         <div className="items-center space-x-6 pr-6 pl-6"> |         <div className="space-x-16"> | ||||||
|           <Button |           <Button | ||||||
|             text={"Delete"} |             text={"Delete"} | ||||||
|             onClick={function (): void { |             onClick={function (): void { | ||||||
|  | @ -54,4 +63,4 @@ function UserInfoModal(props: { | ||||||
|   ); |   ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export default UserInfoModal; | export default ProjectInfoModal; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,8 @@ | ||||||
| import { useState } from "react"; | import { useState } from "react"; | ||||||
| import { NewProject } from "../Types/goTypes"; | import { NewProject } from "../Types/goTypes"; | ||||||
| import ProjectInfoModal from "./ProjectInfoModal"; | import ProjectInfoModal from "./ProjectInfoModal"; | ||||||
|  | import UserInfoModal from "./UserInfoModal"; | ||||||
|  | import DeleteUser from "./DeleteUser"; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * A list of projects for admin manage projects page, that sets an onClick |  * A list of projects for admin manage projects page, that sets an onClick | ||||||
|  | @ -16,26 +18,47 @@ import ProjectInfoModal from "./ProjectInfoModal"; | ||||||
| export function ProjectListAdmin(props: { | export function ProjectListAdmin(props: { | ||||||
|   projects: NewProject[]; |   projects: NewProject[]; | ||||||
| }): JSX.Element { | }): JSX.Element { | ||||||
|   const [modalVisible, setModalVisible] = useState(false); |   const [projectModalVisible, setProjectModalVisible] = useState(false); | ||||||
|   const [projectname, setProjectname] = useState(""); |   const [projectname, setProjectname] = useState(""); | ||||||
|  |   const [userModalVisible, setUserModalVisible] = useState(false); | ||||||
|  |   const [username, setUsername] = useState(""); | ||||||
| 
 | 
 | ||||||
|   const handleClick = (username: string): void => { |   const handleClickUser = (username: string): void => { | ||||||
|     setProjectname(username); |     setUsername(username); | ||||||
|     setModalVisible(true); |     setUserModalVisible(true); | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   const handleClose = (): void => { |   const handleClickProject = (username: string): void => { | ||||||
|  |     setProjectname(username); | ||||||
|  |     setProjectModalVisible(true); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const handleCloseProject = (): void => { | ||||||
|     setProjectname(""); |     setProjectname(""); | ||||||
|     setModalVisible(false); |     setProjectModalVisible(false); | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   const handleCloseUser = (): void => { | ||||||
|  |     setProjectname(""); | ||||||
|  |     setUserModalVisible(false); | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   return ( |   return ( | ||||||
|     <> |     <> | ||||||
|       <ProjectInfoModal |       <ProjectInfoModal | ||||||
|         onClose={handleClose} |         onClose={handleCloseProject} | ||||||
|         isVisible={modalVisible} |         onClick={handleClickUser} | ||||||
|  |         isVisible={projectModalVisible} | ||||||
|         projectname={projectname} |         projectname={projectname} | ||||||
|       /> |       /> | ||||||
|  |       <UserInfoModal | ||||||
|  |         manageMember={true} | ||||||
|  |         onClose={handleCloseUser} | ||||||
|  |         //TODO: CHANGE TO REMOVE USER FROM PROJECT
 | ||||||
|  |         onDelete={() => DeleteUser} | ||||||
|  |         isVisible={userModalVisible} | ||||||
|  |         username={username} | ||||||
|  |       /> | ||||||
|       <div> |       <div> | ||||||
|         <ul className="font-bold underline text-[30px] cursor-pointer padding"> |         <ul className="font-bold underline text-[30px] cursor-pointer padding"> | ||||||
|           {props.projects.map((project) => ( |           {props.projects.map((project) => ( | ||||||
|  | @ -43,7 +66,7 @@ export function ProjectListAdmin(props: { | ||||||
|               className="pt-5" |               className="pt-5" | ||||||
|               key={project.name} |               key={project.name} | ||||||
|               onClick={() => { |               onClick={() => { | ||||||
|                 handleClick(project.name); |                 handleClickProject(project.name); | ||||||
|               }} |               }} | ||||||
|             > |             > | ||||||
|               {project.name} |               {project.name} | ||||||
|  |  | ||||||
|  | @ -5,23 +5,38 @@ import UserProjectListAdmin from "./UserProjectListAdmin"; | ||||||
| 
 | 
 | ||||||
| function UserInfoModal(props: { | function UserInfoModal(props: { | ||||||
|   isVisible: boolean; |   isVisible: boolean; | ||||||
|  |   manageMember: boolean; | ||||||
|   username: string; |   username: string; | ||||||
|   onClose: () => void; |   onClose: () => void; | ||||||
|  |   onDelete: (username: string) => void; | ||||||
| }): JSX.Element { | }): JSX.Element { | ||||||
|   if (!props.isVisible) return <></>; |   if (!props.isVisible) return <></>; | ||||||
| 
 |   const ManageUserOrMember = (check: boolean): JSX.Element => { | ||||||
|  |     if (check) { | ||||||
|  |       return ( | ||||||
|  |         <Link to="/AdminChangeRole"> | ||||||
|  |           <p className="mb-[20px] hover:font-bold hover:cursor-pointer underline"> | ||||||
|  |             (Change Role) | ||||||
|  |           </p> | ||||||
|  |         </Link> | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |     return ( | ||||||
|  |       <Link to="/AdminChangeUserName"> | ||||||
|  |         <p className="mb-[20px] hover:font-bold hover:cursor-pointer underline"> | ||||||
|  |           (Change Username) | ||||||
|  |         </p> | ||||||
|  |       </Link> | ||||||
|  |     ); | ||||||
|  |   }; | ||||||
|   return ( |   return ( | ||||||
|     <div |     <div | ||||||
|       className="fixed inset-0 bg-black bg-opacity-30 backdrop-blur-sm  |       className="fixed inset-0 bg-black bg-opacity-30 backdrop-blur-sm  | ||||||
|       flex justify-center items-center" |       flex justify-center items-center" | ||||||
|     > |     > | ||||||
|       <div className="border-4 border-black bg-white p-2 rounded-lg text-center"> |       <div className="border-4 border-black bg-white p-2 rounded-lg text-center flex flex-col"> | ||||||
|         <p className="font-bold text-[30px]">{props.username}</p> |         <p className="font-bold text-[30px]">{props.username}</p> | ||||||
|         <Link to="/AdminChangeUserName"> |         {ManageUserOrMember(props.manageMember)} | ||||||
|           <p className="mb-[20px] hover:font-bold hover:cursor-pointer underline"> |  | ||||||
|             (Change Username) |  | ||||||
|           </p> |  | ||||||
|         </Link> |  | ||||||
|         <div> |         <div> | ||||||
|           <h2 className="font-bold text-[22px] mb-[20px]"> |           <h2 className="font-bold text-[22px] mb-[20px]"> | ||||||
|             Member of these projects: |             Member of these projects: | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| import { useState } from "react"; | import { useState } from "react"; | ||||||
| import UserInfoModal from "./UserInfoModal"; | import UserInfoModal from "./UserInfoModal"; | ||||||
|  | import DeleteUser from "./DeleteUser"; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * A list of users for admin manage users page, that sets an onClick |  * A list of users for admin manage users page, that sets an onClick | ||||||
|  | @ -29,7 +30,9 @@ export function UserListAdmin(props: { users: string[] }): JSX.Element { | ||||||
|   return ( |   return ( | ||||||
|     <> |     <> | ||||||
|       <UserInfoModal |       <UserInfoModal | ||||||
|  |         manageMember={false} | ||||||
|         onClose={handleClose} |         onClose={handleClose} | ||||||
|  |         onDelete={() => DeleteUser} | ||||||
|         isVisible={modalVisible} |         isVisible={modalVisible} | ||||||
|         username={username} |         username={username} | ||||||
|       /> |       /> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Imbus
						Imbus