From a0d4fcda9233fa4be2bec263ccbda5faf996f362 Mon Sep 17 00:00:00 2001 From: Steppy Date: Thu, 13 Feb 2025 10:50:19 +0100 Subject: [PATCH] Take over some changes from dev but keep everything in a working state --- Cargo.toml | 7 ++++--- src/lib.rs | 28 ---------------------------- src/main.rs | 19 +++++++++++++++++++ src/session_date_calculator.rs | 3 ++- src/webpage.rs | 25 ++++++++++++++++++++++--- 5 files changed, 47 insertions(+), 35 deletions(-) delete mode 100644 src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index 09b6b0e..0ac335d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,8 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -chrono = "0.4.39" -clap = { version = "4.5.28", features = ["derive"] } -leptos = { version = "0.7.5", features = ["csr"] } +chrono = { version = "0.4", features = ["serde"] } +leptos = { version = "0.7", features = ["csr"] } console_error_panic_hook = "0.1.7" +serde = { version = "1.0", features = ["derive"] } +gloo-net = "0.6.0" diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index 74dc6dd..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,28 +0,0 @@ -use crate::session_date_calculator::{Day, NthWeekday}; -use chrono::Weekday; -use clap::Parser; - -pub mod session_date_calculator; - -#[derive(Debug, Parser)] -pub struct StartArgs { - /// on which days of the month there are sessions - #[arg(long = "sessions", num_args = 1..)] - pub session_days: Vec -} - -pub fn localize_day(day: &Day) -> String { - format!( - "{}, {}", - match day.weekday { - Weekday::Mon => "Montag", - Weekday::Tue => "Dienstag", - Weekday::Wed => "Mittwoch", - Weekday::Thu => "Donnerstag", - Weekday::Fri => "Freitag", - Weekday::Sat => "Samstag", - Weekday::Sun => "Sonntag", - }, - day.date.format("%d.%m.%Y") - ) -} diff --git a/src/main.rs b/src/main.rs index 58cb77a..95424e9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,8 @@ mod webpage; +mod session_date_calculator; +use crate::session_date_calculator::Day; +use chrono::Weekday; use leptos::prelude::*; fn main() { @@ -7,3 +10,19 @@ fn main() { mount_to_body(webpage::App); } + +pub fn localize_day(day: &Day) -> String { + format!( + "{}, {}", + match day.weekday { + Weekday::Mon => "Montag", + Weekday::Tue => "Dienstag", + Weekday::Wed => "Mittwoch", + Weekday::Thu => "Donnerstag", + Weekday::Fri => "Freitag", + Weekday::Sat => "Samstag", + Weekday::Sun => "Sonntag", + }, + day.date.format("%d.%m.%Y") + ) +} \ No newline at end of file diff --git a/src/session_date_calculator.rs b/src/session_date_calculator.rs index 68015a5..01f1b7f 100644 --- a/src/session_date_calculator.rs +++ b/src/session_date_calculator.rs @@ -1,10 +1,11 @@ use chrono::{Datelike, Days, Local, NaiveDate, ParseWeekdayError, Weekday}; +use serde::{Deserialize, Serialize}; use std::error::Error; use std::fmt::{Display, Formatter}; use std::num::ParseIntError; use std::str::FromStr; -#[derive(Debug, Copy, Clone)] +#[derive(Debug, Copy, Clone, Serialize, Deserialize)] pub struct NthWeekday { pub n: u8, pub weekday: Weekday, diff --git a/src/webpage.rs b/src/webpage.rs index b5ef2a8..bc2b339 100644 --- a/src/webpage.rs +++ b/src/webpage.rs @@ -1,11 +1,30 @@ use leptos::prelude::*; +use leptos::server_fn::request::browser::Request; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Config { + pub motd: String, +} #[component] pub fn App() -> impl IntoView { let (count, set_count) = signal(0); - + let config = LocalResource::new(load_config); + view! { - -

"Double count: " {move || count.get() * 2}

+
+
+

"Anstehende Proben Termine"

+

"TODO motd"

+ +
+
} } + + + +async fn load_config() -> std::result::Result { + Request::get("/config.json").send().await?.json::().await +}