@@ -173,8 +173,13 @@ const ImportTrainScheduleConfig = ({
173
173
. map ( ( ocpTT ) : Step | null => {
174
174
const ocpRef = ocpTT . getAttribute ( 'ocpRef' ) ;
175
175
const times = ocpTT . getElementsByTagName ( 'times' ) [ 0 ] ;
176
+ const isLastOcp = ocpTT === ocpTTs [ ocpTTs . length - 1 ] ;
177
+ const ocpType = ocpTT . getAttribute ( 'ocpType' ) ;
176
178
let departureTime = times ?. getAttribute ( 'departure' ) || '' ;
177
- let arrivalTime = times ?. getAttribute ( 'arrival' ) || '' ;
179
+ let arrivalTime =
180
+ ocpType === 'pass'
181
+ ? times ?. getAttribute ( 'departure' ) || ''
182
+ : times ?. getAttribute ( 'arrival' ) || '' ;
178
183
arrivalTime = cleanTimeFormat ( arrivalTime ) ;
179
184
departureTime = cleanTimeFormat ( departureTime ) ;
180
185
@@ -195,10 +200,29 @@ const ImportTrainScheduleConfig = ({
195
200
const formattedDepartureTime = `${ startDate } ${ departureTime } ` ;
196
201
197
202
let stopFor : number | undefined ;
198
- if ( arrivalTime && departureTime ) {
199
- const arrivalDate = new Date ( `${ startDate } T${ arrivalTime } ` ) ;
200
- const departureDate = new Date ( `${ startDate } T${ departureTime } ` ) ;
201
- stopFor = Math . round ( ( departureDate . getTime ( ) - arrivalDate . getTime ( ) ) / 1000 ) ;
203
+
204
+ const arrivalDate = new Date ( `${ startDate } T${ arrivalTime } ` ) ;
205
+ const departureDate = new Date ( `${ startDate } T${ departureTime } ` ) ;
206
+ if ( ocpType === 'stop' ) {
207
+ if ( arrivalTime && departureTime ) {
208
+ if ( arrivalTime === departureTime ) {
209
+ stopFor = 0 ;
210
+ } else {
211
+ stopFor = Math . round ( ( departureDate . getTime ( ) - arrivalDate . getTime ( ) ) / 1000 ) ;
212
+ }
213
+ } else if ( departureTime ) {
214
+ stopFor = 0 ;
215
+ }
216
+ } else if ( ocpType === 'pass' ) {
217
+ if ( arrivalTime && departureTime && arrivalTime !== departureTime ) {
218
+ // Incorrect data, it shouldn't happen on a ocpType pass, skip step
219
+ return null ;
220
+ }
221
+ if ( isLastOcp && departureTime ) {
222
+ stopFor = 0 ;
223
+ } else {
224
+ stopFor = undefined ;
225
+ }
202
226
}
203
227
204
228
return {
0 commit comments