@@ -34,7 +34,12 @@ import {
34
34
import PacedTrainItem from './PacedTrain/PacedTrainItem' ;
35
35
import TimetableToolbar from './TimetableToolbar' ;
36
36
import TrainScheduleItem from './TrainScheduleItem' ;
37
- import type { PacedTrainWithResult , TimetableItemResult , TrainScheduleWithDetails } from './types' ;
37
+ import type {
38
+ PacedTrainWithResult ,
39
+ SelectedTimetableIdsByType ,
40
+ TimetableItemResult ,
41
+ TrainScheduleWithDetails ,
42
+ } from './types' ;
38
43
39
44
type TimetableProps = {
40
45
setDisplayTrainScheduleManagement : ( mode : string ) => void ;
@@ -68,10 +73,11 @@ const Timetable = ({
68
73
69
74
const [ displayedTimetableItems , setDisplayedTimetableItems ] = useState < TimetableItemResult [ ] > ( [ ] ) ;
70
75
const [ conflictsListExpanded , setConflictsListExpanded ] = useState ( false ) ;
71
- const [ selectedTimetableItemIds , setSelectedTimetableItemIds ] = useState < {
72
- trainScheduleIds : TrainScheduleId [ ] ;
73
- pacedTrainIds : PacedTrainId [ ] ;
74
- } > ( { trainScheduleIds : [ ] , pacedTrainIds : [ ] } ) ;
76
+ const [ selectedTimetableItemIdsByType , setSelectedTimetableItemIdsByType ] =
77
+ useState < SelectedTimetableIdsByType > ( {
78
+ selectedTrainScheduleIds : [ ] ,
79
+ selectedPacedTrainIds : [ ] ,
80
+ } ) ;
75
81
const [ showTrainDetails , setShowTrainDetails ] = useState ( false ) ;
76
82
const [ timetableItems , setTimetableItems ] = useState < TimetableItemResult [ ] > ( [ ] ) ;
77
83
const selectedTrainId = useSelector ( getSelectedTrainId ) ;
@@ -84,7 +90,7 @@ const Timetable = ({
84
90
85
91
const removeAndUnselectTrains = useCallback ( ( trainIds : TimetableItemId [ ] ) => {
86
92
removeTrains ( trainIds ) ;
87
- setSelectedTimetableItemIds ( { trainScheduleIds : [ ] , pacedTrainIds : [ ] } ) ;
93
+ setSelectedTimetableItemIdsByType ( { selectedTrainScheduleIds : [ ] , selectedPacedTrainIds : [ ] } ) ;
88
94
dtoImport ( ) ;
89
95
} , [ ] ) ;
90
96
@@ -94,8 +100,8 @@ const Timetable = ({
94
100
95
101
const handleSelectTimetableItem = useCallback (
96
102
( id : TimetableItemId ) => {
97
- const itemType = isTrainSchedule ( id ) ? 'trainScheduleIds ' : 'pacedTrainIds ' ;
98
- const currentSelectedTrainIds : TimetableItemId [ ] = selectedTimetableItemIds [ itemType ] ;
103
+ const itemType = isTrainSchedule ( id ) ? 'selectedTrainScheduleIds ' : 'selectedPacedTrainIds ' ;
104
+ const currentSelectedTrainIds : TimetableItemId [ ] = selectedTimetableItemIdsByType [ itemType ] ;
99
105
const index = currentSelectedTrainIds . indexOf ( id as TrainScheduleId ) ;
100
106
101
107
if ( index === - 1 ) {
@@ -104,12 +110,12 @@ const Timetable = ({
104
110
currentSelectedTrainIds . splice ( index , 1 ) ;
105
111
}
106
112
107
- setSelectedTimetableItemIds ( {
108
- ...selectedTimetableItemIds ,
113
+ setSelectedTimetableItemIdsByType ( {
114
+ ...selectedTimetableItemIdsByType ,
109
115
[ itemType ] : currentSelectedTrainIds ,
110
116
} ) ;
111
117
} ,
112
- [ selectedTimetableItemIds ]
118
+ [ selectedTimetableItemIdsByType ]
113
119
) ;
114
120
115
121
const handleConflictClick = ( conflict : Conflict ) => {
@@ -136,7 +142,7 @@ const Timetable = ({
136
142
} ) ;
137
143
} , [ currentDepartureDates ] ) ;
138
144
139
- const selectTimeTableItemToEdit = ( itemToEdit : TimetableItemResult ) => {
145
+ const selectTimetableItemToEdit = ( itemToEdit : TimetableItemResult ) => {
140
146
dispatch ( selectTrainToEdit ( itemToEdit ) ) ;
141
147
// TODO Paced train : Adapt this to handle paced trains in issue https://github.com/OpenRailAssociation/osrd/issues/10615
142
148
setItemIdToEdit ( itemToEdit . id ) ;
@@ -194,14 +200,14 @@ const Timetable = ({
194
200
timetableItems = { timetableItems }
195
201
displayedTimetableItems = { displayedTimetableItems }
196
202
setDisplayedTimetableItems = { setDisplayedTimetableItems }
197
- selectedTimetableItemIds = { selectedTimetableItemIds }
198
- setSelectedTimetableItemIds = { setSelectedTimetableItemIds }
203
+ selectedTimetableItemIdsByType = { selectedTimetableItemIdsByType }
204
+ setSelectedTimetableItemIdsByType = { setSelectedTimetableItemIdsByType }
199
205
removeTrains = { removeAndUnselectTrains }
200
206
trainSchedules = { trainSchedules }
201
207
isInSelection = {
202
208
[
203
- ...selectedTimetableItemIds . pacedTrainIds ,
204
- ...selectedTimetableItemIds . trainScheduleIds ,
209
+ ...selectedTimetableItemIdsByType . selectedPacedTrainIds ,
210
+ ...selectedTimetableItemIdsByType . selectedTrainScheduleIds ,
205
211
] . length > 0
206
212
}
207
213
/>
@@ -217,7 +223,7 @@ const Timetable = ({
217
223
https://github.com/OpenRailAssociation/osrd/issues/10615 */ }
218
224
{ isTrainSchedule ( timetableItem . id ) ? (
219
225
< TrainScheduleItem
220
- isInSelection = { selectedTimetableItemIds . trainScheduleIds . includes (
226
+ isInSelection = { selectedTimetableItemIdsByType . selectedTrainScheduleIds . includes (
221
227
timetableItem . id
222
228
) }
223
229
handleSelectTrain = { handleSelectTimetableItem }
@@ -226,7 +232,7 @@ const Timetable = ({
226
232
isModified = { timetableItem . id === itemIdToEdit }
227
233
upsertTrainSchedules = { upsertTrainSchedules }
228
234
removeTrains = { removeAndUnselectTrains }
229
- selectTrainToEdit = { selectTimeTableItemToEdit }
235
+ selectTrainToEdit = { selectTimetableItemToEdit }
230
236
projectionPathIsUsed = {
231
237
infraState === 'CACHED' && trainIdUsedForProjection === timetableItem . id
232
238
}
@@ -235,8 +241,10 @@ const Timetable = ({
235
241
) : (
236
242
< PacedTrainItem
237
243
pacedTrain = { timetableItem as PacedTrainWithResult }
238
- isInSelection = { selectedTimetableItemIds . pacedTrainIds . includes ( timetableItem . id ) }
239
- selectPacedTrainToEdit = { selectTimeTableItemToEdit }
244
+ isInSelection = { selectedTimetableItemIdsByType . selectedPacedTrainIds . includes (
245
+ timetableItem . id
246
+ ) }
247
+ selectPacedTrainToEdit = { selectTimetableItemToEdit }
240
248
handleSelectPacedTrain = { handleSelectTimetableItem }
241
249
isOnEdit = { timetableItem . id === itemIdToEdit }
242
250
isProjectionPathUsed = { false }
0 commit comments