From 4202a0e4fb121c10c5561765c5a1404f14a082a3 Mon Sep 17 00:00:00 2001 From: Miodec Date: Mon, 15 Mar 2021 23:34:43 +0000 Subject: [PATCH] added practise missed module. part of #495 --- gulpfile.js | 1 + src/js/commandline.js | 2 +- src/js/global-dependencies.js | 1 + src/js/script.js | 52 ++++++---------------------------- src/js/test/practise-missed.js | 49 ++++++++++++++++++++++++++++++++ 5 files changed, 60 insertions(+), 45 deletions(-) create mode 100644 src/js/test/practise-missed.js diff --git a/gulpfile.js b/gulpfile.js index b55c0627f..78eb5c698 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -110,6 +110,7 @@ const refactoredSrc = [ "./src/js/config-set.js", "./src/js/test/focus.js", "./src/js/account-icon.js", + "./src/js/test/practise-missed.js", ]; //legacy files diff --git a/src/js/commandline.js b/src/js/commandline.js index cac05ad94..8f429c660 100644 --- a/src/js/commandline.js +++ b/src/js/commandline.js @@ -597,7 +597,7 @@ let commands = { id: "practiceMissedWords", display: "Practice missed words", exec: () => { - initPractiseMissedWords(); + PractiseMissed.init(setMode, restartTest); }, available: () => { return resultVisible && Object.keys(TestStats.missedWords).length > 0; diff --git a/src/js/global-dependencies.js b/src/js/global-dependencies.js index 9a2a4d7f6..9b31b2617 100644 --- a/src/js/global-dependencies.js +++ b/src/js/global-dependencies.js @@ -38,3 +38,4 @@ import Config from "./config"; import * as ConfigSet from "./config-set"; import * as Focus from "./focus"; import * as AccountIcon from "./account-icon"; +import * as PractiseMissed from "./practise-missed"; diff --git a/src/js/script.js b/src/js/script.js index bb21e8124..ff3acc442 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -37,9 +37,7 @@ let paceCaret = null; let pageTransition = false; let notSignedInLastResult = null; let verifyUserWhenLoggedIn = null; -let modeBeforePractise = null; -let punctuationBeforePractise = null; -let numbersBeforePractise = null; + let selectedQuoteId = 1; /// @@ -2710,14 +2708,12 @@ function restartTest(withSameWordset = false, nosave = false, event) { $("#words").empty(); } - if (modeBeforePractise !== null && !withSameWordset) { + if (PractiseMissed.before.mode !== null && !withSameWordset) { Notifications.add("Reverting to previous settings.", 0); - setMode(modeBeforePractise); - setPunctuation(punctuationBeforePractise); - setNumbers(numbersBeforePractise); - modeBeforePractise = null; - punctuationBeforePractise = null; - numbersBeforePractise = null; + setMode(PractiseMissed.before.mode); + setPunctuation(PractiseMissed.before.punctuation); + setNumbers(PractiseMissed.before.numbers); + PractiseMissed.resetBefore(); } ManualRestart.reset(); @@ -4203,46 +4199,14 @@ $(document.body).on("click", "#restartTestButton", () => { } }); -function initPractiseMissedWords() { - if (Object.keys(TestStats.missedWords).length == 0) { - Notifications.add("You haven't missed any words.", 0); - return; - } - let mode = modeBeforePractise === null ? Config.mode : modeBeforePractise; - let punctuation = - punctuationBeforePractise === null - ? Config.punctuation - : punctuationBeforePractise; - let numbers = - numbersBeforePractise === null ? Config.numbers : numbersBeforePractise; - setMode("custom"); - let newCustomText = []; - Object.keys(TestStats.missedWords).forEach((missedWord) => { - for (let i = 0; i < TestStats.missedWords[missedWord]; i++) { - newCustomText.push(missedWord); - } - }); - CustomText.setText(newCustomText); - CustomText.setIsWordRandom(true); - CustomText.setWord(50); - - modeBeforePractise = null; - punctuationBeforePractise = null; - numbersBeforePractise = null; - restartTest(); - modeBeforePractise = mode; - punctuationBeforePractise = punctuation; - numbersBeforePractise = numbers; -} - $(document).on("keypress", "#practiseMissedWordsButton", (event) => { if (event.keyCode == 13) { - initPractiseMissedWords(); + PractiseMissed.init(setMode, restartTest); } }); $(document.body).on("click", "#practiseMissedWordsButton", () => { - initPractiseMissedWords(); + PractiseMissed.init(setMode, restartTest); }); $(document).on("keypress", "#nextTestButton", (event) => { diff --git a/src/js/test/practise-missed.js b/src/js/test/practise-missed.js new file mode 100644 index 000000000..a1ecdee23 --- /dev/null +++ b/src/js/test/practise-missed.js @@ -0,0 +1,49 @@ +import * as TestStats from "./test-stats"; +import * as Notifications from "./notification-center"; +import Config from "./config"; +import * as CustomText from "./custom-text"; + +//TODO remove after adding them to modules +let setMode; +let restartTest; + +export let before = { + mode: null, + punctuation: null, + numbers: null, +}; + +export function init(setMode, restartTest) { + if (this.setMode === undefined) this.setMode = setMode; + if (this.restartTest === undefined) this.restartTest = restartTest; + + if (Object.keys(TestStats.missedWords).length == 0) { + Notifications.add("You haven't missed any words.", 0); + return; + } + let mode = before.mode === null ? Config.mode : before.mode; + let punctuation = + before.punctuation === null ? Config.punctuation : before.punctuation; + let numbers = before.numbers === null ? Config.numbers : before.numbers; + setMode("custom"); + let newCustomText = []; + Object.keys(TestStats.missedWords).forEach((missedWord) => { + for (let i = 0; i < TestStats.missedWords[missedWord]; i++) { + newCustomText.push(missedWord); + } + }); + CustomText.setText(newCustomText); + CustomText.setIsWordRandom(true); + CustomText.setWord(50); + + restartTest(); + before.mode = mode; + before.punctuation = punctuation; + before.numbers = numbers; +} + +export function resetBefore() { + before.mode = null; + before.punctuation = null; + before.numbers = null; +}