diff --git a/qt/aqt/reviewer.py b/qt/aqt/reviewer.py index b75f64fb3..ab51ff805 100644 --- a/qt/aqt/reviewer.py +++ b/qt/aqt/reviewer.py @@ -858,7 +858,7 @@ timerStopped = false; middle = self._answerButtons() conf = self.mw.col.decks.config_dict_for_deck_id(self.card.current_deck_id()) self.bottom.web.eval( - f"showAnswer({json.dumps(middle)}, {json.dumps(conf['stopTimerOnAnswer'])});" + f"anki.showAnswer({json.dumps(middle)}, {json.dumps(conf['stopTimerOnAnswer'])});" ) def _remaining(self) -> str: @@ -912,31 +912,25 @@ timerStopped = false; def but(i: int, label: str) -> str: if i == default: - extra = """id="defease" """ + id = "defease" else: - extra = "" + id = "" due = self._buttonTime(i, v3_labels=labels) key = ( tr.actions_shortcut_key(val=aqt.mw.pm.get_answer_key(i)) if aqt.mw.pm.get_answer_key(i) else "" ) - return """ -""" % ( - extra, - key, - i, - i, - label, - due, - ) + return { + "id": id, + "key": key, + "i": i, + "label": label, + "due": due, + } - buf = "
" - for ease, label in self._answerButtonList(): - buf += but(ease, label) - buf += "
" - return buf + return [but(ease, label) for ease, label in self._answerButtonList()] + def _buttonTime(self, i: int, v3_labels: Sequence[str]) -> str: if self.mw.col.conf["estTimes"]: diff --git a/ts/routes/reviewer-bottom/AnswerButton.svelte b/ts/routes/reviewer-bottom/AnswerButton.svelte index e69de29bb..2a04b7a20 100644 --- a/ts/routes/reviewer-bottom/AnswerButton.svelte +++ b/ts/routes/reviewer-bottom/AnswerButton.svelte @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/ts/routes/reviewer-bottom/index.svelte b/ts/routes/reviewer-bottom/index.svelte index b4a9ba53b..f2c8ff02d 100644 --- a/ts/routes/reviewer-bottom/index.svelte +++ b/ts/routes/reviewer-bottom/index.svelte @@ -1,10 +1,25 @@ + +
- + {#if $answerButtons.length} + {#each $answerButtons as answerButton} + + {/each} + {:else} + + {/if}
diff --git a/ts/routes/reviewer-bottom/index.ts b/ts/routes/reviewer-bottom/index.ts index d8b7a4c55..95ab43f00 100644 --- a/ts/routes/reviewer-bottom/index.ts +++ b/ts/routes/reviewer-bottom/index.ts @@ -8,6 +8,7 @@ import { mount } from "svelte"; import "./index.scss"; import ReviewerBottom from "./index.svelte"; +import { writable } from "svelte/store"; let time: number; // set in python code let timerStopped = false; @@ -34,9 +35,10 @@ function updateTime(): void { } let intervalId: number | undefined; +let answerButtons = writable([]) export function showQuestion(txt: string, maxTime_: number): void { - showAnswer(txt); + showAnswer([]); time = 0; maxTime = maxTime_; updateTime(); @@ -53,8 +55,8 @@ export function showQuestion(txt: string, maxTime_: number): void { }, 1000); } -function showAnswer(txt: string, stopTimer = false): void { - document.getElementById("middle").innerHTML = txt; +export function showAnswer(info: AnswerButtonInfo[], stopTimer = false): void { + answerButtons.set(info); timerStopped = stopTimer; } @@ -68,5 +70,5 @@ function selectedAnswerButton(): string { mount( ReviewerBottom, - { target: document.body }, + { target: document.body, props: {answerButtons} }, ); diff --git a/ts/routes/reviewer-bottom/types.ts b/ts/routes/reviewer-bottom/types.ts new file mode 100644 index 000000000..5a4ec8116 --- /dev/null +++ b/ts/routes/reviewer-bottom/types.ts @@ -0,0 +1,7 @@ +interface AnswerButtonInfo { + "extra": string, + "key": string, + "i": number, + "label": string, + "due": string, +} \ No newline at end of file