diff --git a/src/js/script.js b/src/js/script.js index 7d01a66fc..91cd1d0ea 100644 --- a/src/js/script.js +++ b/src/js/script.js @@ -1120,7 +1120,7 @@ function updateActiveElement(backspace) { } function updateWordElement(showError) { - if (config.mode == "zen") return; + // if (config.mode == "zen") return; let input = currentInput; let wordAtIndex; @@ -1129,100 +1129,119 @@ function updateWordElement(showError) { currentWord = wordsList[currentWordIndex]; let ret = ""; - if (config.highlightMode == "word") { - //only for word highlight + let newlineafter = false; - let correctSoFar = false; - if (currentWord.slice(0, input.length) == input) { - // this is when input so far is correct - correctSoFar = true; - } - let classString = correctSoFar ? "correct" : "incorrect"; - if (config.blindMode) { - classString = "correct"; - } - - //show letters in the current word - for (let i = 0; i < currentWord.length; i++) { - ret += `` + currentWord[i] + ``; - } - - //show any extra letters if hide extra letters is disabled - if (currentInput.length > currentWord.length && !config.hideExtraLetters) { - for (let i = currentWord.length; i < currentInput.length; i++) { - let letter = currentInput[i]; - if (letter == " ") { - letter = "_"; - } - ret += `${letter}`; + if (config.mode === "zen") { + for (let i = 0; i < currentInput.length; i++) { + if (currentInput[i] === "\t") { + ret += ``; + } else if (currentInput[i] === "\n") { + newlineafter = true; + ret += ``; + } else { + ret += `` + currentInput[i] + ``; } } } else { - for (let i = 0; i < input.length; i++) { - let charCorrect; - if (currentWord[i] == input[i]) { - charCorrect = true; - } else { - charCorrect = false; + if (config.highlightMode == "word") { + //only for word highlight + + let correctSoFar = false; + if (currentWord.slice(0, input.length) == input) { + // this is when input so far is correct + correctSoFar = true; + } + let classString = correctSoFar ? "correct" : "incorrect"; + if (config.blindMode) { + classString = "correct"; } - let currentLetter = currentWord[i]; - let tabChar = ""; - let nlChar = ""; - if (currentLetter === "\t") { - tabChar = "tabChar"; - currentLetter = ``; - } else if (currentLetter === "\n") { - nlChar = "nlChar"; - currentLetter = ``; + //show letters in the current word + for (let i = 0; i < currentWord.length; i++) { + ret += `` + currentWord[i] + ``; } - if (charCorrect) { - ret += `${currentLetter}`; - } else { - // if (config.difficulty == "master") { - // if (!resultVisible) { - // failTest(); - // } - // } - if (!showError) { - if (currentLetter == undefined) { - } else { - ret += `${currentLetter}`; + //show any extra letters if hide extra letters is disabled + if ( + currentInput.length > currentWord.length && + !config.hideExtraLetters + ) { + for (let i = currentWord.length; i < currentInput.length; i++) { + let letter = currentInput[i]; + if (letter == " ") { + letter = "_"; } + ret += `${letter}`; + } + } + } else { + for (let i = 0; i < input.length; i++) { + let charCorrect; + if (currentWord[i] == input[i]) { + charCorrect = true; } else { - if (currentLetter == undefined) { - if (!config.hideExtraLetters) { - let letter = input[i]; - if (letter == " " || letter == "\t" || letter == "\n") { - letter = "_"; - } - ret += `${letter}`; + charCorrect = false; + } + + let currentLetter = currentWord[i]; + let tabChar = ""; + let nlChar = ""; + if (currentLetter === "\t") { + tabChar = "tabChar"; + currentLetter = ``; + } else if (currentLetter === "\n") { + nlChar = "nlChar"; + currentLetter = ``; + } + + if (charCorrect) { + ret += `${currentLetter}`; + } else { + // if (config.difficulty == "master") { + // if (!resultVisible) { + // failTest(); + // } + // } + if (!showError) { + if (currentLetter == undefined) { + } else { + ret += `${currentLetter}`; } } else { - ret += - `` + - currentLetter + - (config.indicateTypos ? `${input[i]}` : "") + - ""; + if (currentLetter == undefined) { + if (!config.hideExtraLetters) { + let letter = input[i]; + if (letter == " " || letter == "\t" || letter == "\n") { + letter = "_"; + } + ret += `${letter}`; + } + } else { + ret += + `` + + currentLetter + + (config.indicateTypos ? `${input[i]}` : "") + + ""; + } } } } - } - if (input.length < currentWord.length) { - for (let i = input.length; i < currentWord.length; i++) { - if (currentWord[i] === "\t") { - ret += ``; - } else if (currentWord[i] === "\n") { - ret += ``; - } else { - ret += "" + currentWord[i] + ""; + if (input.length < currentWord.length) { + for (let i = input.length; i < currentWord.length; i++) { + if (currentWord[i] === "\t") { + ret += ``; + } else if (currentWord[i] === "\n") { + ret += ``; + } else { + ret += "" + currentWord[i] + ""; + } } } } } wordAtIndex.innerHTML = ret; + if (newlineafter) $("#words").append("
"); } function highlightBadWord(index, showError) { @@ -3038,19 +3057,19 @@ function restartTest(withSameWordset = false, nosave = false, event) { // } // } if (resultCalculating) return; - if (!manualRestart) { - if ((textHasTab && manualRestart) || !textHasTab) { + if ($(".pageTest").hasClass("active") && !resultVisible) { + if (!manualRestart) { + // if ((textHasTab && manualRestart) || !textHasTab) { + if (textHasTab) { + try { + if (!event.shiftKey) return; + } catch {} + } try { - event.preventDefault(); + if (config.mode !== "zen") event.preventDefault(); } catch {} if ( - Misc.canQuickRestart( - config.mode, - config.words, - config.time, - customText - ) || - manualRestart + Misc.canQuickRestart(config.mode, config.words, config.time, customText) ) { } else { let message = "Use your mouse to confirm."; @@ -3059,6 +3078,9 @@ function restartTest(withSameWordset = false, nosave = false, event) { Notifications.add("Quick restart disabled. " + message, 0, 3); return; } + // }else{ + // return; + // } } } @@ -5159,10 +5181,18 @@ function handleTab(event) { $("#simplePopupWrapper").hasClass("hidden") ) { if (config.quickTab) { - if (event.shiftKey) manualRestart = true; - restartTest(false, false, event); + if (config.mode == "zen" && !event.shiftKey) { + } else { + if (event.shiftKey) manualRestart = true; + restartTest(false, false, event); + } } else { - if ((textHasTab && event.shiftKey) || !textHasTab) { + if ( + !resultVisible && + ((textHasTab && event.shiftKey) || + (!textHasTab && config.mode !== "zen") || + (config.mode === "zen" && event.shiftKey)) + ) { event.preventDefault(); $("#restartTestButton").focus(); } @@ -5283,10 +5313,6 @@ function handleBackspace(event) { } else { currentInput = currentInput.substring(0, currentInput.length - 1); } - if (config.mode == "zen") { - $("#words .word.active").children().last().remove(); - accuracyStats.incorrect++; - } updateWordElement(!config.blindMode); } playClickSound(); @@ -5521,7 +5547,10 @@ function handleAlpha(event) { } if (event.key === "Tab") { - if (!textHasTab || (textHasTab && event.shiftKey)) { + if ( + config.mode !== "zen" && + (!textHasTab || (textHasTab && event.shiftKey)) + ) { return; } event.key = "\t";