`
);
}
- if (config.confidenceMode === "on") {
+ if (Config.confidenceMode === "on") {
$(".pageTest #testModesNotice").append(
`
`
);
}
- if (config.confidenceMode === "max") {
+ if (Config.confidenceMode === "max") {
$(".pageTest #testModesNotice").append(
`
`
);
}
- if (config.stopOnError != "off") {
+ if (Config.stopOnError != "off") {
$(".pageTest #testModesNotice").append(
- `
`
);
}
- if (config.layout !== "default") {
+ if (Config.layout !== "default") {
$(".pageTest #testModesNotice").append(
- `
`
);
}
- if (config.oppositeShiftMode === "on") {
+ if (Config.oppositeShiftMode === "on") {
$(".pageTest #testModesNotice").append(
`
`
);
diff --git a/src/js/exports.js b/src/js/exports.js
index a5054afd8..c3dc504c0 100644
--- a/src/js/exports.js
+++ b/src/js/exports.js
@@ -7,6 +7,6 @@ global.getuid = getuid;
//these exports are just for debugging in the browser
global.snapshot = DB.getSnapshot;
-global.config = config;
+global.config = Config;
// global.addnotif = Notifications.add;
global.link = linkWithGoogle;
diff --git a/src/js/global-dependencies.js b/src/js/global-dependencies.js
index ac6c4558b..4887816e8 100644
--- a/src/js/global-dependencies.js
+++ b/src/js/global-dependencies.js
@@ -34,3 +34,5 @@ import * as ThemeController from "./theme-controller";
import * as Caret from "./caret";
import * as CustomTextPopup from "./custom-text-popup";
import * as ManualRestart from "./manual-restart-tracker";
+import Config from "./config";
+import * as ConfigSet from "./config-set";
diff --git a/src/js/script.js b/src/js/script.js
index 8e9339b2d..5e8e0b0e2 100644
--- a/src/js/script.js
+++ b/src/js/script.js
@@ -26,7 +26,7 @@ let time = 0;
let timer = null;
//funbox
-let activeFunBox = "none";
+let activeFunbox = "none";
let memoryFunboxTimer = null;
let memoryFunboxInterval = null;
@@ -144,7 +144,7 @@ async function activateFunbox(funbox, mode) {
$("#funBoxTheme").attr("href", ``);
$("#words").removeClass("nospace");
// if (funbox === "none") {
- activeFunBox = "none";
+ activeFunbox = "none";
memoryFunboxInterval = clearInterval(memoryFunboxInterval);
memoryFunboxTimer = null;
$("#wordsWrapper").removeClass("hidden");
@@ -159,7 +159,7 @@ async function activateFunbox(funbox, mode) {
if (mode === "style") {
if (funbox != undefined) {
$("#funBoxTheme").attr("href", `funbox/${funbox}.css`);
- activeFunBox = funbox;
+ activeFunbox = funbox;
}
if (funbox === "simon_says") {
@@ -179,14 +179,14 @@ async function activateFunbox(funbox, mode) {
} else if (mode === "script") {
if (funbox === "tts") {
$("#funBoxTheme").attr("href", `funbox/simon_says.css`);
- config.keymapMode = "off";
+ ConfigSet.keymapMode("off");
settingsGroups.keymapMode.updateButton();
restartTest();
} else if (funbox === "layoutfluid") {
- config.keymapMode = "on";
+ ConfigSet.keymapMode("on");
setKeymapMode("next");
settingsGroups.keymapMode.updateButton();
- config.savedLayout = config.layout;
+ ConfigSet.savedLayout(Config.layout);
setLayout("qwerty");
settingsGroups.layout.updateButton();
setKeymapLayout("qwerty");
@@ -196,7 +196,7 @@ async function activateFunbox(funbox, mode) {
setMode("words");
setShowAllLines(true, true);
restartTest(false, true);
- if (config.keymapMode === "next") {
+ if (Config.keymapMode === "next") {
setKeymapMode("react");
}
} else if (funbox === "nospace") {
@@ -204,27 +204,21 @@ async function activateFunbox(funbox, mode) {
setHighlightMode("letter", true);
restartTest(false, true);
}
- activeFunBox = funbox;
+ activeFunbox = funbox;
}
if (funbox !== "layoutfluid" || mode !== "script") {
- if (config.layout !== config.savedLayout) {
- setLayout(config.savedLayout);
+ if (Config.layout !== Config.savedLayout) {
+ setLayout(Config.savedLayout);
settingsGroups.layout.updateButton();
}
}
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
return true;
}
function toggleScriptFunbox(...params) {
- if (activeFunBox === "tts") {
+ if (activeFunbox === "tts") {
var msg = new SpeechSynthesisUtterance();
msg.text = params[0];
msg.lang = "en-US";
@@ -252,7 +246,7 @@ function setFocus(foc) {
if (testActive) {
Caret.stopAnimation();
} else {
- Caret.startAnimation(config);
+ Caret.startAnimation();
}
$("#top").removeClass("focus");
$("#bottom").removeClass("focus");
@@ -275,24 +269,24 @@ async function initWords() {
// currentCorrected = "";
currentInput = "";
- let language = await Misc.getLanguage(config.language);
- if (language && language.name !== config.language) {
- config.language = "english";
+ let language = await Misc.getLanguage(Config.language);
+ if (language && language.name !== Config.language) {
+ ConfigSet.language("english");
}
if (!language) {
- config.language = "english";
- language = await Misc.getLanguage(config.language);
+ ConfigSet.language("english");
+ language = await Misc.getLanguage(Config.language);
}
if (
- config.mode == "time" ||
- config.mode == "words" ||
- config.mode == "custom"
+ Config.mode == "time" ||
+ Config.mode == "words" ||
+ Config.mode == "custom"
) {
let wordsBound = 100;
- if (config.showAllLines) {
- if (config.mode === "custom") {
+ if (Config.showAllLines) {
+ if (Config.mode === "custom") {
if (CustomText.isWordRandom) {
wordsBound = CustomText.word;
} else if (CustomText.isTimeRandom) {
@@ -300,29 +294,29 @@ async function initWords() {
} else {
wordsBound = CustomText.text.length;
}
- } else if (config.mode != "time") {
- wordsBound = config.words;
+ } else if (Config.mode != "time") {
+ wordsBound = Config.words;
}
} else {
- if (config.mode === "words" && config.words < wordsBound) {
- wordsBound = config.words;
+ if (Config.mode === "words" && Config.words < wordsBound) {
+ wordsBound = Config.words;
}
if (
- config.mode == "custom" &&
+ Config.mode == "custom" &&
CustomText.isWordRandom &&
CustomText.word < wordsBound
) {
wordsBound = CustomText.word;
}
if (
- config.mode == "custom" &&
+ Config.mode == "custom" &&
CustomText.isTimeRandom &&
CustomText.time < wordsBound
) {
wordsBound = 100;
}
if (
- config.mode == "custom" &&
+ Config.mode == "custom" &&
!CustomText.isWordRandom &&
CustomText.text.length < wordsBound
) {
@@ -331,24 +325,24 @@ async function initWords() {
}
if (
- (config.mode === "custom" &&
+ (Config.mode === "custom" &&
CustomText.isWordRandom &&
CustomText.word == 0) ||
- (config.mode === "custom" &&
+ (Config.mode === "custom" &&
CustomText.isTimeRandom &&
CustomText.time == 0)
) {
wordsBound = 100;
}
- if (config.mode === "words" && config.words === 0) {
+ if (Config.mode === "words" && Config.words === 0) {
wordsBound = 100;
}
- if (activeFunBox === "plus_one") {
+ if (activeFunbox === "plus_one") {
wordsBound = 2;
}
let wordset = language.words;
- if (config.mode == "custom") {
+ if (Config.mode == "custom") {
wordset = CustomText.text;
}
for (let i = 0; i < wordsBound; i++) {
@@ -356,24 +350,24 @@ async function initWords() {
const previousWord = wordsList[i - 1];
const previousWord2 = wordsList[i - 2];
if (
- config.mode == "custom" &&
+ Config.mode == "custom" &&
(CustomText.isWordRandom || CustomText.isTimeRandom)
) {
randomWord = wordset[Math.floor(Math.random() * wordset.length)];
- } else if (config.mode == "custom" && !CustomText.isWordRandom) {
+ } else if (Config.mode == "custom" && !CustomText.isWordRandom) {
randomWord = CustomText.text[i];
} else {
while (
randomWord == previousWord ||
randomWord == previousWord2 ||
- (!config.punctuation && randomWord == "I") ||
+ (!Config.punctuation && randomWord == "I") ||
randomWord.indexOf(" ") > -1
) {
randomWord = wordset[Math.floor(Math.random() * wordset.length)];
}
}
- if (activeFunBox === "rAnDoMcAsE") {
+ if (activeFunbox === "rAnDoMcAsE") {
let randomcaseword = "";
for (let i = 0; i < randomWord.length; i++) {
if (i % 2 != 0) {
@@ -383,23 +377,23 @@ async function initWords() {
}
}
randomWord = randomcaseword;
- } else if (activeFunBox === "gibberish") {
+ } else if (activeFunbox === "gibberish") {
randomWord = Misc.getGibberish();
- } else if (activeFunBox === "58008") {
+ } else if (activeFunbox === "58008") {
setToggleSettings(false, true);
randomWord = Misc.getNumbers(7);
- } else if (activeFunBox === "specials") {
+ } else if (activeFunbox === "specials") {
setToggleSettings(false, true);
randomWord = Misc.getSpecials();
- } else if (activeFunBox === "ascii") {
+ } else if (activeFunbox === "ascii") {
setToggleSettings(false, true);
randomWord = Misc.getASCII();
}
- if (config.punctuation) {
+ if (Config.punctuation) {
randomWord = punctuateWord(previousWord, randomWord, i, wordsBound);
}
- if (config.numbers) {
+ if (Config.numbers) {
if (Math.random() < 0.1) {
randomWord = Misc.getNumbers(4);
}
@@ -411,14 +405,14 @@ async function initWords() {
wordsList.push(randomWord);
}
- } else if (config.mode == "quote") {
- // setLanguage(config.language.replace(/_\d*k$/g, ""), true);
+ } else if (Config.mode == "quote") {
+ // setLanguage(Config.language.replace(/_\d*k$/g, ""), true);
- let quotes = await Misc.getQuotes(config.language.replace(/_\d*k$/g, ""));
+ let quotes = await Misc.getQuotes(Config.language.replace(/_\d*k$/g, ""));
if (quotes.length === 0) {
Notifications.add(
- `No ${config.language.replace(/_\d*k$/g, "")} quotes found`,
+ `No ${Config.language.replace(/_\d*k$/g, "")} quotes found`,
0
);
testRestarting = false;
@@ -428,8 +422,8 @@ async function initWords() {
}
let rq;
- if (config.quoteLength != -2) {
- let quoteLengths = config.quoteLength;
+ if (Config.quoteLength != -2) {
+ let quoteLengths = Config.quoteLength;
let groupIndex;
if (quoteLengths.length > 1) {
groupIndex =
@@ -495,7 +489,7 @@ async function initWords() {
} else {
$("#words").removeClass("withLigatures");
}
- // if (config.mode == "zen") {
+ // if (Config.mode == "zen") {
// // Creating an empty active word element for zen mode
// $("#words").append('
');
// $("#words").css("height", "auto");
@@ -520,7 +514,7 @@ function setToggleSettings(state, nosave) {
function emulateLayout(event) {
function emulatedLayoutShouldShiftKey(event, newKeyPreview) {
- if (config.capsLockBackspace) return event.shiftKey;
+ if (Config.capsLockBackspace) return event.shiftKey;
const isCapsLockHeld = event.originalEvent.getModifierState("CapsLock");
if (isCapsLockHeld)
return Misc.isASCIILetter(newKeyPreview) !== event.shiftKey;
@@ -539,9 +533,9 @@ function emulateLayout(event) {
let newEvent = event;
try {
- if (config.layout === "default") {
+ if (Config.layout === "default") {
//override the caps lock modifier for the default layout if needed
- if (config.capsLockBackspace && Misc.isASCIILetter(newEvent.key)) {
+ if (Config.capsLockBackspace && Misc.isASCIILetter(newEvent.key)) {
replaceEventKey(
newEvent,
newEvent.shiftKey
@@ -602,7 +596,7 @@ function emulateLayout(event) {
"Slash",
"Space",
];
- const layoutMap = layouts[config.layout].keys;
+ const layoutMap = layouts[Config.layout].keys;
let mapIndex;
for (let i = 0; i < keyEventCodes.length; i++) {
@@ -628,7 +622,7 @@ function punctuateWord(previousWord, currentWord, index, maxindex) {
Misc.getLastChar(previousWord) == "." ||
Misc.getLastChar(previousWord) == "?" ||
Misc.getLastChar(previousWord) == "!") &&
- config.language.split("_")[0] != "code"
+ Config.language.split("_")[0] != "code"
) {
//always capitalise the first word or if there was a dot unless using a code alphabet
word = Misc.capitalizeFirstLetter(word);
@@ -643,13 +637,13 @@ function punctuateWord(previousWord, currentWord, index, maxindex) {
if (rand <= 0.8) {
word += ".";
} else if (rand > 0.8 && rand < 0.9) {
- if (config.language.split("_")[0] == "french") {
+ if (Config.language.split("_")[0] == "french") {
word = "?";
} else {
word += "?";
}
} else {
- if (config.language.split("_")[0] == "french") {
+ if (Config.language.split("_")[0] == "french") {
word = "!";
} else {
word += "!";
@@ -659,14 +653,14 @@ function punctuateWord(previousWord, currentWord, index, maxindex) {
Math.random() < 0.01 &&
Misc.getLastChar(previousWord) != "," &&
Misc.getLastChar(previousWord) != "." &&
- config.language.split("_")[0] !== "russian"
+ Config.language.split("_")[0] !== "russian"
) {
word = `"${word}"`;
} else if (
Math.random() < 0.011 &&
Misc.getLastChar(previousWord) != "," &&
Misc.getLastChar(previousWord) != "." &&
- config.language.split("_")[0] !== "russian"
+ Config.language.split("_")[0] !== "russian"
) {
word = `'${word}'`;
} else if (
@@ -674,7 +668,7 @@ function punctuateWord(previousWord, currentWord, index, maxindex) {
Misc.getLastChar(previousWord) != "," &&
Misc.getLastChar(previousWord) != "."
) {
- if (config.language.split("_")[0] == "code") {
+ if (Config.language.split("_")[0] == "code") {
let r = Math.random();
if (r < 0.25) {
word = `(${word})`;
@@ -689,7 +683,7 @@ function punctuateWord(previousWord, currentWord, index, maxindex) {
word = `(${word})`;
}
} else if (Math.random() < 0.013) {
- if (config.language.split("_")[0] == "french") {
+ if (Config.language.split("_")[0] == "french") {
word = ":";
} else {
word += ":";
@@ -707,14 +701,14 @@ function punctuateWord(previousWord, currentWord, index, maxindex) {
Misc.getLastChar(previousWord) != "." &&
Misc.getLastChar(previousWord) != ";"
) {
- if (config.language.split("_")[0] == "french") {
+ if (Config.language.split("_")[0] == "french") {
word = ";";
} else {
word += ";";
}
} else if (Math.random() < 0.2 && Misc.getLastChar(previousWord) != ",") {
word += ",";
- } else if (Math.random() < 0.25 && config.language.split("_")[0] == "code") {
+ } else if (Math.random() < 0.25 && Config.language.split("_")[0] == "code") {
let specials = ["{", "}", "[", "]", "(", ")", ";", "=", "%", "/"];
word = specials[Math.floor(Math.random() * 10)];
@@ -724,23 +718,23 @@ function punctuateWord(previousWord, currentWord, index, maxindex) {
function addWord() {
let bound = 100;
- if (activeFunBox === "plus_one") bound = 1;
+ if (activeFunbox === "plus_one") bound = 1;
if (
wordsList.length - inputHistory.length > bound ||
- (config.mode === "words" &&
- wordsList.length >= config.words &&
- config.words > 0) ||
- (config.mode === "custom" &&
+ (Config.mode === "words" &&
+ wordsList.length >= Config.words &&
+ Config.words > 0) ||
+ (Config.mode === "custom" &&
CustomText.isWordRandom &&
wordsList.length >= CustomText.word &&
CustomText.word != 0) ||
- (config.mode === "custom" &&
+ (Config.mode === "custom" &&
!CustomText.isWordRandom &&
wordsList.length >= CustomText.text.length)
)
return;
const language =
- config.mode !== "custom"
+ Config.mode !== "custom"
? Misc.getCurrentLanguage()
: {
//borrow the direction of the current language
@@ -758,25 +752,25 @@ function addWord() {
.toLowerCase();
if (
- config.mode === "custom" &&
+ Config.mode === "custom" &&
CustomText.isWordRandom &&
wordset.length < 3
) {
randomWord = wordset[Math.floor(Math.random() * wordset.length)];
- } else if (config.mode == "custom" && !CustomText.isWordRandom) {
+ } else if (Config.mode == "custom" && !CustomText.isWordRandom) {
randomWord = CustomText.text[wordsList.length];
} else {
while (
previousWordStripped == randomWord ||
previousWord2Stripped == randomWord ||
randomWord.indexOf(" ") > -1 ||
- (!config.punctuation && randomWord == "I")
+ (!Config.punctuation && randomWord == "I")
) {
randomWord = wordset[Math.floor(Math.random() * wordset.length)];
}
}
- if (activeFunBox === "rAnDoMcAsE") {
+ if (activeFunbox === "rAnDoMcAsE") {
let randomcaseword = "";
for (let i = 0; i < randomWord.length; i++) {
if (i % 2 != 0) {
@@ -786,20 +780,20 @@ function addWord() {
}
}
randomWord = randomcaseword;
- } else if (activeFunBox === "gibberish") {
+ } else if (activeFunbox === "gibberish") {
randomWord = Misc.getGibberish();
- } else if (activeFunBox === "58008") {
+ } else if (activeFunbox === "58008") {
randomWord = Misc.getNumbers(7);
- } else if (activeFunBox === "specials") {
+ } else if (activeFunbox === "specials") {
randomWord = Misc.getSpecials();
- } else if (activeFunBox === "ascii") {
+ } else if (activeFunbox === "ascii") {
randomWord = Misc.getASCII();
}
- if (config.punctuation && config.mode != "custom") {
+ if (Config.punctuation && Config.mode != "custom") {
randomWord = punctuateWord(previousWord, randomWord, wordsList.length, 0);
}
- if (config.numbers && config.mode != "custom") {
+ if (Config.numbers && Config.mode != "custom") {
if (Math.random() < 0.1) {
randomWord = Misc.getNumbers(4);
}
@@ -820,7 +814,7 @@ function showWords() {
let wordsHTML = "";
let newlineafter = false;
- if (config.mode !== "zen") {
+ if (Config.mode !== "zen") {
for (let i = 0; i < wordsList.length; i++) {
newlineafter = false;
wordsHTML += `
`;
@@ -848,8 +842,8 @@ function showWords() {
const wordHeight = $(document.querySelector(".word")).outerHeight(true);
const wordsHeight = $(document.querySelector("#words")).outerHeight(true);
if (
- config.showAllLines &&
- config.mode != "time" &&
+ Config.showAllLines &&
+ Config.mode != "time" &&
!(CustomText.isWordRandom && CustomText.word == 0) &&
!CustomText.isTimeRandom
) {
@@ -871,22 +865,22 @@ function showWords() {
$(".outOfFocusWarning").css("line-height", wordHeight * 3 + "px");
}
- if (config.mode === "zen") {
+ if (Config.mode === "zen") {
$(document.querySelector(".word")).remove();
}
- if (config.keymapMode === "next") {
+ if (Config.keymapMode === "next") {
updateHighlightedKeymapKey();
}
updateActiveElement();
- Caret.updatePosition(currentInput, config);
+ Caret.updatePosition(currentInput);
}
(function (history) {
var pushState = history.pushState;
history.pushState = function (state) {
- if (activeFunBox === "memory" && state !== "/") {
+ if (activeFunbox === "memory" && state !== "/") {
memoryFunboxInterval = clearInterval(memoryFunboxInterval);
memoryFunboxTimer = null;
}
@@ -896,10 +890,10 @@ function showWords() {
function updateActiveElement(backspace) {
let active = document.querySelector("#words .active");
- if (config.mode == "zen" && backspace) {
+ if (Config.mode == "zen" && backspace) {
active.remove();
} else if (active !== null) {
- if (config.highlightMode == "word") {
+ if (Config.highlightMode == "word") {
active.querySelectorAll("letter").forEach((e) => {
e.classList.remove("correct");
});
@@ -913,7 +907,7 @@ function updateActiveElement(backspace) {
activeWord.classList.add("active");
activeWord.classList.remove("error");
activeWordTop = document.querySelector("#words .active").offsetTop;
- if (config.highlightMode == "word") {
+ if (Config.highlightMode == "word") {
activeWord.querySelectorAll("letter").forEach((e) => {
e.classList.add("correct");
});
@@ -923,7 +917,7 @@ function updateActiveElement(backspace) {
}
function updateWordElement(showError) {
- // if (config.mode == "zen") return;
+ // if (Config.mode == "zen") return;
let input = currentInput;
let wordAtIndex;
@@ -934,7 +928,7 @@ function updateWordElement(showError) {
let newlineafter = false;
- if (config.mode === "zen") {
+ if (Config.mode === "zen") {
for (let i = 0; i < currentInput.length; i++) {
if (currentInput[i] === "\t") {
ret += `
`;
@@ -946,7 +940,7 @@ function updateWordElement(showError) {
}
}
} else {
- if (config.highlightMode == "word") {
+ if (Config.highlightMode == "word") {
//only for word highlight
let correctSoFar = false;
@@ -955,7 +949,7 @@ function updateWordElement(showError) {
correctSoFar = true;
}
let classString = correctSoFar ? "correct" : "incorrect";
- if (config.blindMode) {
+ if (Config.blindMode) {
classString = "correct";
}
@@ -967,7 +961,7 @@ function updateWordElement(showError) {
//show any extra letters if hide extra letters is disabled
if (
currentInput.length > currentWord.length &&
- !config.hideExtraLetters
+ !Config.hideExtraLetters
) {
for (let i = currentWord.length; i < currentInput.length; i++) {
let letter = currentInput[i];
@@ -1000,7 +994,7 @@ function updateWordElement(showError) {
if (charCorrect) {
ret += `
${currentLetter}`;
} else {
- // if (config.difficulty == "master") {
+ // if (Config.difficulty == "master") {
// if (!resultVisible) {
// failTest();
// }
@@ -1011,7 +1005,7 @@ function updateWordElement(showError) {
}
} else {
if (currentLetter == undefined) {
- if (!config.hideExtraLetters) {
+ if (!Config.hideExtraLetters) {
let letter = input[i];
if (letter == " " || letter == "\t" || letter == "\n") {
letter = "_";
@@ -1022,7 +1016,7 @@ function updateWordElement(showError) {
ret +=
`
` +
currentLetter +
- (config.indicateTypos ? `${input[i]}` : "") +
+ (Config.indicateTypos ? `${input[i]}` : "") +
"";
}
}
@@ -1052,15 +1046,15 @@ function highlightBadWord(index, showError) {
}
function showTimer() {
- let op = config.showTimerProgress ? config.timerOpacity : 0;
- if (config.mode != "zen" && config.timerStyle === "bar") {
+ let op = Config.showTimerProgress ? Config.timerOpacity : 0;
+ if (Config.mode != "zen" && Config.timerStyle === "bar") {
$("#timerWrapper").stop(true, true).removeClass("hidden").animate(
{
opacity: op,
},
125
);
- } else if (config.timerStyle === "text") {
+ } else if (Config.timerStyle === "text") {
$("#timerNumber")
.stop(true, true)
.removeClass("hidden")
@@ -1071,7 +1065,7 @@ function showTimer() {
},
125
);
- } else if (config.mode == "zen" || config.timerStyle === "mini") {
+ } else if (Config.mode == "zen" || Config.timerStyle === "mini") {
if (op > 0) {
$("#miniTimerAndLiveWpm .time")
.stop(true, true)
@@ -1113,15 +1107,15 @@ function hideTimer() {
}
function restartTimer() {
- if (config.timerStyle === "bar") {
- if (config.mode === "time") {
+ if (Config.timerStyle === "bar") {
+ if (Config.mode === "time") {
$("#timer").stop(true, true).animate(
{
width: "100vw",
},
0
);
- } else if (config.mode === "words" || config.mode === "custom") {
+ } else if (Config.mode === "words" || Config.mode === "custom") {
$("#timer").stop(true, true).animate(
{
width: "0vw",
@@ -1133,16 +1127,16 @@ function restartTimer() {
}
function updateTimer() {
- if (!config.showTimerProgress) return;
+ if (!Config.showTimerProgress) return;
if (
- config.mode === "time" ||
- (config.mode === "custom" && CustomText.isTimeRandom)
+ Config.mode === "time" ||
+ (Config.mode === "custom" && CustomText.isTimeRandom)
) {
- let maxtime = config.time;
- if (config.mode === "custom" && CustomText.isTimeRandom) {
+ let maxtime = Config.time;
+ if (Config.mode === "custom" && CustomText.isTimeRandom) {
maxtime = CustomText.time;
}
- if (config.timerStyle === "bar") {
+ if (Config.timerStyle === "bar") {
let percent = 100 - ((time + 1) / maxtime) * 100;
$("#timer")
.stop(true, true)
@@ -1153,13 +1147,13 @@ function updateTimer() {
1000,
"linear"
);
- } else if (config.timerStyle === "text") {
+ } else if (Config.timerStyle === "text") {
let displayTime = Misc.secondsToString(maxtime - time);
if (maxtime === 0) {
displayTime = Misc.secondsToString(time);
}
$("#timerNumber").html("
" + displayTime + "
");
- } else if (config.timerStyle === "mini") {
+ } else if (Config.timerStyle === "mini") {
let displayTime = Misc.secondsToString(maxtime - time);
if (maxtime === 0) {
displayTime = Misc.secondsToString(time);
@@ -1167,16 +1161,16 @@ function updateTimer() {
$("#miniTimerAndLiveWpm .time").html(displayTime);
}
} else if (
- config.mode === "words" ||
- config.mode === "custom" ||
- config.mode === "quote"
+ Config.mode === "words" ||
+ Config.mode === "custom" ||
+ Config.mode === "quote"
) {
- if (config.timerStyle === "bar") {
+ if (Config.timerStyle === "bar") {
let outof = wordsList.length;
- if (config.mode === "words") {
- outof = config.words;
+ if (Config.mode === "words") {
+ outof = Config.words;
}
- if (config.mode === "custom") {
+ if (Config.mode === "custom") {
if (CustomText.isWordRandom) {
outof = CustomText.word;
} else {
@@ -1192,12 +1186,12 @@ function updateTimer() {
},
250
);
- } else if (config.timerStyle === "text") {
+ } else if (Config.timerStyle === "text") {
let outof = wordsList.length;
- if (config.mode === "words") {
- outof = config.words;
+ if (Config.mode === "words") {
+ outof = Config.words;
}
- if (config.mode === "custom") {
+ if (Config.mode === "custom") {
if (CustomText.isWordRandom) {
outof = CustomText.word;
} else {
@@ -1211,26 +1205,26 @@ function updateTimer() {
"
" + `${inputHistory.length}/${outof}` + "
"
);
}
- } else if (config.timerStyle === "mini") {
+ } else if (Config.timerStyle === "mini") {
let outof = wordsList.length;
- if (config.mode === "words") {
- outof = config.words;
+ if (Config.mode === "words") {
+ outof = Config.words;
}
- if (config.mode === "custom") {
+ if (Config.mode === "custom") {
if (CustomText.isWordRandom) {
outof = CustomText.word;
} else {
outof = CustomText.text.length;
}
}
- if (config.words === 0) {
+ if (Config.words === 0) {
$("#miniTimerAndLiveWpm .time").html(`${inputHistory.length}`);
} else {
$("#miniTimerAndLiveWpm .time").html(`${inputHistory.length}/${outof}`);
}
}
- } else if (config.mode == "zen") {
- if (config.timerStyle === "text") {
+ } else if (Config.mode == "zen") {
+ if (Config.timerStyle === "text") {
$("#timerNumber").html("
" + `${inputHistory.length}` + "
");
} else {
$("#miniTimerAndLiveWpm .time").html(`${inputHistory.length}`);
@@ -1295,7 +1289,7 @@ function flashPressedKeymapKey(key, correct) {
}
try {
- if (correct || config.blindMode) {
+ if (correct || Config.blindMode) {
$(key)
.stop(true, true)
.css({
@@ -1403,7 +1397,7 @@ function countChars() {
let spaces = 0;
let correctspaces = 0;
for (let i = 0; i < inputHistory.length; i++) {
- let word = config.mode == "zen" ? inputHistory[i] : wordsList[i];
+ let word = Config.mode == "zen" ? inputHistory[i] : wordsList[i];
if (inputHistory[i] === "") {
//last word that was not started
continue;
@@ -1455,7 +1449,7 @@ function countChars() {
}
correctChars += toAdd.correct;
incorrectChars += toAdd.incorrect;
- if (i === inputHistory.length - 1 && config.mode == "time") {
+ if (i === inputHistory.length - 1 && Config.mode == "time") {
//last word - check if it was all correct - add to correct word chars
if (toAdd.incorrect === 0) correctWordChars += toAdd.correct;
} else {
@@ -1466,7 +1460,7 @@ function countChars() {
spaces++;
}
}
- if (activeFunBox === "nospace") {
+ if (activeFunbox === "nospace") {
spaces = 0;
correctspaces = 0;
}
@@ -1475,7 +1469,7 @@ function countChars() {
correctWordChars: correctWordChars,
allCorrectChars: correctChars,
incorrectChars:
- config.mode == "zen" ? TestStats.accuracy.incorrect : incorrectChars,
+ Config.mode == "zen" ? TestStats.accuracy.incorrect : incorrectChars,
extraChars: extraChars,
missedChars: missedChars,
correctSpaces: correctspaces,
@@ -1548,7 +1542,7 @@ function failTest() {
let resultCalculating = false;
function showResult(difficultyFailed = false) {
if (!testActive) return;
- if (config.mode == "zen" && currentInput.length != 0) {
+ if (Config.mode == "zen" && currentInput.length != 0) {
inputHistory.push(currentInput);
correctedHistory.push(currentCorrected);
}
@@ -1593,8 +1587,8 @@ function showResult(difficultyFailed = false) {
$("#result #resultWordsHistory").addClass("hidden");
- if (config.alwaysShowDecimalPlaces) {
- if (config.alwaysShowCPM == false) {
+ if (Config.alwaysShowDecimalPlaces) {
+ if (Config.alwaysShowCPM == false) {
$("#result .stats .wpm .top .text").text("wpm");
if (inf) {
$("#result .stats .wpm .bottom").text("Infinite");
@@ -1634,7 +1628,7 @@ function showResult(difficultyFailed = false) {
);
} else {
//not showing decimal places
- if (config.alwaysShowCPM == false) {
+ if (Config.alwaysShowCPM == false) {
$("#result .stats .wpm .top .text").text("wpm");
$("#result .stats .wpm .bottom").attr(
"aria-label",
@@ -1707,15 +1701,15 @@ function showResult(difficultyFailed = false) {
$("#result .stats .leaderboards").addClass("hidden");
let mode2 = "";
- if (config.mode === "time") {
- mode2 = config.time;
- } else if (config.mode === "words") {
- mode2 = config.words;
- } else if (config.mode === "custom") {
+ if (Config.mode === "time") {
+ mode2 = Config.time;
+ } else if (Config.mode === "words") {
+ mode2 = Config.words;
+ } else if (Config.mode === "custom") {
mode2 = "custom";
- } else if (config.mode === "quote") {
+ } else if (Config.mode === "quote") {
mode2 = randomQuote.id;
- } else if (config.mode === "zen") {
+ } else if (Config.mode === "zen") {
mode2 = "zen";
}
@@ -1765,7 +1759,7 @@ function showResult(difficultyFailed = false) {
consistency = 0;
}
- if (config.alwaysShowDecimalPlaces) {
+ if (Config.alwaysShowDecimalPlaces) {
$("#result .stats .consistency .bottom").text(
Misc.roundTo2(consistency) + "%"
);
@@ -1789,7 +1783,7 @@ function showResult(difficultyFailed = false) {
let maxChartVal = Math.max(
...[Math.max(...rawWpmPerSecond), Math.max(...TestStats.wpmHistory)]
);
- if (!config.startGraphsAtZero) {
+ if (!Config.startGraphsAtZero) {
ChartController.result.options.scales.yAxes[0].ticks.min = Math.min(
...TestStats.wpmHistory
);
@@ -1831,12 +1825,12 @@ function showResult(difficultyFailed = false) {
$("#result .stats .tags").addClass("hidden");
- let lang = config.language;
+ let lang = Config.language;
let quoteLength = -1;
- if (config.mode === "quote") {
+ if (Config.mode === "quote") {
quoteLength = randomQuote.group;
- lang = config.language.replace(/_\d*k$/g, "");
+ lang = Config.language.replace(/_\d*k$/g, "");
}
if (difficultyFailed) {
@@ -1846,23 +1840,23 @@ function showResult(difficultyFailed = false) {
} else if (sameWordset) {
Notifications.add("Test invalid - repeated", 0);
} else if (
- (config.mode === "time" && mode2 < 15 && mode2 > 0) ||
- (config.mode === "time" && mode2 == 0 && testtime < 15) ||
- (config.mode === "words" && mode2 < 10 && mode2 > 0) ||
- (config.mode === "words" && mode2 == 0 && testtime < 15) ||
- (config.mode === "custom" &&
+ (Config.mode === "time" && mode2 < 15 && mode2 > 0) ||
+ (Config.mode === "time" && mode2 == 0 && testtime < 15) ||
+ (Config.mode === "words" && mode2 < 10 && mode2 > 0) ||
+ (Config.mode === "words" && mode2 == 0 && testtime < 15) ||
+ (Config.mode === "custom" &&
!CustomText.isWordRandom &&
!CustomText.isTimeRandom &&
CustomText.text.length < 10) ||
- (config.mode === "custom" &&
+ (Config.mode === "custom" &&
CustomText.isWordRandom &&
!CustomText.isTimeRandom &&
CustomText.word < 10) ||
- (config.mode === "custom" &&
+ (Config.mode === "custom" &&
!CustomText.isWordRandom &&
CustomText.isTimeRandom &&
CustomText.time < 15) ||
- (config.mode === "zen" && testtime < 15)
+ (Config.mode === "zen" && testtime < 15)
) {
Notifications.add("Test too short", 0);
} else {
@@ -1889,7 +1883,7 @@ function showResult(difficultyFailed = false) {
}
let cdata = null;
- if (config.mode === "custom") {
+ if (Config.mode === "custom") {
cdata = {};
cdata.textLen = CustomText.text.length;
cdata.isWordRandom = CustomText.isWordRandom;
@@ -1911,11 +1905,11 @@ function showResult(difficultyFailed = false) {
incorrectChars: stats.incorrectChars,
allChars: stats.allChars,
acc: stats.acc,
- mode: config.mode,
+ mode: Config.mode,
mode2: mode2,
quoteLength: quoteLength,
- punctuation: config.punctuation,
- numbers: config.numbers,
+ punctuation: Config.punctuation,
+ numbers: Config.numbers,
timestamp: Date.now(),
language: lang,
restartCount: TestStats.restartCount,
@@ -1923,29 +1917,29 @@ function showResult(difficultyFailed = false) {
TestStats.incompleteSeconds < 0
? 0
: Misc.roundTo2(TestStats.incompleteSeconds),
- difficulty: config.difficulty,
+ difficulty: Config.difficulty,
testDuration: testtime,
afkDuration: afkseconds,
- blindMode: config.blindMode,
- theme: config.theme,
+ blindMode: Config.blindMode,
+ theme: Config.theme,
tags: activeTagsIds,
keySpacing: TestStats.keypressTimings.spacing.array,
keyDuration: TestStats.keypressTimings.duration.array,
consistency: consistency,
keyConsistency: keyConsistency,
- funbox: activeFunBox,
+ funbox: activeFunbox,
bailedOut: bailout,
chartData: chartData,
customText: cdata,
};
- if (config.mode !== "custom") {
+ if (Config.mode !== "custom") {
delete completedEvent.CustomText;
}
if (
- config.difficulty == "normal" ||
- ((config.difficulty == "master" || config.difficulty == "expert") &&
+ Config.difficulty == "normal" ||
+ ((Config.difficulty == "master" || Config.difficulty == "expert") &&
!difficultyFailed)
) {
// restartCount = 0;
@@ -1966,25 +1960,25 @@ function showResult(difficultyFailed = false) {
let dontShowCrown = false;
let pbDiff = 0;
DB.getLocalPB(
- config.mode,
+ Config.mode,
mode2,
- config.punctuation,
- config.language,
- config.difficulty
+ Config.punctuation,
+ Config.language,
+ Config.difficulty
).then((lpb) => {
DB.getUserHighestWpm(
- config.mode,
+ Config.mode,
mode2,
- config.punctuation,
- config.language,
- config.difficulty
+ Config.punctuation,
+ Config.language,
+ Config.difficulty
).then((highestwpm) => {
hideCrown();
$("#result .stats .wpm .crown").attr("aria-label", "");
if (lpb < stats.wpm && stats.wpm < highestwpm) {
dontShowCrown = true;
}
- if (config.mode == "quote") dontShowCrown = true;
+ if (ConfigSet.mode == "quote") dontShowCrown(true);
if (lpb < stats.wpm) {
//new pb based on local
pbDiff = Math.abs(stats.wpm - lpb);
@@ -2009,7 +2003,7 @@ function showResult(difficultyFailed = false) {
borderDash: [2, 2],
label: {
backgroundColor: ThemeColors.sub,
- fontFamily: config.fontFamily.replace(/_/g, " "),
+ fontFamily: Config.fontFamily.replace(/_/g, " "),
fontSize: 11,
fontStyle: "normal",
fontColor: ThemeColors.bg,
@@ -2032,7 +2026,7 @@ function showResult(difficultyFailed = false) {
);
ChartController.result.update({ duration: 0 });
}
- if (config.mode === "time" && (mode2 === 15 || mode2 === 60)) {
+ if (Config.mode === "time" && (mode2 === 15 || mode2 === 60)) {
$("#result .stats .leaderboards").removeClass("hidden");
$("#result .stats .leaderboards .bottom").html("checking...");
}
@@ -2047,25 +2041,25 @@ function showResult(difficultyFailed = false) {
activeTags.forEach(async (tag) => {
let tpb = await DB.getLocalTagPB(
tag.id,
- config.mode,
+ Config.mode,
mode2,
- config.punctuation,
- config.language,
- config.difficulty
+ Config.punctuation,
+ Config.language,
+ Config.difficulty
);
$("#result .stats .tags .bottom").append(`
${tag.name}
`);
- if (config.mode != "quote") {
+ if (Config.mode != "quote") {
if (tpb < stats.wpm) {
//new pb for that tag
DB.saveLocalTagPB(
tag.id,
- config.mode,
+ Config.mode,
mode2,
- config.punctuation,
- config.language,
- config.difficulty,
+ Config.punctuation,
+ Config.language,
+ Config.difficulty,
stats.wpm,
stats.acc,
stats.wpmRaw,
@@ -2091,7 +2085,7 @@ function showResult(difficultyFailed = false) {
borderDash: [2, 2],
label: {
backgroundColor: ThemeColors.sub,
- fontFamily: config.fontFamily.replace(/_/g, " "),
+ fontFamily: Config.fontFamily.replace(/_/g, " "),
fontSize: 11,
fontStyle: "normal",
fontColor: ThemeColors.bg,
@@ -2194,7 +2188,7 @@ function showResult(difficultyFailed = false) {
}
if (
- config.mode === "time" &&
+ Config.mode === "time" &&
(mode2 == "15" || mode2 == "60") &&
DB.getSnapshot() !== null
) {
@@ -2207,7 +2201,7 @@ function showResult(difficultyFailed = false) {
const glb = e.data.globalLeaderboard;
let glbMemory;
try {
- glbMemory = DB.getSnapshot().lbMemory[config.mode + mode2]
+ glbMemory = DB.getSnapshot().lbMemory[Config.mode + mode2]
.global;
} catch {
glbMemory = null;
@@ -2221,7 +2215,7 @@ function showResult(difficultyFailed = false) {
dontShowGlobalDiff = true;
globalLbDiff = glbMemory - glb.insertedAt;
DB.updateLbMemory(
- config.mode,
+ Config.mode,
mode2,
"global",
glb.insertedAt
@@ -2232,7 +2226,7 @@ function showResult(difficultyFailed = false) {
if (glb.newBest) {
globalLbDiff = glbMemory - glb.insertedAt;
DB.updateLbMemory(
- config.mode,
+ Config.mode,
mode2,
"global",
glb.insertedAt
@@ -2242,7 +2236,7 @@ function showResult(difficultyFailed = false) {
} else {
globalLbDiff = glbMemory - glb.foundAt;
DB.updateLbMemory(
- config.mode,
+ Config.mode,
mode2,
"global",
glb.foundAt
@@ -2268,7 +2262,7 @@ function showResult(difficultyFailed = false) {
const dlb = e.data.dailyLeaderboard;
let dlbMemory;
try {
- dlbMemory = DB.getSnapshot().lbMemory[config.mode + mode2]
+ dlbMemory = DB.getSnapshot().lbMemory[Config.mode + mode2]
.daily;
} catch {
dlbMemory = null;
@@ -2282,7 +2276,7 @@ function showResult(difficultyFailed = false) {
dontShowDailyDiff = true;
dailyLbDiff = dlbMemory - dlb.insertedAt;
DB.updateLbMemory(
- config.mode,
+ Config.mode,
mode2,
"daily",
dlb.insertedAt
@@ -2292,7 +2286,7 @@ function showResult(difficultyFailed = false) {
if (dlb.newBest) {
dailyLbDiff = dlbMemory - dlb.insertedAt;
DB.updateLbMemory(
- config.mode,
+ Config.mode,
mode2,
"daily",
dlb.insertedAt
@@ -2302,7 +2296,7 @@ function showResult(difficultyFailed = false) {
} else {
dailyLbDiff = dlbMemory - dlb.foundAt;
DB.updateLbMemory(
- config.mode,
+ Config.mode,
mode2,
"daily",
dlb.foundAt
@@ -2369,11 +2363,11 @@ function showResult(difficultyFailed = false) {
//new pb
showCrown();
DB.saveLocalPB(
- config.mode,
+ Config.mode,
mode2,
- config.punctuation,
- config.language,
- config.difficulty,
+ Config.punctuation,
+ Config.language,
+ Config.difficulty,
stats.wpm,
stats.acc,
stats.wpmRaw,
@@ -2424,56 +2418,56 @@ function showResult(difficultyFailed = false) {
let testType = "";
- if (config.mode === "quote") {
+ if (Config.mode === "quote") {
let qlen = "";
- if (config.quoteLength === 0) {
+ if (Config.quoteLength === 0) {
qlen = "short ";
- } else if (config.quoteLength === 1) {
+ } else if (Config.quoteLength === 1) {
qlen = "medium ";
- } else if (config.quoteLength === 2) {
+ } else if (Config.quoteLength === 2) {
qlen = "long ";
- } else if (config.quoteLength === 3) {
+ } else if (Config.quoteLength === 3) {
qlen = "thicc ";
}
- testType += qlen + config.mode;
+ testType += qlen + Config.mode;
} else {
- testType += config.mode;
+ testType += Config.mode;
}
- if (config.mode == "time") {
- testType += " " + config.time;
- } else if (config.mode == "words") {
- testType += " " + config.words;
+ if (Config.mode == "time") {
+ testType += " " + Config.time;
+ } else if (Config.mode == "words") {
+ testType += " " + Config.words;
}
if (
- config.mode != "custom" &&
- activeFunBox !== "gibberish" &&
- activeFunBox !== "58008"
+ Config.mode != "custom" &&
+ activeFunbox !== "gibberish" &&
+ activeFunbox !== "58008"
) {
testType += "
" + lang;
}
- if (config.punctuation) {
+ if (Config.punctuation) {
testType += "
punctuation";
}
- if (config.numbers) {
+ if (Config.numbers) {
testType += "
numbers";
}
- if (config.blindMode) {
+ if (Config.blindMode) {
testType += "
blind";
}
- if (activeFunBox !== "none") {
- testType += "
" + activeFunBox.replace(/_/g, " ");
+ if (activeFunbox !== "none") {
+ testType += "
" + activeFunbox.replace(/_/g, " ");
}
- if (config.difficulty == "expert") {
+ if (Config.difficulty == "expert") {
testType += "
expert";
- } else if (config.difficulty == "master") {
+ } else if (Config.difficulty == "master") {
testType += "
master";
}
$("#result .stats .testType .bottom").html(testType);
let otherText = "";
- if (config.layout !== "default") {
- otherText += "
" + config.layout;
+ if (Config.layout !== "default") {
+ otherText += "
" + Config.layout;
}
if (difficultyFailed) {
otherText += "
failed";
@@ -2508,7 +2502,7 @@ function showResult(difficultyFailed = false) {
$("#result .stats .infoAndTags").removeClass("hidden");
}
- if (config.mode === "quote") {
+ if (Config.mode === "quote") {
$("#result .stats .source").removeClass("hidden");
$("#result .stats .source .bottom").html(randomQuote.source);
} else {
@@ -2524,7 +2518,7 @@ function showResult(difficultyFailed = false) {
resultCalculating = false;
$("#words").empty();
ChartController.result.resize();
- if (config.alwaysShowWordsHistory) {
+ if (Config.alwaysShowWordsHistory) {
toggleResultWordsDisplay();
}
});
@@ -2557,14 +2551,14 @@ function startTest() {
updateTimer();
clearTimeout(timer);
- if (activeFunBox === "memory") {
+ if (activeFunbox === "memory") {
memoryFunboxInterval = clearInterval(memoryFunboxInterval);
memoryFunboxTimer = null;
$("#wordsWrapper").addClass("hidden");
}
try {
- if (config.paceCaret !== "off")
+ if (Config.paceCaret !== "off")
movePaceCaret(performance.now() + paceCaret.spc * 1000);
} catch (e) {}
//use a recursive self-adjusting timer to avoid time drift
@@ -2573,10 +2567,10 @@ function startTest() {
const delay = expectedStepEnd - performance.now();
timer = setTimeout(function () {
time++;
- $(".pageTest #premidSecondsLeft").text(config.time - time);
+ $(".pageTest #premidSecondsLeft").text(Config.time - time);
if (
- config.mode === "time" ||
- (config.mode === "custom" && CustomText.isTimeRandom)
+ Config.mode === "time" ||
+ (Config.mode === "custom" && CustomText.isTimeRandom)
) {
updateTimer();
}
@@ -2588,31 +2582,31 @@ function startTest() {
let acc = Misc.roundTo2(TestStats.calculateAccuracy());
- if (activeFunBox === "layoutfluid" && config.mode === "time") {
+ if (activeFunbox === "layoutfluid" && Config.mode === "time") {
const layouts = ["qwerty", "dvorak", "colemak"];
let index = 0;
- index = Math.floor(time / (config.time / 3));
+ index = Math.floor(time / (Config.time / 3));
if (
- time == Math.floor(config.time / 3) - 3 ||
- time == (config.time / 3) * 2 - 3
+ time == Math.floor(Config.time / 3) - 3 ||
+ time == (Config.time / 3) * 2 - 3
) {
Notifications.add("3", 0, 1);
}
if (
- time == Math.floor(config.time / 3) - 2 ||
- time == Math.floor(config.time / 3) * 2 - 2
+ time == Math.floor(Config.time / 3) - 2 ||
+ time == Math.floor(Config.time / 3) * 2 - 2
) {
Notifications.add("2", 0, 1);
}
if (
- time == Math.floor(config.time / 3) - 1 ||
- time == Math.floor(config.time / 3) * 2 - 1
+ time == Math.floor(Config.time / 3) - 1 ||
+ time == Math.floor(Config.time / 3) * 2 - 1
) {
Notifications.add("1", 0, 1);
}
- if (config.layout !== layouts[index] && layouts[index] !== undefined) {
+ if (Config.layout !== layouts[index] && layouts[index] !== undefined) {
Notifications.add(`--- !!! ${layouts[index]} !!! ---`, 0);
}
setLayout(layouts[index]);
@@ -2623,26 +2617,26 @@ function startTest() {
TestStats.pushKeypressesToHistory();
if (
- (config.minWpm === "custom" &&
- wpmAndRaw.wpm < parseInt(config.minWpmCustomSpeed) &&
+ (Config.minWpm === "custom" &&
+ wpmAndRaw.wpm < parseInt(Config.minWpmCustomSpeed) &&
currentWordIndex > 3) ||
- (config.minAcc === "custom" && acc < parseInt(config.minAccCustom))
+ (Config.minAcc === "custom" && acc < parseInt(Config.minAccCustom))
) {
clearTimeout(timer);
failTest();
return;
}
if (
- config.mode == "time" ||
- (config.mode === "custom" && CustomText.isTimeRandom)
+ Config.mode == "time" ||
+ (Config.mode === "custom" && CustomText.isTimeRandom)
) {
if (
- (time >= config.time &&
- config.time !== 0 &&
- config.mode === "time") ||
+ (time >= Config.time &&
+ Config.time !== 0 &&
+ Config.mode === "time") ||
(time >= CustomText.time &&
CustomText.time !== 0 &&
- config.mode === "custom")
+ Config.mode === "custom")
) {
//times up
clearTimeout(timer);
@@ -2662,18 +2656,18 @@ function startTest() {
function restartTest(withSameWordset = false, nosave = false, event) {
// if (!manualRestart) {
// if (
- // (config.mode === "words" && config.words < 1000 && config.words > 0) ||
- // (config.mode === "time" && config.time < 3600 && config.time > 0) ||
- // config.mode === "quote" ||
- // (config.mode === "custom" &&
+ // (Config.mode === "words" && Config.words < 1000 && Config.words > 0) ||
+ // (Config.mode === "time" && Config.time < 3600 && Config.time > 0) ||
+ // Config.mode === "quote" ||
+ // (Config.mode === "custom" &&
// CustomText.isWordRandom &&
// CustomText.word < 1000 &&
// CustomText.word != 0) ||
- // (config.mode === "custom" &&
+ // (Config.mode === "custom" &&
// CustomText.isTimeRandom &&
// CustomText.time < 3600 &&
// CustomText.time != 0) ||
- // (config.mode === "custom" &&
+ // (Config.mode === "custom" &&
// !CustomText.isWordRandom &&
// CustomText.text.length < 1000)
// ) {
@@ -2703,18 +2697,18 @@ function restartTest(withSameWordset = false, nosave = false, event) {
} catch {}
}
try {
- if (config.mode !== "zen") event.preventDefault();
+ if (Config.mode !== "zen") event.preventDefault();
} catch {}
if (
!Misc.canQuickRestart(
- config.mode,
- config.words,
- config.time,
+ Config.mode,
+ Config.words,
+ Config.time,
CustomText
)
) {
let message = "Use your mouse to confirm.";
- if (config.quickTab)
+ if (Config.quickTab)
message = "Press shift + tab or use your mouse to confirm.";
Notifications.add("Quick restart disabled. " + message, 0, 3);
return;
@@ -2735,7 +2729,7 @@ function restartTest(withSameWordset = false, nosave = false, event) {
// restartCount++;
}
- if (config.mode == "zen") {
+ if (Config.mode == "zen") {
$("#words").empty();
}
@@ -2782,11 +2776,11 @@ function restartTest(withSameWordset = false, nosave = false, event) {
}
if (resultVisible) {
if (
- config.randomTheme !== "off" &&
+ Config.randomTheme !== "off" &&
!pageTransition &&
- !config.customTheme
+ !Config.customTheme
) {
- ThemeController.randomiseTheme(config);
+ ThemeController.randomiseTheme();
}
}
resultVisible = false;
@@ -2816,10 +2810,10 @@ function restartTest(withSameWordset = false, nosave = false, event) {
initPaceCaret();
showWords();
}
- if (config.mode === "quote") {
+ if (Config.mode === "quote") {
sameWordset = false;
}
- if (config.keymapMode !== "off") {
+ if (Config.keymapMode !== "off") {
showKeymap();
} else {
hideKeymap();
@@ -2829,7 +2823,7 @@ function restartTest(withSameWordset = false, nosave = false, event) {
document.querySelector("#liveWpm").innerHTML = "0";
document.querySelector("#liveAcc").innerHTML = "100%";
- if (activeFunBox === "memory") {
+ if (activeFunbox === "memory") {
memoryFunboxInterval = clearInterval(memoryFunboxInterval);
memoryFunboxTimer = Math.round(Math.pow(wordsList.length, 1.2));
memoryFunboxInterval = setInterval(() => {
@@ -2846,31 +2840,31 @@ function restartTest(withSameWordset = false, nosave = false, event) {
}
}, 1000);
- if (config.keymapMode === "next") {
+ if (Config.keymapMode === "next") {
setKeymapMode("react");
}
}
let mode2 = "";
- if (config.mode === "time") {
- mode2 = config.time;
- } else if (config.mode === "words") {
- mode2 = config.words;
- } else if (config.mode === "custom") {
+ if (Config.mode === "time") {
+ mode2 = Config.time;
+ } else if (Config.mode === "words") {
+ mode2 = Config.words;
+ } else if (Config.mode === "custom") {
mode2 = "custom";
- } else if (config.mode === "quote") {
+ } else if (Config.mode === "quote") {
mode2 = randomQuote.id;
}
let fbtext = "";
- if (activeFunBox !== "none") {
- fbtext = " " + activeFunBox;
+ if (activeFunbox !== "none") {
+ fbtext = " " + activeFunbox;
}
$(".pageTest #premidTestMode").text(
- `${config.mode} ${mode2} ${config.language}${fbtext}`
+ `${Config.mode} ${mode2} ${Config.language}${fbtext}`
);
- $(".pageTest #premidSecondsLeft").text(config.time);
+ $(".pageTest #premidSecondsLeft").text(Config.time);
- if (activeFunBox === "layoutfluid") {
+ if (activeFunbox === "layoutfluid") {
setLayout("qwerty");
settingsGroups.layout.updateButton();
setKeymapLayout("qwerty");
@@ -2903,8 +2897,7 @@ function restartTest(withSameWordset = false, nosave = false, event) {
sameWordset,
textHasTab,
paceCaret,
- activeFunBox,
- config
+ activeFunbox
);
pageTransition = false;
// console.log(TestStats.incompleteSeconds);
@@ -2998,15 +2991,15 @@ function changePage(page) {
function setMode(mode, nosave) {
if (testRestarting) return;
- if (mode !== "words" && activeFunBox === "memory") {
+ if (mode !== "words" && activeFunbox === "memory") {
Notifications.add("Memory funbox can only be used with words mode.", 0);
return;
}
- config.mode = mode;
+ ConfigSet.mode(mode);
$("#top .config .mode .text-button").removeClass("active");
$("#top .config .mode .text-button[mode='" + mode + "']").addClass("active");
- if (config.mode == "time") {
+ if (Config.mode == "time") {
$("#top .config .wordCount").addClass("hidden");
$("#top .config .time").removeClass("hidden");
$("#top .config .customText").addClass("hidden");
@@ -3015,7 +3008,7 @@ function setMode(mode, nosave) {
$("#top .config .punctuationMode").removeClass("hidden");
$("#top .config .numbersMode").removeClass("hidden");
$("#top .config .quoteLength").addClass("hidden");
- } else if (config.mode == "words") {
+ } else if (Config.mode == "words") {
$("#top .config .wordCount").removeClass("hidden");
$("#top .config .time").addClass("hidden");
$("#top .config .customText").addClass("hidden");
@@ -3024,20 +3017,14 @@ function setMode(mode, nosave) {
$("#top .config .punctuationMode").removeClass("hidden");
$("#top .config .numbersMode").removeClass("hidden");
$("#top .config .quoteLength").addClass("hidden");
- } else if (config.mode == "custom") {
+ } else if (Config.mode == "custom") {
if (
- activeFunBox === "58008" ||
- activeFunBox === "gibberish" ||
- activeFunBox === "ascii"
+ activeFunbox === "58008" ||
+ activeFunbox === "gibberish" ||
+ activeFunbox === "ascii"
) {
- activeFunBox = "none";
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ activeFunbox = "none";
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
}
$("#top .config .wordCount").addClass("hidden");
$("#top .config .time").addClass("hidden");
@@ -3049,7 +3036,7 @@ function setMode(mode, nosave) {
$("#top .config .quoteLength").addClass("hidden");
setPunctuation(false, true);
setNumbers(false, true);
- } else if (config.mode == "quote") {
+ } else if (Config.mode == "quote") {
setToggleSettings(false, nosave);
$("#top .config .wordCount").addClass("hidden");
$("#top .config .time").addClass("hidden");
@@ -3060,14 +3047,14 @@ function setMode(mode, nosave) {
$("#top .config .numbersMode").removeClass("hidden");
$("#result .stats .source").removeClass("hidden");
$("#top .config .quoteLength").removeClass("hidden");
- } else if (config.mode == "zen") {
+ } else if (Config.mode == "zen") {
$("#top .config .wordCount").addClass("hidden");
$("#top .config .time").addClass("hidden");
$("#top .config .customText").addClass("hidden");
$("#top .config .punctuationMode").addClass("hidden");
$("#top .config .numbersMode").addClass("hidden");
$("#top .config .quoteLength").addClass("hidden");
- if (config.paceCaret != "off") {
+ if (Config.paceCaret != "off") {
Notifications.add(`Pace caret will not work with zen mode.`, 0);
}
// setPaceCaret("off", true);
@@ -3080,7 +3067,7 @@ function liveWpmAndRaw() {
let correctWordChars = 0;
let spaces = 0;
for (let i = 0; i < inputHistory.length; i++) {
- let word = config.mode == "zen" ? inputHistory[i] : wordsList[i];
+ let word = Config.mode == "zen" ? inputHistory[i] : wordsList[i];
if (inputHistory[i] == word) {
//the word is correct
//+1 for space
@@ -3097,7 +3084,7 @@ function liveWpmAndRaw() {
if (wordsList[currentWordIndex] == currentInput) {
correctWordChars += currentInput.length;
}
- if (activeFunBox === "nospace") {
+ if (activeFunbox === "nospace") {
spaces = 0;
}
chars += currentInput.length;
@@ -3111,16 +3098,16 @@ function liveWpmAndRaw() {
}
function updateLiveWpm(wpm, raw) {
- if (!testActive || !config.showLiveWpm) {
+ if (!testActive || !Config.showLiveWpm) {
hideLiveWpm();
} else {
showLiveWpm();
}
let number = wpm;
- if (config.blindMode) {
+ if (Config.blindMode) {
number = raw;
}
- if (config.alwaysShowCPM) {
+ if (Config.alwaysShowCPM) {
number = Math.round(number * 5);
}
document.querySelector("#miniTimerAndLiveWpm .wpm").innerHTML = number;
@@ -3128,13 +3115,13 @@ function updateLiveWpm(wpm, raw) {
}
function updateLiveAcc(acc) {
- if (!testActive || !config.showLiveAcc) {
+ if (!testActive || !Config.showLiveAcc) {
hideLiveAcc();
} else {
showLiveAcc();
}
let number = Math.floor(acc);
- if (config.blindMode) {
+ if (Config.blindMode) {
number = 100;
}
document.querySelector("#miniTimerAndLiveWpm .acc").innerHTML = number + "%";
@@ -3142,26 +3129,26 @@ function updateLiveAcc(acc) {
}
function showLiveWpm() {
- if (!config.showLiveWpm) return;
+ if (!Config.showLiveWpm) return;
if (!testActive) return;
- if (config.timerStyle === "mini") {
- // $("#miniTimerAndLiveWpm .wpm").css("opacity", config.timerOpacity);
+ if (Config.timerStyle === "mini") {
+ // $("#miniTimerAndLiveWpm .wpm").css("opacity", Config.timerOpacity);
if (!$("#miniTimerAndLiveWpm .wpm").hasClass("hidden")) return;
$("#miniTimerAndLiveWpm .wpm")
.removeClass("hidden")
.css("opacity", 0)
.animate(
{
- opacity: config.timerOpacity,
+ opacity: Config.timerOpacity,
},
125
);
} else {
- // $("#liveWpm").css("opacity", config.timerOpacity);
+ // $("#liveWpm").css("opacity", Config.timerOpacity);
if (!$("#liveWpm").hasClass("hidden")) return;
$("#liveWpm").removeClass("hidden").css("opacity", 0).animate(
{
- opacity: config.timerOpacity,
+ opacity: Config.timerOpacity,
},
125
);
@@ -3173,7 +3160,7 @@ function hideLiveWpm() {
// $("#miniTimerAndLiveWpm .wpm").css("opacity", 0);
$("#liveWpm").animate(
{
- opacity: config.timerOpacity,
+ opacity: Config.timerOpacity,
},
125,
() => {
@@ -3182,7 +3169,7 @@ function hideLiveWpm() {
);
$("#miniTimerAndLiveWpm .wpm").animate(
{
- opacity: config.timerOpacity,
+ opacity: Config.timerOpacity,
},
125,
() => {
@@ -3192,26 +3179,26 @@ function hideLiveWpm() {
}
function showLiveAcc() {
- if (!config.showLiveAcc) return;
+ if (!Config.showLiveAcc) return;
if (!testActive) return;
- if (config.timerStyle === "mini") {
- // $("#miniTimerAndLiveWpm .wpm").css("opacity", config.timerOpacity);
+ if (Config.timerStyle === "mini") {
+ // $("#miniTimerAndLiveWpm .wpm").css("opacity", Config.timerOpacity);
if (!$("#miniTimerAndLiveWpm .acc").hasClass("hidden")) return;
$("#miniTimerAndLiveWpm .acc")
.removeClass("hidden")
.css("opacity", 0)
.animate(
{
- opacity: config.timerOpacity,
+ opacity: Config.timerOpacity,
},
125
);
} else {
- // $("#liveWpm").css("opacity", config.timerOpacity);
+ // $("#liveWpm").css("opacity", Config.timerOpacity);
if (!$("#liveAcc").hasClass("hidden")) return;
$("#liveAcc").removeClass("hidden").css("opacity", 0).animate(
{
- opacity: config.timerOpacity,
+ opacity: Config.timerOpacity,
},
125
);
@@ -3223,7 +3210,7 @@ function hideLiveAcc() {
// $("#miniTimerAndLiveWpm .wpm").css("opacity", 0);
$("#liveAcc").animate(
{
- opacity: config.timerOpacity,
+ opacity: Config.timerOpacity,
},
125,
() => {
@@ -3232,7 +3219,7 @@ function hideLiveAcc() {
);
$("#miniTimerAndLiveWpm .acc").animate(
{
- opacity: config.timerOpacity,
+ opacity: Config.timerOpacity,
},
125,
() => {
@@ -3297,11 +3284,11 @@ async function loadWordsHistory() {
incorrect: 0,
missed: 0,
};
- let length = config.mode == "zen" ? input.length : word.length;
+ let length = Config.mode == "zen" ? input.length : word.length;
for (let c = 0; c < length; c++) {
if (c < input.length) {
//on char that still has a word list pair
- if (config.mode == "zen" || input[c] == word[c]) {
+ if (Config.mode == "zen" || input[c] == word[c]) {
wordstats.correct++;
} else {
wordstats.incorrect++;
@@ -3311,15 +3298,15 @@ async function loadWordsHistory() {
wordstats.missed++;
}
}
- if (wordstats.incorrect !== 0 || config.mode !== "time") {
- if (config.mode != "zen" && input !== word) {
+ if (wordstats.incorrect !== 0 || Config.mode !== "time") {
+ if (Config.mode != "zen" && input !== word) {
wordEl = `
`;
}
}
} else {
- if (config.mode != "zen" && input !== word) {
+ if (Config.mode != "zen" && input !== word) {
wordEl = `
`;
@@ -3327,7 +3314,7 @@ async function loadWordsHistory() {
}
let loop;
- if (config.mode == "zen" || input.length > word.length) {
+ if (Config.mode == "zen" || input.length > word.length) {
//input is longer - extra characters possible (loop over input)
loop = input.length;
} else {
@@ -3350,8 +3337,8 @@ async function loadWordsHistory() {
) {
extraCorrected = "extraCorrected";
}
- if (config.mode == "zen" || word[c] !== undefined) {
- if (config.mode == "zen" || input[c] === word[c]) {
+ if (Config.mode == "zen" || word[c] !== undefined) {
+ if (Config.mode == "zen" || input[c] === word[c]) {
if (correctedChar === input[c] || correctedChar === undefined) {
wordEl += ``;
} else {
@@ -3621,7 +3608,7 @@ async function showQuoteSearchPopup() {
}
async function updateQuoteSearchResults(searchText) {
- let quotes = await Misc.getQuotes(config.language);
+ let quotes = await Misc.getQuotes(Config.language);
let reg = new RegExp(searchText, "i");
let found = [];
quotes.quotes.forEach((quote) => {
@@ -3702,45 +3689,45 @@ function hideQuoteSearchPopup() {
async function initPaceCaret() {
let mode2 = "";
- if (config.mode === "time") {
- mode2 = config.time;
- } else if (config.mode === "words") {
- mode2 = config.words;
- } else if (config.mode === "custom") {
+ if (Config.mode === "time") {
+ mode2 = Config.time;
+ } else if (Config.mode === "words") {
+ mode2 = Config.words;
+ } else if (Config.mode === "custom") {
mode2 = "custom";
- } else if (config.mode === "quote") {
+ } else if (Config.mode === "quote") {
mode2 = randomQuote.id;
}
let wpm;
- if (config.paceCaret === "pb") {
+ if (Config.paceCaret === "pb") {
wpm = await DB.getLocalPB(
- config.mode,
+ Config.mode,
mode2,
- config.punctuation,
- config.language,
- config.difficulty
+ Config.punctuation,
+ Config.language,
+ Config.difficulty
);
- } else if (config.paceCaret === "average") {
+ } else if (Config.paceCaret === "average") {
let mode2 = "";
- if (config.mode === "time") {
- mode2 = config.time;
- } else if (config.mode === "words") {
- mode2 = config.words;
- } else if (config.mode === "custom") {
+ if (Config.mode === "time") {
+ mode2 = Config.time;
+ } else if (Config.mode === "words") {
+ mode2 = Config.words;
+ } else if (Config.mode === "custom") {
mode2 = "custom";
- } else if (config.mode === "quote") {
+ } else if (Config.mode === "quote") {
mode2 = randomQuote.id;
}
wpm = await DB.getUserAverageWpm10(
- config.mode,
+ Config.mode,
mode2,
- config.punctuation,
- config.language,
- config.difficulty
+ Config.punctuation,
+ Config.language,
+ Config.difficulty
);
console.log("avg pace " + wpm);
- } else if (config.paceCaret === "custom") {
- wpm = config.paceCaretCustomSpeed;
+ } else if (Config.paceCaret === "custom") {
+ wpm = Config.paceCaretCustomSpeed;
}
if (wpm < 1 || wpm == false || wpm == undefined || Number.isNaN(wpm)) {
@@ -3763,13 +3750,7 @@ async function initPaceCaret() {
timeout: null,
};
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
}
function movePaceCaret(expectedStepEnd) {
@@ -3792,7 +3773,7 @@ function movePaceCaret(expectedStepEnd) {
paceCaret.currentLetterIndex = -1;
paceCaret.currentWordIndex++;
}
- if (!config.blindMode) {
+ if (!Config.blindMode) {
if (paceCaret.correction < 0) {
while (paceCaret.correction < 0) {
paceCaret.currentLetterIndex--;
@@ -3868,7 +3849,7 @@ function movePaceCaret(expectedStepEnd) {
let duration = expectedStepEnd - performance.now();
- if (config.smoothCaret) {
+ if (Config.smoothCaret) {
caret.stop(true, true).animate(
{
left: newLeft,
@@ -3899,11 +3880,11 @@ function movePaceCaret(expectedStepEnd) {
}
function resetPaceCaret() {
- if (config.paceCaret === "off") return;
+ if (Config.paceCaret === "off") return;
if (!$("#paceCaret").hasClass("hidden")) {
$("#paceCaret").addClass("hidden");
}
- if (config.mode === "zen") return;
+ if (Config.mode === "zen") return;
let caret = $("#paceCaret");
let firstLetter = document
@@ -3980,7 +3961,7 @@ $("#quoteSearchPopup input").keypress((e) => {
});
function updateKeytips() {
- if (config.swapEscAndTab) {
+ if (Config.swapEscAndTab) {
$(".pageSettings .tip").html(`
tip: You can also change all these settings quickly using the
command line (
@@ -4078,7 +4059,7 @@ function lineJump(currentTop) {
}
}
const wordHeight = $(document.querySelector(".word")).outerHeight(true);
- if (config.smoothLineScroll && toHide.length > 0) {
+ if (Config.smoothLineScroll && toHide.length > 0) {
lineTransition = true;
$("#words").prepend(
`
`
@@ -4227,8 +4208,8 @@ $(document).on("keypress", "#restartTestButton", (event) => {
if (event.keyCode == 13) {
if (
testActive &&
- config.repeatQuotes === "typing" &&
- config.mode === "quote"
+ Config.repeatQuotes === "typing" &&
+ Config.mode === "quote"
) {
restartTest(true);
} else {
@@ -4242,8 +4223,8 @@ $(document.body).on("click", "#restartTestButton", () => {
if (resultCalculating) return;
if (
testActive &&
- config.repeatQuotes === "typing" &&
- config.mode === "quote"
+ Config.repeatQuotes === "typing" &&
+ Config.mode === "quote"
) {
restartTest(true);
} else {
@@ -4256,13 +4237,13 @@ function initPractiseMissedWords() {
Notifications.add("You haven't missed any words.", 0);
return;
}
- let mode = modeBeforePractise === null ? config.mode : modeBeforePractise;
+ let mode = modeBeforePractise === null ? Config.mode : modeBeforePractise;
let punctuation =
punctuationBeforePractise === null
- ? config.punctuation
+ ? Config.punctuation
: punctuationBeforePractise;
let numbers =
- numbersBeforePractise === null ? config.numbers : numbersBeforePractise;
+ numbersBeforePractise === null ? Config.numbers : numbersBeforePractise;
setMode("custom");
let newCustomText = [];
Object.keys(TestStats.missedWords).forEach((missedWord) => {
@@ -4315,7 +4296,7 @@ $(document.body).on("click", "#showWordHistoryButton", () => {
});
$(document.body).on("click", "#restartTestButtonWithSameWordset", () => {
- if (config.mode == "zen") {
+ if (Config.mode == "zen") {
Notifications.add("Repeat test disabled in zen mode");
return;
}
@@ -4324,7 +4305,7 @@ $(document.body).on("click", "#restartTestButtonWithSameWordset", () => {
});
$(document).on("keypress", "#restartTestButtonWithSameWordset", (event) => {
- if (config.mode == "zen") {
+ if (Config.mode == "zen") {
Notifications.add("Repeat test disabled in zen mode");
return;
}
@@ -4395,21 +4376,21 @@ $("#wordsInput").keypress((event) => {
});
$("#wordsInput").on("focus", () => {
- if (!resultVisible && config.showOutOfFocusWarning) {
+ if (!resultVisible && Config.showOutOfFocusWarning) {
OutOfFocus.hide();
}
- Caret.show(config);
+ Caret.show();
});
$("#wordsInput").on("focusout", () => {
- if (!resultVisible && config.showOutOfFocusWarning) {
+ if (!resultVisible && Config.showOutOfFocusWarning) {
OutOfFocus.show();
}
Caret.hide();
});
$(window).resize(() => {
- Caret.updatePosition(currentInput, config);
+ Caret.updatePosition(currentInput);
});
$(document).mousemove(function (event) {
@@ -4483,13 +4464,13 @@ $(document).keydown(function (event) {
) {
focusWords();
wordsFocused = true;
- // if (config.showOutOfFocusWarning) return;
+ // if (Config.showOutOfFocusWarning) return;
}
//tab
if (
- (event.key == "Tab" && !config.swapEscAndTab) ||
- (event.key == "Escape" && config.swapEscAndTab)
+ (event.key == "Tab" && !Config.swapEscAndTab) ||
+ (event.key == "Escape" && Config.swapEscAndTab)
) {
handleTab(event);
// event.preventDefault();
@@ -4511,7 +4492,7 @@ $(document).keydown(function (event) {
TestStats.setKeypressDuration(performance.now());
try {
if (
- !config.capsLockBackspace &&
+ !Config.capsLockBackspace &&
event.originalEvent.getModifierState("CapsLock")
) {
showCapsWarning();
@@ -4527,12 +4508,16 @@ $(document).keydown(function (event) {
//backspace
const isBackspace =
event.key === "Backspace" ||
- (config.capsLockBackspace && event.key === "CapsLock");
+ (Config.capsLockBackspace && event.key === "CapsLock");
if (isBackspace && wordsFocused) {
handleBackspace(event);
}
- if (event.key === "Enter" && activeFunBox === "58008" && wordsFocused) {
+ if (
+ event.key === "Enter" &&
+ activeFunbox.activeFunbox === "58008" &&
+ wordsFocused
+ ) {
event.key = " ";
}
@@ -4579,16 +4564,16 @@ function handleTab(event) {
$("#commandLineWrapper").hasClass("hidden") &&
$("#simplePopupWrapper").hasClass("hidden")
) {
- if (config.quickTab) {
- if (config.mode == "zen" && !event.shiftKey) {
+ if (Config.quickTab) {
+ if (Config.mode == "zen" && !event.shiftKey) {
//ignore
} else {
if (event.shiftKey) ManualRestart.set();
if (
testActive &&
- config.repeatQuotes === "typing" &&
- config.mode === "quote"
+ Config.repeatQuotes === "typing" &&
+ Config.mode === "quote"
) {
restartTest(true, false, event);
} else {
@@ -4599,14 +4584,14 @@ function handleTab(event) {
if (
!resultVisible &&
((textHasTab && event.shiftKey) ||
- (!textHasTab && config.mode !== "zen") ||
- (config.mode === "zen" && event.shiftKey))
+ (!textHasTab && Config.mode !== "zen") ||
+ (Config.mode === "zen" && event.shiftKey))
) {
event.preventDefault();
$("#restartTestButton").focus();
}
}
- } else if (config.quickTab) {
+ } else if (Config.quickTab) {
changePage("test");
}
@@ -4617,7 +4602,7 @@ function handleTab(event) {
// (event.shiftKey && textHasTab) ||
// resultVisible
// ) &&
- // config.quickTab &&
+ // Config.quickTab &&
// !$(".pageLogin").hasClass("active") &&
// !resultCalculating &&
// $("#commandLineWrapper").hasClass("hidden") &&
@@ -4626,16 +4611,16 @@ function handleTab(event) {
// event.preventDefault();
// if ($(".pageTest").hasClass("active")) {
// if (
- // (config.mode === "words" && config.words < 1000) ||
- // (config.mode === "time" && config.time < 3600) ||
- // config.mode === "quote" ||
- // (config.mode === "custom" &&
+ // (Config.mode === "words" && Config.words < 1000) ||
+ // (Config.mode === "time" && Config.time < 3600) ||
+ // Config.mode === "quote" ||
+ // (Config.mode === "custom" &&
// CustomText.isWordRandom &&
// CustomText.word < 1000) ||
- // (config.mode === "custom" &&
+ // (Config.mode === "custom" &&
// CustomText.isTimeRandom &&
// CustomText.time < 3600) ||
- // (config.mode === "custom" &&
+ // (Config.mode === "custom" &&
// !CustomText.isWordRandom &&
// CustomText.text.length < 1000)
// ) {
@@ -4656,7 +4641,7 @@ function handleTab(event) {
// changePage("test");
// }
// } else if (
- // !config.quickTab &&
+ // !Config.quickTab &&
// textHasTab &&
// event.shiftKey &&
// !resultVisible
@@ -4677,12 +4662,12 @@ function handleBackspace(event) {
//if nothing is inputted and its not the first word
if (
(inputHistory[currentWordIndex - 1] == wordsList[currentWordIndex - 1] &&
- !config.freedomMode) ||
+ !Config.freedomMode) ||
$($(".word")[currentWordIndex - 1]).hasClass("hidden")
) {
return;
} else {
- if (config.confidenceMode === "on" || config.confidenceMode === "max")
+ if (Config.confidenceMode === "on" || Config.confidenceMode === "max")
return;
if (event["ctrlKey"] || event["altKey"]) {
currentInput = "";
@@ -4691,17 +4676,17 @@ function handleBackspace(event) {
} else {
currentInput = inputHistory.pop();
currentCorrected = correctedHistory.pop();
- if (activeFunBox === "nospace") {
+ if (activeFunbox === "nospace") {
currentInput = currentInput.substring(0, currentInput.length - 1);
}
}
currentWordIndex--;
currentWordElementIndex--;
updateActiveElement(true);
- updateWordElement(!config.blindMode);
+ updateWordElement(!Config.blindMode);
}
} else {
- if (config.confidenceMode === "max") return;
+ if (Config.confidenceMode === "max") return;
if (event["ctrlKey"] || event["altKey"]) {
let limiter = " ";
if (currentInput.lastIndexOf("-") > currentInput.lastIndexOf(" "))
@@ -4726,37 +4711,37 @@ function handleBackspace(event) {
} else {
currentInput = currentInput.substring(0, currentInput.length - 1);
}
- updateWordElement(!config.blindMode);
+ updateWordElement(!Config.blindMode);
}
- Sound.playClick(config.playSoundOnClick);
- if (config.keymapMode === "react") {
+ Sound.playClick(Config.playSoundOnClick);
+ if (Config.keymapMode === "react") {
flashPressedKeymapKey(event.code, true);
- } else if (config.keymapMode === "next") {
+ } else if (Config.keymapMode === "next") {
updateHighlightedKeymapKey();
}
- Caret.updatePosition(currentInput, config);
+ Caret.updatePosition(currentInput);
}
function handleSpace(event, isEnter) {
if (!testActive) return;
if (currentInput === "") return;
// let nextWord = wordsList[currentWordIndex + 1];
- // if ((isEnter && nextWord !== "\n") && (isEnter && activeFunBox !== "58008")) return;
+ // if ((isEnter && nextWord !== "\n") && (isEnter && activeFunbox !== "58008")) return;
// if (!isEnter && nextWord === "\n") return;
event.preventDefault();
- if (config.mode == "zen") {
+ if (Config.mode == "zen") {
$("#words .word.active").removeClass("active");
$("#words").append("
");
}
let currentWord = wordsList[currentWordIndex];
- if (activeFunBox === "layoutfluid" && config.mode !== "time") {
+ if (activeFunbox === "layoutfluid" && Config.mode !== "time") {
const layouts = ["qwerty", "dvorak", "colemak"];
let index = 0;
let outof = wordsList.length;
index = Math.floor((inputHistory.length + 1) / (outof / 3));
- if (config.layout !== layouts[index] && layouts[index] !== undefined) {
+ if (Config.layout !== layouts[index] && layouts[index] !== undefined) {
Notifications.add(`--- !!! ${layouts[index]} !!! ---`, 0);
}
setLayout(layouts[index]);
@@ -4765,12 +4750,12 @@ function handleSpace(event, isEnter) {
settingsGroups.layout.updateButton();
}
dontInsertSpace = true;
- if (currentWord == currentInput || config.mode == "zen") {
+ if (currentWord == currentInput || Config.mode == "zen") {
//correct word or in zen mode
if (
paceCaret !== null &&
paceCaret.wordsStatus[currentWordIndex] === true &&
- !config.blindMode
+ !Config.blindMode
) {
paceCaret.wordsStatus[currentWordIndex] = undefined;
paceCaret.correction -= currentWord.length + 1;
@@ -4781,29 +4766,29 @@ function handleSpace(event, isEnter) {
currentWordIndex++;
currentWordElementIndex++;
updateActiveElement();
- Caret.updatePosition(currentInput, config);
+ Caret.updatePosition(currentInput);
TestStats.incrementKeypressCount();
TestStats.pushKeypressWord(currentWordIndex);
// currentKeypress.count++;
// currentKeypress.words.push(currentWordIndex);
- if (activeFunBox !== "nospace") {
- Sound.playClick(config.playSoundOnClick);
+ if (activeFunbox !== "nospace") {
+ Sound.playClick(Config.playSoundOnClick);
}
} else {
//incorrect word
if (
paceCaret !== null &&
paceCaret.wordsStatus[currentWordIndex] === undefined &&
- !config.blindMode
+ !Config.blindMode
) {
paceCaret.wordsStatus[currentWordIndex] = true;
paceCaret.correction += currentWord.length + 1;
}
- if (activeFunBox !== "nospace") {
- if (!config.playSoundOnError || config.blindMode) {
- Sound.playClick(config.playSoundOnClick);
+ if (activeFunbox !== "nospace") {
+ if (!Config.playSoundOnError || Config.blindMode) {
+ Sound.playClick(Config.playSoundOnClick);
} else {
- Sound.playError(config.playSoundOnError);
+ Sound.playError(Config.playSoundOnError);
}
}
TestStats.incrementAccuracy(false);
@@ -4819,32 +4804,32 @@ function handleSpace(event, isEnter) {
currentCorrected.substring(cil + 1);
}
}
- if (config.stopOnError != "off") {
- if (config.difficulty == "expert" || config.difficulty == "master") {
+ if (Config.stopOnError != "off") {
+ if (Config.difficulty == "expert" || Config.difficulty == "master") {
//failed due to diff when pressing space
failTest();
return;
}
- if (config.stopOnError == "word") {
+ if (Config.stopOnError == "word") {
currentInput += " ";
updateWordElement(true);
- Caret.updatePosition(currentInput, config);
+ Caret.updatePosition(currentInput);
}
return;
}
- if (config.blindMode) $("#words .word.active letter").addClass("correct");
+ if (Config.blindMode) $("#words .word.active letter").addClass("correct");
inputHistory.push(currentInput);
- highlightBadWord(currentWordElementIndex, !config.blindMode);
+ highlightBadWord(currentWordElementIndex, !Config.blindMode);
currentInput = "";
currentWordIndex++;
currentWordElementIndex++;
updateActiveElement();
- Caret.updatePosition(currentInput, config);
+ Caret.updatePosition(currentInput);
// currentKeypress.count++;
// currentKeypress.words.push(currentWordIndex);
TestStats.incrementKeypressCount();
TestStats.pushKeypressWord(currentWordIndex);
- if (config.difficulty == "expert" || config.difficulty == "master") {
+ if (Config.difficulty == "expert" || Config.difficulty == "master") {
failTest();
return;
} else if (currentWordIndex == wordsList.length) {
@@ -4859,8 +4844,8 @@ function handleSpace(event, isEnter) {
currentCorrected = "";
if (
- !config.showAllLines ||
- config.mode == "time" ||
+ !Config.showAllLines ||
+ Config.mode == "time" ||
(CustomText.isWordRandom && CustomText.word == 0) ||
CustomText.isTimeRandom
) {
@@ -4883,25 +4868,25 @@ function handleSpace(event, isEnter) {
}
} //end of line wrap
- Caret.updatePosition(currentInput, config);
+ Caret.updatePosition(currentInput);
- if (config.keymapMode === "react") {
+ if (Config.keymapMode === "react") {
flashPressedKeymapKey(event.code, true);
- } else if (config.keymapMode === "next") {
+ } else if (Config.keymapMode === "next") {
updateHighlightedKeymapKey();
}
if (
- config.mode === "words" ||
- config.mode === "custom" ||
- config.mode === "quote" ||
- config.mode === "zen"
+ Config.mode === "words" ||
+ Config.mode === "custom" ||
+ Config.mode === "quote" ||
+ Config.mode === "zen"
) {
updateTimer();
}
if (
- config.mode == "time" ||
- config.mode == "words" ||
- config.mode == "custom"
+ Config.mode == "time" ||
+ Config.mode == "words" ||
+ Config.mode == "custom"
) {
addWord();
}
@@ -4958,7 +4943,7 @@ function handleAlpha(event) {
//insert space for expert and master or strict space,
//otherwise dont do anything
if (event.key === " ") {
- if (config.difficulty !== "normal" || config.strictSpace) {
+ if (Config.difficulty !== "normal" || Config.strictSpace) {
if (dontInsertSpace) {
dontInsertSpace = false;
return;
@@ -4970,7 +4955,7 @@ function handleAlpha(event) {
if (event.key === "Tab") {
if (
- config.mode !== "zen" &&
+ Config.mode !== "zen" &&
(!textHasTab || (textHasTab && event.shiftKey))
) {
return;
@@ -4980,13 +4965,13 @@ function handleAlpha(event) {
}
if (event.key === "Enter") {
- if (event.shiftKey && config.mode == "zen") {
+ if (event.shiftKey && Config.mode == "zen") {
showResult();
}
if (
event.shiftKey &&
- ((config.mode == "time" && config.time === 0) ||
- (config.mode == "words" && config.words === 0))
+ ((Config.mode == "time" && Config.time === 0) ||
+ (Config.mode == "words" && Config.words === 0))
) {
bailout = true;
showResult();
@@ -5022,7 +5007,7 @@ function handleAlpha(event) {
//show dead keys
if (event.key === "Dead") {
- Sound.playClick(config.playSoundOnClick);
+ Sound.playClick(Config.playSoundOnClick);
$(
document.querySelector("#words .word.active").querySelectorAll("letter")[
currentInput.length
@@ -5034,7 +5019,7 @@ function handleAlpha(event) {
//check if the char typed was correct
let thisCharCorrect;
let nextCharInWord;
- if (config.mode != "zen") {
+ if (Config.mode != "zen") {
nextCharInWord = wordsList[currentWordIndex].substring(
currentInput.length,
currentInput.length + 1
@@ -5047,7 +5032,7 @@ function handleAlpha(event) {
thisCharCorrect = false;
}
- if (config.language.split("_")[0] == "russian") {
+ if (Config.language.split("_")[0] == "russian") {
if ((event.key === "е" || event.key === "e") && nextCharInWord == "ё") {
event.key = nextCharInWord;
thisCharCorrect = true;
@@ -5061,7 +5046,7 @@ function handleAlpha(event) {
}
}
- if (config.mode == "zen") {
+ if (Config.mode == "zen") {
thisCharCorrect = true;
}
@@ -5091,7 +5076,7 @@ function handleAlpha(event) {
}
if (
- config.oppositeShiftMode === "on" &&
+ Config.oppositeShiftMode === "on" &&
ShiftTracker.isUsingOppositeShift(originalEvent) === false
) {
thisCharCorrect = false;
@@ -5107,7 +5092,7 @@ function handleAlpha(event) {
} else {
TestStats.incrementAccuracy(true);
thisCharCorrect = true;
- if (config.mode == "zen") {
+ if (Config.mode == "zen") {
//making the input visible to the user
$("#words .active").append(
`
${event.key}`
@@ -5116,17 +5101,17 @@ function handleAlpha(event) {
}
if (thisCharCorrect) {
- Sound.playClick(config.playSoundOnClick);
+ Sound.playClick(Config.playSoundOnClick);
} else {
- if (!config.playSoundOnError || config.blindMode) {
- Sound.playClick(config.playSoundOnClick);
+ if (!Config.playSoundOnError || Config.blindMode) {
+ Sound.playClick(Config.playSoundOnClick);
} else {
- Sound.playError(config.playSoundOnError);
+ Sound.playError(Config.playSoundOnError);
}
}
if (
- config.oppositeShiftMode === "on" &&
+ Config.oppositeShiftMode === "on" &&
ShiftTracker.isUsingOppositeShift(originalEvent) === false
)
return;
@@ -5150,7 +5135,7 @@ function handleAlpha(event) {
// currentKeypress.count++;
// currentKeypress.words.push(currentWordIndex);
- if (config.stopOnError == "letter" && !thisCharCorrect) {
+ if (Config.stopOnError == "letter" && !thisCharCorrect) {
return;
}
@@ -5161,37 +5146,37 @@ function handleAlpha(event) {
//max length of the input is 20 unless in zen mode
if (
- config.mode == "zen" ||
+ Config.mode == "zen" ||
currentInput.length < wordsList[currentWordIndex].length + 20
) {
currentInput += event["key"];
}
- if (!thisCharCorrect && config.difficulty == "master") {
+ if (!thisCharCorrect && Config.difficulty == "master") {
failTest();
return;
}
//keymap
- if (config.keymapMode === "react") {
+ if (Config.keymapMode === "react") {
flashPressedKeymapKey(event.key, thisCharCorrect);
- } else if (config.keymapMode === "next") {
+ } else if (Config.keymapMode === "next") {
updateHighlightedKeymapKey();
}
activeWordTopBeforeJump = activeWordTop;
- updateWordElement(!config.blindMode);
+ updateWordElement(!Config.blindMode);
- if (config.mode != "zen") {
+ if (Config.mode != "zen") {
//not applicable to zen mode
//auto stop the test if the last word is correct
let currentWord = wordsList[currentWordIndex];
let lastindex = currentWordIndex;
if (
(currentWord == currentInput ||
- (config.quickEnd &&
+ (Config.quickEnd &&
currentWord.length == currentInput.length &&
- config.stopOnError == "off")) &&
+ Config.stopOnError == "off")) &&
lastindex == wordsList.length - 1
) {
inputHistory.push(currentInput);
@@ -5205,7 +5190,7 @@ function handleAlpha(event) {
//simulate space press in nospace funbox
if (
- (activeFunBox === "nospace" &&
+ (activeFunbox === "nospace" &&
currentInput.length === wordsList[currentWordIndex].length) ||
(event.key === "\n" && thisCharCorrect)
) {
@@ -5226,35 +5211,35 @@ function handleAlpha(event) {
//stop the word jump by slicing off the last character, update word again
if (activeWordJumped && currentInput.length > 1) {
- if (config.mode == "zen") {
+ if (Config.mode == "zen") {
let currentTop = Math.floor(
document.querySelectorAll("#words .word")[currentWordElementIndex - 1]
.offsetTop
);
- if (!config.showAllLines) lineJump(currentTop);
+ if (!Config.showAllLines) lineJump(currentTop);
} else {
currentInput = currentInput.slice(0, -1);
- updateWordElement(!config.blindMode);
+ updateWordElement(!Config.blindMode);
activeWordJumped = false;
}
}
- Caret.updatePosition(currentInput, config);
+ Caret.updatePosition(currentInput);
}
window.addEventListener("beforeunload", (event) => {
// Cancel the event as stated by the standard.
if (
- (config.mode === "words" && config.words < 1000) ||
- (config.mode === "time" && config.time < 3600) ||
- config.mode === "quote" ||
- (config.mode === "custom" &&
+ (Config.mode === "words" && Config.words < 1000) ||
+ (Config.mode === "time" && Config.time < 3600) ||
+ Config.mode === "quote" ||
+ (Config.mode === "custom" &&
CustomText.isWordRandom &&
CustomText.word < 1000) ||
- (config.mode === "custom" &&
+ (Config.mode === "custom" &&
CustomText.isTimeRandom &&
CustomText.time < 1000) ||
- (config.mode === "custom" &&
+ (Config.mode === "custom" &&
!CustomText.isWordRandom &&
CustomText.text.length < 1000)
) {
@@ -5315,7 +5300,7 @@ $(document).on("click", "#bottom .leftright .right .current-theme", (e) => {
if (e.shiftKey) {
toggleCustomTheme();
} else {
- // if (config.customTheme) {
+ // if (Config.customTheme) {
// toggleCustomTheme();
// }
currentCommands.push(commandsThemes);
@@ -5358,7 +5343,7 @@ $(document).ready(() => {
$("#top .config").removeClass("hidden");
}
$("body").css("transition", ".25s");
- if (config.quickTab) {
+ if (Config.quickTab) {
$("#restartTestButton").addClass("hidden");
}
if (!Misc.getCookie("merchbannerclosed")) {
@@ -5417,7 +5402,7 @@ $(".merchBanner .fas").click((event) => {
$(".pageTest #copyWordsListButton").click(async (event) => {
try {
let words;
- if (config.mode == "zen") {
+ if (Config.mode == "zen") {
words = inputHistory.join(" ");
} else {
words = wordsList.slice(0, inputHistory.length).join(" ");
diff --git a/src/js/settings.js b/src/js/settings.js
index 96474972c..df828e131 100644
--- a/src/js/settings.js
+++ b/src/js/settings.js
@@ -6,7 +6,7 @@ class SettingsGroup {
updateCallback = null
) {
this.configName = configName;
- this.configValue = config[configName];
+ this.configValue = Config[configName];
if (this.configValue === true || this.configValue === false) {
this.onOff = true;
} else {
@@ -53,7 +53,7 @@ class SettingsGroup {
}
updateButton() {
- this.configValue = config[this.configName];
+ this.configValue = Config[this.configName];
$(`.pageSettings .section.${this.configName} .button`).removeClass(
"active"
);
@@ -100,7 +100,7 @@ settingsGroups.keymapMode = new SettingsGroup(
settingsGroups.showLiveWpm.updateButton();
},
() => {
- if (config.keymapMode === "off") {
+ if (Config.keymapMode === "off") {
$(".pageSettings .section.keymapStyle").addClass("hidden");
$(".pageSettings .section.keymapLayout").addClass("hidden");
} else {
@@ -119,7 +119,7 @@ settingsGroups.showKeyTips = new SettingsGroup(
setKeyTips,
null,
() => {
- if (config.showKeyTips) {
+ if (Config.showKeyTips) {
$(".pageSettings .tip").removeClass("hidden");
} else {
$(".pageSettings .tip").addClass("hidden");
@@ -205,8 +205,8 @@ settingsGroups.playSoundOnClick = new SettingsGroup(
"playSoundOnClick",
setPlaySoundOnClick,
() => {
- if (config.playSoundOnClick !== "off")
- Sound.playClick(config.playSoundOnClick);
+ if (Config.playSoundOnClick !== "off")
+ Sound.playClick(Config.playSoundOnClick);
}
);
settingsGroups.showAllLines = new SettingsGroup(
@@ -214,7 +214,7 @@ settingsGroups.showAllLines = new SettingsGroup(
setShowAllLines
);
settingsGroups.paceCaret = new SettingsGroup("paceCaret", setPaceCaret, () => {
- if (config.paceCaret === "custom") {
+ if (Config.paceCaret === "custom") {
$(
".pageSettings .section.paceCaret input.customPaceCaretSpeed"
).removeClass("hidden");
@@ -225,7 +225,7 @@ settingsGroups.paceCaret = new SettingsGroup("paceCaret", setPaceCaret, () => {
}
});
settingsGroups.minWpm = new SettingsGroup("minWpm", setMinWpm, () => {
- if (config.minWpm === "custom") {
+ if (Config.minWpm === "custom") {
$(".pageSettings .section.minWpm input.customMinWpmSpeed").removeClass(
"hidden"
);
@@ -236,7 +236,7 @@ settingsGroups.minWpm = new SettingsGroup("minWpm", setMinWpm, () => {
}
});
settingsGroups.minAcc = new SettingsGroup("minAcc", setMinAcc, () => {
- if (config.minAcc === "custom") {
+ if (Config.minAcc === "custom") {
$(".pageSettings .section.minAcc input.customMinAcc").removeClass("hidden");
} else {
$(".pageSettings .section.minAcc input.customMinAcc").addClass("hidden");
@@ -277,7 +277,7 @@ settingsGroups.fontFamily = new SettingsGroup(
let customButton = $(".pageSettings .section.fontFamily .buttons .custom");
if ($(".pageSettings .section.fontFamily .buttons .active").length === 0) {
customButton.addClass("active");
- customButton.text(`Custom (${config.fontFamily.replace(/_/g, " ")})`);
+ customButton.text(`Custom (${Config.fontFamily.replace(/_/g, " ")})`);
} else {
customButton.text("Custom");
}
@@ -301,7 +301,7 @@ async function fillSettingsPage() {
let langGroupsEl = $(
".pageSettings .section.languageGroups .buttons"
).empty();
- let currentLanguageGroup = await Misc.findCurrentGroup(config.language);
+ let currentLanguageGroup = await Misc.findCurrentGroup(Config.language);
Misc.getLanguageGroups().then((groups) => {
groups.forEach((group) => {
langGroupsEl.append(
@@ -368,10 +368,10 @@ async function fillSettingsPage() {
let fontsEl = $(".pageSettings .section.fontFamily .buttons").empty();
Misc.getFontsList().then((fonts) => {
fonts.forEach((font) => {
- if (config.fontFamily === font.name) isCustomFont = false;
+ if (ConfigSet.fontFamily === font.name) isCustomFont(false);
fontsEl.append(
`
Custom (${config.fontFamily.replace(
+ ? `
Custom (${Config.fontFamily.replace(
/_/g,
" "
)})
`
@@ -401,17 +401,17 @@ function refreshThemeButtons() {
).empty();
let themesEl = $(".pageSettings .section.themes .allThemes.buttons").empty();
- let activeThemeName = config.theme;
- if (config.randomTheme !== "off" && ThemeController.randomTheme !== null) {
+ let activeThemeName = Config.theme;
+ if (Config.randomTheme !== "off" && ThemeController.randomTheme !== null) {
activeThemeName = ThemeController.randomTheme;
}
Misc.getSortedThemesList().then((themes) => {
//first show favourites
- if (config.favThemes.length > 0) {
+ if (Config.favThemes.length > 0) {
favThemesEl.css({ paddingBottom: "1rem" });
themes.forEach((theme) => {
- if (config.favThemes.includes(theme.name)) {
+ if (Config.favThemes.includes(theme.name)) {
let activeTheme = activeThemeName === theme.name ? "active" : "";
favThemesEl.append(
`
{
});
function toggleFavouriteTheme(themename) {
- if (config.favThemes.includes(themename)) {
+ if (Config.favThemes.includes(themename)) {
//already favourite, remove
- config.favThemes = config.favThemes.filter((t) => {
- if (t !== themename) {
- return t;
- }
- });
+ ConfigSet.favThemes(
+ Config.favThemes.filter((t) => {
+ if (t !== themename) {
+ return t;
+ }
+ })
+ );
} else {
//add to favourites
- config.favThemes.push(themename);
+ Config.favThemes.push(themename);
}
saveConfigToCookie();
refreshThemeButtons();
@@ -662,7 +664,7 @@ function refreshTagsSettingsSection() {
function setActiveFunboxButton() {
$(`.pageSettings .section.funbox .button`).removeClass("active");
- $(`.pageSettings .section.funbox .button[funbox='${activeFunBox}']`).addClass(
+ $(`.pageSettings .section.funbox .button[funbox='${activeFunbox}']`).addClass(
"active"
);
}
@@ -670,7 +672,7 @@ function setActiveFunboxButton() {
async function setActiveLanguageGroup(groupName, clicked = false) {
let currentGroup;
if (groupName === undefined) {
- currentGroup = await Misc.findCurrentGroup(config.language);
+ currentGroup = await Misc.findCurrentGroup(Config.language);
} else {
let groups = await Misc.getLanguageGroups();
groups.forEach((g) => {
@@ -701,20 +703,20 @@ async function setActiveLanguageGroup(groupName, clicked = false) {
setLanguage(currentGroup.languages[0]);
} else {
$(
- `.pageSettings .section.language .buttons .button[language=${config.language}]`
+ `.pageSettings .section.language .buttons .button[language=${Config.language}]`
).addClass("active");
}
}
function setActiveThemeButton() {
$(`.pageSettings .section.themes .theme`).removeClass("active");
- $(`.pageSettings .section.themes .theme[theme=${config.theme}]`).addClass(
+ $(`.pageSettings .section.themes .theme[theme=${Config.theme}]`).addClass(
"active"
);
}
function setActiveThemeTab() {
- config.customTheme === true
+ Config.customTheme === true
? $(".pageSettings .section.themes .tabs .button[tab='custom']").click()
: $(".pageSettings .section.themes .tabs .button[tab='preset']").click();
}
@@ -724,7 +726,7 @@ function setCustomThemeInputs() {
".pageSettings .section.themes .tabContainer .customTheme input[type=color]"
).each((n, index) => {
let currentColor =
- config.customThemeColors[colorVars.indexOf($(index).attr("id"))];
+ Config.customThemeColors[colorVars.indexOf($(index).attr("id"))];
$(index).val(currentColor);
$(index).attr("value", currentColor);
$(index).prev().text(currentColor);
@@ -755,13 +757,7 @@ function toggleTag(tagid, nosave = false) {
}
}
});
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
if (!nosave) saveActiveTagsToCookie();
}
@@ -961,7 +957,7 @@ $(".pageSettings .section.themes .tabs .button").click((e) => {
setCustomThemeInputs();
if ($target.attr("tab") == "preset") {
setCustomTheme(false);
- ThemeController.set(config.theme);
+ ThemeController.set(Config.theme);
// applyCustomThemeColors();
swapElements(
$('.pageSettings .section.themes .tabContainer [tabContent="custom"]'),
@@ -1006,8 +1002,8 @@ $(".pageSettings .saveCustomThemeButton").click((e) => {
});
$(".pageSettings #loadCustomColorsFromPreset").click((e) => {
- // previewTheme(config.theme);
- ThemeController.preview(config.theme);
+ // previewTheme(Config.theme);
+ ThemeController.preview(Config.theme);
colorVars.forEach((e) => {
document.documentElement.style.setProperty(e, "");
@@ -1054,7 +1050,7 @@ $("#resetSettingsButton").click((e) => {
});
$("#exportSettingsButton").click((e) => {
- let configJSON = JSON.stringify(config);
+ let configJSON = JSON.stringify(Config);
navigator.clipboard.writeText(configJSON).then(
function () {
Notifications.add("JSON Copied to clipboard", 0);
diff --git a/src/js/sound.js b/src/js/sound.js
index 3257edc9d..eb587ae41 100644
--- a/src/js/sound.js
+++ b/src/js/sound.js
@@ -1,3 +1,5 @@
+import Config from "./config";
+
let errorSound = new Audio("../sound/error.wav");
let clickSounds = null;
@@ -120,20 +122,22 @@ export function init() {
};
}
-export function playClick(config) {
- if (config === "off") return;
+export function playClick() {
+ if (Config.playSoundOnClick === "off") return;
if (clickSounds === null) init();
- let rand = Math.floor(Math.random() * clickSounds[config].length);
- let randomSound = clickSounds[config][rand];
+ let rand = Math.floor(
+ Math.random() * clickSounds[Config.playSoundOnClick].length
+ );
+ let randomSound = clickSounds[Config.playSoundOnClick][rand];
randomSound.counter++;
if (randomSound.counter === 2) randomSound.counter = 0;
randomSound.sounds[randomSound.counter].currentTime = 0;
randomSound.sounds[randomSound.counter].play();
}
-export function playError(config) {
- if (!config) return;
+export function playError() {
+ if (!Config.playSoundOnError) return;
errorSound.currentTime = 0;
errorSound.play();
}
diff --git a/src/js/test/caret.js b/src/js/test/caret.js
index 02914634b..6abd40101 100644
--- a/src/js/test/caret.js
+++ b/src/js/test/caret.js
@@ -1,4 +1,5 @@
import * as Misc from "./misc";
+import Config from "./config";
export let caretAnimating = true;
@@ -11,9 +12,9 @@ export function stopAnimation() {
}
//TODO remove config when module
-export function startAnimation(config) {
+export function startAnimation() {
if (caretAnimating === false) {
- if (config.smoothCaret) {
+ if (Config.smoothCaret) {
$("#caret").css("animation-name", "caretFlashSmooth");
} else {
$("#caret").css("animation-name", "caretFlashHard");
@@ -26,17 +27,17 @@ export function hide() {
$("#caret").addClass("hidden");
}
-export function show(config) {
+export function show() {
if ($("#result").hasClass("hidden")) {
- updatePosition("", config);
+ updatePosition("");
$("#caret").removeClass("hidden");
- startAnimation(config);
+ startAnimation();
}
}
//TODO remove this after test logic is a module
//TODO remove config when module
-export function updatePosition(currentInput, config) {
+export function updatePosition(currentInput) {
if ($("#wordsWrapper").hasClass("hidden")) return;
if ($("#caret").hasClass("off")) {
return;
@@ -64,7 +65,7 @@ export function updatePosition(currentInput, config) {
currentLetter = currentWordNodeList[currentWordNodeList.length - 1];
}
- if (config.mode != "zen" && $(currentLetter).length == 0) return;
+ if (Config.mode != "zen" && $(currentLetter).length == 0) return;
const isLanguageLeftToRight = Misc.getCurrentLanguage().leftToRight;
let currentLetterPosLeft = isLanguageLeftToRight
? currentLetter.offsetLeft
@@ -88,7 +89,7 @@ export function updatePosition(currentInput, config) {
let smoothlinescroll = $("#words .smoothScroller").height();
if (smoothlinescroll === undefined) smoothlinescroll = 0;
- if (config.smoothCaret) {
+ if (Config.smoothCaret) {
caret.stop(true, false).animate(
{
top: newTop - smoothlinescroll,
@@ -106,7 +107,7 @@ export function updatePosition(currentInput, config) {
);
}
- if (config.showAllLines) {
+ if (Config.showAllLines) {
let browserHeight = window.innerHeight;
let middlePos = browserHeight / 2 - $("#caret").outerHeight() / 2;
let contentHeight = document.body.scrollHeight;
diff --git a/src/js/theme-controller.js b/src/js/theme-controller.js
index 71af5bb7c..37c409805 100644
--- a/src/js/theme-controller.js
+++ b/src/js/theme-controller.js
@@ -2,6 +2,7 @@ import * as ThemeColors from "./theme-colors";
import * as ChartController from "./chart-controller";
import * as Misc from "./misc";
import * as Notifications from "./notification-center";
+import Config from "./config";
let isPreviewingTheme = false;
let randomTheme = null;
@@ -85,15 +86,15 @@ export function setCustomColors(colors) {
}
//TODO remove config once config is a module
-export function randomiseTheme(config) {
+export function randomiseTheme() {
var randomList;
Misc.getThemesList().then((themes) => {
randomList = themes.map((t) => {
return t.name;
});
- if (config.randomTheme === "fav" && config.favThemes.length > 0)
- randomList = config.favThemes;
+ if (Config.randomTheme === "fav" && Config.favThemes.length > 0)
+ randomList = Config.favThemes;
randomTheme = randomList[Math.floor(Math.random() * randomList.length)];
preview(randomTheme);
Notifications.add(randomTheme.replace(/_/g, " "), 0);
diff --git a/src/js/userconfig.js b/src/js/userconfig.js
index 5cbe90dba..2a2d4bdc3 100644
--- a/src/js/userconfig.js
+++ b/src/js/userconfig.js
@@ -1,90 +1,5 @@
-let defaultConfig = {
- theme: "serika_dark",
- customTheme: false,
- customThemeColors: [
- "#323437",
- "#e2b714",
- "#e2b714",
- "#646669",
- "#d1d0c5",
- "#ca4754",
- "#7e2a33",
- "#ca4754",
- "#7e2a33",
- ],
- favThemes: [],
- showKeyTips: true,
- showLiveWpm: false,
- showTimerProgress: true,
- smoothCaret: true,
- quickTab: false,
- punctuation: false,
- numbers: false,
- words: 50,
- time: 30,
- mode: "time",
- quoteLength: [1],
- language: "english",
- fontSize: 15,
- freedomMode: false,
- resultFilters: null,
- difficulty: "normal",
- blindMode: false,
- quickEnd: false,
- caretStyle: "default",
- paceCaretStyle: "default",
- flipTestColors: false,
- capsLockBackspace: false,
- layout: "default",
- savedLayout: "default",
- confidenceMode: "off",
- indicateTypos: false,
- timerStyle: "text",
- colorfulMode: false,
- randomTheme: "off",
- timerColor: "black",
- timerOpacity: "0.25",
- stopOnError: "off",
- showAllLines: false,
- keymapMode: "off",
- keymapStyle: "staggered",
- keymapLayout: "qwerty",
- fontFamily: "Roboto_Mono",
- smoothLineScroll: false,
- alwaysShowDecimalPlaces: false,
- alwaysShowWordsHistory: false,
- singleListCommandLine: "manual",
- playSoundOnError: false,
- playSoundOnClick: "off",
- startGraphsAtZero: true,
- swapEscAndTab: false,
- showOutOfFocusWarning: true,
- paceCaret: "off",
- paceCaretCustomSpeed: 100,
- pageWidth: "100",
- chartAccuracy: true,
- chartStyle: "line",
- minWpm: "off",
- minWpmCustomSpeed: 100,
- highlightMode: "letter",
- alwaysShowCPM: false,
- enableAds: "off",
- hideExtraLetters: false,
- strictSpace: false,
- minAcc: "off",
- minAccCustom: 90,
- showLiveAcc: false,
- monkey: false,
- repeatQuotes: "off",
- oppositeShiftMode: "off",
-};
-
let cookieConfig = null;
-let config = {
- ...defaultConfig,
-};
-
let dbConfigLoaded = false;
let configChangedBeforeDb = false;
@@ -99,7 +14,7 @@ async function saveConfigToCookie(noDbCheck = false) {
// expires: d,
// path: "/",
// });
- let save = config;
+ let save = Config;
delete save.resultFilters;
Misc.setCookie("config", JSON.stringify(save), 365);
// restartCount = 0;
@@ -111,7 +26,7 @@ async function saveConfigToDB() {
accountIconLoading(true);
CloudFunctions.saveConfig({
uid: firebase.auth().currentUser.uid,
- obj: config,
+ obj: Config,
}).then((d) => {
accountIconLoading(false);
if (d.data.returnCode !== 1) {
@@ -123,10 +38,8 @@ async function saveConfigToDB() {
}
function resetConfig() {
- config = {
- ...defaultConfig,
- };
- applyConfig(config);
+ ConfigSet.reset();
+ applyConfig(Config);
saveConfigToCookie();
}
@@ -197,7 +110,7 @@ function setPlaySoundOnError(val, nosave) {
if (val == undefined) {
val = false;
}
- config.playSoundOnError = val;
+ ConfigSet.playSoundOnError(val);
if (!nosave) saveConfigToCookie();
}
@@ -205,15 +118,15 @@ function setPlaySoundOnClick(val, nosave) {
if (val == undefined) {
val = "off";
}
- config.playSoundOnClick = val;
- if (config.playSoundOnClick !== "off") Sound.init();
+ ConfigSet.playSoundOnClick(val);
+ if (Config.playSoundOnClick !== "off") Sound.init();
if (!nosave) saveConfigToCookie();
}
function togglePlaySoundOnError() {
- config.playSoundOnError = !config.playSoundOnError;
- if (config.playSoundOnError == undefined) {
- config.playSoundOnError = false;
+ ConfigSet.playSoundOnError(!Config.playSoundOnError);
+ if (Config.playSoundOnError == undefined) {
+ ConfigSet.playSoundOnError(false);
}
}
@@ -225,21 +138,15 @@ function setDifficulty(diff, nosave) {
) {
diff = "normal";
}
- config.difficulty = diff;
+ ConfigSet.difficulty(diff);
if (!nosave) restartTest(false, nosave);
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
if (!nosave) saveConfigToCookie();
}
//set fav themes
function setFavThemes(themes, nosave) {
- config.favThemes = themes;
+ ConfigSet.favThemes(themes);
if (!nosave) {
refreshThemeButtons();
saveConfigToCookie();
@@ -248,18 +155,12 @@ function setFavThemes(themes, nosave) {
//blind mode
function toggleBlindMode() {
- let blind = !config.blindMode;
+ let blind = !Config.blindMode;
if (blind == undefined) {
blind = false;
}
- config.blindMode = blind;
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ ConfigSet.blindMode(blind);
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
saveConfigToCookie();
}
@@ -267,26 +168,20 @@ function setBlindMode(blind, nosave) {
if (blind == undefined) {
blind = false;
}
- config.blindMode = blind;
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ ConfigSet.blindMode(blind);
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
if (!nosave) saveConfigToCookie();
}
function updateChartAccuracy() {
- ChartController.accountHistory.data.datasets[1].hidden = !config.chartAccuracy;
+ ChartController.accountHistory.data.datasets[1].hidden = !Config.chartAccuracy;
ChartController.accountHistory.options.scales.yAxes[1].display =
- config.chartAccuracy;
+ Config.chartAccuracy;
ChartController.accountHistory.update();
}
function updateChartStyle() {
- if (config.chartStyle == "scatter") {
+ if (Config.chartStyle == "scatter") {
ChartController.accountHistory.data.datasets[0].showLine = false;
ChartController.accountHistory.data.datasets[1].showLine = false;
} else {
@@ -297,10 +192,10 @@ function updateChartStyle() {
}
function toggleChartAccuracy() {
- if (config.chartAccuracy) {
- config.chartAccuracy = false;
+ if (Config.chartAccuracy) {
+ ConfigSet.chartAccuracy(false);
} else {
- config.chartAccuracy = true;
+ ConfigSet.chartAccuracy(true);
}
updateChartAccuracy();
saveConfigToCookie();
@@ -310,16 +205,16 @@ function setChartAccuracy(chartAccuracy, nosave) {
if (chartAccuracy == undefined) {
chartAccuracy = true;
}
- config.chartAccuracy = chartAccuracy;
+ ConfigSet.chartAccuracy(chartAccuracy);
updateChartAccuracy();
if (!nosave) saveConfigToCookie();
}
function toggleChartStyle() {
- if (config.chartStyle == "scatter") {
- config.chartStyle = "line";
+ if (Config.chartStyle == "scatter") {
+ ConfigSet.chartStyle("line");
} else {
- config.chartStyle = "scatter";
+ ConfigSet.chartStyle("scatter");
}
updateChartStyle();
saveConfigToCookie();
@@ -329,7 +224,7 @@ function setChartStyle(chartStyle, nosave) {
if (chartStyle == undefined) {
chartStyle = "line";
}
- config.chartStyle = chartStyle;
+ ConfigSet.chartStyle(chartStyle);
updateChartStyle();
if (!nosave) saveConfigToCookie();
}
@@ -338,23 +233,17 @@ function setStopOnError(soe, nosave) {
if (soe == undefined || soe === true || soe === false) {
soe = "off";
}
- config.stopOnError = soe;
- if (config.stopOnError !== "off") {
- config.confidenceMode = "off";
+ ConfigSet.stopOnError(soe);
+ if (Config.stopOnError !== "off") {
+ ConfigSet.confidenceMode("off");
}
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
if (!nosave) saveConfigToCookie();
}
//alwaysshowdecimal
function toggleAlwaysShowDecimalPlaces() {
- config.alwaysShowDecimalPlaces = !config.alwaysShowDecimalPlaces;
+ ConfigSet.alwaysShowDecimalPlaces(!Config.alwaysShowDecimalPlaces);
saveConfigToCookie();
}
@@ -362,12 +251,12 @@ function setAlwaysShowDecimalPlaces(val, nosave) {
if (val == undefined) {
val = false;
}
- config.alwaysShowDecimalPlaces = val;
+ ConfigSet.alwaysShowDecimalPlaces(val);
if (!nosave) saveConfigToCookie();
}
function toggleAlwaysShowCPM() {
- config.alwaysShowCPM = !config.alwaysShowCPM;
+ ConfigSet.alwaysShowCPM(!Config.alwaysShowCPM);
saveConfigToCookie();
}
@@ -375,14 +264,14 @@ function setAlwaysShowCPM(val, nosave) {
if (val == undefined) {
val = false;
}
- config.alwaysShowCPM = val;
+ ConfigSet.alwaysShowCPM(val);
if (!nosave) saveConfigToCookie();
}
//show out of focus warning
function toggleShowOutOfFocusWarning() {
- config.showOutOfFocusWarning = !config.showOutOfFocusWarning;
- if (!config.showOutOfFocusWarning) {
+ ConfigSet.showOutOfFocusWarning(!Config.showOutOfFocusWarning);
+ if (!Config.showOutOfFocusWarning) {
OutOfFocus.hide();
}
saveConfigToCookie();
@@ -392,8 +281,8 @@ function setShowOutOfFocusWarning(val, nosave) {
if (val == undefined) {
val = true;
}
- config.showOutOfFocusWarning = val;
- if (!config.showOutOfFocusWarning) {
+ ConfigSet.showOutOfFocusWarning(val);
+ if (!Config.showOutOfFocusWarning) {
OutOfFocus.hide();
}
if (!nosave) saveConfigToCookie();
@@ -401,7 +290,7 @@ function setShowOutOfFocusWarning(val, nosave) {
//swap esc and tab
function toggleSwapEscAndTab() {
- config.swapEscAndTab = !config.swapEscAndTab;
+ ConfigSet.swapEscAndTab(!Config.swapEscAndTab);
saveConfigToCookie();
updateKeytips();
}
@@ -410,7 +299,7 @@ function setSwapEscAndTab(val, nosave) {
if (val == undefined) {
val = false;
}
- config.swapEscAndTab = val;
+ ConfigSet.swapEscAndTab(val);
updateKeytips();
if (!nosave) saveConfigToCookie();
}
@@ -420,18 +309,12 @@ function setPaceCaret(val, nosave) {
if (val == undefined) {
val = "off";
}
- // if (config.mode === "zen" && val != "off") {
+ // if (Config.mode === "zen" && val != "off") {
// Notifications.add(`Can't use pace caret with zen mode.`, 0);
// val = "off";
// }
- config.paceCaret = val;
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ ConfigSet.paceCaret(val);
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
initPaceCaret(nosave);
if (!nosave) saveConfigToCookie();
}
@@ -440,7 +323,7 @@ function setPaceCaretCustomSpeed(val, nosave) {
if (val == undefined || Number.isNaN(parseInt(val))) {
val = 100;
}
- config.paceCaretCustomSpeed = val;
+ ConfigSet.paceCaretCustomSpeed(val);
if (!nosave) saveConfigToCookie();
}
@@ -449,14 +332,8 @@ function setMinWpm(minwpm, nosave) {
if (minwpm == undefined) {
minwpm = "off";
}
- config.minWpm = minwpm;
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ ConfigSet.minWpm(minwpm);
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
if (!nosave) saveConfigToCookie();
}
@@ -464,7 +341,7 @@ function setMinWpmCustomSpeed(val, nosave) {
if (val == undefined || Number.isNaN(parseInt(val))) {
val = 100;
}
- config.minWpmCustomSpeed = val;
+ ConfigSet.minWpmCustomSpeed(val);
if (!nosave) saveConfigToCookie();
}
@@ -473,14 +350,8 @@ function setMinAcc(min, nosave) {
if (min == undefined) {
min = "off";
}
- config.minAcc = min;
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ ConfigSet.minAcc(min);
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
if (!nosave) saveConfigToCookie();
}
@@ -488,7 +359,7 @@ function setMinAccCustom(val, nosave) {
if (val == undefined || Number.isNaN(parseInt(val))) {
val = 90;
}
- config.minAccCustom = val;
+ ConfigSet.minAccCustom(val);
if (!nosave) saveConfigToCookie();
}
@@ -497,33 +368,33 @@ function setAlwaysShowWordsHistory(val, nosave) {
if (val == undefined) {
val = false;
}
- config.alwaysShowWordsHistory = val;
+ ConfigSet.alwaysShowWordsHistory(val);
if (!nosave) saveConfigToCookie();
}
function toggleAlwaysShowWordsHistory() {
- let val = !config.alwaysShowWordsHistory;
+ let val = !Config.alwaysShowWordsHistory;
if (val == undefined) {
val = false;
}
- config.alwaysShowWordsHistory = val;
+ ConfigSet.alwaysShowWordsHistory(val);
saveConfigToCookie();
}
//single list command line
function setSingleListCommandLine(option, nosave) {
if (!option) option = "manual";
- config.singleListCommandLine = option;
+ ConfigSet.singleListCommandLine(option);
if (!nosave) saveConfigToCookie();
}
//show all lines
function toggleShowAllLines() {
- let sal = !config.showAllLines;
+ let sal = !Config.showAllLines;
if (sal == undefined) {
sal = false;
}
- config.showAllLines = sal;
+ ConfigSet.showAllLines(sal);
restartTest();
saveConfigToCookie();
}
@@ -532,7 +403,7 @@ function setShowAllLines(sal, nosave) {
if (sal == undefined) {
sal = false;
}
- config.showAllLines = sal;
+ ConfigSet.showAllLines(sal);
if (!nosave) {
saveConfigToCookie();
restartTest();
@@ -541,11 +412,11 @@ function setShowAllLines(sal, nosave) {
//quickend
function toggleQuickEnd() {
- let qe = !config.quickEnd;
+ let qe = !Config.quickEnd;
if (qe == undefined) {
qe = false;
}
- config.quickEnd = qe;
+ ConfigSet.quickEnd(qe);
saveConfigToCookie();
}
@@ -553,7 +424,7 @@ function setQuickEnd(qe, nosave) {
if (qe == undefined) {
qe = false;
}
- config.quickEnd = qe;
+ ConfigSet.quickEnd(qe);
if (!nosave) saveConfigToCookie();
}
@@ -561,7 +432,7 @@ function setEnableAds(val, nosave) {
if (val == undefined || val === true || val === false) {
val = "off";
}
- config.enableAds = val;
+ ConfigSet.enableAds(val);
if (!nosave) saveConfigToCookie();
}
@@ -569,7 +440,7 @@ function setRepeatQuotes(val, nosave) {
if (val == undefined || val === true || val === false) {
val = "off";
}
- config.repeatQuotes = val;
+ ConfigSet.repeatQuotes(val);
if (!nosave) saveConfigToCookie();
}
@@ -578,14 +449,14 @@ function setFlipTestColors(flip, nosave) {
if (flip == undefined) {
flip = false;
}
- config.flipTestColors = flip;
+ ConfigSet.flipTestColors(flip);
flipTestColors(flip);
if (!nosave) saveConfigToCookie();
}
function toggleFlipTestColors() {
- config.flipTestColors = !config.flipTestColors;
- flipTestColors(config.flipTestColors);
+ ConfigSet.flipTestColors(!Config.flipTestColors);
+ flipTestColors(Config.flipTestColors);
saveConfigToCookie();
}
@@ -594,14 +465,14 @@ function setColorfulMode(extra, nosave) {
if (extra == undefined) {
extra = false;
}
- config.colorfulMode = extra;
+ ConfigSet.colorfulMode(extra);
applyColorfulMode(extra);
if (!nosave) saveConfigToCookie();
}
function toggleColorfulMode() {
- config.colorfulMode = !config.colorfulMode;
- applyColorfulMode(config.colorfulMode);
+ ConfigSet.colorfulMode(!Config.colorfulMode);
+ applyColorfulMode(Config.colorfulMode);
saveConfigToCookie();
}
@@ -610,12 +481,12 @@ function setStrictSpace(val, nosave) {
if (val == undefined) {
val = false;
}
- config.strictSpace = val;
+ ConfigSet.strictSpace(val);
if (!nosave) saveConfigToCookie();
}
function toggleStrictSpace() {
- config.strictSpace = !config.strictSpace;
+ ConfigSet.strictSpace(!Config.strictSpace);
saveConfigToCookie();
}
@@ -624,7 +495,7 @@ function setOppositeShiftMode(val, nosave) {
if (val == undefined) {
val = "off";
}
- config.oppositeShiftMode = val;
+ ConfigSet.oppositeShiftMode(val);
if (!nosave) saveConfigToCookie();
}
@@ -632,7 +503,7 @@ function setPageWidth(val, nosave) {
if (val == null || val == undefined) {
val = "100";
}
- config.pageWidth = val;
+ ConfigSet.pageWidth(val);
$("#centerContent").removeClass("wide125");
$("#centerContent").removeClass("wide150");
$("#centerContent").removeClass("wide200");
@@ -648,7 +519,7 @@ function setCaretStyle(caretStyle, nosave) {
if (caretStyle == null || caretStyle == undefined) {
caretStyle = "default";
}
- config.caretStyle = caretStyle;
+ ConfigSet.caretStyle(caretStyle);
$("#caret").removeClass("off");
$("#caret").removeClass("default");
$("#caret").removeClass("underline");
@@ -676,7 +547,7 @@ function setPaceCaretStyle(caretStyle, nosave) {
if (caretStyle == null || caretStyle == undefined) {
caretStyle = "default";
}
- config.paceCaretStyle = caretStyle;
+ ConfigSet.paceCaretStyle(caretStyle);
$("#paceCaret").removeClass("off");
$("#paceCaret").removeClass("default");
$("#paceCaret").removeClass("underline");
@@ -701,12 +572,12 @@ function setShowTimerProgress(timer, nosave) {
if (timer == null || timer == undefined) {
timer = false;
}
- config.showTimerProgress = timer;
+ ConfigSet.showTimerProgress(timer);
if (!nosave) saveConfigToCookie();
}
function toggleShowTimerProgress() {
- config.showTimerProgress = !config.showTimerProgress;
+ ConfigSet.showTimerProgress(!Config.showTimerProgress);
saveConfigToCookie();
}
@@ -714,12 +585,12 @@ function setShowLiveWpm(live, nosave) {
if (live == null || live == undefined) {
live = false;
}
- config.showLiveWpm = live;
+ ConfigSet.showLiveWpm(live);
if (!nosave) saveConfigToCookie();
}
function toggleShowLiveWpm() {
- config.showLiveWpm = !config.showLiveWpm;
+ ConfigSet.showLiveWpm(!Config.showLiveWpm);
saveConfigToCookie();
}
@@ -727,19 +598,19 @@ function setShowLiveAcc(live, nosave) {
if (live == null || live == undefined) {
live = false;
}
- config.showLiveAcc = live;
+ ConfigSet.showLiveAcc(live);
if (!nosave) saveConfigToCookie();
}
function toggleShowLiveAcc() {
- config.showLiveAcc = !config.showLiveAcc;
+ ConfigSet.showLiveAcc(!Config.showLiveAcc);
saveConfigToCookie();
}
function setHighlightMode(mode, nosave) {
if (
mode === "word" &&
- (activeFunBox === "nospace" || activeFunBox === "read_ahead")
+ (activeFunbox === "nospace" || activeFunbox === "read_ahead")
) {
Notifications.add("Can't use word highlight with this funbox", 0);
return;
@@ -747,7 +618,7 @@ function setHighlightMode(mode, nosave) {
if (mode == null || mode == undefined) {
mode = "letter";
}
- config.highlightMode = mode;
+ ConfigSet.highlightMode(mode);
if (!nosave) saveConfigToCookie();
}
@@ -755,12 +626,12 @@ function setHideExtraLetters(val, nosave) {
if (val == null || val == undefined) {
val = false;
}
- config.hideExtraLetters = val;
+ ConfigSet.hideExtraLetters(val);
if (!nosave) saveConfigToCookie();
}
function toggleHideExtraLetters() {
- config.hideExtraLetters = !config.hideExtraLetters;
+ ConfigSet.hideExtraLetters(!Config.hideExtraLetters);
saveConfigToCookie();
}
@@ -768,7 +639,7 @@ function setTimerStyle(style, nosave) {
if (style == null || style == undefined) {
style = "bar";
}
- config.timerStyle = style;
+ ConfigSet.timerStyle(style);
if (!nosave) saveConfigToCookie();
}
@@ -776,7 +647,7 @@ function setTimerColor(color, nosave) {
if (color == null || color == undefined) {
color = "black";
}
- config.timerColor = color;
+ ConfigSet.timerColor(color);
$("#timer").removeClass("timerSub");
$("#timer").removeClass("timerText");
@@ -817,14 +688,14 @@ function setTimerOpacity(opacity, nosave) {
if (opacity == null || opacity == undefined) {
opacity = 0.25;
}
- config.timerOpacity = opacity;
+ ConfigSet.timerOpacity(opacity);
if (!nosave) saveConfigToCookie();
}
//key tips
function setKeyTips(keyTips, nosave) {
- config.showKeyTips = keyTips;
- if (config.showKeyTips) {
+ ConfigSet.showKeyTips(keyTips);
+ if (Config.showKeyTips) {
$("#bottom .keyTips").removeClass("hidden");
} else {
$("#bottom .keyTips").addClass("hidden");
@@ -833,8 +704,8 @@ function setKeyTips(keyTips, nosave) {
}
function toggleKeyTips() {
- config.showKeyTips = !config.showKeyTips;
- if (config.showKeyTips) {
+ ConfigSet.showKeyTips(!Config.showKeyTips);
+ if (Config.showKeyTips) {
$("#bottom .keyTips").removeClass("hidden");
} else {
$("#bottom .keyTips").addClass("hidden");
@@ -849,7 +720,7 @@ function setTimeConfig(time, nosave) {
}
time = parseInt(time);
if (!nosave) setMode("time", nosave);
- config.time = time;
+ ConfigSet.time(time);
$("#top .config .time .text-button").removeClass("active");
if (![15, 30, 60, 120].includes(time)) {
time = "custom";
@@ -864,22 +735,22 @@ function setTimeConfig(time, nosave) {
function setQuoteLength(len, nosave, multipleMode) {
if (Array.isArray(len)) {
//config load
- config.quoteLength = len;
+ ConfigSet.quoteLength(len);
} else {
- if (!Array.isArray(config.quoteLength)) config.quoteLength = [];
+ if (!Array.isArray(ConfigSet.quoteLength)) Config.quoteLength([]);
if (len === null || isNaN(len) || len < -2 || len > 3) {
len = 1;
}
len = parseInt(len);
if (multipleMode) {
- if (!config.quoteLength.includes(len)) config.quoteLength.push(len);
+ if (!Config.quoteLength.includes(len)) Config.quoteLength.push(len);
} else {
- config.quoteLength = [len];
+ ConfigSet.quoteLength([len]);
}
}
// if (!nosave) setMode("quote", nosave);
$("#top .config .quoteLength .text-button").removeClass("active");
- config.quoteLength.forEach((ql) => {
+ Config.quoteLength.forEach((ql) => {
$(
"#top .config .quoteLength .text-button[quoteLength='" + ql + "']"
).addClass("active");
@@ -893,7 +764,7 @@ function setWordCount(wordCount, nosave) {
}
wordCount = parseInt(wordCount);
if (!nosave) setMode("words", nosave);
- config.words = wordCount;
+ ConfigSet.words(wordCount);
$("#top .config .wordCount .text-button").removeClass("active");
if (![10, 25, 50, 100, 200].includes(wordCount)) {
wordCount = "custom";
@@ -906,7 +777,7 @@ function setWordCount(wordCount, nosave) {
//caret
function setSmoothCaret(mode, nosave) {
- config.smoothCaret = mode;
+ ConfigSet.smoothCaret(mode);
if (!nosave) saveConfigToCookie();
if (mode) {
$("#caret").css("animation-name", "caretFlashSmooth");
@@ -916,9 +787,9 @@ function setSmoothCaret(mode, nosave) {
}
function toggleSmoothCaret() {
- config.smoothCaret = !config.smoothCaret;
+ ConfigSet.smoothCaret(!Config.smoothCaret);
saveConfigToCookie();
- if (config.smoothCaret) {
+ if (Config.smoothCaret) {
$("#caret").css("animation-name", "caretFlashSmooth");
} else {
$("#caret").css("animation-name", "caretFlashHard");
@@ -927,30 +798,30 @@ function toggleSmoothCaret() {
//startgraphsatzero
function toggleStartGraphsAtZero() {
- config.startGraphsAtZero = !config.startGraphsAtZero;
+ ConfigSet.startGraphsAtZero(!Config.startGraphsAtZero);
saveConfigToCookie();
}
function setStartGraphsAtZero(mode, nosave) {
- config.startGraphsAtZero = mode;
+ ConfigSet.startGraphsAtZero(mode);
if (!nosave) saveConfigToCookie();
}
//linescroll
function setSmoothLineScroll(mode, nosave) {
- config.smoothLineScroll = mode;
+ ConfigSet.smoothLineScroll(mode);
if (!nosave) saveConfigToCookie();
}
function toggleSmoothLineScroll() {
- config.smoothLineScroll = !config.smoothLineScroll;
+ ConfigSet.smoothLineScroll(!Config.smoothLineScroll);
saveConfigToCookie();
}
//quick tab
function setQuickTabMode(mode, nosave) {
- config.quickTab = mode;
- if (!config.quickTab) {
+ ConfigSet.quickTab(mode);
+ if (!Config.quickTab) {
$("#restartTestButton").removeClass("hidden");
$("#restartTestButton").css("opacity", 1);
$("#bottom .keyTips")
@@ -965,8 +836,8 @@ function setQuickTabMode(mode, nosave) {
}
function toggleQuickTabMode() {
- config.quickTab = !config.quickTab;
- if (!config.quickTab) {
+ ConfigSet.quickTab(!Config.quickTab);
+ if (!Config.quickTab) {
$("#restartTestButton").removeClass("hidden");
$("#restartTestButton").css("opacity", 1);
$("#bottom .keyTips")
@@ -982,11 +853,11 @@ function toggleQuickTabMode() {
//numbers
function setNumbers(numb, nosave) {
- if (config.mode === "quote") {
+ if (Config.mode === "quote") {
numb = false;
}
- config.numbers = numb;
- if (!config.numbers) {
+ ConfigSet.numbers(numb);
+ if (!Config.numbers) {
$("#top .config .numbersMode .text-button").removeClass("active");
} else {
$("#top .config .numbersMode .text-button").addClass("active");
@@ -995,11 +866,11 @@ function setNumbers(numb, nosave) {
}
function toggleNumbers() {
- config.numbers = !config.numbers;
- if (config.mode === "quote") {
- config.numbers = false;
+ ConfigSet.numbers(!Config.numbers);
+ if (Config.mode === "quote") {
+ ConfigSet.numbers(false);
}
- if (config.numbers) {
+ if (Config.numbers) {
$("#top .config .numbersMode .text-button").addClass("active");
} else {
$("#top .config .numbersMode .text-button").removeClass("active");
@@ -1009,11 +880,11 @@ function toggleNumbers() {
//punctuation
function setPunctuation(punc, nosave) {
- if (config.mode === "quote") {
+ if (Config.mode === "quote") {
punc = false;
}
- config.punctuation = punc;
- if (!config.punctuation) {
+ ConfigSet.punctuation(punc);
+ if (!Config.punctuation) {
$("#top .config .punctuationMode .text-button").removeClass("active");
} else {
$("#top .config .punctuationMode .text-button").addClass("active");
@@ -1022,11 +893,11 @@ function setPunctuation(punc, nosave) {
}
function togglePunctuation() {
- config.punctuation = !config.punctuation;
- if (config.mode === "quote") {
- config.punctuation = false;
+ ConfigSet.punctuation(!Config.punctuation);
+ if (Config.mode === "quote") {
+ ConfigSet.punctuation(false);
}
- if (config.punctuation) {
+ if (Config.punctuation) {
$("#top .config .punctuationMode .text-button").addClass("active");
} else {
$("#top .config .punctuationMode .text-button").removeClass("active");
@@ -1046,7 +917,7 @@ function setFontFamily(font, nosave) {
if (font == undefined || font === "") {
font = "Roboto_Mono";
}
- config.fontFamily = font;
+ ConfigSet.fontFamily(font);
document.documentElement.style.setProperty("--font", font.replace(/_/g, " "));
Chart.defaults.global.defaultFontFamily = font.replace(/_/g, " ");
if (!nosave) saveConfigToCookie();
@@ -1057,17 +928,17 @@ function setFreedomMode(freedom, nosave) {
if (freedom == null) {
freedom = false;
}
- config.freedomMode = freedom;
- if (config.freedomMode && config.confidenceMode !== "off") {
- config.confidenceMode = "off";
+ ConfigSet.freedomMode(freedom);
+ if (Config.freedomMode && Config.confidenceMode !== "off") {
+ ConfigSet.confidenceMode("off");
}
if (!nosave) saveConfigToCookie();
}
function toggleFreedomMode() {
- config.freedomMode = !config.freedomMode;
- if (config.freedomMode && config.confidenceMode !== "off") {
- config.confidenceMode = false;
+ ConfigSet.freedomMode(!Config.freedomMode);
+ if (Config.freedomMode && Config.confidenceMode !== "off") {
+ ConfigSet.confidenceMode(false);
}
saveConfigToCookie();
}
@@ -1076,28 +947,22 @@ function setConfidenceMode(cm, nosave) {
if (cm == undefined) {
cm = "off";
}
- config.confidenceMode = cm;
- if (config.confidenceMode !== "off") {
- config.freedomMode = false;
- config.stopOnError = "off";
+ ConfigSet.confidenceMode(cm);
+ if (Config.confidenceMode !== "off") {
+ ConfigSet.freedomMode(false);
+ ConfigSet.stopOnError("off");
}
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
if (!nosave) saveConfigToCookie();
}
function toggleIndicateTypos() {
- let it = !config.indicateTypos;
+ let it = !Config.indicateTypos;
if (it == undefined) {
it = false;
}
- config.indicateTypos = it;
+ ConfigSet.indicateTypos(it);
saveConfigToCookie();
}
@@ -1105,14 +970,14 @@ function setIndicateTypos(it, nosave) {
if (it == undefined) {
it = false;
}
- config.indicateTypos = it;
+ ConfigSet.indicateTypos(it);
if (!nosave) saveConfigToCookie();
}
function setTheme(name, nosave) {
- config.theme = name;
+ ConfigSet.theme(name);
setCustomTheme(false, true);
- ThemeController.set(config.theme);
+ ThemeController.set(Config.theme);
if (!nosave) saveConfigToCookie();
}
@@ -1123,19 +988,19 @@ function setRandomTheme(val, nosave) {
if (val === "off") {
ThemeController.clearRandom();
}
- config.randomTheme = val;
+ ConfigSet.randomTheme(val);
if (!nosave) saveConfigToCookie();
}
function setCustomTheme(boolean, nosave) {
- if (boolean !== undefined) config.customTheme = boolean;
+ if (boolean !== undefined) ConfigSet.customTheme(boolean);
if (!nosave) saveConfigToCookie();
}
function toggleCustomTheme(nosave) {
- if (config.customTheme) {
+ if (Config.customTheme) {
setCustomTheme(false);
- ThemeController.set(config.theme);
+ ThemeController.set(Config.theme);
// applyCustomThemeColors();
swapElements(
$('.pageSettings [tabContent="custom"]'),
@@ -1157,7 +1022,7 @@ function toggleCustomTheme(nosave) {
function setCustomThemeColors(colors, nosave) {
if (colors !== undefined) {
- config.customThemeColors = colors;
+ ConfigSet.customThemeColors(colors);
ThemeController.setCustomColors(colors);
// ThemeController.set("custom");
// applyCustomThemeColors();
@@ -1169,7 +1034,7 @@ function setLanguage(language, nosave) {
if (language == null || language == undefined) {
language = "english";
}
- config.language = language;
+ ConfigSet.language(language);
try {
firebase.analytics().logEvent("changedLanguage", {
language: language,
@@ -1181,8 +1046,8 @@ function setLanguage(language, nosave) {
}
function toggleMonkey(nosave) {
- config.monkey = !config.monkey;
- if (config.monkey) {
+ ConfigSet.monkey(!Config.monkey);
+ if (Config.monkey) {
$("#monkey").removeClass("hidden");
} else {
$("#monkey").addClass("hidden");
@@ -1194,8 +1059,8 @@ function setMonkey(monkey, nosave) {
if (monkey === null || monkey === undefined) {
monkey = false;
}
- config.monkey = monkey;
- if (config.monkey) {
+ ConfigSet.monkey(monkey);
+ if (Config.monkey) {
$("#monkey").removeClass("hidden");
} else {
$("#monkey").addClass("hidden");
@@ -1207,28 +1072,22 @@ function setCapsLockBackspace(capsLockBackspace, nosave) {
if (capsLockBackspace === null || capsLockBackspace === undefined) {
capsLockBackspace = false;
}
- config.capsLockBackspace = capsLockBackspace;
+ ConfigSet.capsLockBackspace(capsLockBackspace);
if (!nosave) saveConfigToCookie();
}
function toggleCapsLockBackspace() {
- setCapsLockBackspace(!config.capsLockBackspace, false);
+ setCapsLockBackspace(!Config.capsLockBackspace, false);
}
function setLayout(layout, nosave) {
if (layout == null || layout == undefined) {
layout = "qwerty";
}
- config.layout = layout;
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
- if (config.keymapLayout === "overrideSync") {
- refreshKeymapKeys(config.keymapLayout);
+ ConfigSet.layout(layout);
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
+ if (Config.keymapLayout === "overrideSync") {
+ refreshKeymapKeys(Config.keymapLayout);
}
if (!nosave) saveConfigToCookie();
}
@@ -1237,7 +1096,7 @@ function setSavedLayout(layout, nosave) {
if (layout == null || layout == undefined) {
layout = "qwerty";
}
- config.savedLayout = layout;
+ ConfigSet.savedLayout(layout);
setLayout(layout, nosave);
}
@@ -1247,7 +1106,7 @@ function setKeymapMode(mode, nosave) {
}
$(".active-key").removeClass("active-key");
$(".keymap-key").attr("style", "");
- config.keymapMode = mode;
+ ConfigSet.keymapMode(mode);
if (!nosave) restartTest(false, nosave);
if (!nosave) saveConfigToCookie();
}
@@ -1268,7 +1127,7 @@ function setKeymapStyle(style, nosave) {
} else if (style === "split_matrix") {
$(".keymap").addClass("split_matrix");
}
- config.keymapStyle = style;
+ ConfigSet.keymapStyle(style);
if (!nosave) saveConfigToCookie();
}
@@ -1284,7 +1143,7 @@ function setKeymapLayout(layout, nosave) {
if (layout == null || layout == undefined) {
layout = "qwerty";
}
- config.keymapLayout = layout;
+ ConfigSet.keymapLayout(layout);
refreshKeymapKeys(layout);
if (!nosave) saveConfigToCookie();
}
@@ -1293,13 +1152,13 @@ function refreshKeymapKeys(layout) {
try {
let lts = layouts[layout]; //layout to show
let layoutString = layout;
- if (config.keymapLayout === "overrideSync") {
- if (config.layout === "default") {
+ if (Config.keymapLayout === "overrideSync") {
+ if (Config.layout === "default") {
lts = layouts["qwerty"];
layoutString = "default";
} else {
- lts = layouts[config.layout];
- layoutString = config.layout;
+ lts = layouts[Config.layout];
+ layoutString = Config.layout;
}
}
@@ -1379,7 +1238,7 @@ function setFontSize(fontSize, nosave) {
if (fontSize == null || fontSize == undefined) {
fontSize = 1;
}
- config.fontSize = fontSize;
+ ConfigSet.fontSize(fontSize);
$("#words").removeClass("size125");
$("#caret, #paceCaret").removeClass("size125");
$("#words").removeClass("size15");
@@ -1419,9 +1278,9 @@ function applyConfig(configObj) {
Notifications.add("Could not apply config", -1, 3);
return;
}
- Object.keys(defaultConfig).forEach((configKey) => {
+ Object.keys(ConfigSet.defaultConfig).forEach((configKey) => {
if (configObj[configKey] === undefined) {
- configObj[configKey] = defaultConfig[configKey];
+ configObj[configKey] = ConfigSet.defaultConfig[configKey];
}
});
if (configObj && configObj != null && configObj != "null") {
@@ -1502,8 +1361,8 @@ function applyConfig(configObj) {
addemo = true;
}
- if (config.enableAds === "max" || config.enableAds === "on") {
- if (config.enableAds === "max") {
+ if (Config.enableAds === "max" || Config.enableAds === "on") {
+ if (Config.enableAds === "max") {
window["nitroAds"].createAd("nitropay_ad_left", {
refreshLimit: 10,
refreshTime: 30,
@@ -1670,11 +1529,5 @@ function applyConfig(configObj) {
$("#nitropay_ad_about").remove();
}
}
- updateTestModesNotice(
- sameWordset,
- textHasTab,
- paceCaret,
- activeFunBox,
- config
- );
+ updateTestModesNotice(sameWordset, textHasTab, paceCaret, activeFunbox);
}