summaryrefslogtreecommitdiff
path: root/web/static/dartboat.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/static/dartboat.js')
-rw-r--r--web/static/dartboat.js59
1 files changed, 31 insertions, 28 deletions
diff --git a/web/static/dartboat.js b/web/static/dartboat.js
index 07c8997..6a0d07b 100644
--- a/web/static/dartboat.js
+++ b/web/static/dartboat.js
@@ -32,7 +32,7 @@ function _promptGet() {
function _promptGetAndClear() {
let val = _promptGet();
- promptClear();
+ promptHandle('clear');
return val;
}
@@ -78,6 +78,19 @@ let prompt_handlers = {
Module.ccall('user_visit_to_rem', 'number', ['number'], [rem]);
},
+ undo() {
+ let cl = document.getElementById('key_undo').classList;
+ if (cl.contains('active'))
+ Module.ccall('user_undo');
+ cl.toggle('active');
+ },
+
+ pre(action) {
+ clearOi();
+ if (action != 'undo')
+ document.getElementById('key_undo').classList.remove('active');
+ },
+
_update_rem(val) {
Module.ccall('update_user_rem_from_pts', null,
['number'], [val || _promptGet()]);
@@ -103,12 +116,20 @@ let prompt_handlers = {
let n = _promptGetAndClear();
if (n)
Module.ccall('resp_numdarts', null, ['number'], [n]);
+ },
+
+ pre(action) {
+ clearOi();
}
},
init: {
submit() {
Module.ccall('start_match');
+ },
+
+ pre(action) {
+ clearOi();
}
}
}
@@ -117,29 +138,9 @@ function setPromptHandler(ptr) {
prompt_handler = prompt_handlers[UTF8ToString(ptr)];
}
-function promptAppend(...args) {
- clearOi();
- prompt_handler?.append?.(...args);
-}
-
-function promptClear(...args) {
- clearOi();
- prompt_handler?.clear?.(...args);
-}
-
-function promptBackspace(...args) {
- clearOi();
- prompt_handler?.backspace?.(...args);
-}
-
-function promptSubmit(...args) {
- clearOi();
- prompt_handler?.submit?.(...args);
-}
-
-function promptSubmitRem(...args) {
- clearOi();
- prompt_handler?.submit_rem?.(...args);
+function promptHandle(action, ...args) {
+ prompt_handler?.pre?.(action);
+ prompt_handler?.[action]?.(...args);
}
function setPromptInput(ptr) {
@@ -239,11 +240,13 @@ document.addEventListener('keydown', e => {
return;
if (isFinite(e.key))
- promptAppend(e.key);
+ promptHandle('append', e.key);
else if (e.key == 'Enter')
- promptSubmit();
+ promptHandle('submit');
else if (e.key == 'Backspace')
- promptBackspace();
+ promptHandle('backspace');
else if (e.key == 'r')
- promptSubmitRem();
+ promptHandle('submit_rem');
+ else if (e.key == 'u')
+ promptHandle('undo');
});