@@ -11,12 +11,7 @@ import type { Conflict, InfraState } from 'common/api/osrdEditoastApi';
11
11
import i18n from 'i18n' ;
12
12
import ConflictsList from 'modules/conflict/components/ConflictsList' ;
13
13
import { selectTrainToEdit } from 'reducers/osrdconf/operationalStudiesConf' ;
14
- import type {
15
- PacedTrainId ,
16
- TimetableItemId ,
17
- TrainScheduleId ,
18
- TrainScheduleResultWithTrainId ,
19
- } from 'reducers/osrdconf/types' ;
14
+ import type { TimetableItemId , TrainScheduleResultWithTrainId } from 'reducers/osrdconf/types' ;
20
15
import { updateSelectedTrainId } from 'reducers/simulationResults' ;
21
16
import {
22
17
getSelectedTrainId ,
@@ -33,7 +28,7 @@ import {
33
28
34
29
import PacedTrainItem from './PacedTrain/PacedTrainItem' ;
35
30
import TimetableToolbar from './TimetableToolbar' ;
36
- import TimetableTrainCard from './TimetableTrainCard ' ;
31
+ import TrainScheduleItem from './TrainScheduleItem ' ;
37
32
import type { PacedTrainWithResult , TimetableItemResult , TrainScheduleWithDetails } from './types' ;
38
33
39
34
type TimetableProps = {
@@ -68,10 +63,7 @@ const Timetable = ({
68
63
69
64
const [ displayedTimetableItems , setDisplayedTimetableItems ] = useState < TimetableItemResult [ ] > ( [ ] ) ;
70
65
const [ conflictsListExpanded , setConflictsListExpanded ] = useState ( false ) ;
71
- const [ selectedTimetableItemIds , setSelectedTimetableItemIds ] = useState < {
72
- trainScheduleIds : TrainScheduleId [ ] ;
73
- pacedTrainIds : PacedTrainId [ ] ;
74
- } > ( { trainScheduleIds : [ ] , pacedTrainIds : [ ] } ) ;
66
+ const [ selectedTimetableItemIds , setSelectedTimetableItemIds ] = useState < TimetableItemId [ ] > ( [ ] ) ;
75
67
const [ showTrainDetails , setShowTrainDetails ] = useState ( false ) ;
76
68
const [ timetableItems , setTimetableItems ] = useState < TimetableItemResult [ ] > ( [ ] ) ;
77
69
const selectedTrainId = useSelector ( getSelectedTrainId ) ;
@@ -84,7 +76,7 @@ const Timetable = ({
84
76
85
77
const removeAndUnselectTrains = useCallback ( ( trainIds : TimetableItemId [ ] ) => {
86
78
removeTrains ( trainIds ) ;
87
- setSelectedTimetableItemIds ( { trainScheduleIds : [ ] , pacedTrainIds : [ ] } ) ;
79
+ setSelectedTimetableItemIds ( [ ] ) ;
88
80
dtoImport ( ) ;
89
81
} , [ ] ) ;
90
82
@@ -94,22 +86,16 @@ const Timetable = ({
94
86
95
87
const handleSelectTimetableItem = useCallback (
96
88
( id : TimetableItemId ) => {
97
- const itemType = isTrainSchedule ( id ) ? 'trainScheduleIds' : 'pacedTrainIds' ;
98
-
99
- // TODO Paced train : Adapt this to handle paced trains in issue https://github.com/OpenRailAssociation/osrd/issues/10615
100
- const currentSelectedTrainIds = [ ...selectedTimetableItemIds [ itemType ] ] ;
101
- const index = currentSelectedTrainIds . indexOf ( id as TrainScheduleId ) ;
89
+ const currentSelectedTrainIds : TimetableItemId [ ] = selectedTimetableItemIds ;
90
+ const index = currentSelectedTrainIds . indexOf ( id ) ;
102
91
103
92
if ( index === - 1 ) {
104
- currentSelectedTrainIds . push ( id as TrainScheduleId ) ;
93
+ currentSelectedTrainIds . push ( id ) ;
105
94
} else {
106
95
currentSelectedTrainIds . splice ( index , 1 ) ;
107
96
}
108
97
109
- setSelectedTimetableItemIds ( {
110
- ...selectedTimetableItemIds ,
111
- [ itemType ] : currentSelectedTrainIds ,
112
- } ) ;
98
+ setSelectedTimetableItemIds ( [ ...currentSelectedTrainIds ] ) ;
113
99
} ,
114
100
[ selectedTimetableItemIds ]
115
101
) ;
@@ -138,12 +124,12 @@ const Timetable = ({
138
124
} ) ;
139
125
} , [ currentDepartureDates ] ) ;
140
126
141
- const selectTimeTableItemToEdit = ( itemToEdit : TimetableItemResult ) => {
127
+ const selectTimetableItemToEdit = useCallback ( ( itemToEdit : TimetableItemResult ) => {
142
128
dispatch ( selectTrainToEdit ( itemToEdit ) ) ;
143
129
// TODO Paced train : Adapt this to handle paced trains in issue https://github.com/OpenRailAssociation/osrd/issues/10615
144
130
setItemIdToEdit ( itemToEdit . id ) ;
145
131
setDisplayTrainScheduleManagement ( MANAGE_TRAIN_SCHEDULE_TYPES . edit ) ;
146
- } ;
132
+ } , [ ] ) ;
147
133
148
134
// TODO PACED TRAIN : Remove this after adapting the code to handle paced trains in issue
149
135
useEffect ( ( ) => {
@@ -200,12 +186,7 @@ const Timetable = ({
200
186
setSelectedTimetableItemIds = { setSelectedTimetableItemIds }
201
187
removeTrains = { removeAndUnselectTrains }
202
188
trainSchedules = { trainSchedules }
203
- isInSelection = {
204
- [
205
- ...selectedTimetableItemIds . pacedTrainIds ,
206
- ...selectedTimetableItemIds . trainScheduleIds ,
207
- ] . length > 0
208
- }
189
+ isInSelection = { selectedTimetableItemIds . length > 0 }
209
190
/>
210
191
< Virtualizer overscan = { 15 } >
211
192
{ displayedTimetableItems . map ( ( timetableItem , index ) => (
@@ -218,17 +199,15 @@ const Timetable = ({
218
199
{ /* TODO Paced train : Adapt this to handle paced trains in issue
219
200
https://github.com/OpenRailAssociation/osrd/issues/10615 */ }
220
201
{ isTrainSchedule ( timetableItem . id ) ? (
221
- < TimetableTrainCard
222
- isInSelection = { selectedTimetableItemIds . trainScheduleIds . includes (
223
- timetableItem . id
224
- ) }
202
+ < TrainScheduleItem
203
+ isInSelection = { selectedTimetableItemIds . includes ( timetableItem . id ) }
225
204
handleSelectTrain = { handleSelectTimetableItem }
226
205
train = { timetableItem as TrainScheduleWithDetails }
227
206
isSelected = { infraState === 'CACHED' && selectedTrainId === timetableItem . id }
228
207
isModified = { timetableItem . id === itemIdToEdit }
229
208
upsertTrainSchedules = { upsertTrainSchedules }
230
209
removeTrains = { removeAndUnselectTrains }
231
- selectTrainToEdit = { selectTimeTableItemToEdit }
210
+ selectTrainToEdit = { selectTimetableItemToEdit }
232
211
projectionPathIsUsed = {
233
212
infraState === 'CACHED' && trainIdUsedForProjection === timetableItem . id
234
213
}
@@ -237,8 +216,8 @@ const Timetable = ({
237
216
) : (
238
217
< PacedTrainItem
239
218
pacedTrain = { timetableItem as PacedTrainWithResult }
240
- isInSelection = { selectedTimetableItemIds . pacedTrainIds . includes ( timetableItem . id ) }
241
- selectPacedTrainToEdit = { selectTimeTableItemToEdit }
219
+ isInSelection = { selectedTimetableItemIds . includes ( timetableItem . id ) }
220
+ selectPacedTrainToEdit = { selectTimetableItemToEdit }
242
221
handleSelectPacedTrain = { handleSelectTimetableItem }
243
222
isOnEdit = { timetableItem . id === itemIdToEdit }
244
223
isProjectionPathUsed = { false }
0 commit comments