Compare commits

..

No commits in common. "4f90da69f370bf6208a4e500c49645f63c97fccc" and "eb302268ba3563c0210e79befabc969298f1abd2" have entirely different histories.

2 changed files with 55 additions and 74 deletions

View File

@ -45,6 +45,7 @@ import { store } from "@/main.ts";
position: relative; position: relative;
} }
.logout { .logout {
background-color: #009cde; background-color: #009cde;
color: white; color: white;
@ -61,4 +62,6 @@ import { store } from "@/main.ts";
.logout:hover { .logout:hover {
background-color: #007bad; background-color: #007bad;
} }
</style> </style>

View File

@ -32,7 +32,8 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted } from "vue"; import { ref /*, onMounted*/ } from "vue";
//import { callApi } from "@/services/api";
import Header from "../components/HeaderComponent.vue"; import Header from "../components/HeaderComponent.vue";
//import Agenda from "../components/AdminAppointments.vue"; //import Agenda from "../components/AdminAppointments.vue";
@ -40,89 +41,66 @@ import Agenda from "../components/AgendaComponent.vue";
import ProjectComp from "../components/ProjectComponent.vue"; import ProjectComp from "../components/ProjectComponent.vue";
import PendingProjectComponent from "@/components/PendingProjectComponent.vue"; import PendingProjectComponent from "@/components/PendingProjectComponent.vue";
import AddProjectForm from "@/components/AddProjectForm.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 projects = ref< //const PORT = "8081";
{ //const URI = `http://localhost:${PORT}`;
name: string;
link: string;
members: string[];
}[]
>([]);
const fallbackProjects = [ //const projects = ref<{ name: string; link: string; members: string[] }[]>([]);
{
name: "Projet Alpha",
link: "/canvas",
members: ["Alice", "Bob", "Charlie"],
},
{
name: "Projet Beta",
link: "./canvas",
members: ["David", "Eve", "Frank"],
},
];
const fetchProjects = () => { /* const fetchProjects = () => {
getAdminProjects( callApi(
(response: AxiosResponse) => { `${URI}/admin/projects`,
const projectList = response.data.map( async (response) => {
(p: Project) => new Project(p) console.log(response);
); const projectList = response.data;
const projectPromises = projectList.map( const projectPromises = projectList.map((project: any) => {
(project: { idProject: number; projectName: string }) => return new Promise(async (resolve) => {
new Promise<void>((resolve) => { callApi(
getProjectEntrepreneurs( `${URI}/shared/projects/entrepreneurs/${project.idProject}`,
project.idProject!, (memberResponse) => {
(memberResponse: AxiosResponse) => { const members = memberResponse.data.map((m: any) => m.userName);
const members = memberResponse.data.map( resolve({
(m: UserEntrepreneur) => name: project.projectName,
new UserEntrepreneur(m).userName ||
"Unknown"
);
projects.value.push({
name:
project.projectName ||
"Unnamed Project",
link: `/project/${project.idProject}`, link: `/project/${project.idProject}`,
members, members,
}); });
resolve();
}, },
() => { () => {
projects.value.push({ // Error fetching members, still resolve with empty members
name: resolve({
project.projectName || name: project.projectName,
"Unnamed Project",
link: `/project/${project.idProject}`, link: `/project/${project.idProject}`,
members: [], members: [],
}); });
resolve();
} }
); );
})
);
Promise.all(projectPromises).catch(() => {
// fallback in case member fetches fail
projects.value = fallbackProjects;
}); });
});
projects.value = await Promise.all(projectPromises);
}, },
(error: AxiosError) => { (error) => {
console.error("Error fetching admin projects:", error); console.error("Error fetching projects:", error);
projects.value = fallbackProjects;
} }
); );
}; };
onMounted(fetchProjects); onMounted(fetchProjects);
*/
const projects = ref([
{
name: "Projet Alpha",
link: "/canvas", // to test
members: ["Alice", "Bob", "Charlie"],
},
{
name: "Projet Beta",
link: "./canvas", // to test
members: ["David", "Eve", "Frank"],
},
]);
const pendingProjects = ref([ const pendingProjects = ref([
{ name: "l'eau", creationDate: "26-02-2024" }, { name: "l'eau", creationDate: "26-02-2024" },