diff --git a/public/js/script.js b/public/js/script.js index 3271aa319..f8e27873b 100644 --- a/public/js/script.js +++ b/public/js/script.js @@ -300,7 +300,11 @@ function initWords() { } if (config.mode == "time" || config.mode == "words") { - let wordsBound = config.mode == "time" ? 60 : config.words; + // let wordsBound = config.mode == "time" ? 60 : config.words; + let wordsBound = 60; + if (config.mode === "words" && config.words < wordsBound) { + wordsBound = config.words; + } for (let i = 0; i < wordsBound; i++) { randomWord = language[Math.floor(Math.random() * language.length)]; previousWord = wordsList[i - 1]; @@ -462,6 +466,11 @@ function punctuateWord(previousWord, currentWord, index, maxindex) { } function addWord() { + if ( + wordsList.length - inputHistory.length > 60 || + (config.mode === "words" && wordsList.length >= config.words) + ) + return; let language = words[config.language]; let randomWord = language[Math.floor(Math.random() * language.length)]; previousWord = wordsList[wordsList.length - 1]; @@ -488,35 +497,35 @@ function addWord() { function showWords() { $("#words").empty(); - if ( - config.mode == "words" || - config.mode == "custom" || - config.mode == "quote" - ) { - $("#words").css("height", "auto"); - for (let i = 0; i < wordsList.length; i++) { - let w = "
"; - for (let c = 0; c < wordsList[i].length; c++) { - w += "" + wordsList[i].charAt(c) + ""; - } - w += "
"; - $("#words").append(w); + // if ( + // config.mode == "words" || + // config.mode == "custom" || + // config.mode == "quote" + // ) { + // $("#words").css("height", "auto"); + // for (let i = 0; i < wordsList.length; i++) { + // let w = "
"; + // for (let c = 0; c < wordsList[i].length; c++) { + // w += "" + wordsList[i].charAt(c) + ""; + // } + // w += "
"; + // $("#words").append(w); + // } + // } else if (config.mode == "time") { + for (let i = 0; i < wordsList.length; i++) { + let w = "
"; + for (let c = 0; c < wordsList[i].length; c++) { + w += "" + wordsList[i].charAt(c) + ""; } - } else if (config.mode == "time") { - for (let i = 0; i < wordsList.length; i++) { - let w = "
"; - for (let c = 0; c < wordsList[i].length; c++) { - w += "" + wordsList[i].charAt(c) + ""; - } - w += "
"; - $("#words").append(w); - } - $("#words").removeClass("hidden"); - const wordHeight = $($(".word")[0]).outerHeight(true); - $("#words") - .css("height", wordHeight * 3 + "px") - .css("overflow", "hidden"); + w += "
"; + $("#words").append(w); } + $("#words").removeClass("hidden"); + const wordHeight = $($(".word")[0]).outerHeight(true); + $("#words") + .css("height", wordHeight * 3 + "px") + .css("overflow", "hidden"); + // } updateActiveElement(); updateCaretPosition(); } @@ -840,17 +849,17 @@ function updateCaretPosition() { duration ); - let browserHeight = window.innerHeight; - let middlePos = browserHeight / 2 - $("#caret").outerHeight() / 2; - let contentHeight = document.body.scrollHeight; + // let browserHeight = window.innerHeight; + // let middlePos = browserHeight / 2 - $("#caret").outerHeight() / 2; + // let contentHeight = document.body.scrollHeight; - if (newTop >= middlePos && contentHeight > browserHeight) { - window.scrollTo({ - left: 0, - top: newTop - middlePos, - behavior: "smooth", - }); - } + // if (newTop >= middlePos && contentHeight > browserHeight) { + // window.scrollTo({ + // left: 0, + // top: newTop - middlePos, + // behavior: "smooth", + // }); + // } } catch (e) {} } @@ -2546,41 +2555,41 @@ $(document).keydown((event) => { if (currentInput == "") return; event.preventDefault(); let currentWord = wordsList[currentWordIndex]; - if (config.mode == "time") { - // let currentTop = Math.floor($($("#words .word")[currentWordIndex]).position().top); - // let nextTop = Math.floor($($("#words .word")[currentWordIndex + 1]).position().top); - let currentTop = Math.floor( - document.querySelectorAll("#words .word")[currentWordIndex].offsetTop - ); - let nextTop = Math.floor( - document.querySelectorAll("#words .word")[currentWordIndex + 1] - .offsetTop - ); - if (nextTop > currentTop || activeWordJumped) { - //last word of the line - if (currentTestLine > 0) { - let hideBound = currentTop; - if (activeWordJumped) { - hideBound = activeWordTopBeforeJump; - } - activeWordJumped = false; - - let toHide = []; - let wordElements = $("#words .word"); - for (let i = 0; i < currentWordIndex + 1; i++) { - if ($(wordElements[i]).hasClass("hidden")) continue; - // let forWordTop = Math.floor($(wordElements[i]).position().top); - let forWordTop = Math.floor(wordElements[i].offsetTop); - if (forWordTop < hideBound) { - // $($("#words .word")[i]).addClass("hidden"); - toHide.push($($("#words .word")[i])); - } - } - toHide.forEach((el) => el.addClass("hidden")); + // if (config.mode == "time") { + // let currentTop = Math.floor($($("#words .word")[currentWordIndex]).position().top); + // let nextTop = Math.floor($($("#words .word")[currentWordIndex + 1]).position().top); + let currentTop = Math.floor( + document.querySelectorAll("#words .word")[currentWordIndex].offsetTop + ); + let nextTop = Math.floor( + document.querySelectorAll("#words .word")[currentWordIndex + 1] + .offsetTop + ); + if (nextTop > currentTop || activeWordJumped) { + //last word of the line + if (currentTestLine > 0) { + let hideBound = currentTop; + if (activeWordJumped) { + hideBound = activeWordTopBeforeJump; } - currentTestLine++; + activeWordJumped = false; + + let toHide = []; + let wordElements = $("#words .word"); + for (let i = 0; i < currentWordIndex + 1; i++) { + if ($(wordElements[i]).hasClass("hidden")) continue; + // let forWordTop = Math.floor($(wordElements[i]).position().top); + let forWordTop = Math.floor(wordElements[i].offsetTop); + if (forWordTop < hideBound) { + // $($("#words .word")[i]).addClass("hidden"); + toHide.push($($("#words .word")[i])); + } + } + toHide.forEach((el) => el.addClass("hidden")); } + currentTestLine++; } + // } if (config.blindMode) $("#words .word.active letter").addClass("correct"); document .querySelector("#words .word.active") @@ -2624,7 +2633,7 @@ $(document).keydown((event) => { ) { updateTimer(); } - if (config.mode == "time") { + if (config.mode == "time" || config.mode == "words") { addWord(); } }