2024-08-26 14:22:24 +02:00
|
|
|
<div class="container">
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
2024-08-26 20:28:20 +02:00
|
|
|
<div>
|
|
|
|
Questions left: {{.QuestionsLeft}}
|
|
|
|
</div>
|
2024-08-26 16:46:28 +02:00
|
|
|
<div>
|
|
|
|
Errors: {{.Errors}}
|
|
|
|
</div>
|
2024-08-26 20:28:20 +02:00
|
|
|
{{range .TimeLeft}}
|
|
|
|
<div>
|
|
|
|
Seconds left: <span id="countdown">{{.}}</span>
|
|
|
|
</div>
|
|
|
|
{{end}}
|
2024-08-26 16:46:28 +02:00
|
|
|
|
2024-08-26 14:22:24 +02:00
|
|
|
<div class="flex justify-center p-4 mt-4">
|
|
|
|
<span style="font-size: 105px;">{{.Flag}}</span>
|
|
|
|
</div>
|
|
|
|
|
2024-08-29 12:21:38 +02:00
|
|
|
<div hx-boost="true" id="answers" class="flex justify-center flex-wrap">
|
|
|
|
{{range $index, $answer := .Answers}}
|
2024-08-26 14:22:24 +02:00
|
|
|
<form method="post" class="m-1">
|
|
|
|
<input class="hidden" name="type" value="answer" />
|
|
|
|
<input class="hidden" name="answer" value="{{.}}" />
|
2024-08-26 21:49:37 +02:00
|
|
|
{{if eq . $.PreviousError}}
|
2024-08-29 12:21:38 +02:00
|
|
|
<button disabled type="submit" class="btn btn-lg btn-error rounded-2xl">{{index $.T $answer}}<kbd
|
|
|
|
class="hidden lg:block kbd kbd-sm">{{index $.ShortcutKeys $index}}</kbd></button>
|
2024-08-26 21:49:37 +02:00
|
|
|
{{else}}
|
2024-08-29 12:21:38 +02:00
|
|
|
<button type="submit" class="btn btn-lg rounded-2xl">{{index $.T $answer}} <kbd
|
|
|
|
class="hidden lg:block kbd kbd-sm">{{index $.ShortcutKeys $index}}</kbd></button>
|
2024-08-26 21:49:37 +02:00
|
|
|
{{end}}
|
2024-08-26 14:22:24 +02:00
|
|
|
</form>
|
|
|
|
{{end}}
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<form hx-boost="true" method="post">
|
2024-08-26 16:46:28 +02:00
|
|
|
<input class="hidden" name="type" value="exit" />
|
2024-08-26 14:22:24 +02:00
|
|
|
<button type="submit" class="btn hover:btn-error">Stop</button>
|
|
|
|
</form>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
2024-08-26 20:28:20 +02:00
|
|
|
|
|
|
|
{{range .TimeLeft}}
|
|
|
|
<script>
|
|
|
|
function startCountdown() {
|
|
|
|
const countdownElement = document.getElementById('countdown');
|
|
|
|
let countdownNumber = parseInt(countdownElement.innerHTML, 10);
|
|
|
|
const intervalId = setInterval(() => {
|
|
|
|
countdownNumber -= 1;
|
|
|
|
countdownElement.innerHTML = countdownNumber;
|
|
|
|
}, 1000);
|
|
|
|
}
|
|
|
|
|
|
|
|
startCountdown();
|
|
|
|
</script>
|
|
|
|
{{end}}
|
2024-08-29 12:21:38 +02:00
|
|
|
|
|
|
|
<script>
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
|
|
const keyMap = {
|
|
|
|
'd': 0,
|
|
|
|
'f': 1,
|
|
|
|
'h': 2,
|
|
|
|
'j': 3,
|
|
|
|
'k': 4
|
|
|
|
};
|
|
|
|
|
|
|
|
function triggerButton(key) {
|
|
|
|
const index = keyMap[key];
|
|
|
|
if (index !== undefined) {
|
|
|
|
const buttons = document.querySelectorAll('#answers button');
|
|
|
|
if (buttons[index]) {
|
|
|
|
buttons[index].click();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
document.addEventListener('keydown', function (e) {
|
|
|
|
const key = e.key.toLowerCase();
|
|
|
|
if (keyMap.hasOwnProperty(key)) {
|
|
|
|
triggerButton(key);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
</script>
|