From 25cbb79c11a9860d6be04e53e0e12ae76e053f0e Mon Sep 17 00:00:00 2001 From: GOEPP THOMAS <thomas@saturne-digital.fr> Date: Wed, 8 Jan 2025 10:18:52 +0100 Subject: [PATCH 1/7] chore: removed unused comments --- screens/PlayingQuiz/EndQuiz/EndQuiz.tsx | 75 ------------------------- 1 file changed, 75 deletions(-) diff --git a/screens/PlayingQuiz/EndQuiz/EndQuiz.tsx b/screens/PlayingQuiz/EndQuiz/EndQuiz.tsx index 8297ee0..2d567b3 100644 --- a/screens/PlayingQuiz/EndQuiz/EndQuiz.tsx +++ b/screens/PlayingQuiz/EndQuiz/EndQuiz.tsx @@ -35,78 +35,3 @@ const styles = StyleSheet.create({ flexDirection: 'column', }, }); - - - -// import DefaultButton from "../../components/DefaultButton"; -// import { TextsStyles } from "../../styles/TextsStyles"; -// import { ButtonsStyles } from "../../styles/ButtonsStyles"; -// import {useTranslation} from "react-i18next"; -// import QuizModel from "../../models/QuizModel"; -// import {NavigationProp, RouteProp} from "@react-navigation/native"; - -// type RoutePropsType = { -// EndQuiz: { -// quiz: QuizModel; -// }; -// }; - -// interface Props { -// navigation: NavigationProp<any>; -// route: RouteProp<RoutePropsType, "EndQuiz">; -// } - -// export default function EndQuiz({ navigation, route }: Props) { -// const { quiz } = route.params; -// const {t} = useTranslation(); -// const handleButtonRePlayPressed = () => { -// quiz.nbActualQuestion = 1; -// quiz.score = 0; -// navigation.reset({ -// index: 0, -// routes: [ -// { -// name: "PlayingQuiz", -// params: {quiz: quiz}, -// }, -// ] -// }); -// } - -// const handleButtonHomePressed = () => { -// navigation.navigate('Home'); -// } - -// return ( -// <View style={styles.container}> -// <Image source={require('../../assets/FondTemplate.png')} style={styles.image}/> -// <Text style={TextsStyles.titleText}>{t("app.screens.endQuiz.score")} : {quiz.score}</Text> -// <Text style={TextsStyles.subtitleText}>{((quiz.score/quiz.nbQuestions)*100 > 50 ) ? t("app.screens.endQuiz.lose") : t("app.screens.endQuiz.win")}</Text> -// <View style={styles.buttonContainer}> -// <DefaultButton text={t("app.screens.endQuiz.replay")} handleButtonPressed={handleButtonRePlayPressed} buttonStyle={ButtonsStyles.defaultButton}></DefaultButton> -// <DefaultButton text={t("app.screens.endQuiz.goHome")} handleButtonPressed={handleButtonHomePressed}></DefaultButton> -// </View> -// </View> -// ) -// } - -// const styles = StyleSheet.create({ -// container: { -// display: 'flex', -// width: '100%', -// height: '100%', -// alignItems: 'center', -// justifyContent: 'center', -// gap: 10, -// }, -// buttonContainer: { -// width: '80%', -// margin: '10%', -// gap: 20 -// }, -// image: { -// width: '100%', -// height: '100%', -// position: 'absolute', -// }, -// }); \ No newline at end of file -- GitLab From 7557b98b9e70f03e1eea7518ba2ffd95896e33df Mon Sep 17 00:00:00 2001 From: GOEPP THOMAS <thomas@saturne-digital.fr> Date: Wed, 8 Jan 2025 10:19:39 +0100 Subject: [PATCH 2/7] feat: added the EndQuizMulti screen --- .../PlayingQuiz/EndQuizMulti/EndQuizMulti.tsx | 41 +++++ .../EndQuizMulti/EndQuizMultiChild.tsx | 156 ++++++++++++++++++ 2 files changed, 197 insertions(+) create mode 100644 screens/PlayingQuiz/EndQuizMulti/EndQuizMulti.tsx create mode 100644 screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx diff --git a/screens/PlayingQuiz/EndQuizMulti/EndQuizMulti.tsx b/screens/PlayingQuiz/EndQuizMulti/EndQuizMulti.tsx new file mode 100644 index 0000000..1945637 --- /dev/null +++ b/screens/PlayingQuiz/EndQuizMulti/EndQuizMulti.tsx @@ -0,0 +1,41 @@ +import {NavigationProp, RouteProp} from "@react-navigation/native"; +import { View, StyleSheet, Image, Text } from "react-native"; +import TemplateMenu from "../../../templates/TemplateMenu"; +import {Quiz} from "../../../models/Quiz"; +import EndQuizChild from "../EndQuiz/EndQuizChild"; +import EndQuizMultiChild from "./EndQuizMultiChild"; + +type RoutePropsType = { + EndQuizChild: { + quiz: Quiz; + }; +}; +interface Props { + route: RouteProp<RoutePropsType, "EndQuizChild">; + navigation: NavigationProp<any>; +} + +export default function EndQuizMulti({route,navigation}: Props) { + const { quiz } = route.params; + return ( + <View style={styles.containerGlobal}> + <TemplateMenu navigation={navigation} headerNavigation={false} buttonGoBack={false}> + <View> + <EndQuizMultiChild navigation={navigation} quiz={quiz}/> + </View> + </TemplateMenu> + </View> + ); +} + +const styles = StyleSheet.create({ + containerGlobal: { + display: 'flex', + width: '100%', + height: '100%', + flexDirection: 'column', + }, +}); + + + diff --git a/screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx b/screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx new file mode 100644 index 0000000..3ba9918 --- /dev/null +++ b/screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx @@ -0,0 +1,156 @@ +import { View, Image, Text, StyleSheet } from "react-native"; +import DefaultButton from "../../../components/buttons/DefaultButton"; +import { NavigationProp, RouteProp } from "@react-navigation/native"; +import {Quiz} from "../../../models/Quiz"; +import {useQuizService} from "../../../services/QuizService"; +import HttpError from "../../../services/HttpError"; +import UserScore from "../../../components/PlayingQuiz/EndQuiz/UserScore"; +import UserModel from "../../../models/UserModel"; +import EndQuizListPlayer from "../../../components/PlayingQuiz/EndQuiz/EndQuizListPlayer"; + + + +interface Props { + navigation: NavigationProp<any>; + quiz: Quiz; +} + +export default function EndQuizMultiChild({ navigation, quiz }: Props) { + + const {restartQuiz, remainingQuiz} = useQuizService() + + const handleRestartPress = async () => { + const isRestarted = await restartQuiz(quiz.id); + if(HttpError.isHttpError(isRestarted)){ + console.log(isRestarted.message); + return + } + if(!isRestarted) { + return; + } + const quizRestarted = await remainingQuiz(quiz.id); + if(HttpError.isHttpError(quizRestarted)){ + console.log(quizRestarted.message); + return + } + + navigation.reset({ + index: 0, + routes: [ + { + name: "PlayingQuiz", + params: {quizRecovered: quizRestarted}, + }, + ] + }); + }; + + const handleBackToMenu = () => { + navigation.navigate('TabNavigator'); + }; + const user = new UserModel(10,"Thomassss", "Thomas"); + + return ( + <View style={styles.container}> + <View style={styles.containerHeader}> + <Image source={require('../../../assets/TitleApp.png')}/> + </View> + <View style={styles.containerBody}> + <Image + source={require('../../../assets/stars.png')} // URL de l'avatar ou placeholder + style={styles.stars} + /> + <View style={styles.usersContainer}> + <UserScore user={user} score={10} maxScore={quiz.questionCount} isFirst={false}/> + <UserScore user={user} score={10} maxScore={quiz.questionCount} isFirst={true}/> + <UserScore user={user} score={10} maxScore={quiz.questionCount} isFirst={false}/> + </View> + <EndQuizListPlayer users={[new UserModel(1, "user1", "user1@email.com"), new UserModel(2, "user2", "user2@email.com")]} maxScore={quiz.questionCount}/> + + <DefaultButton text="RESTART" handleButtonPressed={handleRestartPress} buttonStyle={styles.whiteButton} buttonText={styles.whiteButtonText}></DefaultButton> + <DefaultButton text="BACK TO MENU" handleButtonPressed={handleBackToMenu} buttonStyle={styles.blueButton} buttonText={styles.blueButtonText}></DefaultButton> + </View> + </View> + ); +} + +const styles = StyleSheet.create({ + container: { + height: '100%', + width: '100%', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'space-around' + }, + usersContainer: { + display: 'flex', + width: '100%', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-around', + }, + containerHeader: { + height: '10%', + width: '100%', + alignItems: 'center', + }, + containerBody: { + height: '80%', + width: '90%', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'space-around', + backgroundColor: '#F3F3F3', + borderRadius: 40, + padding: '5%', + shadowColor: "#000", + shadowOffset: { + width: 0, + height: 2, + }, + shadowOpacity: 0.25, + shadowRadius: 3.84, + elevation: 5, + }, + TextBodyTitle: { + textAlign: 'center', + fontSize: 24, + fontWeight: 'bold', + }, + TextBody: { + textAlign: 'center', + fontSize: 22, + fontWeight: 'bold', + }, + whiteButton: { + height: '12%', + width: '80%', + backgroundColor: '#FFFFFF', + borderColor: '#2B73FE', + borderWidth: 4, + borderRadius: 10, + padding: 0 + }, + whiteButtonText: { + fontSize: 24, + fontWeight: 'bold', + color: '#2B73FE', + }, + blueButton: { + height: '12%', + width: '80%', + backgroundColor: '#2B73FE', + borderRadius: 10, + padding: 0 + }, + blueButtonText: { + fontSize: 24, + fontWeight: 'bold', + color: '#FFFFFF', + }, + stars: { + resizeMode: "cover", + }, +}); \ No newline at end of file -- GitLab From 26d19830c74b148e10fde84ca73ab05285ccea27 Mon Sep 17 00:00:00 2001 From: GOEPP THOMAS <thomas@saturne-digital.fr> Date: Wed, 8 Jan 2025 10:20:04 +0100 Subject: [PATCH 3/7] feat: added the EndQuizListPlayer --- .../PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx diff --git a/components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx b/components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx new file mode 100644 index 0000000..a2378cb --- /dev/null +++ b/components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx @@ -0,0 +1,86 @@ +import React from "react"; +import { FlatList, View, Text, StyleSheet, Image } from "react-native"; +import UserModel from "../../../models/UserModel"; + +interface Props { + users: UserModel[]; + maxScore: number; +} + +export default function EndQuizListPlayer({ users, maxScore }: Props) { + const renderUser = ({ item, index }: { item: UserModel; index: number }) => ( + <View style={[styles.userContainer, index === 0 && styles.firstPlace]}> + <Image + source={require("../../../assets/ProfilBaseImage.png")} // Replace with actual profile picture if available + style={styles.avatar} + /> + <View style={styles.infoContainer}> + <Text style={[styles.username, index === 0 && styles.firstPlaceText]}> + {item.username.toUpperCase()} + </Text> + <Text style={styles.score}> + {10 + index}/{maxScore} {/* Adjust score logic as needed */} + </Text> + </View> + </View> + ); + + return ( + <View style={styles.container}> + <FlatList + data={users} + renderItem={renderUser} + keyExtractor={(item) => item.id.toString()} + showsVerticalScrollIndicator={false} + /> + </View> + ); +} + +const styles = StyleSheet.create({ + container: { + width: "100%", + padding: 20, + backgroundColor: "#fff", + borderRadius: 20, + }, + userContainer: { + flexDirection: "row", + alignItems: "center", + backgroundColor: "#f9f9f9", + borderRadius: 10, + padding: 15, + marginBottom: 10, + shadowColor: "#000", + shadowOffset: { width: 0, height: 2 }, + shadowOpacity: 0.1, + shadowRadius: 3, + elevation: 2, + }, + firstPlace: { + // backgroundColor: "#ffe700", + // shadowColor: "#ff9900", + // shadowOpacity: 0.3, + }, + avatar: { + width: 40, + height: 40, + borderRadius: 25, + marginRight: 15, + }, + infoContainer: { + flex: 1, + }, + username: { + fontSize: 18, + fontWeight: "bold", + color: "#333", + }, + firstPlaceText: { + // color: "#ff9900", + }, + score: { + fontSize: 16, + color: "#666", + }, +}); -- GitLab From 196e7f0d60eacb4377b54e8a91e820dfdde6a5c5 Mon Sep 17 00:00:00 2001 From: GOEPP THOMAS <thomas@saturne-digital.fr> Date: Wed, 8 Jan 2025 10:20:17 +0100 Subject: [PATCH 4/7] feat: added the UserScore --- components/PlayingQuiz/EndQuiz/UserScore.tsx | 79 ++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 components/PlayingQuiz/EndQuiz/UserScore.tsx diff --git a/components/PlayingQuiz/EndQuiz/UserScore.tsx b/components/PlayingQuiz/EndQuiz/UserScore.tsx new file mode 100644 index 0000000..d57489c --- /dev/null +++ b/components/PlayingQuiz/EndQuiz/UserScore.tsx @@ -0,0 +1,79 @@ +import UserModel from "../../../models/UserModel"; +import { View, Text, StyleSheet, Image } from "react-native"; + +interface Props { + user: UserModel; + score: number; + maxScore: number; + isFirst: boolean; +} + +export default function UserScore({ user, score, maxScore, isFirst }: Props) { + + function shortenString(input: string): string { + if (input.length <= 5) { + return input; // Si la chaîne est déjà de 4 caractères ou moins, on la retourne telle quelle + } + return `${input.slice(0, 5)}...`; // Garde les 4 premiers caractères et ajoute "..." + } + + return ( + <View style={styles.container}> + <View style={[styles.avatarContainer, isFirst && styles.firstAvatar]}> + <Image + source={require('../../../assets/ProfilBaseImage.png')} // URL de l'avatar ou placeholder + style={styles.avatar} + /> + </View> + <Text style={styles.userName}>{shortenString(user.username.toUpperCase())}</Text> + <Text style={styles.userScore}> + {score}/{maxScore} + </Text> + </View> + ); +} + + + +const styles = StyleSheet.create({ + container: { + display: "flex", + flexDirection: "column", + alignItems: "center", + justifyContent: "space-around", + marginHorizontal: 10, + }, + avatarContainer: { + width: 70, + height: 70, + borderRadius: 50, + backgroundColor: "#d9e3f0", // Fond gris clair + alignItems: "center", + justifyContent: "center", + }, + firstAvatar: { + width: 90, + height: 90, + // borderWidth: 3, // Ajoute une bordure pour le premier utilisateur + // borderColor: "#FFD700", // Couleur or pour marquer le premier + }, + avatar: { + width: "100%", + height: "100%", + resizeMode: "cover", + }, + userName: { + fontSize: 16, + fontWeight: "bold", + color: "#000", + marginTop: 5, + textAlign: "center", + }, + userScore: { + fontSize: 14, + fontWeight: "500", + color: "#333", + textAlign: "center", + marginTop: 5, + }, +}); -- GitLab From 47f3e388626975e4f8e988bbfd7ca13129b4b7fa Mon Sep 17 00:00:00 2001 From: GOEPP THOMAS <thomas@saturne-digital.fr> Date: Wed, 8 Jan 2025 10:20:54 +0100 Subject: [PATCH 5/7] feat: added the navigation for EndQuizMulti --- routes/StackNavigator.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/routes/StackNavigator.tsx b/routes/StackNavigator.tsx index 7f91326..e0b86ca 100644 --- a/routes/StackNavigator.tsx +++ b/routes/StackNavigator.tsx @@ -8,6 +8,7 @@ import TabNavigator from "./TabNavigation"; import PlayQuiz from "../screens/Home/PlayQuiz/PlayQuiz"; import MyQuizzes from "../screens/Home/MyQuizzes/MyQuizzes"; import InformationsOfQuiz from "../screens/Community/InformationsOfQuiz/InformationsOfQuiz"; +import EndQuizMulti from "../screens/PlayingQuiz/EndQuizMulti/EndQuizMulti"; const Stack = createNativeStackNavigator(); @@ -21,6 +22,7 @@ export default function StackNavigator() { <Stack.Screen name="PlayingQuiz" component={PlayingQuiz} options={{ headerShown: false }}/> <Stack.Screen name="PlayQuiz" component={PlayQuiz} options={{ headerShown: false }}/> <Stack.Screen name="EndQuiz" component={EndQuiz} options={{ headerShown: false }}/> + <Stack.Screen name="EndQuizMulti" component={EndQuizMulti} options={{ headerShown: false }}/> <Stack.Screen name="MyQuizzes" component={MyQuizzes} options={{ headerShown: false }}/> <Stack.Screen name="InformationsOfQuiz" component={InformationsOfQuiz} options={{ headerShown: false }}/> </Stack.Navigator> -- GitLab From 09b96f1cdf1382d849a55ed7d5e8ace42a1e9811 Mon Sep 17 00:00:00 2001 From: GOEPP THOMAS <thomas@saturne-digital.fr> Date: Wed, 8 Jan 2025 10:21:07 +0100 Subject: [PATCH 6/7] feat: added stars.png --- assets/stars.png | Bin 0 -> 6666 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/stars.png diff --git a/assets/stars.png b/assets/stars.png new file mode 100644 index 0000000000000000000000000000000000000000..09c430621cb58984d1b88f1e46e5d71c2b9a3284 GIT binary patch literal 6666 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 U!EG5~)c^nh07*qoM6N<$g1z6<u>b%7 literal 0 HcmV?d00001 -- GitLab From 57198d68e6b983884b461117d381800775b8db6e Mon Sep 17 00:00:00 2001 From: GOEPP THOMAS <thomas@saturne-digital.fr> Date: Wed, 8 Jan 2025 10:21:39 +0100 Subject: [PATCH 7/7] debug: for go into endquiz screen --- screens/Home/Home.tsx | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/screens/Home/Home.tsx b/screens/Home/Home.tsx index dc3b638..1369070 100644 --- a/screens/Home/Home.tsx +++ b/screens/Home/Home.tsx @@ -3,12 +3,35 @@ import TemplateMono from "../../templates/TemplateMono"; import HomeChild from "./HomeChild"; import TemplateMenu from "../../templates/TemplateMenu"; import {NavigationProp} from "@react-navigation/native"; +import {Quiz} from "../../models/Quiz"; interface Props { navigation: NavigationProp<any>; } export default function Home({navigation}: Props) { + const debugQuiz: Quiz = { + id: "debug-quiz-001", + name: "Debug Quiz", + description: "This is a basic quiz for debugging purposes.", + score: 0, + questionIndex: 0, + questionCount: 0, + categoryId: 1, + difficultyId: 1, + authorId: 1, + category: { + id: 1, + name: "General Knowledge", + }, + difficulty: { + id: 1, + name: "Easy", + }, + questions: [], // Tableau de questions vide + }; + + navigation.navigate("EndQuizMulti", {quiz: debugQuiz}); return ( <View style={styles.containerGlobal}> <TemplateMenu navigation={navigation} headerNavigation={false} buttonGoBack={false}> -- GitLab