mirror of
https://github.com/HSLdevcom/digitransit-ui
synced 2025-07-05 16:30:37 +02:00
71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
import { legTime } from './legUtils';
|
|
|
|
/**
|
|
* Maps status to corresponding string.
|
|
*
|
|
* @param {*} status status from OTP.
|
|
*/
|
|
export function mapStatus(status) {
|
|
switch (status) {
|
|
case 'EMPTY':
|
|
return 'MANY_SEATS_AVAILABLE';
|
|
case 'NOT_ACCEPTING_PASSENGERS':
|
|
return 'CRUSHED_STANDING_ROOM_ONLY';
|
|
case 'MANY_SEATS_AVAILABLE':
|
|
return 'MANY_SEATS_AVAILABLE';
|
|
case 'FEW_SEATS_AVAILABLE':
|
|
return 'FEW_SEATS_AVAILABLE';
|
|
case 'STANDING_ROOM_ONLY':
|
|
return 'STANDING_ROOM_ONLY';
|
|
case 'CRUSHED_STANDING_ROOM_ONLY':
|
|
return 'CRUSHED_STANDING_ROOM_ONLY';
|
|
case 'FULL':
|
|
return 'CRUSHED_STANDING_ROOM_ONLY';
|
|
default:
|
|
return 'NO_DATA_AVAILABLE';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Checks that departure is within 10 minutes from now.
|
|
*
|
|
* @param {*} departureTime departure time in Unix.
|
|
*/
|
|
export function isDepartureWithinTenMinutes(departureTime) {
|
|
const now = Date.now();
|
|
const diff = (departureTime - now) / (60 * 1000); // to minutes
|
|
|
|
return diff > 0 && diff < 10;
|
|
}
|
|
|
|
/**
|
|
* Returns mapped capacity string.
|
|
* @param {*} config configuration object.
|
|
* @param {*} occupancyStatus status from OTP.
|
|
* @param {*} departureTime departure time in Unix.
|
|
*/
|
|
export function getCapacity(config, occupancyStatus, departureTime) {
|
|
if (
|
|
config.useRealtimeTravellerCapacities &&
|
|
occupancyStatus &&
|
|
occupancyStatus !== 'NO_DATA_AVAILABLE' &&
|
|
isDepartureWithinTenMinutes(departureTime)
|
|
) {
|
|
return mapStatus(occupancyStatus);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Returns capacity string for leg.
|
|
*
|
|
* @param {*} config configuration object.
|
|
* @param {*} leg leg object.
|
|
*/
|
|
export function getCapacityForLeg(config, leg) {
|
|
return getCapacity(
|
|
config,
|
|
leg.trip?.occupancy?.occupancyStatus,
|
|
legTime(leg.start),
|
|
);
|
|
}
|