浏览代码

[editor] Fix end of result scrolling problems with the fixed first column

Enrico Berti 10 年之前
父节点
当前提交
0a9c2f8

+ 4 - 0
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -35,6 +35,7 @@
       .extend("throttle", 100);
     self.handle = ko.observable(typeof result.handle != "undefined" && result.handle != null ? result.handle : {});
     self.meta = ko.observableArray(typeof result.meta != "undefined" && result.meta != null ? result.meta : []);
+    self.hasMore = ko.observable(typeof result.hasMore != "undefined" && result.hasMore != null ? result.hasMore : false);
     self.cleanedMeta = ko.computed(function () {
       return ko.utils.arrayFilter(self.meta(), function (item) {
         return item.name != ''
@@ -97,6 +98,7 @@
 
     self.clear = function () {
       self.fetchedOnce(false);
+      self.hasMore(false);
       self.meta.removeAll();
       self.data.removeAll();
       self.images.removeAll();
@@ -543,6 +545,8 @@
         self.result.fetchedOnce(true);
       }
 
+      self.result.hasMore(data.result.has_more);
+
       if (data.result.has_more && rows > 0) {
         setTimeout(function () {
           self.fetchResultData(rows, false);

+ 1 - 3
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -1389,7 +1389,7 @@ ${ require.config() }
       window.clearTimeout(_scrollTimeout);
       dataTableEl.data("scrollPosition", dataTableEl.scrollTop());
       _scrollTimeout = window.setTimeout(function () {
-        if (_lastScrollPosition != dataTableEl.scrollTop() && dataTableEl.scrollTop() + dataTableEl.outerHeight() + 20 > dataTableEl[0].scrollHeight && _dt) {
+        if (_lastScrollPosition != dataTableEl.scrollTop() && dataTableEl.scrollTop() + dataTableEl.outerHeight() + 20 > dataTableEl[0].scrollHeight && _dt && snippet.result.hasMore()) {
           dataTableEl.animate({opacity: '0.55'}, 200);
           snippet.fetchResult(100, false);
         }
@@ -2166,7 +2166,6 @@ ${ require.config() }
         else {
           var _dtElement = $("#snippet_" + options.snippet.id()).find(".dataTables_wrapper");
           _dtElement.animate({opacity: '1'}, 50);
-          _dtElement.off("scroll");
         }
         $("#snippet_" + options.snippet.id()).find("select").trigger('chosen:updated');
       });
@@ -2174,7 +2173,6 @@ ${ require.config() }
       $(document).on("renderDataError", function (e, options) {
         var _dtElement = $("#snippet_" + options.snippet.id()).find(".dataTables_wrapper");
         _dtElement.animate({opacity: '1'}, 50);
-        _dtElement.off("scroll");
       });
 
       $(document).on("progress", function (e, options) {