aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/app/data/RegionConfig.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/app/data/RegionConfig.ts')
-rw-r--r--src/frontend/app/data/RegionConfig.ts49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/frontend/app/data/RegionConfig.ts b/src/frontend/app/data/RegionConfig.ts
new file mode 100644
index 0000000..0ce66e6
--- /dev/null
+++ b/src/frontend/app/data/RegionConfig.ts
@@ -0,0 +1,49 @@
+export type RegionId = "vigo" | "santiago";
+
+export interface RegionConfig {
+ id: RegionId;
+ name: string;
+ stopsEndpoint: string;
+ estimatesEndpoint: string;
+ timetableEndpoint: string | null;
+ defaultCenter: [number, number]; // [lat, lng]
+ defaultZoom: number;
+ showMeters: boolean; // Whether to show distance in meters
+}
+
+export const REGIONS: Record<RegionId, RegionConfig> = {
+ vigo: {
+ id: "vigo",
+ name: "Vigo",
+ stopsEndpoint: "/stops/vigo.json",
+ estimatesEndpoint: "/api/vigo/GetStopEstimates",
+ timetableEndpoint: "/api/vigo/GetStopTimetable",
+ defaultCenter: [42.229188855975046, -8.72246955783102],
+ defaultZoom: 14,
+ showMeters: true,
+ },
+ santiago: {
+ id: "santiago",
+ name: "Santiago de Compostela",
+ stopsEndpoint: "/stops/santiago.json",
+ estimatesEndpoint: "/api/santiago/GetStopEstimates",
+ timetableEndpoint: null, // Not available for Santiago
+ defaultCenter: [42.8782, -8.5448],
+ defaultZoom: 14,
+ showMeters: false, // Santiago doesn't provide distance data
+ },
+};
+
+export const DEFAULT_REGION: RegionId = "vigo";
+
+export function getRegionConfig(regionId: RegionId): RegionConfig {
+ return REGIONS[regionId];
+}
+
+export function getAvailableRegions(): RegionConfig[] {
+ return Object.values(REGIONS);
+}
+
+export function isValidRegion(regionId: string): regionId is RegionId {
+ return regionId === "vigo" || regionId === "santiago";
+}