From 807b6c2735d80adead7f38095aeffef9491df31c Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Thu, 12 Oct 2023 09:10:17 +0200 Subject: [PATCH] Fix tags + add elements --- src/app/components/mod.rs | 2 +- src/app/components/mon_parcours.rs | 96 ++++++++++++++++++++++++------ src/app/components/project.rs | 4 +- 3 files changed, 81 insertions(+), 21 deletions(-) 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,