diff --git a/src/app/components/mod.rs b/src/app/components/mod.rs
index 4ddb237..eda6e7e 100644
--- a/src/app/components/mod.rs
+++ b/src/app/components/mod.rs
@@ -16,7 +16,7 @@ pub use top_component::TopComponent;
mod project;
-pub use project::{ProjectContainer, Project};
+pub use project::{ProjectList, ProjectElement};
mod timeline;
diff --git a/src/app/components/mon_parcours.rs b/src/app/components/mon_parcours.rs
index 598c243..b0ae8a7 100644
--- a/src/app/components/mon_parcours.rs
+++ b/src/app/components/mon_parcours.rs
@@ -1,5 +1,3 @@
-use std::collections::HashMap;
-use std::rc::Rc;
use leptos::*;
use super::{
@@ -10,12 +8,11 @@ use super::{
TimelineCard,
TimelineCardSummary,
TimelineCardTag,
- TimelineCardContent
+ TimelineCardContent,
+ ProjectList,
+ ProjectElement
};
-// Lang
-// const CPP_TAG =
-//
// // Other
// const REACT_TAG =
// const SYMFONY_4_TAG =
@@ -42,19 +39,59 @@ use super::{
// const ROCKET_RS_TAG =
// const ACTIX_WEB_TAG =
+#[derive(Copy, Clone)]
+struct Lang<'a> {
+ pub lang : &'a str,
+ pub url : &'a str,
+}
+
+impl<'a> IntoView for Lang<'a> {
+ fn into_view(self) -> View {
+ let url = self.url.to_string();
+ let lang = self.lang.to_string();
+ view! {
+
+ { lang }
+
+ }
+ }
+}
+
+// Lang
+const RUST_TAG : Lang<'static> = Lang { lang: "Rust", url: "https://www.rust-lang.org/" };
+const JAVA_TAG : Lang<'static> = Lang { lang: "Java", url: "https://www.java.com/fr/" };
+const CPP_TAG : Lang<'static> = Lang { lang: "C++", url: "https://isocpp.org/" };
+
+// Other
+const REACT_TAG : Lang<'static> = Lang { lang: "React", url: "https://fr.legacy.reactjs.org/" };
+const SYMFONY_4_TAG : Lang<'static> = Lang { lang: "Symfony", url: "https://symfony.com/" };
+const FLUTTER_TAG : Lang<'static> = Lang { lang: "Flutter", url: "https://flutter.dev/" };
+const RUBY_ON_RAILS_TAG : Lang<'static> = Lang { lang: "Ruby on rails", url: "https://rubyonrails.org/" };
+const HOTWIRED_TAG : Lang<'static> = Lang { lang: "Hotwired", url: "https://hotwired.dev/" };
+const DOCKER_TAG : Lang<'static> = Lang { lang: "Docker", url: "https://www.docker.com/" };
+const STEAM_TAG : Lang<'static> = Lang { lang: "Steam API", url: "https://partner.steamgames.com/doc/sdk/api/example" };
+const GITLAB_CI_TAG : Lang<'static> = Lang { lang: "Gitlab CI", url: "https://docs.gitlab.com/ee/ci/" };
+const UNITY_TAG : Lang<'static> = Lang { lang: "Unity 3D", url: "https://unity.com/fr" };
+const WORDPRESS_TAG : Lang<'static> = Lang { lang: "Wordpress", url: "https://wordpress.com/fr/" };
+const CORDOVA_TAG : Lang<'static> = Lang { lang: "Cordova", url: "https://cordova.apache.org/" };
+const ELECTRON_TAG : Lang<'static> = Lang { lang: "Electron", url: "https://www.electronjs.org/" };
+const LWJGL_TAG : Lang<'static> = Lang { lang: "LWJGL", url: "https://www.lwjgl.org/" };
+const OPENGL_TAG : Lang<'static> = Lang { lang: "OpenGL", url: "https://www.opengl.org/" };
+const VULKAN_TAG : Lang<'static> = Lang { lang: "Vulkan", url: "https://www.vulkan.org/" };
+const MIDI_TAG : Lang<'static> = Lang { lang: "MIDI", url: "https://fr.wikipedia.org/wiki/Musical_Instrument_Digital_Interface" };
+const REQUIREJS_TAG : Lang<'static> = Lang { lang: "RequireJS", url: "https://requirejs.org/" };
+const WEBPACK_TAG : Lang<'static> = Lang { lang: "Webpack", url: "https://webpack.js.org/" };
+const VITE_TAG : Lang<'static> = Lang { lang: "Vite", url: "https://vitejs.dev/" };
+const MAVEN_TAG : Lang<'static> = Lang { lang: "Maven", url: "https://maven.apache.org/" };
+const GRADLE_TAG : Lang<'static> = Lang { lang: "Gradle", url: "https://gradle.org/" };
+const BABYLONJS_TAG : Lang<'static> = Lang { lang: "BabylonJS", url: "https://www.babylonjs.com/" };
+const ROCKET_RS_TAG : Lang<'static> = Lang { lang: "Rocket", url: "https://rocket.rs/" };
+const ACTIX_WEB_TAG : Lang<'static> = Lang { lang: "Actix Web", url: "https://actix.rs/" };
+const LEPTOS_TAG : Lang<'static> = Lang { lang: "Leptos", url: "https://leptos.dev/" };
+
+
#[component]
pub fn MonParcours() -> impl IntoView {
- let tools = Rc::from(HashMap::from([
- ("Rust", "https://www.rust-lang.org/"),
- ("Java", "https://www.java.com/fr/"),
- ("C++", "https://isocpp.org/")
- ]));
-
- let to_tag = |tools: &HashMap<&str, &str>, lang: &str| {
- let url = tools.get(lang).unwrap_or(&"");
- view! { Rust }
- };
-
view! {
@@ -62,7 +99,15 @@ pub fn MonParcours() -> impl IntoView {
r"2019 - Aujourd’hui"
- { to_tag(tools.as_ref(), "Rust") }
+ { REACT_TAG }
+ { SYMFONY_4_TAG }
+ { FLUTTER_TAG }
+ { RUBY_ON_RAILS_TAG }
+ { HOTWIRED_TAG }
+ { RUST_TAG }
+ { WEBPACK_TAG }
+ { VITE_TAG }
+ { GRADLE_TAG }
r"Développeur d’application Web, Mobile et Système (CDI)"
@@ -73,6 +118,21 @@ pub fn MonParcours() -> impl IntoView {
11 Septembre 2019 - Toujours en CDI
+
+
+ { RUST_TAG }
+ { VULKAN_TAG }
+ r"Développement 3D (Perso)"
+
+
+ Je développe un petit moteur 3D pour apprendre à utiliser Vulkan, mais aussi pour prendre en expérience en Rust
+
+
+ Projet pour apprendre
+ Le but, refaire mon vieux projet de voxel pour progresser en Rust et Vulkan
+
+
+
diff --git a/src/app/components/project.rs b/src/app/components/project.rs
index 6deb1f2..3afb299 100644
--- a/src/app/components/project.rs
+++ b/src/app/components/project.rs
@@ -1,7 +1,7 @@
use leptos::*;
#[component]
-pub fn ProjectContainer(
+pub fn ProjectList(
children: Children
) -> impl IntoView {
view! {
@@ -12,7 +12,7 @@ pub fn ProjectContainer(
}
#[component]
-pub fn Project(
+pub fn ProjectElement(
children: Children,
#[prop(optional)]
image_src: Option,