@@ -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 ,
@@ -34,12 +29,7 @@ import {
34
29
import PacedTrainItem from './PacedTrain/PacedTrainItem' ;
35
30
import TimetableToolbar from './TimetableToolbar' ;
36
31
import TrainScheduleItem from './TrainScheduleItem' ;
37
- import type {
38
- PacedTrainWithResult ,
39
- SelectedTimetableIdsByType ,
40
- TimetableItemResult ,
41
- TrainScheduleWithDetails ,
42
- } from './types' ;
32
+ import type { PacedTrainWithResult , TimetableItemResult , TrainScheduleWithDetails } from './types' ;
43
33
44
34
type TimetableProps = {
45
35
setDisplayTrainScheduleManagement : ( mode : string ) => void ;
@@ -73,11 +63,7 @@ const Timetable = ({
73
63
74
64
const [ displayedTimetableItems , setDisplayedTimetableItems ] = useState < TimetableItemResult [ ] > ( [ ] ) ;
75
65
const [ conflictsListExpanded , setConflictsListExpanded ] = useState ( false ) ;
76
- const [ selectedTimetableItemIdsByType , setSelectedTimetableItemIdsByType ] =
77
- useState < SelectedTimetableIdsByType > ( {
78
- selectedTrainScheduleIds : [ ] ,
79
- selectedPacedTrainIds : [ ] ,
80
- } ) ;
66
+ const [ selectedTimetableItemIds , setSelectedTimetableItemIds ] = useState < TimetableItemId [ ] > ( [ ] ) ;
81
67
const [ showTrainDetails , setShowTrainDetails ] = useState ( false ) ;
82
68
const [ timetableItems , setTimetableItems ] = useState < TimetableItemResult [ ] > ( [ ] ) ;
83
69
const selectedTrainId = useSelector ( getSelectedTrainId ) ;
@@ -90,7 +76,7 @@ const Timetable = ({
90
76
91
77
const removeAndUnselectTrains = useCallback ( ( trainIds : TimetableItemId [ ] ) => {
92
78
removeTrains ( trainIds ) ;
93
- setSelectedTimetableItemIdsByType ( { selectedTrainScheduleIds : [ ] , selectedPacedTrainIds : [ ] } ) ;
79
+ setSelectedTimetableItemIds ( [ ] ) ;
94
80
dtoImport ( ) ;
95
81
} , [ ] ) ;
96
82
@@ -100,22 +86,18 @@ const Timetable = ({
100
86
101
87
const handleSelectTimetableItem = useCallback (
102
88
( id : TimetableItemId ) => {
103
- const itemType = isTrainSchedule ( id ) ? 'selectedTrainScheduleIds' : 'selectedPacedTrainIds' ;
104
- const currentSelectedTrainIds : TimetableItemId [ ] = selectedTimetableItemIdsByType [ itemType ] ;
105
- const index = currentSelectedTrainIds . indexOf ( id as TrainScheduleId ) ;
89
+ const currentSelectedTrainIds : TimetableItemId [ ] = selectedTimetableItemIds ;
90
+ const index = currentSelectedTrainIds . indexOf ( id ) ;
106
91
107
92
if ( index === - 1 ) {
108
- currentSelectedTrainIds . push ( id as TrainScheduleId ) ;
93
+ currentSelectedTrainIds . push ( id ) ;
109
94
} else {
110
95
currentSelectedTrainIds . splice ( index , 1 ) ;
111
96
}
112
97
113
- setSelectedTimetableItemIdsByType ( {
114
- ...selectedTimetableItemIdsByType ,
115
- [ itemType ] : currentSelectedTrainIds ,
116
- } ) ;
98
+ setSelectedTimetableItemIds ( [ ...currentSelectedTrainIds ] ) ;
117
99
} ,
118
- [ selectedTimetableItemIdsByType ]
100
+ [ selectedTimetableItemIds ]
119
101
) ;
120
102
121
103
const handleConflictClick = ( conflict : Conflict ) => {
@@ -142,12 +124,12 @@ const Timetable = ({
142
124
} ) ;
143
125
} , [ currentDepartureDates ] ) ;
144
126
145
- const selectTimetableItemToEdit = ( itemToEdit : TimetableItemResult ) => {
127
+ const selectTimetableItemToEdit = useCallback ( ( itemToEdit : TimetableItemResult ) => {
146
128
dispatch ( selectTrainToEdit ( itemToEdit ) ) ;
147
129
// TODO Paced train : Adapt this to handle paced trains in issue https://github.com/OpenRailAssociation/osrd/issues/10615
148
130
setItemIdToEdit ( itemToEdit . id ) ;
149
131
setDisplayTrainScheduleManagement ( MANAGE_TRAIN_SCHEDULE_TYPES . edit ) ;
150
- } ;
132
+ } , [ ] ) ;
151
133
152
134
// TODO PACED TRAIN : Remove this after adapting the code to handle paced trains in issue
153
135
useEffect ( ( ) => {
@@ -200,16 +182,11 @@ const Timetable = ({
200
182
timetableItems = { timetableItems }
201
183
displayedTimetableItems = { displayedTimetableItems }
202
184
setDisplayedTimetableItems = { setDisplayedTimetableItems }
203
- selectedTimetableItemIdsByType = { selectedTimetableItemIdsByType }
204
- setSelectedTimetableItemIdsByType = { setSelectedTimetableItemIdsByType }
185
+ selectedTimetableItemIds = { selectedTimetableItemIds }
186
+ setSelectedTimetableItemIds = { setSelectedTimetableItemIds }
205
187
removeTrains = { removeAndUnselectTrains }
206
188
trainSchedules = { trainSchedules }
207
- isInSelection = {
208
- [
209
- ...selectedTimetableItemIdsByType . selectedPacedTrainIds ,
210
- ...selectedTimetableItemIdsByType . selectedTrainScheduleIds ,
211
- ] . length > 0
212
- }
189
+ isInSelection = { selectedTimetableItemIds . length > 0 }
213
190
/>
214
191
< Virtualizer overscan = { 15 } >
215
192
{ displayedTimetableItems . map ( ( timetableItem , index ) => (
@@ -223,9 +200,7 @@ const Timetable = ({
223
200
https://github.com/OpenRailAssociation/osrd/issues/10615 */ }
224
201
{ isTrainSchedule ( timetableItem . id ) ? (
225
202
< TrainScheduleItem
226
- isInSelection = { selectedTimetableItemIdsByType . selectedTrainScheduleIds . includes (
227
- timetableItem . id
228
- ) }
203
+ isInSelection = { selectedTimetableItemIds . includes ( timetableItem . id ) }
229
204
handleSelectTrain = { handleSelectTimetableItem }
230
205
train = { timetableItem as TrainScheduleWithDetails }
231
206
isSelected = { infraState === 'CACHED' && selectedTrainId === timetableItem . id }
@@ -241,9 +216,7 @@ const Timetable = ({
241
216
) : (
242
217
< PacedTrainItem
243
218
pacedTrain = { timetableItem as PacedTrainWithResult }
244
- isInSelection = { selectedTimetableItemIdsByType . selectedPacedTrainIds . includes (
245
- timetableItem . id
246
- ) }
219
+ isInSelection = { selectedTimetableItemIds . includes ( timetableItem . id ) }
247
220
selectPacedTrainToEdit = { selectTimetableItemToEdit }
248
221
handleSelectPacedTrain = { handleSelectTimetableItem }
249
222
isOnEdit = { timetableItem . id === itemIdToEdit }
0 commit comments