| @@ -1,5 +1,5 @@ | |||||
| <section class="page" *ngIf="questionList.length > 0"> | <section class="page" *ngIf="questionList.length > 0"> | ||||
| <header class="nav-header"> | |||||
| <header class="nav-header" *ngIf="quizSegment !== 'END_PAGE'"> | |||||
| <button class="close-button" (click)="back()"> | <button class="close-button" (click)="back()"> | ||||
| <svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/close.svg"></svg-icon> | <svg-icon [applyClass]="true" class="icon" src="assets/custom-icons/close.svg"></svg-icon> | ||||
| </button> | </button> | ||||
| @@ -137,4 +137,26 @@ | |||||
| </section> | </section> | ||||
| </div> | </div> | ||||
| <div *ngIf="quizSegment === 'END_PAGE'"> | |||||
| <section class="end-upfold"> | |||||
| <div class="end-upfold-container"> | |||||
| <header class="subject"> <span> Chemistry - Oxidation & Reduction </span> </header> | |||||
| <div class="rank-holder"> | |||||
| <label> Rank # </label> | |||||
| <span> 8 </span> | |||||
| </div> | |||||
| <p> You're Excellent, Dwayne!! </p> | |||||
| <div class="calculated-progress"> | |||||
| <span class="correct" [style.width.%]="getCorrectAnswersCount() * 100 / questionList.length"></span> | |||||
| <span class="wrong" [style.width.%]="getWrongAnswersCount() * 100 / questionList.length"></span> | |||||
| <span class="none" [style.width.%]="getUnAttendedAnswersCount() * 100 / questionList.length"></span> | |||||
| </div> | |||||
| </div> | |||||
| </section> | |||||
| </div> | |||||
| </section> | </section> | ||||
| @@ -643,3 +643,142 @@ ngx-siema-slide { | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| .end-upfold { | |||||
| background-image: url('https://mini.webtrigon.com/static-v1.1.0/home/images/png/pattern.png'); | |||||
| background-size: cover; | |||||
| background-position: center; | |||||
| background-color: var(--ash-black); | |||||
| padding: 20px 0; | |||||
| } | |||||
| .end-upfold-container { | |||||
| width: 100%; | |||||
| .subject { | |||||
| color: var(--teal-green); | |||||
| letter-spacing: 1px; | |||||
| width: 60%; | |||||
| overflow: hidden; | |||||
| text-align: center; | |||||
| padding: 10px 20px; | |||||
| border-radius: 40px; | |||||
| position: relative; | |||||
| z-index: 0; | |||||
| margin: 0 auto 20px; | |||||
| font-size: 16px; | |||||
| font-weight: 400; | |||||
| &::before { | |||||
| content: ''; | |||||
| position: absolute; | |||||
| left: 0; | |||||
| top: 0; | |||||
| width: 100%; | |||||
| height: 100%; | |||||
| background-color: var(--black); | |||||
| opacity: 0.6; | |||||
| } | |||||
| span { | |||||
| z-index: 1; | |||||
| position: relative; | |||||
| } | |||||
| } | |||||
| .rank-holder { | |||||
| width: 130px; | |||||
| height: 130px; | |||||
| margin: 25px auto 20px; | |||||
| border-radius: 50%; | |||||
| position: relative; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| justify-content: center; | |||||
| &::before { | |||||
| content: ''; | |||||
| position: absolute; | |||||
| left: 10%; | |||||
| top: 10%; | |||||
| width: 80%; | |||||
| height: 80%; | |||||
| background-color: var(--dark-grey); | |||||
| opacity: 0.5; | |||||
| z-index: 1; | |||||
| border-radius: 50%; | |||||
| } | |||||
| &::after { | |||||
| content: ''; | |||||
| position: absolute; | |||||
| left: 0; | |||||
| top: 0; | |||||
| width: 100%; | |||||
| height: 100%; | |||||
| background-color: var(--black); | |||||
| opacity: 0.7; | |||||
| z-index: 0; | |||||
| border-radius: 50%; | |||||
| } | |||||
| label, span { | |||||
| z-index: 2; | |||||
| } | |||||
| label { | |||||
| color: white; | |||||
| position: absolute; | |||||
| top: -5px; | |||||
| left: calc(50% - 50px); | |||||
| width: 100px; | |||||
| height: 30px; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| justify-content: center; | |||||
| border-radius: 30px; | |||||
| font-size: 14px; | |||||
| text-align: center; | |||||
| background-color: var(--teal-green); | |||||
| } | |||||
| span { | |||||
| font-weight: 500; | |||||
| color: white; | |||||
| font-size: 60px; | |||||
| } | |||||
| } | |||||
| p { | |||||
| font-size: 16px; | |||||
| color: white; | |||||
| margin-bottom: 20px; | |||||
| text-align: center; | |||||
| } | |||||
| .calculated-progress { | |||||
| height: 15px; | |||||
| width: 70%; | |||||
| margin: 0 auto; | |||||
| border-radius: 30px; | |||||
| overflow: hidden; | |||||
| position: relative; | |||||
| display: flex; | |||||
| align-items: stretch; | |||||
| justify-content: flex-start; | |||||
| background-color: white; | |||||
| .correct { | |||||
| background-color: var(--green); | |||||
| } | |||||
| .wrong { | |||||
| background-color: var(--danger-dark); | |||||
| } | |||||
| .none { | |||||
| background-color: rgba(orange, 0.8); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -25,7 +25,7 @@ export class QuizComponent implements OnInit { | |||||
| }, | }, | ||||
| }; | }; | ||||
| quizSegment: string = 'QUESTIONS'; | |||||
| quizSegment: string = 'START_PAGE'; | |||||
| showQuestionList: boolean = false; | showQuestionList: boolean = false; | ||||
| selectedQuestion: any; | selectedQuestion: any; | ||||
| @@ -102,114 +102,6 @@ export class QuizComponent implements OnInit { | |||||
| id: 4, | id: 4, | ||||
| text: 'Gambler', | text: 'Gambler', | ||||
| }] | }] | ||||
| }, { | |||||
| id: 5, | |||||
| question: 'Who is Newton ?', | |||||
| userAnswer: 0, | |||||
| correctAnswer: 3, | |||||
| options: [{ | |||||
| id: 1, | |||||
| text: 'Dancer', | |||||
| }, { | |||||
| id: 2, | |||||
| text: 'Actor', | |||||
| }, { | |||||
| id: 3, | |||||
| text: 'Scientist', | |||||
| }, { | |||||
| id: 4, | |||||
| text: 'Gambler', | |||||
| }] | |||||
| }, { | |||||
| id: 6, | |||||
| question: 'Who is Newton ?', | |||||
| userAnswer: 0, | |||||
| correctAnswer: 3, | |||||
| options: [{ | |||||
| id: 1, | |||||
| text: 'Dancer', | |||||
| }, { | |||||
| id: 2, | |||||
| text: 'Actor', | |||||
| }, { | |||||
| id: 3, | |||||
| text: 'Scientist', | |||||
| }, { | |||||
| id: 4, | |||||
| text: 'Gambler', | |||||
| }] | |||||
| }, { | |||||
| id: 7, | |||||
| question: 'Who is Newton ?', | |||||
| userAnswer: 0, | |||||
| correctAnswer: 3, | |||||
| options: [{ | |||||
| id: 1, | |||||
| text: 'Dancer', | |||||
| }, { | |||||
| id: 2, | |||||
| text: 'Actor', | |||||
| }, { | |||||
| id: 3, | |||||
| text: 'Scientist', | |||||
| }, { | |||||
| id: 4, | |||||
| text: 'Gambler', | |||||
| }] | |||||
| }, { | |||||
| id: 8, | |||||
| question: 'Who is Newton ?', | |||||
| userAnswer: 0, | |||||
| correctAnswer: 3, | |||||
| options: [{ | |||||
| id: 1, | |||||
| text: 'Dancer', | |||||
| }, { | |||||
| id: 2, | |||||
| text: 'Actor', | |||||
| }, { | |||||
| id: 3, | |||||
| text: 'Scientist', | |||||
| }, { | |||||
| id: 4, | |||||
| text: 'Gambler', | |||||
| }] | |||||
| }, { | |||||
| id: 9, | |||||
| question: 'Who is Newton ?', | |||||
| userAnswer: 0, | |||||
| correctAnswer: 3, | |||||
| options: [{ | |||||
| id: 1, | |||||
| text: 'Dancer', | |||||
| }, { | |||||
| id: 2, | |||||
| text: 'Actor', | |||||
| }, { | |||||
| id: 3, | |||||
| text: 'Scientist', | |||||
| }, { | |||||
| id: 4, | |||||
| text: 'Gambler', | |||||
| }] | |||||
| }, { | |||||
| id: 10, | |||||
| question: 'Who is Newton ?', | |||||
| userAnswer: 0, | |||||
| correctAnswer: 3, | |||||
| options: [{ | |||||
| id: 1, | |||||
| text: 'Dancer', | |||||
| }, { | |||||
| id: 2, | |||||
| text: 'Actor', | |||||
| }, { | |||||
| id: 3, | |||||
| text: 'Scientist', | |||||
| }, { | |||||
| id: 4, | |||||
| text: 'Gambler', | |||||
| }] | |||||
| }]; | }]; | ||||
| @@ -258,4 +150,22 @@ export class QuizComponent implements OnInit { | |||||
| } | } | ||||
| } | } | ||||
| getCorrectAnswersCount() { | |||||
| return this.questionList.filter((question) => { | |||||
| return question.correctAnswer === question.userAnswer; | |||||
| }).length; | |||||
| } | |||||
| getWrongAnswersCount() { | |||||
| return this.questionList.filter((question) => { | |||||
| return question.correctAnswer !== question.userAnswer && question.userAnswer !== 0; | |||||
| }).length; | |||||
| } | |||||
| getUnAttendedAnswersCount() { | |||||
| return this.questionList.filter((question) => { | |||||
| return question.userAnswer === 0; | |||||
| }).length; | |||||
| } | |||||
| } | } | ||||