ajout redux + nouveau lien

redux
mohamed 2 years ago
parent f3f41a2b94
commit ecf486f435

@ -11,20 +11,13 @@ type SessionListItemProps = {
export default function SessionListItem(props: SessionListItemProps) {
const timeInSeconds = props.session.getLaps()[props.session.getLaps().length - 1].getTime();
const timeInMs = timeInSeconds * 1000;
const date = new Date(timeInMs);
const minutes = date.getMinutes().toString().padStart(2, "0");
const seconds = date.getSeconds().toString().padStart(2, "0");
const milliseconds = date.getMilliseconds().toString().padStart(2, "0");
const formattedTime = `${minutes}:${seconds}:${milliseconds}`;
return (
<TouchableOpacity style={styles.container}
onPress={()=> props.onPress(props.session)}>
<Text style={styles.text_style}> {props.session.getName()}</Text>
<View style={styles.container_low}>
<Text style={styles.text_under}> {props.session.getType().toString() }</Text>
<Text style={styles.text_under}> { formattedTime }</Text>
<Text style={styles.text_under}> { timeInSeconds }</Text>
</View>
</TouchableOpacity>

@ -3,9 +3,9 @@ import { Point } from "./Point";
export class Lap {
private number : number;
private points: Point[];
private time: number;
private time: string;
constructor(number: number,points: Point[], time: number) {
constructor(number: number,points: Point[], time: string) {
this.number = number;
this.points = points;
this.time = time;
@ -31,17 +31,17 @@ export class Lap {
}
getFormattedTime(){
const timeInSeconds = this.time;
const timeInMs = timeInSeconds * 1000;
const date = new Date(timeInMs);
const minutes = date.getMinutes().toString().padStart(2, "0");
const seconds = date.getSeconds().toString().padStart(2, "0");
const milliseconds = date.getMilliseconds().toString().padStart(2, "0");
const formattedTime = `${minutes}:${seconds}:${milliseconds}`;
return formattedTime;
// const timeInSeconds = this.time;
// const timeInMs = timeInSeconds * 1000;
// const date = new Date(timeInMs);
// const minutes = date.getMinutes().toString().padStart(2, "0");
// const seconds = date.getSeconds().toString().padStart(2, "0");
// const milliseconds = date.getMilliseconds().toString().padStart(2, "0");
// const formattedTime = `${minutes}:${seconds}:${milliseconds}`;
// return formattedTime;
}
setTime(time: number) {
setTime(time: string) {
this.time = time;
}
getAverageSpeed(){

@ -34,14 +34,14 @@ export const getSessionsList = () => {
const sessionsPromise = await fetch('https://r-dash.azurewebsites.net/FullSession');
const sessionsListJson = await sessionsPromise.json();
const sessionsList: Session[] = sessionsListJson.map(elt => {
const laps: Lap[] = elt.laps.map(lap => {
const points: Point[] = lap.points.map(point => {
const geo = new Geocalisation(point.geo.latitude, point.geo.longitude);
return new Point(geo, point.timer, point.distance, point.nGear, point.pBrakeF, point.aSteer, point.rPedal, point.gLong, point.gLat, point.vCar);
const laps: Lap[] = elt["tours"].map(lap => {
const points: Point[] = lap["points"].map(point => {
const geo = new Geocalisation(point["longitude"], point["latitude"]);
return new Point(geo, point["timer"] , point["distance"], point["nGear"], point["pBrakeF"], point["aSteer"], point["rPedal"], point["gLong"], point["gLat"], point["vCar"]);
});
return new Lap(lap.number, points, lap.time);
return new Lap(lap["temps"], points, lap["temps"]);
});
return new Session(elt.name, laps, elt.type);
return new Session(elt["name"], laps, elt["type"]);
});
dispatch(setSessionsList(sessionsList));
} catch (error) {

@ -82,7 +82,7 @@ export default function Lap(props: { navigation: any, route : any}) {
>
<Polyline
coordinates={points}
strokeColor="#000" // set the color of the line
strokeColor="red" // set the color of the line
strokeWidth={3} // set the width of the line
/>
{/* <Marker
@ -101,7 +101,7 @@ export default function Lap(props: { navigation: any, route : any}) {
<View style={styles.infoContainer}>
<Text style={styles.infoItem}>Lap Time:</Text>
<Text style={styles.infoValue}>{currentLap.getFormattedTime()}</Text>
<Text style={styles.infoValue}>{currentLap.getTime()}</Text>
</View>
<View style={styles.infoContainer}>

@ -1,5 +1,5 @@
import { BackgroundImage, SearchBar } from "@rneui/base";
import React, { useState } from "react";
import React, { useEffect, useState } from "react";
import {
FlatList,
StyleSheet,
@ -7,9 +7,11 @@ import {
View,
TouchableOpacity,
} from "react-native";
import { useDispatch, useSelector } from "react-redux";
import SessionListItem from "../components/SessionCmp";
import TopBar from "../components/TopBar";
import { Session } from "../core/Session";
import { getSessionsList } from "../redux/actions/sessions";
import { SESSIONS } from "../stub/stub";
export default function Session_browser(props: { navigation: any }) {
@ -21,13 +23,23 @@ export default function Session_browser(props: { navigation: any }) {
navigation.navigate("Lap", { "session" : item });
};
const sessions = useSelector(state => state.appReducer.sessions);
const dispatch = useDispatch();
useEffect(() => {
const loadTeams = async () => {
await dispatch(getSessionsList());
};
loadTeams();
}, [dispatch]);
const filteredData =
search !== ""
? SESSIONS.filter((item) =>
? sessions.filter((item) =>
item.getName().toLowerCase().includes(search.toLowerCase())
)
: SESSIONS;
: sessions;
return (
<View style={styles.container}>
<View style={styles.container}>

Loading…
Cancel
Save