瀏覽代碼

HUE-6647 [frontend] Improve initial rendering of the log scroller binding

Enrico Berti 8 年之前
父節點
當前提交
3950e7f
共有 1 個文件被更改,包括 9 次插入2 次删除
  1. 9 2
      desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

+ 9 - 2
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -978,12 +978,18 @@
         $element.data('lastScrollTop', $element.scrollTop());
       });
 
+      $element.on("wheel", function () {
+        $element.data('hasUserScrolled', true);
+      });
+
       function autoLogScroll () {
         var elementHeight = $element.innerHeight();
+        var lastHeight = $element.data('lastHeight') || elementHeight;
         var lastScrollTop = $element.data('lastScrollTop') || 0;
+        var hasUserScrolled = $element.data('hasUserScrolled') || false;
         var lastScrollHeight = $element.data('lastScrollHeight') || elementHeight;
 
-        var stickToBottom = (lastScrollTop + elementHeight) === lastScrollHeight;
+        var stickToBottom = !hasUserScrolled || elementHeight !== lastHeight || (lastScrollTop + elementHeight) === lastScrollHeight;
 
         if (stickToBottom) {
           $element.scrollTop(element.scrollHeight - $element.height());
@@ -991,6 +997,7 @@
         }
 
         $element.data('lastScrollHeight', element.scrollHeight);
+        $element.data('lastHeight', elementHeight);
       }
 
       var logValue = valueAccessor();
@@ -1004,7 +1011,7 @@
         });
       }
 
-      autoLogScroll();
+      hueUtils.waitForRendered(element, function(el){ return el.is(':visible') }, autoLogScroll);
     }
   };