Filter departures only for trains that are generally not intended to be used on this connection
This commit is contained in:
parent
e0a350725e
commit
b2c24df08a
25
src/main.rs
25
src/main.rs
@ -2,6 +2,7 @@ use axum::{
|
||||
extract::{
|
||||
State,
|
||||
Path,
|
||||
Query,
|
||||
},
|
||||
http::StatusCode,
|
||||
response::Html,
|
||||
@ -59,6 +60,10 @@ struct AppState {
|
||||
stations: HashMap<String, Station>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct RoutingQuery {
|
||||
all: Option<String>,
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
@ -175,7 +180,8 @@ async fn route_station_overview(
|
||||
|
||||
async fn route_station_to_dest_station(
|
||||
State(state): State<AppState>,
|
||||
Path((station_id, dest_station_id)): Path<(String, String)>
|
||||
Path((station_id, dest_station_id)): Path<(String, String)>,
|
||||
query: Query<RoutingQuery>,
|
||||
) -> Result<Html<String>, (StatusCode, String)> {
|
||||
if !state.stations.contains_key(&station_id) {
|
||||
return Err((StatusCode::NOT_FOUND, String::from("Unknown departing station")));
|
||||
@ -216,9 +222,26 @@ async fn route_station_to_dest_station(
|
||||
|
||||
out.push_str("<html><body>\n");
|
||||
out.push_str(&format!("<h1>Abfahren für {} nach {}</h1>\n", station_properties.name, dest_station_properties.name));
|
||||
|
||||
let display_all_departures = match query.all {
|
||||
Some(_) => true,
|
||||
None => false,
|
||||
};
|
||||
|
||||
if display_all_departures {
|
||||
out.push_str("<a href=\"?\">Don't show all departures</a>\n");
|
||||
}
|
||||
else {
|
||||
out.push_str("<a href=\"?all=1\">Show all departures</a>\n");
|
||||
}
|
||||
|
||||
out.push_str("<ul>\n");
|
||||
|
||||
for departure in stationdata.departures {
|
||||
if !display_all_departures && !vec![String::from("ICE"), String::from("IC"), String::from("EC")].contains(&departure.train.r#type) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let departure_info = match departure.departure {
|
||||
Some(d) => d,
|
||||
None => continue,
|
||||
|
Loading…
Reference in New Issue
Block a user