@@ -7,31 +7,54 @@ import { userAnswers } from '../QuizView/quizView';
77
88export function renderScorePage ( ) {
99 const recentUserScore = getCurrentScore ( userAnswers ) ;
10-
10+ const totalNumber = QuizSettings . questionsNum ;
1111 const container = document . createElement ( 'div' ) ;
1212 container . setAttribute ( 'id' , 'scorePage' ) ;
1313 container . append (
1414 renderGraphics ( ) ,
15- renderScore ( recentUserScore ) ,
15+ renderScore ( recentUserScore , totalNumber ) ,
1616 renderNickForm ( ) ,
1717 renderMenuButton ( ) ,
1818 renderPlayAgainButton ( ) ,
1919 ) ;
2020 document . querySelector ( '#app' ) . append ( container ) ;
21+ renderCongratsMessage ( recentUserScore , totalNumber ) ;
22+ document . querySelector ( '.saveScoreBtn' ) . disabled = true ;
2123}
2224
23- function renderScore ( score ) {
25+ function renderScore ( score , totalNumber ) {
2426 const container = document . createElement ( 'div' ) ;
2527 const congratsText = document . createElement ( 'h2' ) ;
2628 const scoreText = document . createElement ( 'h2' ) ;
2729 const finalScore = document . createElement ( 'h2' ) ;
2830 finalScore . setAttribute ( 'id' , 'finalScore' ) ;
2931 congratsText . innerText = 'CONGRATS!' ;
3032 scoreText . innerText = `YOUR SCORE IS: ${ score } ` ;
33+ congratsText . setAttribute ( 'id' , 'congratsText' ) ;
34+ congratsText . innerText = '' ;
35+ scoreText . innerText = `YOUR SCORE IS: ${ score } / ${ totalNumber } ` ;
3136 container . append ( congratsText , scoreText , finalScore ) ;
3237 return container ;
3338}
3439
40+ function getCongratsMessage ( recentUserScore , totalNumber ) {
41+ let message ;
42+ const totalPercent = Math . floor ( ( recentUserScore / totalNumber ) * 100 ) ;
43+ if ( totalPercent >= 80 ) {
44+ message = `"WOW"! Your score is ${ totalPercent } %! You are True animal lover!` ;
45+ } else if ( totalPercent >= 50 ) {
46+ message = `You could use a litte practice! Your score is ${ totalPercent } % Would you like to do the quiz again?` ;
47+ } else {
48+ message = `Well, it could be better! Your score is ${ totalPercent } % Would you like to do the quiz again?` ;
49+ }
50+ return message ;
51+ }
52+
53+ function renderCongratsMessage ( recentUserScore , totalNumber ) {
54+ const finalMessage = document . getElementById ( 'congratsText' ) ;
55+ finalMessage . innerText = getCongratsMessage ( recentUserScore , totalNumber ) ;
56+ }
57+
3558function renderGraphics ( ) {
3659 const img = document . createElement ( 'img' ) ;
3760 img . src = './cat.png' ;
@@ -50,6 +73,9 @@ function renderNickForm() {
5073 input . setAttribute ( 'placeholder' , 'Enter Nickname' ) ;
5174 input . setAttribute ( 'type' , 'text' ) ;
5275 input . setAttribute ( 'style' , 'text-transform: uppercase' ) ;
76+ input . addEventListener ( 'keyup' , ( ) => {
77+ document . querySelector ( '.saveScoreBtn' ) . disabled = ! input . value ;
78+ } ) ;
5379 nickFormContainer . append ( input , Button ( 'SUBMIT' , 'saveScoreBtn' , false , 'click' , saveQuizScore ) ) ;
5480 return nickFormContainer ;
5581}
@@ -60,7 +86,7 @@ function getCurrentScore(Answers) {
6086
6187function nicknameValidation ( ) {
6288 const input = document . getElementById ( 'nickname' ) ;
63- if ( input . value !== '' && input . value !== 'NICKNAME' ) {
89+ if ( input . value !== '' ) {
6490 return true ;
6591 }
6692 return false ;
@@ -69,18 +95,20 @@ function nicknameValidation() {
6995function saveQuizScore ( ) {
7096 const quizScores = JSON . parse ( localStorage . getItem ( 'quizScores' ) ) || [ ] ;
7197 const recentUserScore = getCurrentScore ( userAnswers ) ;
72- if ( ! nicknameValidation ( ) ) {
73- alert ( 'Type in your nickname!' ) ;
74- } else {
98+ const nickName = document . getElementById ( 'nickname' ) ;
99+ if ( nicknameValidation ( ) ) {
75100 const score = {
76101 SCORE : recentUserScore ,
77102 ABOUT : QuizSettings . quizAbout ,
78103 NUMBER : QuizSettings . questionsNum ,
79104 TYPE : QuizSettings . questionsType ,
80- NAME : document . getElementById ( 'nickname' ) . value ,
105+ NAME : nickName . value ,
81106 } ;
82107 quizScores . push ( score ) ;
83108 localStorage . setItem ( 'quizScores' , JSON . stringify ( quizScores ) ) ;
109+ nickName . value = null ;
110+ nickName . disabled = true ;
111+ document . querySelector ( '.saveScoreBtn' ) . disabled = true ;
84112 }
85113}
86114
0 commit comments