terriajs
Version:
Geospatial data visualization platform.
58 lines (56 loc) • 1.88 kB
text/typescript
import { FeedEntity, OccupancyStatus } from "./GtfsRealtimeProtoBufReaders";
import _get from "lodash-es/get";
export default function prettyPrintGtfsEntityField(
field: string,
entity: FeedEntity
) {
switch (field) {
// TODO: Get sone of this data (eg. route short name) from static GTFS csv files instead
// This probably only works for NSW
case "route_short_name": {
const route: string | undefined = _get(entity, "vehicle.trip.route_id");
if (route !== undefined && route.indexOf("_") + 1 > 0) {
return route.substr(route.indexOf("_") + 1);
} else {
return "";
}
}
case "occupancy_status#str": {
const occupancy: OccupancyStatus | undefined = _get(
entity,
"vehicle.occupancy_status"
);
if (occupancy !== undefined && occupancy !== null) {
switch (occupancy) {
case OccupancyStatus.EMPTY:
return "Empty";
case OccupancyStatus.MANY_SEATS_AVAILABLE:
return "Many seats available";
case OccupancyStatus.FEW_SEATS_AVAILABLE:
return "Few seats available";
case OccupancyStatus.STANDING_ROOM_ONLY:
return "Standing room only";
case OccupancyStatus.CRUSHED_STANDING_ROOM_ONLY:
return "Crushed standing room only";
case OccupancyStatus.FULL:
return "Full";
case OccupancyStatus.NOT_ACCEPTING_PASSENGERS:
return "Not accepting passengers";
}
}
break;
}
case "speed#km": {
return (_get(entity, "vehicle.position.speed", 0) * 3.6).toFixed(2);
}
case "speed": {
return _get(entity, "vehicle.position.speed", 0).toFixed(2);
}
case "bearing": {
return _get(entity, "vehicle.position.bearing", 0).toFixed(2);
}
default: {
return undefined;
}
}
}