Compare commits
	
		
			2 Commits
		
	
	
		
			eb302268ba
			...
			4f90da69f3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 4f90da69f3 | ||
|  | 0fe64fd844 | 
| @@ -45,7 +45,6 @@ import { store } from "@/main.ts"; | ||||
|     position: relative; | ||||
| } | ||||
|  | ||||
|  | ||||
| .logout { | ||||
|     background-color: #009cde; | ||||
|     color: white; | ||||
| @@ -62,6 +61,4 @@ import { store } from "@/main.ts"; | ||||
| .logout:hover { | ||||
|     background-color: #007bad; | ||||
| } | ||||
|  | ||||
|  | ||||
| </style> | ||||
|   | ||||
| @@ -32,8 +32,7 @@ | ||||
| </template> | ||||
|  | ||||
| <script setup lang="ts"> | ||||
| import { ref /*, onMounted*/ } from "vue"; | ||||
| //import { callApi } from "@/services/api"; | ||||
| import { ref, onMounted } from "vue"; | ||||
|  | ||||
| import Header from "../components/HeaderComponent.vue"; | ||||
| //import Agenda from "../components/AdminAppointments.vue"; | ||||
| @@ -41,66 +40,89 @@ import Agenda from "../components/AgendaComponent.vue"; | ||||
| import ProjectComp from "../components/ProjectComponent.vue"; | ||||
| import PendingProjectComponent from "@/components/PendingProjectComponent.vue"; | ||||
| import AddProjectForm from "@/components/AddProjectForm.vue"; | ||||
| import { getAdminProjects } from "@/services/Apis/Admin"; | ||||
| import { getProjectEntrepreneurs } from "@/services/Apis/Shared"; | ||||
| import { type AxiosError, type AxiosResponse } from "axios"; | ||||
| import Project from "@/ApiClasses/Project"; | ||||
| import UserEntrepreneur from "@/ApiClasses/UserEntrepreneur"; | ||||
|  | ||||
| //const PORT = "8081"; | ||||
| //const URI = `http://localhost:${PORT}`; | ||||
| const projects = ref< | ||||
|     { | ||||
|         name: string; | ||||
|         link: string; | ||||
|         members: string[]; | ||||
|     }[] | ||||
| >([]); | ||||
|  | ||||
| //const projects = ref<{ name: string; link: string; members: string[] }[]>([]); | ||||
|  | ||||
| /* const fetchProjects = () => { | ||||
|   callApi( | ||||
|     `${URI}/admin/projects`, | ||||
|     async (response) => { | ||||
|       console.log(response); | ||||
|       const projectList = response.data; | ||||
|  | ||||
|       const projectPromises = projectList.map((project: any) => { | ||||
|         return new Promise(async (resolve) => { | ||||
|           callApi( | ||||
|             `${URI}/shared/projects/entrepreneurs/${project.idProject}`, | ||||
|             (memberResponse) => { | ||||
|               const members = memberResponse.data.map((m: any) => m.userName); | ||||
|               resolve({ | ||||
|                 name: project.projectName, | ||||
|                 link: `/project/${project.idProject}`, | ||||
|                 members, | ||||
|               }); | ||||
|             }, | ||||
|             () => { | ||||
|               // Error fetching members, still resolve with empty members | ||||
|               resolve({ | ||||
|                 name: project.projectName, | ||||
|                 link: `/project/${project.idProject}`, | ||||
|                 members: [], | ||||
|               }); | ||||
|             } | ||||
|           ); | ||||
|         }); | ||||
|       }); | ||||
|  | ||||
|       projects.value = await Promise.all(projectPromises); | ||||
|     }, | ||||
|     (error) => { | ||||
|       console.error("Error fetching projects:", error); | ||||
|     } | ||||
|   ); | ||||
| }; | ||||
|  | ||||
| onMounted(fetchProjects); | ||||
|  */ | ||||
|  | ||||
| const projects = ref([ | ||||
| const fallbackProjects = [ | ||||
|     { | ||||
|         name: "Projet Alpha", | ||||
|         link: "/canvas", // to test | ||||
|         link: "/canvas", | ||||
|         members: ["Alice", "Bob", "Charlie"], | ||||
|     }, | ||||
|     { | ||||
|         name: "Projet Beta", | ||||
|         link: "./canvas", // to test | ||||
|         link: "./canvas", | ||||
|         members: ["David", "Eve", "Frank"], | ||||
|     }, | ||||
| ]); | ||||
| ]; | ||||
|  | ||||
| const fetchProjects = () => { | ||||
|     getAdminProjects( | ||||
|         (response: AxiosResponse) => { | ||||
|             const projectList = response.data.map( | ||||
|                 (p: Project) => new Project(p) | ||||
|             ); | ||||
|  | ||||
|             const projectPromises = projectList.map( | ||||
|                 (project: { idProject: number; projectName: string }) => | ||||
|                     new Promise<void>((resolve) => { | ||||
|                         getProjectEntrepreneurs( | ||||
|                             project.idProject!, | ||||
|                             (memberResponse: AxiosResponse) => { | ||||
|                                 const members = memberResponse.data.map( | ||||
|                                     (m: UserEntrepreneur) => | ||||
|                                         new UserEntrepreneur(m).userName || | ||||
|                                         "Unknown" | ||||
|                                 ); | ||||
|  | ||||
|                                 projects.value.push({ | ||||
|                                     name: | ||||
|                                         project.projectName || | ||||
|                                         "Unnamed Project", | ||||
|                                     link: `/project/${project.idProject}`, | ||||
|                                     members, | ||||
|                                 }); | ||||
|  | ||||
|                                 resolve(); | ||||
|                             }, | ||||
|                             () => { | ||||
|                                 projects.value.push({ | ||||
|                                     name: | ||||
|                                         project.projectName || | ||||
|                                         "Unnamed Project", | ||||
|                                     link: `/project/${project.idProject}`, | ||||
|                                     members: [], | ||||
|                                 }); | ||||
|                                 resolve(); | ||||
|                             } | ||||
|                         ); | ||||
|                     }) | ||||
|             ); | ||||
|  | ||||
|             Promise.all(projectPromises).catch(() => { | ||||
|                 // fallback in case member fetches fail | ||||
|                 projects.value = fallbackProjects; | ||||
|             }); | ||||
|         }, | ||||
|         (error: AxiosError) => { | ||||
|             console.error("Error fetching admin projects:", error); | ||||
|             projects.value = fallbackProjects; | ||||
|         } | ||||
|     ); | ||||
| }; | ||||
|  | ||||
| onMounted(fetchProjects); | ||||
|  | ||||
| const pendingProjects = ref([ | ||||
|     { name: "l'eau", creationDate: "26-02-2024" }, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user