Ajout des velov et des derniers passages

This commit is contained in:
lol
2026-06-13 23:32:19 +02:00
parent 58720611f7
commit 6885bba1e8
5 changed files with 644 additions and 147 deletions
+43 -6
View File
@@ -1,4 +1,5 @@
const DAY_IN_MS = 8.64e+7;
const MIN_TIME_BETWEEN_DAYS = 2 * 60 * 60000 // 2 hours
class StopId {
constructor(stopIdString){
@@ -138,27 +139,63 @@ export async function getNextPassage(stop_description, options = {
}
let [line, next_trip, line_stops, ...all_timetables] = await Promise.all(proms);
console.log(stopId)
console.log("line", line)
console.log("next trip", next_trip)
console.log("stop", line_stops)
console.log("timetable", all_timetables)
let line_timetables = []
for(let timetable of all_timetables){
line_timetables.push(...timetable)
}
line.timetable = line_timetables
line.getLastPassageTime = getLastPassageTime.bind(line)
let stop = line_stops.find(it => it.id == stopId.stopId)
let time;
if(next_trip.schedules){
let next_schedule = next_trip.schedules.find(it => (new Date(it.dateTime).getTime() - Date.now()) > 120000 )
if(!next_schedule) {
next_schedule = next_trip.schedules[next_trip.schedules.length - 1]
}
if(next_schedule){
time = new Date(next_schedule.dateTime)
}
}
let nextPassage = {
line,
displayName: stop?.name,
displayTime: "<unsupported>",
time: next_trip.schedules?.[0] ? new Date(next_trip.schedules?.[0].dateTime) : null
}
nextPassage.getLastPassageTime = getLastPassageTime.bind(nextPassage)
return nextPassage
}
export async function getVelovBikeState(station_id){
let res = await fetch(`/api/interface/tcl/realtime/navitia/${decodeURIComponent(station_id)}`)
if(!res.ok){
throw new Error(`Server responded with ${res.status} ${res.statusText}`)
}
return await res.json()
}
function getLastPassageTime(){
let timetable = this.timetable || this.line.timetable
if(!timetable){
return
}
let now = new Date()
let last_passage = timetable
.find((it, i) => {
if((timetable[i+1]) && it.time.getTime() > now && (it.time.getTime() + MIN_TIME_BETWEEN_DAYS) < timetable[i+1].time.getTime()){
return true
} else {
return false
}
})
return last_passage
}