From 9681d4ee263ed4dc1f2b960955f00d6743cee1ed Mon Sep 17 00:00:00 2001 From: Miodec Date: Mon, 15 May 2023 13:51:42 +0200 Subject: [PATCH] showing top row on the keymap if test has numbers and keymap is in mode next closes #4273 --- frontend/src/ts/elements/keymap.ts | 2 ++ frontend/src/ts/test/test-logic.ts | 20 +++++++++++++++++--- frontend/src/ts/test/test-words.ts | 5 +++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/frontend/src/ts/elements/keymap.ts b/frontend/src/ts/elements/keymap.ts index 7a2b675b5..6dab766d2 100644 --- a/frontend/src/ts/elements/keymap.ts +++ b/frontend/src/ts/elements/keymap.ts @@ -7,6 +7,7 @@ import * as Misc from "../utils/misc"; import * as Hangul from "hangul-js"; import * as Notifications from "../elements/notifications"; import * as ActivePage from "../states/active-page"; +import * as TestWords from "../test/test-words"; const stenoKeys: MonkeyTypes.Layout = { keymapShowTopRow: true, @@ -141,6 +142,7 @@ export async function refresh( } const showTopRow = + (TestWords.hasNumbers && Config.keymapMode === "next") || Config.keymapShowTopRow === "always" || ((lts as typeof layouts["qwerty"]).keymapShowTopRow && Config.keymapShowTopRow !== "never"); diff --git a/frontend/src/ts/test/test-logic.ts b/frontend/src/ts/test/test-logic.ts index 441122237..9e8d43c1c 100644 --- a/frontend/src/ts/test/test-logic.ts +++ b/frontend/src/ts/test/test-logic.ts @@ -355,7 +355,6 @@ export function restart(options = {} as RestartOptions): void { if (!options.withSameWordset && !shouldQuoteRepeat) { TestState.setRepeated(false); TestState.setPaceRepeat(repeatWithPace); - TestWords.setHasTab(false); await init(); await PaceCaret.init(); } else { @@ -569,10 +568,25 @@ export async function init(): Promise { return; } + const beforeHasNumbers = TestWords.hasNumbers ? true : false; + + let hasTab = false; + let hasNumbers = false; + for (const word of generatedWords) { - if (/\t/g.test(word)) { - TestWords.setHasTab(true); + if (/\t/g.test(word) && !hasTab) { + hasTab = true; } + if (/\d/g.test(word) && !hasNumbers) { + hasNumbers = true; + } + } + + TestWords.setHasTab(hasTab); + TestWords.setHasNumbers(hasNumbers); + + if (beforeHasNumbers !== hasNumbers) { + Keymap.refresh(); } for (let i = 0; i < generatedWords.length; i++) { diff --git a/frontend/src/ts/test/test-words.ts b/frontend/src/ts/test/test-words.ts index 35a42c03f..16f422d06 100644 --- a/frontend/src/ts/test/test-words.ts +++ b/frontend/src/ts/test/test-words.ts @@ -66,6 +66,7 @@ class Words { export const words = new Words(); export let hasTab = false; +export let hasNumbers = false; export let randomQuote = null as unknown as MonkeyTypes.Quote; export function setRandomQuote(rq: MonkeyTypes.Quote): void { @@ -75,3 +76,7 @@ export function setRandomQuote(rq: MonkeyTypes.Quote): void { export function setHasTab(tf: boolean): void { hasTab = tf; } + +export function setHasNumbers(tf: boolean): void { + hasNumbers = tf; +}