import SingleProject from "../SingleProject/SingleProject.jsx"; import "./Projects.css" import React, {useEffect, useState} from "react"; import {Link, useLocation} from "react-router-dom"; import NavBar from "../NavBar/NavBar.jsx"; import Filter from "../../pages/Projects/components/Filter/Filter.jsx"; function Projects() { const [projects, setProjects] = useState([]); const [error, setError] = useState(null); const location = useLocation(); const [filters, setFilters] = useState({ category: [], technology: [], yearOrder: "asc", }); useEffect(() => { const fetchProjects = async () => { try { const response = await fetch('/api/shortProjects/'); if (!response.ok) { throw new Error(`Erreur HTTP: ${response.status}`); } const data = await response.json(); setProjects(data.data); } catch (err) { setError(err.message); } }; fetchProjects(); }, []); if (error) { return
Error retrieving data: {error}
; } if (location.pathname === '/') { return (

Projects

{projects .filter(project => project.id <= 3) .map(project => ( ))}
Show more
) }else if (location.pathname === '/projects') { return (

All Projects

Here you can find a collection of my work.

{projects .filter(project => { const categoryFilters = filters.category; if (categoryFilters.length > 0) { const isSchool = project.school === 1; const isFilterSchool = categoryFilters.includes("school"); const isFilterPersonal = categoryFilters.includes("personal"); if ((isSchool && !isFilterSchool) || (!isSchool && !isFilterPersonal)) { return false; } } if (filters.technology.length > 0) { const isSkill = filters.technology.every(tech => project.skills.includes(tech)); if(!isSkill){ return false } } return true; }) .sort((a, b) => { const aInProgress = !a.end_year; const bInProgress = !b.end_year; if (filters.yearOrder === "asc") { const yearDiff = a.beginning_year - b.beginning_year; if (yearDiff !== 0) return yearDiff; if (!aInProgress && bInProgress) return -1; if (aInProgress && !bInProgress) return 1; return 0; } else if (filters.yearOrder === "desc") { const yearDiff = b.beginning_year - a.beginning_year; if (yearDiff !== 0) return yearDiff; if (aInProgress && !bInProgress) return -1; if (!aInProgress && bInProgress) return 1; return 0; } else { return 0; } }) .map(project => ( ))}
← Back to Home
) } } export default Projects