mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-02-05 13:27:49 +08:00
added practise missed module. part of #495
This commit is contained in:
parent
4ab82b5e3d
commit
4202a0e4fb
5 changed files with 60 additions and 45 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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) => {
|
||||
|
|
49
src/js/test/practise-missed.js
Normal file
49
src/js/test/practise-missed.js
Normal 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;
|
||||
}
|
Loading…
Reference in a new issue