front_foundation #9
@ -45,7 +45,6 @@ import { store } from "@/main.ts";
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.logout {
|
.logout {
|
||||||
background-color: #009cde;
|
background-color: #009cde;
|
||||||
color: white;
|
color: white;
|
||||||
@ -62,6 +61,4 @@ import { store } from "@/main.ts";
|
|||||||
.logout:hover {
|
.logout:hover {
|
||||||
background-color: #007bad;
|
background-color: #007bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -32,74 +32,96 @@
|
|||||||
</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/AgendaComponent.vue";
|
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 PORT = "8081";
|
const projects = ref<
|
||||||
|
|||||||
//const URI = `http://localhost:${PORT}`;
|
{
|
||||||
|
name: string;
|
||||||
|
link: string;
|
||||||
|
members: string[];
|
||||||
|
}[]
|
||||||
|
>([]);
|
||||||
|
|
||||||
//const projects = ref<{ name: string; link: string; members: string[] }[]>([]);
|
const fallbackProjects = [
|
||||||
|
|
||||||
/* 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", // to test
|
link: "/canvas",
|
||||||
members: ["Alice", "Bob", "Charlie"],
|
members: ["Alice", "Bob", "Charlie"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Projet Beta",
|
name: "Projet Beta",
|
||||||
link: "./canvas", // to test
|
link: "./canvas",
|
||||||
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 ||
|
||||||
piair
commented
what is that for ? what is that for ?
|
|||||||
|
"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;
|
||||||
|
});
|
||||||
|
},
|
||||||
piair
commented
same comment for CSS same comment for CSS
|
|||||||
|
(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" },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user
remove this comment