diff --git a/src/components/QuizTimer/QuizTimer.js b/src/components/QuizTimer/QuizTimer.js index 8097d15..e241aa4 100644 --- a/src/components/QuizTimer/QuizTimer.js +++ b/src/components/QuizTimer/QuizTimer.js @@ -1,9 +1,5 @@ import './QuizTimer.css'; - -let timer; - -export let timerMinutes; -export let timerSeconds; +import timeManager from '../../model/TimeManager'; export function createTimer() { const clock = document.createElement('div'); @@ -30,34 +26,31 @@ export function createTimer() { } export function startTimer() { - let minutes = 0; - let seconds = 0; + timeManager.resetTimer(); const min = document.getElementById('timer-minutes'); const sec = document.getElementById('timer-seconds'); min.innerText = '00'; sec.innerText = '00'; - timer = setInterval(() => { - seconds++; - if (seconds === 60) { - seconds = 0; - minutes++; - if (minutes === 60) { - minutes = 0; + timeManager.interval = setInterval(() => { + timeManager.seconds++; + if (timeManager.seconds === 60) { + timeManager.seconds = 0; + timeManager.minutes++; + if (timeManager.minutes === 60) { + timeManager.minutes = 0; } - min.innerText = timerDigits(minutes); - timerMinutes = minutes; + min.innerText = timerDigits(timeManager.minutes); } - sec.innerText = timerDigits(seconds); - timerSeconds = seconds; + sec.innerText = timerDigits(timeManager.seconds); }, 1000); } export function stopTimer() { const clk = document.getElementById('clock'); clk.style.display = 'none'; - clearInterval(timer); + clearInterval(timeManager.interval); } function timerDigits(timeValue) { diff --git a/src/model/TimeManager.js b/src/model/TimeManager.js new file mode 100644 index 0000000..f11fb99 --- /dev/null +++ b/src/model/TimeManager.js @@ -0,0 +1,28 @@ +class TimeManager { + static instance; + + minutes; + + seconds; + + interval; + + constructor() { + this.resetTimer(); + } + + static getInstance() { + if (!this.instance) { + this.instance = new TimeManager(); + } + + return this.instance; + } + + resetTimer() { + this.minutes = 0; + this.seconds = 0; + } +} +const timeManager = TimeManager.getInstance(); +export default timeManager; diff --git a/src/views/QuizView/quizView.js b/src/views/QuizView/quizView.js index ea95870..8377d2d 100644 --- a/src/views/QuizView/quizView.js +++ b/src/views/QuizView/quizView.js @@ -1,9 +1,10 @@ import { QuizSettings } from '../quiz-settings/quiz-settings'; -import { createTimer, startTimer, timerMinutes, timerSeconds } from '../../components/QuizTimer/QuizTimer'; +import { createTimer, startTimer } from '../../components/QuizTimer/QuizTimer'; import { getRandomQuizQuestions } from '../../model/randomizer'; import { renderChoiceModal } from '../confirmChoiceModal/confirmChoiceModal'; import Button from '../../components/Button/Button'; import Answer from '../../model/Answer'; +import timeManager from '../../model/TimeManager'; let questions; let current; @@ -133,7 +134,7 @@ function renderQuizData() { } function getTime() { - return timerMinutes * 60 + timerSeconds; + return timeManager.minutes * 60 + timeManager.seconds; } function saveAnswer(answer) { diff --git a/src/views/confirmChoiceModal/confirmChoiceModal.js b/src/views/confirmChoiceModal/confirmChoiceModal.js index 9999c9e..641f2f4 100644 --- a/src/views/confirmChoiceModal/confirmChoiceModal.js +++ b/src/views/confirmChoiceModal/confirmChoiceModal.js @@ -2,6 +2,7 @@ import Button from '../../components/Button/Button'; import '../../components/Button/Button.css'; import './confirmChoiceModal.css'; import { userAnswers } from '../QuizView/quizView'; +import { stopTimer } from '../../components/QuizTimer/QuizTimer'; export function renderChoiceModal() { const choiceModal = document.createElement('div'); @@ -35,12 +36,13 @@ function renderInfo() { return info; } -function navigateToScorePage() { +function finishQuiz() { + stopTimer(); window.location.hash = 'score-page'; } function renderYesButton() { - return Button('YES', 'yesButton', null, 'click', navigateToScorePage); + return Button('YES', 'yesButton', null, 'click', finishQuiz); } function renderNoButton() {