@@ -22,13 +22,15 @@ import SimulationWarpedMap from 'common/Map/WarpedMap/SimulationWarpedMap';
22
22
import { osrdEditoastApi , SimulationReport } from 'common/api/osrdEditoastApi' ;
23
23
24
24
import SimulationResultsMap from 'modules/simulationResult/components/SimulationResultsMap' ;
25
- import SpaceCurvesSlopes from 'modules/simulationResult/components/SpaceCurvesSlopes' ;
26
- import SpaceTimeChartIsolated from 'modules/simulationResult/components/SpaceTimeChart/withOSRDData' ;
27
- import SpeedSpaceChart from 'modules/simulationResult/components/SpeedSpaceChart/SpeedSpaceChart' ;
28
25
import TimeButtons from 'modules/simulationResult/components/TimeButtons' ;
29
26
// TIMELINE DISABLED // import TimeLine from 'modules/simulationResult/components/TimeLine/TimeLine';
30
27
import TrainDetails from 'modules/simulationResult/components/TrainDetails' ;
31
28
import DriverTrainSchedule from 'modules/trainschedule/components/DriverTrainSchedule/DriverTrainSchedule' ;
29
+ import getScaleDomainFromValues from 'modules/simulationResult/components/ChartHelpers/getScaleDomainFromValues' ;
30
+ import SpaceCurvesSlopes from 'modules/simulationResult/components/SpaceCurvesSlopes' ;
31
+ import SpeedSpaceChart from 'modules/simulationResult/components/SpeedSpaceChart/SpeedSpaceChart' ;
32
+ import SpaceTimeChartIsolated from 'modules/simulationResult/components/SpaceTimeChart/withOSRDData' ;
33
+ import { PositionScaleDomain } from 'modules/simulationResult/components/simulationResultsConsts' ;
32
34
33
35
const MAP_MIN_HEIGHT = 450 ;
34
36
@@ -62,6 +64,13 @@ export default function SimulationResults({
62
64
const [ initialHeightOfSpaceCurvesSlopesChart , setInitialHeightOfSpaceCurvesSlopesChart ] =
63
65
useState ( heightOfSpaceCurvesSlopesChart ) ;
64
66
67
+ // X scale domain shared between SpeedSpace and SpaceCurvesSlopes charts.
68
+ const [ positionScaleDomain , setPositionScaleDomain ] = useState < PositionScaleDomain > ( {
69
+ initial : [ ] ,
70
+ current : [ ] ,
71
+ source : undefined ,
72
+ } ) ;
73
+
65
74
const { data : selectedTrainSchedule } = osrdEditoastApi . endpoints . getTrainScheduleById . useQuery (
66
75
{
67
76
id : selectedTrain ?. id as number ,
@@ -106,6 +115,17 @@ export default function SimulationResults({
106
115
}
107
116
} , [ extViewport ] ) ;
108
117
118
+ useEffect ( ( ) => {
119
+ if ( selectedTrain ) {
120
+ const positions = selectedTrain . base . speeds . map ( ( speed ) => speed . position ) ;
121
+ const newPositionsScaleDomain = getScaleDomainFromValues ( positions ) ;
122
+ setPositionScaleDomain ( {
123
+ initial : newPositionsScaleDomain ,
124
+ current : newPositionsScaleDomain ,
125
+ } ) ;
126
+ }
127
+ } , [ selectedTrain ] ) ;
128
+
109
129
return simulation . trains . length === 0 && ! isUpdating ? (
110
130
< h1 className = "text-center mt-5" > { t ( 'noData' ) } </ h1 >
111
131
) : (
@@ -176,6 +196,8 @@ export default function SimulationResults({
176
196
selectedTrain = { selectedTrain }
177
197
timePosition = { timePosition }
178
198
trainRollingStock = { selectedTrainRollingStock }
199
+ sharedXScaleDomain = { positionScaleDomain }
200
+ setSharedXScaleDomain = { setPositionScaleDomain }
179
201
/>
180
202
</ div >
181
203
</ div >
@@ -210,6 +232,8 @@ export default function SimulationResults({
210
232
selectedTrain = { selectedTrain }
211
233
timePosition = { timePosition }
212
234
positionValues = { positionValues }
235
+ sharedXScaleDomain = { positionScaleDomain }
236
+ setSharedXScaleDomain = { setPositionScaleDomain }
213
237
/>
214
238
</ Rnd >
215
239
) }
0 commit comments