aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/frontend/app/components/StopAlert.css13
-rw-r--r--src/frontend/app/components/StopAlert.tsx20
-rw-r--r--src/frontend/app/data/StopDataProvider.ts5
-rw-r--r--src/frontend/public/pwa-worker.js2
-rw-r--r--src/frontend/public/stops/vigo.json108
5 files changed, 93 insertions, 55 deletions
diff --git a/src/frontend/app/components/StopAlert.css b/src/frontend/app/components/StopAlert.css
index 2ba3baa..c1d9a0a 100644
--- a/src/frontend/app/components/StopAlert.css
+++ b/src/frontend/app/components/StopAlert.css
@@ -72,7 +72,7 @@
}
.stop-alert-compact .stop-alert-title {
- font-size: 0.85rem;
+ font-size: 0.95rem;
}
.stop-alert-message {
@@ -81,17 +81,6 @@
}
.stop-alert-compact .stop-alert-message {
- font-size: 0.8rem;
-}
-
-.stop-alert-alternate-codes {
font-size: 0.85rem;
- margin-top: 0.25rem;
- font-style: italic;
- opacity: 0.8;
-}
-
-.stop-alert-compact .stop-alert-alternate-codes {
- font-size: 0.75rem;
}
diff --git a/src/frontend/app/components/StopAlert.tsx b/src/frontend/app/components/StopAlert.tsx
index a96f93e..d969108 100644
--- a/src/frontend/app/components/StopAlert.tsx
+++ b/src/frontend/app/components/StopAlert.tsx
@@ -1,5 +1,5 @@
-import React from "react";
-import { AlertCircle, Info } from "lucide-react";
+import React, { useMemo } from "react";
+import { AlertCircle, AlertOctagon, Info, TriangleAlert } from "lucide-react";
import type { Stop } from "~/data/StopDataProvider";
import "./StopAlert.css";
@@ -15,11 +15,21 @@ export const StopAlert: React.FC<StopAlertProps> = ({ stop, compact = false }) =
return null;
}
- const isError = stop.cancelled === true;
+ const alertType = useMemo(() => {
+ if (stop.alert === "error") return "stop-alert-error";
+ if (stop.alert === "warning") return "stop-alert-warning";
+ return "stop-alert-info";
+ }, [stop.alert]);
+
+ const alertIcon = useMemo(() => {
+ if (stop.alert === "error") return <AlertOctagon />;
+ if (stop.alert === "warning") return <TriangleAlert />;
+ return <Info />;
+ }, [stop.alert]);
return (
- <div className={`stop-alert ${isError ? 'stop-alert-error' : 'stop-alert-info'} ${compact ? 'stop-alert-compact' : ''}`}>
- {isError ? <AlertCircle /> : <Info />}
+ <div className={`stop-alert ${alertType} ${compact ? 'stop-alert-compact' : ''}`}>
+ {alertIcon}
<div className="stop-alert-content">
{stop.title && <div className="stop-alert-title">{stop.title}</div>}
{stop.message && <div className="stop-alert-message">{stop.message}</div>}
diff --git a/src/frontend/app/data/StopDataProvider.ts b/src/frontend/app/data/StopDataProvider.ts
index 25a617b..799dcb5 100644
--- a/src/frontend/app/data/StopDataProvider.ts
+++ b/src/frontend/app/data/StopDataProvider.ts
@@ -18,10 +18,11 @@ export interface Stop {
lines: string[];
favourite?: boolean;
amenities?: string[];
- cancelled?: boolean;
+
title?: string;
message?: string;
- alternateCodes?: string[];
+ alert?: "info"|"warning"|"error";
+ cancelled?: boolean;
}
// In-memory cache and lookup map per region
diff --git a/src/frontend/public/pwa-worker.js b/src/frontend/public/pwa-worker.js
index 04364df..bfe4b7e 100644
--- a/src/frontend/public/pwa-worker.js
+++ b/src/frontend/public/pwa-worker.js
@@ -1,4 +1,4 @@
-const CACHE_VERSION = "20251106b";
+const CACHE_VERSION = "20251107a";
const STATIC_CACHE_NAME = `static-cache-${CACHE_VERSION}`;
const STATIC_CACHE_ASSETS = [
"/favicon.ico",
diff --git a/src/frontend/public/stops/vigo.json b/src/frontend/public/stops/vigo.json
index b025348..3a4bc99 100644
--- a/src/frontend/public/stops/vigo.json
+++ b/src/frontend/public/stops/vigo.json
@@ -1140,6 +1140,7 @@
"6",
"9B",
"15B",
+ "15C",
"28"
]
},
@@ -1154,6 +1155,7 @@
"6",
"9B",
"15B",
+ "15C",
"28"
]
},
@@ -3518,7 +3520,10 @@
"15C",
"16",
"17"
- ]
+ ],
+ "alert": "warning",
+ "title": "L17 no realiza parada",
+ "message": "Con motivo de las atracciones navideñas, la línea 17 no realiza parada en esta ubicación.\nSe puede tomar en Urzaiz, 13 (cruce República Argentina).\n"
},
{
"stopId": 3240,
@@ -3564,7 +3569,8 @@
"latitude": 42.226287696,
"longitude": -8.737475832,
"lines": [
- "15B"
+ "15B",
+ "15C"
]
},
{
@@ -6039,7 +6045,11 @@
"amenities": [
"shelter",
"display"
- ]
+ ],
+ "cancelled": true,
+ "alert": "error",
+ "title": "Cerrada por navidad",
+ "message": "Con motivo de las atracciones navideñas, esta parada queda anulada.\nLíneas C3, 10, N1, 5B, 16 y 17 en García Barbón, 43 (restaurante Porto Santo).\nLíneas 4A y 4C (dir. Coia), 7, 12B, 16 y 17 se pueden tomar en Colón, 26 (oficina Banco Sabadell).\n"
},
{
"stopId": 5530,
@@ -6059,7 +6069,11 @@
"amenities": [
"shelter",
"display"
- ]
+ ],
+ "cancelled": true,
+ "alert": "error",
+ "title": "Cerrada por navidad",
+ "message": "Con motivo de las atracciones navideñas, esta parada queda anulada.\nLíneas C3 y 10 se pueden tomar en Rosalía de Castro 4 (detrás de ABANCA).\nResto de líneas en García Barbón 28 (pasando Alfonso XIII)\n"
},
{
"stopId": 5540,
@@ -6078,7 +6092,10 @@
"24",
"H2",
"PSA 1"
- ]
+ ],
+ "alert": "warning",
+ "title": "Líneas C3 y 10 no realizan parada",
+ "message": "Con motivo de las atracciones navideñas, las líneas C3 y 10 realizan\nprovisionalmente la parada en Rúa Oporto 28 (calle perpendicular a la parada).\n"
},
{
"stopId": 5560,
@@ -7362,19 +7379,15 @@
"9B",
"15B",
"15C",
- "24",
- "28",
- "N4"
- ],
- "cancelled": true,
- "title": "Parada movida a Colón 12",
- "alternateCodes": [
- 20208
+ "24"
],
"amenities": [
"shelter",
"display"
- ]
+ ],
+ "cancelled": true,
+ "title": "Parada movida a Colón 12",
+ "message": "Con motivo del corte por las atracciones navideñas, las líneas se deben coger en Colón 12 (20208), excepto la línea 9B que arranca en Urzaiz-Príncipe."
},
{
"stopId": 6640,
@@ -7604,7 +7617,10 @@
"N4",
"H1",
"VTS"
- ]
+ ],
+ "alert": "warning",
+ "title": "L24 no realiza parada",
+ "message": "Con motivo de las atracciones navideñas, la línea 24 no realiza parada en esta ubicación.\nSe puede tomar en Areal (aduana), antes del semáforo de Colón.\n"
},
{
"stopId": 6880,
@@ -9787,7 +9803,8 @@
"latitude": 42.169776602,
"longitude": -8.678942156,
"lines": [
- "A"
+ "A",
+ "15C"
]
},
{
@@ -10145,6 +10162,17 @@
]
},
{
+ "stopId": 9030,
+ "name": {
+ "original": "Xestoso (B)"
+ },
+ "latitude": 42.207537397,
+ "longitude": -8.670071905,
+ "lines": [
+ "15B"
+ ]
+ },
+ {
"stopId": 9040,
"name": {
"original": "Estrada das Plantas (cruce Camiño Monte Vello)"
@@ -10325,10 +10353,12 @@
"10",
"15B",
"15C",
- "24",
- "28",
- "N4"
- ]
+ "24"
+ ],
+ "cancelled": true,
+ "alert": "error",
+ "title": "Cerrada por navidad",
+ "message": "Con motivo de las atracciones navideñas, esta parada queda anulada.\nLínea 9B comienza en Urzaiz-Príncipe.\nLínea 24 se puede tomar en Colón 12 (provisional).\nResto de líneas en Marqués de Valladares (fronte 19) - subiendo Reconquista, primera calle a la derecha.\n"
},
{
"stopId": 14122,
@@ -14950,10 +14980,12 @@
"9B",
"10",
"15B",
- "15C",
- "28",
- "N4"
- ]
+ "15C"
+ ],
+ "cancelled": true,
+ "alert": "error",
+ "title": "Cerrada por navidad",
+ "message": "Con motivo de las atracciones navideñas, esta parada queda anulada.\nLa parada más cercana es Cánovas del Castillo, 18 (frente CC A Laxe).\n"
},
{
"stopId": 20195,
@@ -15019,18 +15051,15 @@
"10",
"15B",
"15C",
- "24",
- "28",
- "N4"
- ],
- "cancelled": true,
- "title": "Parada movida a Marqués de Valladares (fronte 19)",
- "alternateCodes": [
- 20206
+ "24"
],
"amenities": [
"shelter"
- ]
+ ],
+ "cancelled": true,
+ "alert": "error",
+ "title": "Parada movida a Marqués de Valladares (fronte 19)",
+ "message": "Con motivo del corte por las atracciones navideñas, las líneas se deben coger en Marqués de Valladares (fronte 19), excepto la línea 9B que arranca en Urzaiz-Príncipe y la 24 que para en Colón 12 (provisional)."
},
{
"stopId": 20199,
@@ -15068,8 +15097,16 @@
"latitude": 42.238271922,
"longitude": -8.723353532,
"lines": [
+ "C1",
"C3d",
- "10"
+ "A",
+ "5A",
+ "9B",
+ "10",
+ "15B",
+ "15C",
+ "28",
+ "N4"
]
},
{
@@ -15090,7 +15127,8 @@
"28",
"N4"
],
- "title": "Parada provisional sin datos"
+ "title": "Parada provisional sin datos",
+ "message": "Parada provisional donde paran las líneas de Policarpo Sanz 40 *exceptuando 9B*"
},
{
"stopId": 20209,