paiagram/interface/tabs/
station_timetable.rs1use crate::{
2 basic::TimetableTime,
3 interface::UiCommand,
4 intervals::{Depot, Station},
5 vehicle_set::VehicleSet,
6 vehicles::{DepartureType, Schedule, TimetableEntry, Vehicle},
7};
8use bevy::ecs::{
9 entity::Entity,
10 hierarchy::{ChildOf, Children},
11 message::MessageWriter,
12 name::Name,
13 query::With,
14 system::{In, InMut, Query},
15};
16
17pub fn show_station_timetable(
19 (InMut(ui), In((vehicle_set, station))): (InMut<egui::Ui>, In<(Entity, Entity)>),
20 station_names: Query<(&Name, Option<&Depot>), With<Station>>,
21 vehicle_sets: Query<&Children, With<VehicleSet>>,
22 vehicles: Query<(Entity, &Name, &Schedule), With<Vehicle>>,
23 timetable_entries: Query<(&TimetableEntry, &ChildOf)>,
24 mut msg_open_tab: MessageWriter<UiCommand>,
25) {
26 let stopping_vehicles = timetable_entries
28 .iter()
29 .filter_map(|(entry, parent_vehicle)| {
30 if entry.station == station && !matches!(entry.departure, DepartureType::NonStop) {
31 Some((entry, parent_vehicle.0))
32 } else {
33 None
34 }
35 });
36}