Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 12 additions & 19 deletions src/components/QuizTimer/QuizTimer.js
Original file line number Diff line number Diff line change
@@ -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');
Expand All @@ -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) {
Expand Down
28 changes: 28 additions & 0 deletions src/model/TimeManager.js
Original file line number Diff line number Diff line change
@@ -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;
5 changes: 3 additions & 2 deletions src/views/QuizView/quizView.js
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -133,7 +134,7 @@ function renderQuizData() {
}

function getTime() {
return timerMinutes * 60 + timerSeconds;
return timeManager.minutes * 60 + timeManager.seconds;
}

function saveAnswer(answer) {
Expand Down
6 changes: 4 additions & 2 deletions src/views/confirmChoiceModal/confirmChoiceModal.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down Expand Up @@ -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() {
Expand Down