Skip to content

Commit 91a31c0

Browse files
committed
front: use ocpType to correctly handle stop times
1 parent 08d8e22 commit 91a31c0

File tree

1 file changed

+29
-5
lines changed

1 file changed

+29
-5
lines changed

front/src/modules/trainschedule/components/ImportTrainSchedule/ImportTrainScheduleConfig.tsx

+29-5
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,13 @@ const ImportTrainScheduleConfig = ({
173173
.map((ocpTT): Step | null => {
174174
const ocpRef = ocpTT.getAttribute('ocpRef');
175175
const times = ocpTT.getElementsByTagName('times')[0];
176+
const isLastOcp = ocpTT === ocpTTs[ocpTTs.length - 1];
177+
const ocpType = ocpTT.getAttribute('ocpType');
176178
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') || '';
178183
arrivalTime = cleanTimeFormat(arrivalTime);
179184
departureTime = cleanTimeFormat(departureTime);
180185

@@ -195,10 +200,29 @@ const ImportTrainScheduleConfig = ({
195200
const formattedDepartureTime = `${startDate} ${departureTime}`;
196201

197202
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+
}
202226
}
203227

204228
return {

0 commit comments

Comments
 (0)