added practise missed module. part of #495

This commit is contained in:
Miodec 2021-03-15 23:34:43 +00:00
parent 4ab82b5e3d
commit 4202a0e4fb
5 changed files with 60 additions and 45 deletions

View file

@ -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

View file

@ -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;

View file

@ -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";

View file

@ -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) => {

View file

@ -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;
}