diff --git a/sncf-station/src/Station.js b/sncf-station/src/Station.js
index bd7d9c8..6628226 100644
--- a/sncf-station/src/Station.js
+++ b/sncf-station/src/Station.js
@@ -1,11 +1,40 @@
import './sncf.scss'
-import {useParams} from "react-router-dom"
+import {useParams, useSearchParams} from "react-router-dom"
import TrainsTable from "./TrainsTable"
import {useEffect, useState} from "react";
+function DateTimeSelector({date, time}) {
+ return <>
+
+ >
+}
+
function Station() {
let {stopId} = useParams()
let [stop, setStop] = useState({'name': "Chargement…"})
+ let [searchParams, setSearchParams] = useSearchParams()
+ const now = new Date()
+ let dateNow = now.toISOString().split('T')[0]
+ let timeNow = now.toTimeString().split(' ')[0].substring(0, 5)
+ let [date, setDate] = useState(searchParams.get('date') || dateNow)
+ let [time, setTime] = useState(searchParams.get('time') || timeNow)
useEffect(() => {
fetch(`http://localhost:8000/api/gtfs/stop/${stopId}/`)
@@ -22,8 +51,9 @@ function Station() {
-
-
+
+
+
)
diff --git a/sncf-station/src/TrainsTable.js b/sncf-station/src/TrainsTable.js
index 374aeb2..17c6ab5 100644
--- a/sncf-station/src/TrainsTable.js
+++ b/sncf-station/src/TrainsTable.js
@@ -1,12 +1,12 @@
import {useEffect, useState} from "react";
-function TrainsTable({stop, tableType}) {
+function TrainsTable({stop, date, time, tableType}) {
let tableClass = tableType === "departures" ? "table-departures" : "table-arrivals"
tableClass = `table table-striped ${tableClass}`
return <>
>
}
@@ -21,19 +21,19 @@ function TrainsTableHeader() {
}
-function TrainsTableBody({stop, tableType}) {
+function TrainsTableBody({stop, date, time, tableType}) {
const [trains, setTrains] = useState([])
useEffect(() => {
if (stop.id !== undefined) {
- fetch(`http://localhost:8000/api/station/next_${tableType}/?stop_id=${stop.id}&format=json`)
+ fetch(`http://localhost:8000/api/station/next_${tableType}/?stop_id=${stop.id}&date=${date}&time=${time}&format=json`)
.then(response => response.json())
.then(data => data.results)
.then(data => {
setTrains(data)
})
}
- }, [stop, tableType])
+ }, [stop, tableType, date, time])
let table_rows = trains.map((train) => )
@@ -127,7 +127,7 @@ function TrainRow({train, tableType}) {
- {train.departure_time}
+ {getDisplayTime(train, tableType)}
|
@@ -182,4 +182,10 @@ function getTextColor(train, route) {
}
}
+function getDisplayTime(train, tableType) {
+ let time = tableType === "departures" ? train.departure_time : train.arrival_time
+ let day_split = time.split(' ')
+ return day_split[day_split.length - 1].substring(0, 5)
+}
+
export default TrainsTable;
\ No newline at end of file
diff --git a/sncf/api/views.py b/sncf/api/views.py
index a395992..9306265 100644
--- a/sncf/api/views.py
+++ b/sncf/api/views.py
@@ -45,8 +45,8 @@ class StopTimeViewSet(viewsets.ReadOnlyModelViewSet):
serializer_class = StopTimeSerializer
filter_backends = [DjangoFilterBackend, OrderingFilter]
filterset_fields = '__all__'
- ordering_fields = ['arrival_time', 'departure_time', 'stop_sequence',]
- ordering = ['stop_sequence',]
+ ordering_fields = ['arrival_time', 'departure_time', 'stop_sequence', ]
+ ordering = ['stop_sequence', ]
class CalendarViewSet(viewsets.ReadOnlyModelViewSet):
@@ -88,7 +88,9 @@ class NextDeparturesViewSet(viewsets.ReadOnlyModelViewSet):
stop_name = self.request.query_params.get('stop_name', None)
query_date = date.fromisoformat(self.request.query_params.get('date', now.date().isoformat()))
query_time = self.request.query_params.get('time', now.time().isoformat(timespec='seconds'))
- query_time = timedelta(seconds=int(query_time[:2]) * 3600 + int(query_time[3:5]) * 60 + int(query_time[6:]))
+ query_time = timedelta(seconds=int(query_time[:2]) * 3600
+ + int(query_time[3:5]) * 60
+ + (int(query_time[6:]) if len(query_time) > 6 else 0))
yesterday = query_date - timedelta(days=1)
time_yesterday = query_time + timedelta(days=1)
@@ -144,7 +146,9 @@ class NextArrivalsViewSet(viewsets.ReadOnlyModelViewSet):
stop_name = self.request.query_params.get('stop_name', None)
query_date = date.fromisoformat(self.request.query_params.get('date', now.date().isoformat()))
query_time = self.request.query_params.get('time', now.time().isoformat(timespec='seconds'))
- query_time = timedelta(seconds=int(query_time[:2]) * 3600 + int(query_time[3:5]) * 60 + int(query_time[6:]))
+ query_time = timedelta(seconds=int(query_time[:2]) * 3600
+ + int(query_time[3:5]) * 60
+ + (int(query_time[6:]) if len(query_time) > 6 else 0))
yesterday = query_date - timedelta(days=1)
time_yesterday = query_time + timedelta(days=1)
|