From 8f9c90a6892bc4c98aacbd12dc3d7388314f1a46 Mon Sep 17 00:00:00 2001 From: Mark <> Date: Thu, 26 Jun 2025 13:04:12 +0200 Subject: [PATCH] switch from html table to css grid for better html parsability --- src/index.html | 5 ---- src/main.rs | 75 ++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 64 insertions(+), 16 deletions(-) diff --git a/src/index.html b/src/index.html index 45c99db..c7ea43c 100644 --- a/src/index.html +++ b/src/index.html @@ -5,11 +5,6 @@ merklingen connection check -

Merklingen Schwäbische Alb

diff --git a/src/main.rs b/src/main.rs index aea2f2e..7845e9c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -98,8 +98,9 @@ async fn index( let departures_str = match &*departures { Some((_, Ok(departures), _)) => { let mut departures_str = String::new(); - departures_str.push_str(r#""#); - let mut table_rows = BTreeMap::<_, (String, String, usize, usize)>::new(); + departures_str.push_str(r#"
"#); + departures_str.push('\n'); + let mut table_rows = BTreeMap::<_, (String, String, usize, usize, bool)>::new(); for departure in &departures.entries { let mut messages = vec![]; for departure in departure.iter() { @@ -155,7 +156,7 @@ async fn index( _ => None, } }); - let mut dep_str = "
".to_owned(); + let mut dep_str = "".to_owned(); dep_str.push_str(html_escape::encode_safe(line_name).as_ref()); let platform = departure .platform @@ -241,7 +242,7 @@ async fn index( html_escape::encode_safe_to_string(message, &mut dep_str); dep_str.push_str("
"); } - dep_str.push_str("
"); + row.4 = is_ulm.is_some(); match is_ulm { Some(true) => { row.0.push_str(&dep_str); @@ -264,14 +265,66 @@ async fn index( } } } - for ((_date, _hour, _late_half), (a, b, _, _)) in table_rows { - departures_str.push_str(""); + for should_be_sure in [true, false] { + let mut unused = true; + for (i, ((_date, _hour, _late_half), (dep_html, _, _, _, sure))) in + table_rows.iter().enumerate() + { + if *sure == should_be_sure { + if unused { + unused = false; + if should_be_sure { + departures_str.push_str(r#""#); + } else { + departures_str.push_str(r#""#); + } + departures_str.push('\n'); + } + departures_str.push_str(&format!( + r#"
"#, + if *sure { + "bahn-departure bahn-direction-ulm" + } else { + "bahn-departure bahn-direction-unsure" + }, + i + 1 + )); + departures_str.push_str(dep_html); + departures_str.push_str("
\n"); + } + } + if should_be_sure { + unused = true; + } + for (i, ((_date, _hour, _late_half), (_, dep_html, _, _, sure))) in + table_rows.iter().enumerate() + { + if *sure == should_be_sure { + if unused { + unused = false; + if should_be_sure { + departures_str + .push_str(r#""#); + } else { + departures_str.push_str(r#""#); + } + departures_str.push('\n'); + } + departures_str.push_str(&format!( + r#"
"#, + if *sure { + "bahn-departure bahn-direction-wendlingen" + } else { + "bahn-departure bahn-direction-unsure" + }, + i + 1 + )); + departures_str.push_str(dep_html); + departures_str.push_str("
\n"); + } + } } - departures_str.push_str("
"); - departures_str.push_str(&a); - departures_str.push_str(""); - departures_str.push_str(&b); - departures_str.push_str("
"); + departures_str.push_str(""); departures_str } Some((_, Err(e), _)) => format!("{}", html_escape::encode_safe(e)),