diff --git a/presentation/img/rust_code.png b/presentation/img/rust_code.png new file mode 100644 index 0000000..c0c9568 Binary files /dev/null and b/presentation/img/rust_code.png differ diff --git a/presentation/img/wasm_code.png b/presentation/img/wasm_code.png new file mode 100644 index 0000000..971d822 Binary files /dev/null and b/presentation/img/wasm_code.png differ diff --git a/presentation/img/web_app.png b/presentation/img/web_app.png new file mode 100644 index 0000000..4c57bfc Binary files /dev/null and b/presentation/img/web_app.png differ diff --git a/presentation/index.rst b/presentation/index.rst index 75ab213..422defb 100644 --- a/presentation/index.rst +++ b/presentation/index.rst @@ -18,11 +18,13 @@ Das Projekt .. rjs-div:: grid grid-cols-2 gap-8 - .. rjs-fragments:: fade-right + .. rjs-box:: bg-gray-700 rounded-3xl - - 👨🏻‍💻 Entwickler: Martin Kavik - - ⚖️ MIT-Lizenz - - 📅 Erstes Release: 2019 + .. rjs-fragments:: fade-right + + - 👨🏻‍💻 Entwickler: Martin Kavik + - ⚖️ MIT-Lizenz + - 📅 Erstes Release: 2019 .. image:: img/martin_kavik.png @@ -30,8 +32,10 @@ Das Projekt Architektur =========== -.. image:: img/diagram.svg - :width: 60% +.. rjs-box:: bg-gray-700 rounded-3xl text-center + + .. image:: img/diagram.svg + :width: 60% Code @@ -108,6 +112,28 @@ Setup #. Anwendung mit ``trunk serve`` kompilieren und live im Browser anzeigen #. Anwendung mit ``trunk build --release`` im Releasemodus kompilieren +.. rjs-effect:: + + .. rjs-div:: grid grid-cols-3 gap-8 mt-16 + + .. rjs-box:: bg-gray-700 rounded-3xl text-center + + Rust-Code + + .. image:: img/rust_code.png + + .. rjs-box:: bg-gray-700 rounded-3xl text-center + + WASM + + .. image:: img/wasm_code.png + + .. rjs-box:: bg-gray-700 rounded-3xl text-center + + Webbrowser + + .. image:: img/web_app.png + Ende ==== @@ -118,3 +144,19 @@ Ende .. image:: img/seed_logo.svg :width: 30% + +.. rjs-div:: grid grid-cols-2 gap-8 + + .. rjs-box:: bg-gray-700 rounded-3xl + + Webseite von Seed + + https://seed-rs.org + + .. rjs-box:: bg-gray-700 rounded-3xl + + Quellcode zu diese Präsentation + + https://code.thetadev.de/HSA/seed-presentation + + diff --git a/src/main.rs b/src/main.rs index e19a04f..c09a14b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,6 @@ use openmensa_rs::{request::MealRequest, Meal}; use seed::{prelude::*, *}; const DATE_ISO_FMT: &str = "%Y-%m-%d"; -const DATE_DE_FMT: &str = "%d.%m.%Y"; // ------ ------ // Init @@ -67,7 +66,36 @@ fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders) { // `view` describes what to display. fn view(model: &Model) -> Node { - div!["Hello World"] + div![ + h1![format!("Speiseplan vom {}", model.date.format("%d.%m.%Y"))], + input![ + attrs! { + At::Type => "date", + At::Value => model.date.format(DATE_ISO_FMT) + }, + input_ev(Ev::Input, Msg::SetDate), + ], + if &model.meals.len() > &0 { + view_meals(&model.meals) + } else { + p!["Kein Speiseplan verfügbar"] + }, + ] +} + +fn view_meals(meals: &[Meal]) -> Node { + ul![meals.iter().map(|meal| { + let price = meal.prices().students(); + let price_str = match price { + Some(p) => format!("{:.2} €", p), + None => String::from("unbekannt"), + }; + + li![ + el_key(&meal.id()), + format!("{} ({})", meal.name(), price_str), + ] + })] } // ------ ------