front_foundation #9
@ -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,74 +32,96 @@
|
||||
</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/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" },
|
||||
|
Loading…
x
Reference in New Issue
Block a user