mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
Answer buttons
This commit is contained in:
parent
758cfa2693
commit
7788aa7785
5 changed files with 50 additions and 23 deletions
|
@ -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"]:
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
||||||
|
|
|
@ -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} },
|
||||||
);
|
);
|
||||||
|
|
7
ts/routes/reviewer-bottom/types.ts
Normal file
7
ts/routes/reviewer-bottom/types.ts
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
interface AnswerButtonInfo {
|
||||||
|
"extra": string,
|
||||||
|
"key": string,
|
||||||
|
"i": number,
|
||||||
|
"label": string,
|
||||||
|
"due": string,
|
||||||
|
}
|
Loading…
Reference in a new issue