tijl.dev-core/web/views/apps/flags/question.html

89 lines
2.6 KiB
HTML
Raw Normal View History

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>