switch from html table to css grid for better html parsability

This commit is contained in:
Mark 2025-06-26 13:04:12 +02:00
parent 98a697f576
commit 8f9c90a689
2 changed files with 64 additions and 16 deletions

View File

@ -5,11 +5,6 @@
<meta name="color-scheme" content="light dark">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>merklingen connection check</title>
<style>
td {
width: 45%;
}
</style>
</head>
<body>
<h2>Merklingen <small><small>Schwäbische Alb</small></small></h2>

View File

@ -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#"<table style="width:100%;">"#);
let mut table_rows = BTreeMap::<_, (String, String, usize, usize)>::new();
departures_str.push_str(r#"<div style="display:grid;width:100%;">"#);
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 = "<div>".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("</div>");
}
dep_str.push_str("</div>");
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("<tr><td>");
departures_str.push_str(&a);
departures_str.push_str("</td><td>");
departures_str.push_str(&b);
departures_str.push_str("</td></tr>");
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#"<!-- Departures towards Ulm -->"#);
} else {
departures_str.push_str(r#"<!-- Other Departures -->"#);
}
departures_str.push('\n');
}
departures_str.push_str(&format!(
r#"<div class="{}" style="grid-column:1;grid-row:{}">"#,
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("</div>\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#"<!-- Departures towards Wendlingen -->"#);
} else {
departures_str.push_str(r#"<!-- Other Departures -->"#);
}
departures_str.push('\n');
}
departures_str.push_str(&format!(
r#"<div class="{}" style="grid-column:2;grid-row:{}">"#,
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("</div>\n");
}
}
}
departures_str.push_str("</table>");
departures_str.push_str("</div>");
departures_str
}
Some((_, Err(e), _)) => format!("<small>{}</small>", html_escape::encode_safe(e)),