customizable index.html
This commit is contained in:
parent
7435065d18
commit
fe41a083c9
@ -1,3 +1,4 @@
|
|||||||
|
<br><br><br>
|
||||||
<h2>Streiks und Ausfälle</h2>
|
<h2>Streiks und Ausfälle</h2>
|
||||||
<!-- insert p element ^here^ for each known thing -->
|
<!-- insert p element ^here^ for each known thing -->
|
||||||
<p>
|
<p>
|
||||||
|
@ -71,8 +71,8 @@ async function con(change) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<p>
|
||||||
<div>Zum Bahnhof Merklingen <small>(Ankunft 8:40 <small> | Heute wenn es noch nicht 8:30 ist, sonst wird Bus von morgen geprüft</small>)</small> von</div>
|
<div>Zum Bahnhof Merklingen <small>(Ankunft 8:40 <small> | Heute wenn es noch nicht 8:30 ist, sonst wird Bus von morgen geprüft</small>)</small> von</div>
|
||||||
<div>
|
|
||||||
<button id="widderstall" onclick="con('967Widderstall')">Widderstall</button> /
|
<button id="widderstall" onclick="con('967Widderstall')">Widderstall</button> /
|
||||||
<button id="hohenstadt_kirche" onclick="con('967HohenstadtKirche')">Hohenstadt<small> Kirche</small></button> /
|
<button id="hohenstadt_kirche" onclick="con('967HohenstadtKirche')">Hohenstadt<small> Kirche</small></button> /
|
||||||
<button id="hohenstadt_waltertal" onclick="con('967HohenstadtWaltertal')">Hohenstadt<small> Abzw. Waltertal</small></button> /
|
<button id="hohenstadt_waltertal" onclick="con('967HohenstadtWaltertal')">Hohenstadt<small> Abzw. Waltertal</small></button> /
|
||||||
@ -86,15 +86,11 @@ async function con(change) {
|
|||||||
<button id="wiesensteig_schöntalweg" onclick="con('967WiesensteigSchontalweg')">Wiesensteig<small> Schöntalweg</small></button> /
|
<button id="wiesensteig_schöntalweg" onclick="con('967WiesensteigSchontalweg')">Wiesensteig<small> Schöntalweg</small></button> /
|
||||||
<button id="wiesensteig_brunnengarten" onclick="con('967WiesensteigBrunnengarten')">Wiesensteig<small> Brunnengarten</small></button> /
|
<button id="wiesensteig_brunnengarten" onclick="con('967WiesensteigBrunnengarten')">Wiesensteig<small> Brunnengarten</small></button> /
|
||||||
<button id="wiesensteig_rathaus" onclick="con('967WiesensteigRathaus')">Wiesensteig<small> Rathaus</small></button>
|
<button id="wiesensteig_rathaus" onclick="con('967WiesensteigRathaus')">Wiesensteig<small> Rathaus</small></button>
|
||||||
</div>
|
</p>
|
||||||
<script>con();</script>
|
<script>con();</script>
|
||||||
<br><br>
|
<br><br>
|
||||||
<hr>
|
<hr>
|
||||||
<br><br>
|
<br><br>
|
||||||
%%MESSAGE%%
|
|
||||||
<br><br>
|
|
||||||
<hr>
|
|
||||||
<br><br>
|
|
||||||
<p>
|
<p>
|
||||||
Diese Seite soll eine einfache Möglichkeit darstellen, zu prüfen,
|
Diese Seite soll eine einfache Möglichkeit darstellen, zu prüfen,
|
||||||
ob der Bus und Zug von/nach Merklingen heute kommt, oder ob er mal wieder streikt oder aus sonstigen Gründen fehlt.<br>
|
ob der Bus und Zug von/nach Merklingen heute kommt, oder ob er mal wieder streikt oder aus sonstigen Gründen fehlt.<br>
|
||||||
|
45
src/main.rs
45
src/main.rs
@ -15,7 +15,11 @@ async fn rocket() -> _ {
|
|||||||
rocket::build()
|
rocket::build()
|
||||||
.manage(Arc::new(()))
|
.manage(Arc::new(()))
|
||||||
.manage(Mutex::new(
|
.manage(Mutex::new(
|
||||||
Option::<(Instant, Result<bahnhof::DeparturesMerklingen, String>)>::None,
|
Option::<(
|
||||||
|
Instant,
|
||||||
|
Result<bahnhof::DeparturesMerklingen, String>,
|
||||||
|
String,
|
||||||
|
)>::None,
|
||||||
))
|
))
|
||||||
.mount(
|
.mount(
|
||||||
"/",
|
"/",
|
||||||
@ -33,16 +37,30 @@ async fn rocket() -> _ {
|
|||||||
|
|
||||||
#[get("/")]
|
#[get("/")]
|
||||||
async fn index(
|
async fn index(
|
||||||
departures: &State<Mutex<Option<(Instant, Result<bahnhof::DeparturesMerklingen, String>)>>>,
|
departures: &State<
|
||||||
|
Mutex<
|
||||||
|
Option<(
|
||||||
|
Instant,
|
||||||
|
Result<bahnhof::DeparturesMerklingen, String>,
|
||||||
|
String,
|
||||||
|
)>,
|
||||||
|
>,
|
||||||
|
>,
|
||||||
) -> RawHtml<String> {
|
) -> RawHtml<String> {
|
||||||
let mut departures = departures.lock().await;
|
let mut departures = departures.lock().await;
|
||||||
if departures.as_ref().is_none_or(|(last_updated, result)| {
|
if departures.as_ref().is_none_or(|(last_updated, result, _)| {
|
||||||
last_updated.elapsed() > Duration::from_secs(30 * if result.is_ok() { 5 } else { 1 })
|
last_updated.elapsed() > Duration::from_secs(30 * if result.is_ok() { 5 } else { 1 })
|
||||||
}) {
|
}) {
|
||||||
*departures = Some((Instant::now(), bahnhof::departures_merklingen().await))
|
*departures = Some((
|
||||||
|
Instant::now(),
|
||||||
|
bahnhof::departures_merklingen().await,
|
||||||
|
tokio::fs::read_to_string("index.html")
|
||||||
|
.await
|
||||||
|
.unwrap_or_else(|_| include_str!("index.html").to_owned()),
|
||||||
|
));
|
||||||
}
|
}
|
||||||
let departures_str = match &*departures {
|
let departures_str = match &*departures {
|
||||||
Some((_, Ok(departures))) => {
|
Some((_, Ok(departures), _)) => {
|
||||||
let mut departures_str = String::new();
|
let mut departures_str = String::new();
|
||||||
departures_str.push_str(r#"<table style="width:100%;">"#);
|
departures_str.push_str(r#"<table style="width:100%;">"#);
|
||||||
let mut table_rows = BTreeMap::<_, (String, String, usize, usize)>::new();
|
let mut table_rows = BTreeMap::<_, (String, String, usize, usize)>::new();
|
||||||
@ -220,20 +238,15 @@ async fn index(
|
|||||||
departures_str.push_str("</table>");
|
departures_str.push_str("</table>");
|
||||||
departures_str
|
departures_str
|
||||||
}
|
}
|
||||||
Some((_, Err(e))) => format!("<small>{}</small>", html_escape::encode_safe(e)),
|
Some((_, Err(e), _)) => format!("<small>{}</small>", html_escape::encode_safe(e)),
|
||||||
None => "<small>failed</small>".to_owned(),
|
None => "<small>failed</small>".to_owned(),
|
||||||
};
|
};
|
||||||
RawHtml(
|
RawHtml(
|
||||||
include_str!("index.html")
|
departures
|
||||||
.replace("%%DEPARTURES%%", &departures_str)
|
.as_ref()
|
||||||
.replace(
|
.map(|(_, _, index)| index.as_str())
|
||||||
"%%MESSAGE%%",
|
.unwrap_or(include_str!("index.html"))
|
||||||
tokio::fs::read_to_string("message.html")
|
.replace("%%DEPARTURES%%", &departures_str),
|
||||||
.await
|
|
||||||
.as_ref()
|
|
||||||
.map(|v| v.as_str())
|
|
||||||
.unwrap_or(""),
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user