From f9a2fa06ff56879fa3a8111a747de73da8b155a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20HUSS?= <theophile.huss@gmail.com> Date: Thu, 5 Dec 2024 23:56:36 +0100 Subject: [PATCH 1/5] feat: Add getQuiz route --- src/app/services/question.service.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/services/question.service.ts b/src/app/services/question.service.ts index d4d70a1..b39bb73 100644 --- a/src/app/services/question.service.ts +++ b/src/app/services/question.service.ts @@ -22,6 +22,10 @@ export class QuestionService { return this.http.post(`${this.apiUrl}/quiz/create`, body); } + getQuiz(idQuiz: string) { + return this.http.post(`${this.apiUrl}/quiz/remaining`, { id: idQuiz }); + } + getAnswer(codeQuiz: string, questionId: number, answerId: number) { return this.http.post(`${this.apiUrl}/quiz/answer`, { id: codeQuiz, -- GitLab From 3bfae1d6e8413f7fc35fef2bdc7902fdab9e8f72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20HUSS?= <theophile.huss@gmail.com> Date: Thu, 5 Dec 2024 23:57:25 +0100 Subject: [PATCH 2/5] fix: Changes query params to recieve idQuiz instead of datas for creation quiz --- .../home/play-quiz/play-quiz.component.html | 2 +- .../home/play-quiz/play-quiz.component.ts | 21 +++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/app/modules/home/play-quiz/play-quiz.component.html b/src/app/modules/home/play-quiz/play-quiz.component.html index edf7be2..1c4d412 100644 --- a/src/app/modules/home/play-quiz/play-quiz.component.html +++ b/src/app/modules/home/play-quiz/play-quiz.component.html @@ -1,7 +1,7 @@ <div *ngIf="!isLoading" class="main"> <div class="header"> <mat-icon (click)="goHome()">home</mat-icon> - <p>Category : {{ actualQuestion.category }}</p> + <p>Category : {{ actualQuestion.category.name }}</p> <div class="title"> <h4>Question {{ actualQuestionIndex + 1 }}/{{ quiz.questions.length }}</h4> <h4>Score : {{ score }}</h4> diff --git a/src/app/modules/home/play-quiz/play-quiz.component.ts b/src/app/modules/home/play-quiz/play-quiz.component.ts index acea61f..bb1821c 100644 --- a/src/app/modules/home/play-quiz/play-quiz.component.ts +++ b/src/app/modules/home/play-quiz/play-quiz.component.ts @@ -25,13 +25,11 @@ export class PlayQuizComponent implements OnInit { ngOnInit(): void { this.isLoading = true; this.activatedRoute.queryParams.subscribe((params) => { - const nbQuestions = params['nbQuestions']; - const difficulty = params['difficulty']; - const category = params['category']; - this.questionSerivce.createQuiz(nbQuestions, category, difficulty).subscribe({ + const idQuiz = params['idQuiz']; + this.questionSerivce.getQuiz(idQuiz).subscribe({ next: (data: any) => { - console.log('data : ', data); this.quiz = data; + this.quiz.Question; this.nextQuestion(); this.isLoading = false; }, @@ -61,6 +59,7 @@ export class PlayQuizComponent implements OnInit { } else { this.actualQuestionIndex++; this.actualQuestion = this.quiz.questions[this.actualQuestionIndex]; + this.randomArray(this.actualQuestion.answers); this.showNextQuestion = false; } } @@ -101,10 +100,10 @@ export class PlayQuizComponent implements OnInit { }); } - // randomArray(array: any[]): void { - // for (let i = array.length - 1; i > 0; i--) { - // const j = Math.floor(Math.random() * (i + 1)); - // [array[i], array[j]] = [array[j], array[i]]; - // } - // } + randomArray(array: any[]): void { + for (let i = array.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [array[i], array[j]] = [array[j], array[i]]; + } + } } -- GitLab From 383de575174d751ea3e0a2598ff3b953c8bed319 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20HUSS?= <theophile.huss@gmail.com> Date: Thu, 5 Dec 2024 23:58:31 +0100 Subject: [PATCH 3/5] feat: Add quick game button --- .../home/home-page/home-page.component.ts | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/app/modules/home/home-page/home-page.component.ts b/src/app/modules/home/home-page/home-page.component.ts index 102748a..d0974dc 100644 --- a/src/app/modules/home/home-page/home-page.component.ts +++ b/src/app/modules/home/home-page/home-page.component.ts @@ -3,6 +3,8 @@ import { MatDialog } from '@angular/material/dialog'; import { Router } from '@angular/router'; import Swal from 'sweetalert2'; import { FormCreateQuizComponent } from '../form-quiz/form-create-quiz/form-create-quiz.component'; +import { FormQuizService } from '../../../services/form-quiz.service'; +import { QuestionService } from '../../../services/question.service'; @Component({ selector: 'app-home-page', @@ -13,7 +15,12 @@ export class HomePageComponent implements OnInit { showQuickGame: boolean = false; showPlayQuiz: boolean = false; showMyQuiz: boolean = false; - constructor(public router: Router, public dialog: MatDialog) {} + constructor( + private router: Router, + private dialog: MatDialog, + private formQuizService: FormQuizService, + private questionService: QuestionService + ) {} ngOnInit(): void {} startParty() { Swal.fire({ @@ -46,6 +53,20 @@ export class HomePageComponent implements OnInit { this.showQuickGame = true; this.showPlayQuiz = false; this.showMyQuiz = false; + this.formQuizService.getCategory().subscribe({ + next: (data: any) => { + const categories = data.trivia_categories; + const difficulty = ['easy', 'medium', 'hard']; + const randomCategory = categories[Math.floor(Math.random() * categories.length)]; + const randomDifficulty = difficulty[Math.floor(Math.random() * difficulty.length)]; + const randomNbQuestion = Math.floor(Math.random() * (40 - 10 + 1)) + 10; + this.questionService.createQuiz(randomNbQuestion, randomCategory.id, randomDifficulty).subscribe({ + next: (data: any) => { + this.router.navigate(['/play-quiz'], { queryParams: { idQuiz: data.id } }); + }, + }); + }, + }); } playQuiz() { -- GitLab From 8ee8daa52b860abc67d442b53911f7593537d37e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20HUSS?= <theophile.huss@gmail.com> Date: Fri, 6 Dec 2024 00:00:52 +0100 Subject: [PATCH 4/5] feat: Add start quiz component --- .../form-start-quiz.component.html | 5 +++- .../form-start-quiz.component.ts | 23 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html index a8ac5f2..3e18196 100644 --- a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html +++ b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html @@ -1 +1,4 @@ -<p>form-start-quiz works!</p> +<form [formGroup]="formGroup"> + <input type="text" formControlName="id" placeholder="CODE QUIZ" /> + <button class="btn questionsButton" (click)="playQuiz()">PLAY</button> +</form> diff --git a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.ts b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.ts index 9769865..63e2bd3 100644 --- a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.ts +++ b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.ts @@ -1,10 +1,21 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { Router } from '@angular/router'; @Component({ - selector: 'app-form-start-quiz', - templateUrl: './form-start-quiz.component.html', - styleUrl: './form-start-quiz.component.css' + selector: 'app-form-start-quiz', + templateUrl: './form-start-quiz.component.html', + styleUrl: './form-start-quiz.component.css', }) -export class FormStartQuizComponent { - +export class FormStartQuizComponent implements OnInit { + constructor(private fb: FormBuilder, private router: Router) {} + formGroup: FormGroup = new FormGroup({}); + ngOnInit(): void { + this.formGroup = new FormGroup({ + id: this.fb.control('', [Validators.required]), + }); + } + playQuiz() { + this.router.navigate(['/play-quiz'], { queryParams: { idQuiz: this.formGroup.value.id } }); + } } -- GitLab From 1607e317ce9e0fca0664091b59648fc1f0985096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20HUSS?= <theophile.huss@gmail.com> Date: Fri, 6 Dec 2024 00:37:37 +0100 Subject: [PATCH 5/5] fix: Remove merge comment --- .../form-quiz/form-start-quiz/form-start-quiz.component.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html index fd2fcf9..46d2adb 100644 --- a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html +++ b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html @@ -1,4 +1,3 @@ -<<<<<<< src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html <div class="container"> <p class="title">Join a quiz</p> <form [formGroup]="formGroup"> @@ -9,7 +8,7 @@ <div class="quiz-info"> <div class="quiz-title"> <p class="quiz-info-title">Quiz information</p> - <hr> + <hr /> </div> <div class="quiz-info-content"> <p class="quiz-info-content-value">{{ quiz.category }}</p> @@ -27,4 +26,4 @@ <div class="new-quiz"> <button class="blueButton" (click)="playQuiz()">Go !</button> </div> -</div> \ No newline at end of file +</div> -- GitLab