summaryrefslogtreecommitdiff
path: root/client/lib/ui.js
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-10-07 03:16:22 +0200
committerJules Laplace <julescarbon@gmail.com>2018-10-07 03:16:22 +0200
commit5496464966ff34c848538d726819ed91119da1f2 (patch)
treef6fed075b6df3fb249f69118f25b743317ac1ac2 /client/lib/ui.js
parent852ed2e007deac47292d3e83a374070683c29894 (diff)
grep script
Diffstat (limited to 'client/lib/ui.js')
-rw-r--r--client/lib/ui.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/client/lib/ui.js b/client/lib/ui.js
new file mode 100644
index 0000000..f344f0e
--- /dev/null
+++ b/client/lib/ui.js
@@ -0,0 +1,46 @@
+/* ui - update an int/float value */
+
+export function update_value_on_change(el, id, is_int, fn) {
+ const label = document.querySelector(id + ' + .val')
+ const update = v => {
+ label.innerHTML = is_int ? parseInt(v) : v.toFixed(2)
+ fn && fn(v)
+ }
+ el.on('change', update)
+ update(el.value)
+ el.update = update
+}
+
+/* ui - update a radio button */
+
+export function update_radio_value_on_change(el, id, values, fn) {
+ let old_v = el.active
+ const label = document.querySelector(id + ' + .val')
+ const update = v => {
+ if (v === -1) {
+ v = el.active = old_v
+ } else {
+ old_v = v
+ }
+ label.innerHTML = values[v][1]
+ fn && fn(v)
+ }
+ el.on('change', update)
+ update(el.active)
+ el.update = update
+}
+
+/* ui - bind/build a select dropdown */
+
+export function build_options(el, lists, fn) {
+ Object.keys(lists).forEach(key => {
+ const list = lists[key]
+ const option = document.createElement('option')
+ option.innerHTML = list.name
+ option.value = key
+ el.appendChild(option)
+ })
+ el.addEventListener('input', function(e){
+ fn(e.target.value)
+ })
+}