Explorar o código

优化页面实时日志的自动滚屏控制

niujiuru hai 3 semanas
pai
achega
df49146f82
Modificáronse 2 ficheiros con 7 adicións e 15 borrados
  1. 2 2
      web-ui.service/web/app.html
  2. 5 13
      web-ui.service/web/static/js/log-stream.js

+ 2 - 2
web-ui.service/web/app.html

@@ -42,10 +42,10 @@
 
       <div class="sidebar-actions">
         <div class="action-item" onclick="reboot()">
-          🛑 重启设备
+          🔁 重启设备
         </div>
         <div class="action-item" onclick="logout()">
-           退出登录
+          🔓 退出登录
         </div>
       </div>
     </aside>

+ 5 - 13
web-ui.service/web/static/js/log-stream.js

@@ -1,6 +1,5 @@
 let logSource = null;
 let currentUnit = null;
-let autoScroll = true;
 
 const MAX_LOG_LINES = 2000;
 let logLines = [];
@@ -62,15 +61,6 @@ function connectLog(unit, target) {
 
     logSource = source;
 
-    el.addEventListener("scroll", () => {
-        const distance = el.scrollHeight - el.scrollTop - el.clientHeight;
-        if (distance < 20) {
-            autoScroll = true;
-        } else {
-            autoScroll = false;
-        }
-    });
-
     source.onmessage = (e) => {
         if (source !== logSource) {
             return;
@@ -85,16 +75,18 @@ function connectLog(unit, target) {
         const line = document.createElement("div");
         line.innerHTML = colorLog(e.data);
 
+        const atBottom = el.scrollHeight - el.scrollTop - el.clientHeight < 2;
+
         el.appendChild(line);
 
         while (el.childElementCount > MAX_LOG_LINES) {
             el.removeChild(el.firstElementChild);
         }
 
-        if (autoScroll) {
-        requestAnimationFrame(() => {
+        if (atBottom) {
+          requestAnimationFrame(() => {
             el.scrollTop = el.scrollHeight;
-        });
+          });
         }
     };