Skip to content

Commit c7dffad

Browse files
committed
feat: add vehicle at stop indicator
1 parent f8c9ae9 commit c7dffad

2 files changed

Lines changed: 30 additions & 4 deletions

File tree

public/train_at_station.svg

Lines changed: 1 addition & 0 deletions
Loading

src/scripts/stopMonitoring.js

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,14 +173,18 @@ function parseSchedulesData(data) {
173173
journey.MonitoredCall?.VehicleAtStop === false &&
174174
journey.MonitoredCall?.ExpectedDepartureTime === undefined;
175175

176+
// Récupérer VehicleAtStop
177+
const vehicleAtStop = journey.MonitoredCall?.VehicleAtStop === true;
178+
176179
if (aimedTime || expectedTime) {
177180
schedules.push({
178181
destination: destinationName,
179182
aimedTime: aimedTime,
180183
expectedTime: expectedTime,
181184
platform: platform,
182185
isCancelled: isCancelled,
183-
journeyNote: journeyNote
186+
journeyNote: journeyNote,
187+
vehicleAtStop: vehicleAtStop
184188
});
185189
}
186190
});
@@ -264,6 +268,7 @@ export function generateSchedulesElement(schedules, routeType) {
264268
const expectedTime = schedule.expectedTime ? new Date(schedule.expectedTime) : null;
265269
const isCancelled = schedule.isCancelled || false;
266270
const journeyNote = schedule.journeyNote || null;
271+
const vehicleAtStop = schedule.vehicleAtStop || false;
267272

268273
// Utiliser expectedTime si disponible, sinon aimedTime
269274
const displayTime = expectedTime || aimedTime;
@@ -295,7 +300,15 @@ export function generateSchedulesElement(schedules, routeType) {
295300
const tdTime = document.createElement('td');
296301
tdTime.className = 'p-1 whitespace-nowrap';
297302
if (isCancelled) tdTime.className += ' line-through text-red-600';
298-
tdTime.textContent = timeStr;
303+
304+
// Créer un conteneur flex pour tout mettre sur une ligne
305+
const timeContainer = document.createElement('div');
306+
timeContainer.className = 'flex items-center gap-1';
307+
308+
// Ajouter l'heure
309+
const timeSpan = document.createElement('span');
310+
timeSpan.textContent = timeStr;
311+
timeContainer.appendChild(timeSpan);
299312

300313
// Ajouter le retard en orange si applicable
301314
if ((routeType === 'RER' || routeType === 'TER' || routeType === 'Transilien') &&
@@ -304,12 +317,24 @@ export function generateSchedulesElement(schedules, routeType) {
304317
if (delayMinutes > 0) {
305318
const expectedTimeStr = expectedTime.toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' });
306319
const delaySpan = document.createElement('span');
307-
delaySpan.className = 'text-orange-500 font-semibold ml-1';
320+
delaySpan.className = 'text-orange-500 font-semibold';
308321
delaySpan.textContent = expectedTimeStr;
309-
tdTime.appendChild(delaySpan);
322+
timeContainer.appendChild(delaySpan);
310323
}
311324
}
312325

326+
// Ajouter l'icône train si vehicleAtStop est true
327+
if (vehicleAtStop) {
328+
const trainIcon = document.createElement('img');
329+
trainIcon.src = '/webtrain/train_at_station.svg';
330+
trainIcon.alt = 'Train à quai';
331+
trainIcon.className = 'w-3 h-3';
332+
trainIcon.title = 'Train à quai';
333+
timeContainer.appendChild(trainIcon);
334+
}
335+
336+
tdTime.appendChild(timeContainer);
337+
313338
tr.appendChild(tdTime);
314339

315340
// Colonne destination

0 commit comments

Comments
 (0)