Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2ab10c7803 | |||
| f5441f038c | |||
| e92c4227d8 | |||
| 6640136fd9 | |||
| 285daa7d54 | |||
| 56f475839d | |||
| cc8d3c78cd | |||
| 1b675fdd3e | |||
| 37a113fbf6 | |||
| 5401774e0e | |||
| b142112ce0 | |||
| 75d4f5d166 | |||
| dfbe3123d5 | |||
| 41dc079844 | |||
| 65060c6875 | |||
| 1127a608bd | |||
| 1a26e0d2d8 | |||
| 743160af3c | |||
| 9b17d23901 | |||
| c41760c313 | |||
| 540bf7efec | |||
| fe2abff5e5 | |||
| 40d8c49908 | |||
| 3728385ebc | |||
| cc7c586d4a | |||
| 1ec3121bc1 | |||
| 9700ae889e |
@@ -20,12 +20,12 @@ function Projects() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchProjects = async () => {
|
const fetchProjects = async () => {
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/api/shortProjects/');
|
const response = await fetch('/api/projects/');
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||||
}
|
}
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
setProjects(data.data);
|
setProjects(data);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setError(err.message);
|
setError(err.message);
|
||||||
}
|
}
|
||||||
@@ -88,7 +88,7 @@ function Projects() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (filters.technology.length > 0) {
|
if (filters.technology.length > 0) {
|
||||||
const isSkill = filters.technology.every(tech => project.skills.includes(tech));
|
const isSkill = filters.technology.every(tech => project.skills.some(skill => skill.name === tech));
|
||||||
if(!isSkill){
|
if(!isSkill){
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ function SingleProject({ image, title, description, skills, id, school, beginnin
|
|||||||
|
|
||||||
<ul className="single-project-skills-list">
|
<ul className="single-project-skills-list">
|
||||||
{skills.map((skill) => (
|
{skills.map((skill) => (
|
||||||
<li key={skill}>
|
<li key={skill.id}>
|
||||||
<SkillCard text={skill} />
|
<SkillCard text={skill.name} />
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -4,30 +4,22 @@ import React, {useEffect, useState} from "react";
|
|||||||
|
|
||||||
function Experiences() {
|
function Experiences() {
|
||||||
const [experiences, setExperiences] = useState([]);
|
const [experiences, setExperiences] = useState([]);
|
||||||
const [experienceTasks, setExperienceTasks] = useState([]);
|
|
||||||
const [error, setError] = useState(null);
|
const [error, setError] = useState(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchExperiencesAndTasks = async () => {
|
const fetchExperiences = async () => {
|
||||||
try {
|
try {
|
||||||
let response = await fetch('/api/experiences/');
|
let response = await fetch('/api/experiences/');
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||||
}
|
}
|
||||||
let data = await response.json();
|
let data = await response.json();
|
||||||
setExperiences(data.data);
|
setExperiences(data);
|
||||||
|
|
||||||
response = await fetch('/api/experienceTasks/');
|
|
||||||
if (!response.ok) {
|
|
||||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
|
||||||
}
|
|
||||||
data = await response.json();
|
|
||||||
setExperienceTasks(data.data);
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setError(err.message);
|
setError(err.message);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
fetchExperiencesAndTasks();
|
fetchExperiences();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
@@ -39,7 +31,7 @@ function Experiences() {
|
|||||||
<h1 className="section-title">Experiences</h1>
|
<h1 className="section-title">Experiences</h1>
|
||||||
<div className="experiences-container">
|
<div className="experiences-container">
|
||||||
{experiences.map((exp) => (
|
{experiences.map((exp) => (
|
||||||
<SingleExperience experience={exp} tasks={experienceTasks.filter(task => task.experience_id === exp.id)}/>
|
<SingleExperience experience={exp}/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import './SingleExperience.css';
|
import './SingleExperience.css';
|
||||||
|
|
||||||
function SingleExperience({ experience, tasks }) {
|
function SingleExperience({ experience }) {
|
||||||
return (
|
return (
|
||||||
<div className="experience-card">
|
<div className="experience-card">
|
||||||
<div className="experience-card-left">
|
<div className="experience-card-left">
|
||||||
@@ -11,7 +11,7 @@ function SingleExperience({ experience, tasks }) {
|
|||||||
<div className="experience-card-right">
|
<div className="experience-card-right">
|
||||||
<h3 className="experience-role">{experience.role}</h3>
|
<h3 className="experience-role">{experience.role}</h3>
|
||||||
<ul className="experience-tasks">
|
<ul className="experience-tasks">
|
||||||
{tasks.map((task) => (
|
{experience.tasks.map((task) => (
|
||||||
<li>{task.description}</li>
|
<li>{task.description}</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ function Skills() {
|
|||||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||||
}
|
}
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
setSkills(data.data);
|
setSkills(data);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setError(err.message);
|
setError(err.message);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ function ProjectDetailsPage() {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchProject = async () => {
|
const fetchProject = async () => {
|
||||||
try {
|
try {
|
||||||
const response = await fetch(`/api/longProjects/${id}`);
|
const response = await fetch(`/api/projects/${id}`);
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ function ProjectDetails({project}) {
|
|||||||
<ul>
|
<ul>
|
||||||
{project.skills && project.skills.map((skill) => (
|
{project.skills && project.skills.map((skill) => (
|
||||||
<li>
|
<li>
|
||||||
<SkillCard text={skill} />
|
<SkillCard text={skill.name} />
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ function Filter({ filters, setFilters }) {
|
|||||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||||
}
|
}
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
setSkills(data.data);
|
setSkills(data);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setError(err.message);
|
setError(err.message);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user