Added repeat caret pace

This commit is contained in:
Estebene 2021-05-16 00:56:31 +12:00
parent 468554562d
commit 2f9d5fdfdd
3 changed files with 103 additions and 68 deletions

View file

@ -40,7 +40,9 @@ export async function init() {
mode2 = TestLogic.randomQuote.id;
}
let wpm;
if (Config.paceCaret === "pb") {
if (TestLogic.isPaceRepeat == true) {
wpm = TestLogic.lastTestWpm;
} else if (Config.paceCaret === "pb") {
wpm = await DB.getLocalPB(
Config.mode,
mode2,

View file

@ -164,6 +164,8 @@ export let input = new Input();
export let corrected = new Corrected();
export let currentWordIndex = 0;
export let isRepeated = false;
export let isPaceRepeat = false;
export let lastTestWpm = 0;
export let hasTab = false;
export let randomQuote = null;
export let bailout = false;
@ -176,6 +178,10 @@ export function setRepeated(tf) {
isRepeated = tf;
}
export function setPaceRepeat(tf) {
isPaceRepeat = tf;
}
export function setHasTab(tf) {
hasTab = tf;
}
@ -739,11 +745,13 @@ export function restart(
$("#typingTest").css("opacity", 0).removeClass("hidden");
if (!withSameWordset) {
setRepeated(false);
setPaceRepeat(false);
setHasTab(false);
await init();
PaceCaret.init(nosave);
} else {
setRepeated(true);
setPaceRepeat(true);
setActive(false);
Replay.stopReplayRecording();
words.resetCurrentIndex();
@ -1020,6 +1028,9 @@ export function finish(difficultyFailed = false) {
inf = true;
}
TestTimer.clear();
lastTestWpm = stats.wpm;
let testtime = stats.time;
let afkseconds = TestStats.calculateAfkSeconds();
let afkSecondsPercent = Misc.roundTo2((afkseconds / testtime) * 100);

View file

@ -184,7 +184,6 @@ export function colorful(tc) {
}
}
export function screenshot() {
function revertScreenshot() {
$("#notificationCenter").removeClass("hidden");
@ -196,9 +195,9 @@ export function screenshot() {
$(".pageTest .loginTip").removeClass("hidden");
}
let revealReplay = false;
if (!$("#resultReplay").hasClass('hidden')) {
if (!$("#resultReplay").hasClass("hidden")) {
revealReplay = true;
Replay.pauseReplay()
Replay.pauseReplay();
}
$("#resultReplay").addClass("hidden");
$(".pageTest .ssWatermark").removeClass("hidden");
@ -282,78 +281,99 @@ export function updateWordElement(showError) {
}
}
} else {
let correctSoFar = false;
if (currentWord.slice(0, input.length) == input) {
// this is when input so far is correct
correctSoFar = true;
}
let wordHighlightClassString = correctSoFar ? "correct" : "incorrect";
if (Config.blindMode) {
wordHighlightClassString = "correct";
let correctSoFar = false;
if (currentWord.slice(0, input.length) == input) {
// this is when input so far is correct
correctSoFar = true;
}
let wordHighlightClassString = correctSoFar ? "correct" : "incorrect";
if (Config.blindMode) {
wordHighlightClassString = "correct";
}
for (let i = 0; i < input.length; i++) {
let charCorrect;
if (currentWord[i] == input[i]) {
charCorrect = true;
} else {
charCorrect = false;
}
for (let i = 0; i < input.length; i++) {
let charCorrect;
if (currentWord[i] == input[i]) {
charCorrect = true;
let correctClass = "correct";
if (Config.highlightMode == "off") {
correctClass = "";
}
let currentLetter = currentWord[i];
let tabChar = "";
let nlChar = "";
if (currentLetter === "\t") {
tabChar = "tabChar";
currentLetter = `<i class="fas fa-long-arrow-alt-right"></i>`;
} else if (currentLetter === "\n") {
nlChar = "nlChar";
currentLetter = `<i class="fas fa-angle-down"></i>`;
}
if (charCorrect) {
ret += `<letter class="${
Config.highlightMode == "word"
? wordHighlightClassString
: correctClass
} ${tabChar}${nlChar}">${currentLetter}</letter>`;
} else {
if (!showError) {
if (currentLetter !== undefined) {
ret += `<letter class="${
Config.highlightMode == "word"
? wordHighlightClassString
: correctClass
} ${tabChar}${nlChar}">${currentLetter}</letter>`;
}
} else {
charCorrect = false;
}
let correctClass = "correct";
if (Config.highlightMode == "off") {
correctClass = "";
}
let currentLetter = currentWord[i];
let tabChar = "";
let nlChar = "";
if (currentLetter === "\t") {
tabChar = "tabChar";
currentLetter = `<i class="fas fa-long-arrow-alt-right"></i>`;
} else if (currentLetter === "\n") {
nlChar = "nlChar";
currentLetter = `<i class="fas fa-angle-down"></i>`;
}
if (charCorrect) {
ret += `<letter class="${Config.highlightMode == "word" ? wordHighlightClassString : correctClass} ${tabChar}${nlChar}">${currentLetter}</letter>`;
} else {
if (!showError) {
if (currentLetter !== undefined) {
ret += `<letter class="${Config.highlightMode == "word" ? wordHighlightClassString : correctClass} ${tabChar}${nlChar}">${currentLetter}</letter>`;
}
} else {
if (currentLetter == undefined) {
if (!Config.hideExtraLetters) {
let letter = input[i];
if (letter == " " || letter == "\t" || letter == "\n") {
letter = "_";
}
ret += `<letter class="${Config.highlightMode == "word" ? wordHighlightClassString : 'incorrect'} extra ${tabChar}${nlChar}">${letter}</letter>`;
if (currentLetter == undefined) {
if (!Config.hideExtraLetters) {
let letter = input[i];
if (letter == " " || letter == "\t" || letter == "\n") {
letter = "_";
}
} else {
ret +=
`<letter class="${Config.highlightMode == "word" ? wordHighlightClassString : 'incorrect'} ${tabChar}${nlChar}">` +
currentLetter +
(Config.indicateTypos ? `<hint>${input[i]}</hint>` : "") +
"</letter>";
ret += `<letter class="${
Config.highlightMode == "word"
? wordHighlightClassString
: "incorrect"
} extra ${tabChar}${nlChar}">${letter}</letter>`;
}
}
}
}
if (input.length < currentWord.length) {
for (let i = input.length; i < currentWord.length; i++) {
if (currentWord[i] === "\t") {
ret += `<letter class='tabChar'><i class="fas fa-long-arrow-alt-right"></i></letter>`;
} else if (currentWord[i] === "\n") {
ret += `<letter class='nlChar'><i class="fas fa-angle-down"></i></letter>`;
} else {
ret += `<letter class="${Config.highlightMode == "word" ? wordHighlightClassString : ''}">` + currentWord[i] + "</letter>";
ret +=
`<letter class="${
Config.highlightMode == "word"
? wordHighlightClassString
: "incorrect"
} ${tabChar}${nlChar}">` +
currentLetter +
(Config.indicateTypos ? `<hint>${input[i]}</hint>` : "") +
"</letter>";
}
}
}
}
if (input.length < currentWord.length) {
for (let i = input.length; i < currentWord.length; i++) {
if (currentWord[i] === "\t") {
ret += `<letter class='tabChar'><i class="fas fa-long-arrow-alt-right"></i></letter>`;
} else if (currentWord[i] === "\n") {
ret += `<letter class='nlChar'><i class="fas fa-angle-down"></i></letter>`;
} else {
ret +=
`<letter class="${
Config.highlightMode == "word" ? wordHighlightClassString : ""
}">` +
currentWord[i] +
"</letter>";
}
}
}
}
wordAtIndex.innerHTML = ret;
if (newlineafter) $("#words").append("<div class='newline'></div>");
@ -477,7 +497,9 @@ export function updateModesNotice() {
} catch {}
$(".pageTest #testModesNotice").append(
`<div class="text-button" commands="commandsPaceCaret"><i class="fas fa-tachometer-alt"></i>${
Config.paceCaret === "average"
TestLogic.isPaceRepeat
? "repeated"
: Config.paceCaret === "average"
? "average"
: Config.paceCaret === "pb"
? "pb"