Skip to content

Commit 977cb3f

Browse files
committed
editoast: example using model(uom_unit) for a Length
Signed-off-by: Tristram Gräbener <[email protected]>
1 parent 0dec7e8 commit 977cb3f

File tree

6 files changed

+17
-14
lines changed

6 files changed

+17
-14
lines changed

editoast/src/models/rolling_stock_model.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use power_restrictions::PowerRestriction;
1414
use serde::Deserialize;
1515
use serde::Serialize;
1616
use uom::si::acceleration::meter_per_second_squared;
17-
use uom::si::length::meter;
1817
use uom::si::velocity::meter_per_second;
1918

2019
use uom::si::f64::{Acceleration, Length, Velocity};
@@ -48,7 +47,8 @@ pub struct RollingStockModel {
4847
#[model(json)]
4948
#[schema(required)]
5049
pub metadata: Option<RollingStockMetadata>,
51-
pub length: f64,
50+
#[model(uom_unit = "uom::si::length::meter")]
51+
pub length: Length,
5252
pub max_speed: f64,
5353
pub startup_time: f64,
5454
pub startup_acceleration: f64,
@@ -153,7 +153,7 @@ impl From<RollingStockModel> for RollingStock {
153153
name: rolling_stock_model.name,
154154
effort_curves: rolling_stock_model.effort_curves,
155155
base_power_class: rolling_stock_model.base_power_class,
156-
length: Length::new::<meter>(rolling_stock_model.length),
156+
length: rolling_stock_model.length,
157157
max_speed: Velocity::new::<meter_per_second>(rolling_stock_model.max_speed),
158158
startup_time: rolling_stock_model.startup_time,
159159
startup_acceleration: Acceleration::new::<meter_per_second_squared>(
@@ -185,7 +185,7 @@ impl From<RollingStock> for RollingStockModelChangeset {
185185
.name(rolling_stock.name)
186186
.effort_curves(rolling_stock.effort_curves)
187187
.base_power_class(rolling_stock.base_power_class)
188-
.length(rolling_stock.length.get::<meter>())
188+
.length(rolling_stock.length)
189189
.max_speed(rolling_stock.max_speed.get::<meter_per_second>())
190190
.startup_time(rolling_stock.startup_time)
191191
.startup_acceleration(

editoast/src/views/path/pathfinding.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use serde::Deserialize;
1616
use serde::Serialize;
1717
use tracing::debug;
1818
use tracing::info;
19+
use uom::si::length::meter;
1920
use utoipa::ToSchema;
2021

2122
use crate::core::pathfinding::PathfindingCoreResult;
@@ -391,7 +392,7 @@ pub async fn pathfinding_from_train_batch(
391392
rolling_stock_supported_electrifications: rolling_stock.supported_electrification(),
392393
rolling_stock_supported_signaling_systems: rolling_stock.supported_signaling_systems.0,
393394
rolling_stock_maximum_speed: OrderedFloat(rolling_stock.max_speed),
394-
rolling_stock_length: OrderedFloat(rolling_stock.length),
395+
rolling_stock_length: OrderedFloat(rolling_stock.length.get::<meter>()),
395396
path_items: train_schedule
396397
.path
397398
.clone()

editoast/src/views/rolling_stock/form.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use serde::Deserialize;
1111
use serde::Serialize;
1212
use uom::si::acceleration::meter_per_second_squared;
1313
use uom::si::f64::{Acceleration, Length, Velocity};
14-
use uom::si::length::meter;
1514
use uom::si::velocity::meter_per_second;
1615
use utoipa::ToSchema;
1716
use validator::Validate;
@@ -65,7 +64,7 @@ impl From<RollingStockForm> for Changeset<RollingStockModel> {
6564
.name(rolling_stock.name)
6665
.effort_curves(rolling_stock.effort_curves)
6766
.base_power_class(rolling_stock.base_power_class)
68-
.length(rolling_stock.length.get::<meter>())
67+
.length(rolling_stock.length)
6968
.max_speed(rolling_stock.max_speed.get::<meter_per_second>())
7069
.startup_time(rolling_stock.startup_time)
7170
.startup_acceleration(
@@ -109,7 +108,7 @@ impl From<RollingStockModel> for RollingStockForm {
109108
name: value.name,
110109
effort_curves: value.effort_curves,
111110
base_power_class: value.base_power_class,
112-
length: Length::new::<meter>(value.length),
111+
length: value.length,
113112
max_speed: Velocity::new::<meter_per_second>(value.max_speed),
114113
startup_time: value.startup_time,
115114
startup_acceleration: Acceleration::new::<meter_per_second_squared>(

editoast/src/views/rolling_stock/light.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ use serde::Serialize;
1919
use std::collections::HashMap;
2020
use uom::si::acceleration::meter_per_second_squared;
2121
use uom::si::f64::{Acceleration, Length, Velocity};
22-
use uom::si::length::meter;
2322
use uom::si::velocity::meter_per_second;
2423
use utoipa::ToSchema;
2524

@@ -267,7 +266,7 @@ impl From<RollingStockModel> for LightRollingStock {
267266
locked,
268267
effort_curves: effort_curves.into(),
269268
base_power_class,
270-
length: Length::new::<meter>(length),
269+
length,
271270
max_speed: Velocity::new::<meter_per_second>(max_speed),
272271
startup_time,
273272
startup_acceleration: Acceleration::new::<meter_per_second_squared>(

editoast/src/views/timetable/stdcm.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -459,8 +459,8 @@ mod tests {
459459
use serde_json::json;
460460
use std::str::FromStr;
461461
use uom::si::acceleration::meter_per_second_squared;
462-
use uom::si::length::meter;
463-
use uom::si::length::millimeter;
462+
use uom::si::f64::{Acceleration, Length, Velocity};
463+
use uom::si::length::{meter, millimeter};
464464
use uom::si::velocity::meter_per_second;
465465
use uuid::Uuid;
466466

@@ -541,7 +541,10 @@ mod tests {
541541
let physics_consist: PhysicsConsist = simulation_parameters.into();
542542

543543
assert_eq!(physics_consist.mass, 123_u64);
544-
assert_eq!(physics_consist.length, Length::new::<millimeter>(455000.0)); // It should be converted in mm
544+
assert_eq!(
545+
physics_consist.length,
546+
uom::si::f64::Length::new::<millimeter>(455000.0)
547+
); // It should be converted in mm
545548
assert_eq!(
546549
physics_consist.max_speed,
547550
Velocity::new::<meter_per_second>(10_f64)

editoast/src/views/train_schedule/projection.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use std::hash::Hash;
1616
use std::hash::Hasher;
1717
use std::sync::Arc;
1818
use tracing::info;
19+
use uom::si::length::millimeter;
1920
use utoipa::ToSchema;
2021

2122
use super::TrainScheduleError;
@@ -320,7 +321,7 @@ async fn project_path(
320321
id,
321322
ProjectPathTrainResult {
322323
departure_time: train.start_time,
323-
rolling_stock_length: (length * 1000.) as u64,
324+
rolling_stock_length: length.get::<millimeter>() as u64,
324325
cached,
325326
},
326327
);

0 commit comments

Comments
 (0)