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[] }[]>([]);
/* 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([
{ {
name: "Projet Alpha", name: "Projet Alpha",
link: "/canvas", link: "/canvas", // to test
members: ["Alice", "Bob", "Charlie"], members: ["Alice", "Bob", "Charlie"],
}, },
{ {
name: "Projet Beta", name: "Projet Beta",
link: "./canvas", link: "./canvas", // to test
members: ["David", "Eve", "Frank"], 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([ const pendingProjects = ref([
{ name: "l'eau", creationDate: "26-02-2024" }, { name: "l'eau", creationDate: "26-02-2024" },