Récupération de la liste des trains empruntés

This commit is contained in:
2024-12-12 14:56:17 +01:00
parent 33ee18d7e2
commit 38117ade07
4 changed files with 88 additions and 33 deletions

View File

@ -1,28 +1,4 @@
import { createSlice } from '@reduxjs/toolkit'
export interface InterrailLeg {
infoJson?: string
info?: InterrailLegInfo
sortOrder: number
}
export interface InterrailTravel {
date: string
infoJson?: string
info?: InterrailTravelInfo
from: string
to: string
type: number
legs: InterrailLeg[]
}
export interface InterrailJourneyData {
travels: InterrailTravel[]
}
export interface InterrailJourney {
data: InterrailJourneyData
}
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
export interface InterrailTime {
hours: number
@ -85,6 +61,8 @@ export interface TrainTrip {
to: string,
departureTime: number,
arrivalTime: number,
infoJson?: string,
info?: InterrailLegInfo,
}
export interface TrainsState {
@ -95,13 +73,43 @@ const initialState: TrainsState = {
trains: []
}
export interface PaginationMeta {
currentPage: number
lastPage: number
nextPage: number
prevPage: number
total: number
totalPerPage: number
}
export interface TrainsPayload {
data: TrainTrip[]
meta: PaginationMeta
}
export const trainSlice = createSlice({
name: 'train',
initialState: initialState,
reducers: {
downloadTrains(state, action: PayloadAction<TrainsPayload>) {
state.trains = state.trains.filter(train => action.payload.data.filter(dlTrain => dlTrain.id === train.id) === null)
for (const dlTrain of action.payload.data) {
const info = dlTrain.infoJson ? JSON.parse(dlTrain.infoJson) : undefined
state.trains.push({
id: dlTrain.id,
distance: dlTrain.distance,
from: dlTrain.from,
to: dlTrain.to,
departureTime: dlTrain.departureTime,
arrivalTime: dlTrain.arrivalTime,
info: info,
})
state.trains.sort((t1, t2) => t1.departureTime > t2.departureTime ? -1 : t1.departureTime == t2.arrivalTime ? 0 : 1)
}
}
},
})
export const { } = trainSlice.actions
export const {downloadTrains } = trainSlice.actions
export default trainSlice.reducer