diff --git a/package-lock.json b/package-lock.json index 377c485..cc6dedd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "afficeheurs-ferrovia.", + "name": "afficheurs-ferrovia", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "afficeheurs-ferrovia.", + "name": "afficheurs-ferrovia", "version": "0.1.0", "dependencies": { "dependencies": "^0.0.1", diff --git a/package.json b/package.json index 4e1c900..b2d801a 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "web-vitals": "^2.1.4" }, "scripts": { - "start": "PORT=4010 react-scripts start", + "start": "react-scripts start", "build": "react-scripts build", "serve": "serve -s build -l 4010", "start:prod": "serve -s build -l 4010", diff --git a/public/sw.js b/public/sw.js new file mode 100644 index 0000000..847f370 --- /dev/null +++ b/public/sw.js @@ -0,0 +1,52 @@ +const CACHE_NAME = 'ferrovia-pwa-v1'; + +self.addEventListener('install', (event) => { + event.waitUntil( + caches.open(CACHE_NAME).then((cache) => { + return cache.addAll([ + './', + './index.html', + './manifest.json', + './favicon.ico', + './logo192.png', + './logo512.png' + ]); + }) + ); + self.skipWaiting(); +}); + +self.addEventListener('activate', (event) => { + event.waitUntil( + caches.keys().then((cacheNames) => { + return Promise.all( + cacheNames.filter((name) => name !== CACHE_NAME).map((name) => caches.delete(name)) + ); + }) + ); + self.clients.claim(); +}); + +self.addEventListener('fetch', (event) => { + // Ignorer les requêtes non-GET et les requêtes vers d'autres origines ou APIs + if (event.request.method !== 'GET' || !event.request.url.startsWith(self.location.origin)) { + return; + } + + event.respondWith( + caches.match(event.request).then((cachedResponse) => { + if (cachedResponse) { + return cachedResponse; + } + return fetch(event.request).then((networkResponse) => { + return caches.open(CACHE_NAME).then((cache) => { + cache.put(event.request, networkResponse.clone()); + return networkResponse; + }); + }).catch(() => { + // En cas d'échec réseau total, on pourrait retourner un fallback hors-ligne + return caches.match('./index.html'); + }); + }) + ); +}); diff --git a/public/type/data.json b/public/type/data.json index 585eebd..b1bd9de 100644 --- a/public/type/data.json +++ b/public/type/data.json @@ -1,5 +1,5 @@ { - "generatedAt": "2025-10-24T21:56:22.827Z", + "generatedAt": "2026-10-24T21:56:22.827Z", "logos": [ { "file": "logo-aleop.svg", @@ -8,11 +8,12 @@ "name": "Aleop" }, { - "file": "logo-auvergerhonealpes.svg", - "path": "/logo-auvergerhonealpes.svg", + "file": "sncf-voyageurs-logo.png", + "path": "/sncf-voyageurs-logo.png", "slug": "auvergerhonealpes", - "name": "Auvergerhonealpes" + "name": "TER AURA" }, + { "file": "logo-breizhgo.svg", "path": "/logo-breizhgo.svg",, diff --git a/scratch/patch_app.js b/scratch/patch_app.js new file mode 100644 index 0000000..08625a3 --- /dev/null +++ b/scratch/patch_app.js @@ -0,0 +1,204 @@ +const fs = require('fs'); + +const filePath = 'c:\\Users\\mathi\\Documents\\Développement WEB\\ferrovia-infogare\\src\\App.js'; + +let content = fs.readFileSync(filePath, 'utf-8'); + +content = content.replace( + "import React, { useEffect, useState } from 'react';", + "import React, { useEffect, useState } from 'react';\nimport { WcsCard, WcsCardBody, WcsButton, WcsBadge } from 'wcs-react';" +); + +const home_component_old = ` return ( +
+ {source === 'supabase' + ? "Consultez les afficheurs basés sur les données de votre BDD Supabase." + : "Simulateur d'écrans de gare officiels connectés en direct aux flux GTFS & Open Data SNCF."} +
++ Consultez les trains au départ, leurs voies, retards et dessertes complètes. +
++ Suivez en direct les trains attendus en gare, provenances et voies assignées. +
++ {source === 'supabase' + ? "Consultez les afficheurs basés sur les données de votre BDD Supabase." + : "Simulateur d'écrans de gare officiels connectés en direct aux flux GTFS & Open Data SNCF."} +
+Consultez les trains au départ, leurs voies, retards et dessertes complètes.
+Suivez en direct les trains attendus en gare, provenances et voies assignées.
+Accès direct par gare :
++ {source === 'supabase' + ? "Consultez les afficheurs basés sur les données de votre BDD Supabase." + : "Simulateur d'écrans de gare officiels connectés en direct aux flux GTFS & Open Data SNCF."} +
++ Consultez les trains au départ, leurs voies, retards et dessertes complètes. +
++ Suivez en direct les trains attendus en gare, provenances et voies assignées. +
++ {source === 'supabase' + ? "Consultez les afficheurs basés sur les données de votre BDD Supabase." + : "Simulateur d'écrans de gare officiels connectés en direct aux flux GTFS & Open Data SNCF."} +
+Consultez les trains au départ, leurs voies, retards et dessertes complètes.
+Suivez en direct les trains attendus en gare, provenances et voies assignées.
+Accès direct par gare :
+- {source === 'supabase' - ? "Consultez les afficheurs basés sur les données de votre BDD Supabase." - : "Simulateur d'écrans de gare officiels connectés en direct aux flux GTFS & Open Data SNCF."} -
++ {source === 'supabase' + ? "Consultez les afficheurs basés sur les données de votre BDD Supabase." + : "Simulateur d'écrans de gare officiels connectés en direct aux flux GTFS & Open Data SNCF."} +
+- Consultez les trains au départ, leurs voies, retards et dessertes complètes. -
-Consultez les trains au départ, leurs voies, retards et dessertes complètes.
+- Suivez en direct les trains attendus en gare, provenances et voies assignées. -
-Suivez en direct les trains attendus en gare, provenances et voies assignées.
+Accès direct par gare :
+Le mode Picture-in-Picture s'activera pour une meilleure expérience sur mobile.
+Vous pouvez naviguer sur votre téléphone, l'afficheur restera au premier plan.
+ +Recherchez une gare pour afficher le tableau des arrivées en temps réel.
+Recherchez une gare pour afficher le tableau des arrivées en temps réel.
+⏳ Chargement des gares...
} - {error &&⚠️ Erreur : {error}
} - - {/* Invitation à la recherche en mode SNCF */} - {source === 'sncf' && search.trim().length < 2 && ( -- 💡 Saisissez au moins 2 lettres pour chercher parmi plus de 3 500 gares du réseau français. -
-Gares fréquentes :
+⏳ Chargement des gares...
} + {error &&⚠️ Erreur : {error}
} + + {source === 'sncf' && search.trim().length < 2 && ( ++ 💡 Saisissez au moins 2 lettres pour chercher parmi plus de 3 500 gares du réseau français. +
+Recherchez une gare pour afficher le tableau des départs en temps réel.
+Recherchez une gare pour afficher le tableau des départs en temps réel.
+⏳ Chargement des gares...
} - {error &&⚠️ Erreur : {error}
} - - {/* Invitation à la recherche en mode SNCF */} - {source === 'sncf' && search.trim().length < 2 && ( -- 💡 Saisissez au moins 2 lettres pour chercher parmi plus de 3 500 gares du réseau français. -
-Gares fréquentes :
+⏳ Chargement des gares...
} + {error &&⚠️ Erreur : {error}
} + + {source === 'sncf' && search.trim().length < 2 && ( ++ 💡 Saisissez au moins 2 lettres pour chercher parmi plus de 3 500 gares du réseau français. +
+- Gare : {formattedGareName} • Mode : {mode === 'arrivees' ? '🏁 Arrivées' : '🚆 Départs'} -
-{t.desc}
-+ Gare : {formattedGareName} • Mode : {mode === 'arrivees' ? '🏁 Arrivées' : '🚆 Départs'} +
{t.desc}
+ +- Gare : {decodedGare} • Mode : {modeParam === 'arrivees' ? '🏁 Arrivées' : '🚆 Départs'} • Style : {typeParam.toUpperCase()} -
-- Affiche la liste complète des circulations avec basculement automatique des pages. +
+ Gare : {decodedGare} • Mode : {modeParam === 'arrivees' ? '🏁 Arrivées' : '🚆 Départs'} • Style : {typeParam.toUpperCase()}
- - {typeParam === 'afl' && ( -- Affiche le prochain train au départ/arrivée avec la liste déroulante des gares desservies sur la voie. -
++ Affiche la liste complète des circulations avec basculement automatique des pages. +
-Options d'affichage :
++ Affiche le prochain train au départ/arrivée avec la liste déroulante des gares desservies sur la voie. +
+ +⏳ Détection des voies...
+ ) : ( + <> + {platforms.length > 0 && ( ++ Écran dédié aux perturbations de circulation en temps réel et travaux de maintenance sur le réseau. +
++ Écran d'annonces et consignes dynamiques de la gare (Vigipirate, étiquetage des bagages, sécurité). +
+- Écran dédié aux perturbations de circulation en temps réel et travaux de maintenance sur le réseau. -
-Accès direct à une page fixe AFL :
+- Écran d'annonces et consignes dynamiques de la gare (Vigipirate, étiquetage des bagages, sécurité en gare). -
-