Récupération de la liste des trains empruntés
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user