diff --git a/static/css/base.css b/static/css/base.css index c0884d9..1428f04 100644 --- a/static/css/base.css +++ b/static/css/base.css @@ -97,7 +97,8 @@ body { font-family: Arial, sans-serif; margin:0; } /* Submenu (fly-out for Themes) */ .submenu { position: relative; } -.submenu > a { display: flex; justify-content: space-between; align-items: center; } +.submenu > a { display: flex; justify-content: space-between; align-items: center; padding-right: 28px !important; position: relative; } +.submenu > a::after { content: "▸"; position: absolute; right: 10px; top: 50%; transform: translateY(-50%); } .submenu-content { display: none; position: absolute; @@ -111,7 +112,7 @@ body { font-family: Arial, sans-serif; margin:0; } } .submenu-content li a { padding: 10px 14px; display: block; color: #eee; text-decoration: none; } .submenu-content li a:hover { background-color: #0af; color: #fff; } -.submenu:hover .submenu-content { display: block; } +.submenu:hover > .submenu-content { display: block; } /* Remove default list bullets and padding for all dropdowns & submenus */ .dropdown-content, diff --git a/static/js/auto-scroll.js b/static/js/auto-scroll.js index 2d9f9a1..60586f2 100644 --- a/static/js/auto-scroll.js +++ b/static/js/auto-scroll.js @@ -11,7 +11,7 @@ function setPref(v) { localStorage.setItem(PREF_KEY, v ? 'true' : 'false'); } const SELECTOR_PRIORITY = ['#guideOuter', '.guide-outer', '.grid-col']; - const scrollSpeed = 1.2; // px per frame (visual) + let scrollSpeed = 1.2; // px per frame (visual) const idleDelay = 15000; // ms initial inactivity/start delay (15s) const waitForContentMs = 5000; // wait up to 5s for rows to be populated before cloning const contentSampleCount = 3; // sample when checking readiness @@ -436,6 +436,15 @@ window.__autoScroll.clearEnd = function(){ endReached = false; endReachedAt = 0; }; window.__autoScroll.recompute = function(){ scroller = null; }; window.__autoScroll.cloneNow = function(){ if (!scroller) scroller = findScroller(); return cloneOnce(scroller); }; + window.__autoScroll.setSpeed = function(speed) { + if (typeof speed === 'number' && speed > 0) { + scrollSpeed = speed; + log('setSpeed ->', scrollSpeed); + } else { + log('setSpeed: invalid speed', speed); + } + }; + window.__autoScroll.getSpeed = function(){ return scrollSpeed; }; window.__autoScroll.status = function(){ return { isScrolling, pref: prefEnabled(), loopMode, scrollerInfo: scroller ? { id: scroller.id, scrollTop: scroller.scrollTop, scrollHeight: scroller.scrollHeight, clientHeight: scroller.clientHeight, cloned: !!scroller.dataset.__autoScrollCloned, prependedHeight: scroller.dataset.__autoScrollPrependedHeight } : null, rafId: !!rafId, watchdog: !!watchdogInterval }; }; window.__autoScroll.debug = function(){ return { lastActivity, idleDelay, scrollSpeed, isScrolling, pref: prefEnabled(), loopMode, endReached, endReachedAt, autoRestart, autoRestartDelayMs, scrollerInfo: scroller ? { id: scroller.id, scrollTop: scroller.scrollTop, scrollHeight: scroller.scrollHeight, clientHeight: scroller.clientHeight, cloned: !!scroller.dataset.__autoScrollCloned, prependedHeight: scroller.dataset.__autoScrollPrependedHeight } : null, rafId, lastFrameTime, watchdogInterval }; }; diff --git a/templates/_header.html b/templates/_header.html index 9ecd347..97e2cfd 100644 --- a/templates/_header.html +++ b/templates/_header.html @@ -28,7 +28,20 @@ Logs
  • About
  • {% endif %} - Toggle Auto-Scroll + Change Password
  • Logs
  • About
  • {% endif %} -
  • Toggle Auto-Scroll
  • +
  • + + + +
  • Change Password
  • diff --git a/templates/guide.html b/templates/guide.html index 08b7aa8..c54ecd9 100644 --- a/templates/guide.html +++ b/templates/guide.html @@ -547,6 +547,73 @@

    Program Info

    }); + +