Answer buttons

This commit is contained in:
Luc Mcgrady 2025-08-25 21:55:21 +01:00
parent 758cfa2693
commit 7788aa7785
No known key found for this signature in database
GPG key ID: 4F3D7A0B17CC3D9C
5 changed files with 50 additions and 23 deletions

View file

@ -858,7 +858,7 @@ timerStopped = false;
middle = self._answerButtons() middle = self._answerButtons()
conf = self.mw.col.decks.config_dict_for_deck_id(self.card.current_deck_id()) conf = self.mw.col.decks.config_dict_for_deck_id(self.card.current_deck_id())
self.bottom.web.eval( 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: def _remaining(self) -> str:
@ -912,31 +912,25 @@ timerStopped = false;
def but(i: int, label: str) -> str: def but(i: int, label: str) -> str:
if i == default: if i == default:
extra = """id="defease" """ id = "defease"
else: else:
extra = "" id = ""
due = self._buttonTime(i, v3_labels=labels) due = self._buttonTime(i, v3_labels=labels)
key = ( key = (
tr.actions_shortcut_key(val=aqt.mw.pm.get_answer_key(i)) tr.actions_shortcut_key(val=aqt.mw.pm.get_answer_key(i))
if aqt.mw.pm.get_answer_key(i) if aqt.mw.pm.get_answer_key(i)
else "" else ""
) )
return """ return {
<td align=center><button %s title="%s" data-ease="%s" onclick='pycmd("ease%d");'>\ "id": id,
%s%s</button></td>""" % ( "key": key,
extra, "i": i,
key, "label": label,
i, "due": due,
i, }
label,
due,
)
buf = "<center><table cellpadding=0 cellspacing=0><tr>" return [but(ease, label) for ease, label in self._answerButtonList()]
for ease, label in self._answerButtonList():
buf += but(ease, label)
buf += "</tr></table>"
return buf
def _buttonTime(self, i: int, v3_labels: Sequence[str]) -> str: def _buttonTime(self, i: int, v3_labels: Sequence[str]) -> str:
if self.mw.col.conf["estTimes"]: if self.mw.col.conf["estTimes"]:

View file

@ -0,0 +1,9 @@
<script lang="ts">
import { bridgeCommand } from "@tslib/bridgecommand";
export let info: AnswerButtonInfo
</script>
<button on:click={()=>bridgeCommand(`ease${info.i}`)}>
{info.label}
</button>

View file

@ -1,10 +1,25 @@
<script lang="ts">
import type { Writable } from "svelte/store";
import AnswerButton from "./AnswerButton.svelte";
import { bridgeCommand } from "@tslib/bridgecommand";
export let answerButtons: Writable<AnswerButtonInfo[]>
$: console.log($answerButtons)
</script>
<div id="outer fancy"> <div id="outer fancy">
<div id="tableinner"> <div id="tableinner">
<div> <div>
<button>Edit</button> <button>Edit</button>
</div> </div>
<div> <div>
<button>Review Buttons</button> {#if $answerButtons.length}
{#each $answerButtons as answerButton}
<AnswerButton info={answerButton}></AnswerButton>
{/each}
{:else}
<button on:click={()=>bridgeCommand("ans")}>Review Buttons</button>
{/if}
</div> </div>
<div> <div>
<button>More</button> <button>More</button>

View file

@ -8,6 +8,7 @@
import { mount } from "svelte"; import { mount } from "svelte";
import "./index.scss"; import "./index.scss";
import ReviewerBottom from "./index.svelte"; import ReviewerBottom from "./index.svelte";
import { writable } from "svelte/store";
let time: number; // set in python code let time: number; // set in python code
let timerStopped = false; let timerStopped = false;
@ -34,9 +35,10 @@ function updateTime(): void {
} }
let intervalId: number | undefined; let intervalId: number | undefined;
let answerButtons = writable<AnswerButtonInfo[]>([])
export function showQuestion(txt: string, maxTime_: number): void { export function showQuestion(txt: string, maxTime_: number): void {
showAnswer(txt); showAnswer([]);
time = 0; time = 0;
maxTime = maxTime_; maxTime = maxTime_;
updateTime(); updateTime();
@ -53,8 +55,8 @@ export function showQuestion(txt: string, maxTime_: number): void {
}, 1000); }, 1000);
} }
function showAnswer(txt: string, stopTimer = false): void { export function showAnswer(info: AnswerButtonInfo[], stopTimer = false): void {
document.getElementById("middle").innerHTML = txt; answerButtons.set(info);
timerStopped = stopTimer; timerStopped = stopTimer;
} }
@ -68,5 +70,5 @@ function selectedAnswerButton(): string {
mount( mount(
ReviewerBottom, ReviewerBottom,
{ target: document.body }, { target: document.body, props: {answerButtons} },
); );

View file

@ -0,0 +1,7 @@
interface AnswerButtonInfo {
"extra": string,
"key": string,
"i": number,
"label": string,
"due": string,
}