From a5d1b6b37bba70f094ff189b960f4d48caa34eef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Laurent?= <francois.laurent@posteo.net> Date: Sat, 28 May 2022 13:00:20 +0200 Subject: [PATCH] time slider autofocus on entering viewer or tag selector --- src/larvatagger.js | 11 +++++++++-- src/wgl.jl | 6 +++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/larvatagger.js b/src/larvatagger.js index 093baa3..79eaf6d 100644 --- a/src/larvatagger.js +++ b/src/larvatagger.js @@ -34,6 +34,12 @@ const LarvaTagger = (function () { }; } + function focusOnTimeSlider(view) { + if (view === undefined) + view = document.getElementById("trackviewer"); + view.querySelector("input[type=range]").focus() + } + function discardLarvaEdits(checkbox, observer, label) { if (checkbox.checked) { checkbox.checked = false; @@ -74,7 +80,7 @@ const LarvaTagger = (function () { const frag = document.createRange().createContextualFragment(html); const newtr = frag.firstChild.firstChild.firstChild; let tbody = table.getElementsByTagName('tbody')[0]; - if (tbody == null) { + if (tbody === undefined) { tbody = document.createElement('tbody'); table.appendChild(tbody); } @@ -113,7 +119,7 @@ const LarvaTagger = (function () { const option = document.createElement('option'); option.value = String(i); option.text = selectOptions[i]; - if (jlObserver != null) { + if (jlObserver !== undefined) { option.ondblclick = () => { JSServe.update_obs(jlObserver, selectOptions[i]); }; @@ -157,6 +163,7 @@ const LarvaTagger = (function () { return { toggle, timeSlider, + focusOnTimeSlider, discardLarvaEdits, includeLarva, includeAllLarvae, diff --git a/src/wgl.jl b/src/wgl.jl index 6793a06..7cd88e6 100644 --- a/src/wgl.jl +++ b/src/wgl.jl @@ -383,6 +383,7 @@ function JSServe.jsrender(session::Session, av::AssayViewer) dom = DOM.div(r(session, av.plot), r(session, av.player); class="flex flex-col", + onmouseenter=js"LarvaTagger.focusOnTimeSlider(this)", ) av.dom = dom return r(session, dom) @@ -905,7 +906,8 @@ function JSServe.jsrender(session::Session, ts::TagSelector) end JSServe.jsrender(session, DOM.div(elements...; - class="flex flex-col")) + class="flex flex-col", + onmouseenter=js"LarvaTagger.focusOnTimeSlider()")) end function tagselector(controller; @@ -940,6 +942,8 @@ function JSServe.jsrender(session::Session, tv::TrackViewer) r(session, tv.tagselector); class="flex flex-col", style="display: none;", + id="trackviewer", + onmouseenter=js"LarvaTagger.focusOnTimeSlider(this)", ) tv.dom = dom r(session, dom) -- GitLab