initial commit

This commit is contained in:
2026-10-08 22:56:41 +03:00
commit 4a0785d003
63 changed files with 4863 additions and 0 deletions

18
src/types.ts Normal file
View File

@@ -0,0 +1,18 @@
export type Departure = {
id: string; routeId: number; routeNumber: string; routeName: string; destination: string;
type: string; scheduledAt: string; scheduledTime: string; note: string; source: 'schedule';
};
export type Route = { id: number; number: string; name: string; type: string };
export type Alert = { id: string; title: string; message: string; type: string; routeNumbers: string[]; routeIds: number[]; startAt: string | null; endAt: string | null };
export type Stop = { id: number; name: string; direction: string };
export type BoardData = { cityId: number; cityName: string; stop: Stop; departures: Departure[]; routes: Route[];
alerts: Alert[]; alertsAvailable: boolean; partial: boolean; updatedAt: string; serverTime?: string; serviceDate: string; mode: 'live' | 'demo' };
export type Config = { cityId: number; cityName: string; stopName: string; defaultStopId: number; configured: boolean; refreshSeconds: number; timeZone: string; passengerBaseUrl?: string };
export type Settings = { stopId: number; demo: boolean; mainSeconds: number; infoSeconds: number; holdNear: boolean;
rowCount: number; routeFilter: string; colorScheme: string; adsEnabled: boolean; adSeconds: number; adTitle: string; adText: string };
export type Scene = 'departures' | 'info' | 'ad';
export type Timetable = { version: 1; cityId: number; cityName: string; stop: Stop; routes: (Route & { schedules: {
dayType: string; validFrom: string | null; validUntil: string | null; trips: { arrivalSeconds: number; destination: string; note: string; daysOfWeek: number[]; exceptDaysOfWeek: number[] }[];
}[] })[]; holidays: string[]; calendarYears: number[]; updatedAt: string; expiresAt: string };
export type Weather = { cityId: number; stopId: number; updatedAt: string; observedAt: string; temperature: number; apparentTemperature: number;
code: number; isDay: boolean; windSpeed: number; hourly: { at: string; temperature: number; code: number; precipitationProbability: number }[] };