import { Mode, type StopTime } from './motis-types'; import { m } from './paraglide/messages'; export const getPictogram = (mode: Mode) => { switch (true) { case mode === Mode.Bike: return 'Velo_l'; case mode === Mode.ODM: case mode === Mode.Rental: return 'Taxi_l'; case mode === Mode.Car: case mode === Mode.CarDropoff: case mode === Mode.CarParking: return 'Auto_l'; // Transit // case mode === Mode.Airplane: return 'Abflug_l'; case mode === Mode.LongDistanceRail: case mode === Mode.RegionalFastRail: case mode === Mode.RegionalRail: case mode === Mode.Metro: case mode === Mode.HighspeedRail: return 'Zug_l'; case mode === Mode.NightRail: return 'Schlafwagen'; case mode === Mode.Subway: return 'Metro_l_' + (m.lang_short() === 'en' ? 'de' : m.lang_short()); case mode === Mode.Bus: return 'Bus_l'; case mode === Mode.Coach: return 'Fernbus_l'; case mode === Mode.Tram: case mode === Mode.CableTram: return 'Tram_l'; case mode === Mode.Funicular: return 'Zahnradbahn_l'; case mode === Mode.AerialLift: // return 'Gondelbahn_l'; return 'Luftseilbahn_l'; case mode === Mode.Ferry: return 'Schiff_l'; case mode === Mode.Other: default: return 'Licht'; } }; export const stopTimeToShortName = (stopTime: StopTime) => { let n = stopTime.routeShortName; if (n.startsWith('EC ')) n = n.replace('EC ', 'EC'); if (stopTime.mode === 'TRAM' && !isNaN(parseInt(n))) n = 'T ' + n; if (stopTime.mode === 'BUS' && !isNaN(parseInt(n))) n = 'B ' + n; if ( stopTime.routeShortName === 'European Sleeper' && stopTime.agencyName === 'Eu Sleeper' ) n = 'EN'; // TODO: validate these are real euronights if (n === '?') n = ''; if (n.startsWith('FlixTrain ')) n = n.substring(10); // Note: may also catch ECs/ICs/EXTs operated by DB if ( stopTime.agencyId === '12681' && stopTime.agencyName === 'DB Fernverkehr AG' && stopTime.mode === 'HIGHSPEED_RAIL' && stopTime.source.startsWith('de_DELFI.gtfs.zip/') && !isNaN(parseInt(n)) ) n = `ICE ${n}`; return n; }; export const stopTimeShouldRenderGlyph = ( stopTime: StopTime, routeShortName: string ) => ([ Mode.NightRail, Mode.HighspeedRail, Mode.LongDistanceRail, Mode.RegionalFastRail, Mode.RegionalRail, ].includes(stopTime.mode) || (stopTime.mode === 'BUS' && routeShortName.startsWith('EV')) || (stopTime.mode === 'METRO' && stopTime.routeShortName.startsWith('S'))) && !stopTime.routeShortName.startsWith('FlixTrain'); export const blacklistedAgencyURLs = ['http://www.rta.ae'];