فهرست منبع

HUE-3933 [editor] Improve performances with hundreds of columns

Enrico Berti 9 سال پیش
والد
کامیت
81862474bc

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

@@ -64,6 +64,9 @@
         return item.name != ''
       });
     });
+    self.hasManyColumns = ko.computed(function () {
+      return self.meta() && self.meta().length > 300;
+    });
     self.fetchedOnce = ko.observable(typeof result.fetchedOnce != "undefined" && result.fetchedOnce != null ? result.fetchedOnce : false);
     self.startTime = ko.observable(typeof result.startTime != "undefined" && result.startTime != null ? new Date(result.startTime) : new Date());
     self.endTime = ko.observable(typeof result.endTime != "undefined" && result.endTime != null ? new Date(result.endTime) : new Date());

+ 66 - 56
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -2075,15 +2075,17 @@ ${ hueIcons.symbols() }
         }
         if (vm.editorMode) {
           $(el).parents('.dataTables_wrapper').css('overflow-x', 'hidden');
-          $(el).jHueTableExtender({
-            fixedHeader: true,
-            fixedFirstColumn: true,
-            includeNavigator: false,
-            parentId: 'snippet_' + snippet.id(),
-            mainScrollable: '.right-panel',
-            stickToTopPosition: vm.isPlayerMode() ? 1 : 73,
-            clonedContainerPosition: "fixed"
-          });
+          if (!snippet.result.hasManyColumns()) {
+            $(el).jHueTableExtender({
+              fixedHeader: true,
+              fixedFirstColumn: true,
+              includeNavigator: false,
+              parentId: 'snippet_' + snippet.id(),
+              mainScrollable: '.right-panel',
+              stickToTopPosition: vm.isPlayerMode() ? 1 : 73,
+              clonedContainerPosition: "fixed"
+            });
+          }
           $(el).jHueHorizontalScrollbar();
         }
         else {
@@ -2091,14 +2093,16 @@ ${ hueIcons.symbols() }
             maxHeight: DATATABLES_MAX_HEIGHT,
             heightAfterCorrection: 0
           });
-          $(el).jHueTableExtender({
-            fixedHeader: true,
-            fixedFirstColumn: true,
-            includeNavigator: false,
-            mainScrollable: '.right-panel',
-            parentId: 'snippet_' + snippet.id(),
-            clonedContainerPosition: "absolute"
-          });
+          if (!snippet.result.hasManyColumns()) {
+            $(el).jHueTableExtender({
+              fixedHeader: true,
+              fixedFirstColumn: true,
+              includeNavigator: false,
+              mainScrollable: '.right-panel',
+              parentId: 'snippet_' + snippet.id(),
+              clonedContainerPosition: "absolute"
+            });
+          }
         }
       },
       "aoColumnDefs": [
@@ -2119,15 +2123,17 @@ ${ hueIcons.symbols() }
 
     if (vm.editorMode) {
       $(el).parents('.dataTables_wrapper').css('overflow-x', 'hidden');
-      $(el).jHueTableExtender({
-        fixedHeader: true,
-        fixedFirstColumn: true,
-        includeNavigator: false,
-        parentId: 'snippet_' + snippet.id(),
-        mainScrollable: '.right-panel',
-        stickToTopPosition: vm.isPlayerMode() ? (vm.isFullscreenMode() ? 48 : 0) : 73,
-        clonedContainerPosition: "fixed"
-      });
+      if (!snippet.result.hasManyColumns()) {
+        $(el).jHueTableExtender({
+          fixedHeader: true,
+          fixedFirstColumn: true,
+          includeNavigator: false,
+          parentId: 'snippet_' + snippet.id(),
+          mainScrollable: '.right-panel',
+          stickToTopPosition: vm.isPlayerMode() ? (vm.isFullscreenMode() ? 48 : 0) : 73,
+          clonedContainerPosition: "fixed"
+        });
+      }
       $(el).jHueHorizontalScrollbar();
     }
     else {
@@ -2136,14 +2142,16 @@ ${ hueIcons.symbols() }
         heightAfterCorrection: 0,
         enableNiceScroll: true
       });
-      $(el).jHueTableExtender({
-        fixedHeader: true,
-        fixedFirstColumn: true,
-        includeNavigator: false,
-        mainScrollable: '.right-panel',
-        parentId: 'snippet_' + snippet.id(),
-        clonedContainerPosition: "absolute"
-      });
+      if (!snippet.result.hasManyColumns()) {
+        $(el).jHueTableExtender({
+          fixedHeader: true,
+          fixedFirstColumn: true,
+          includeNavigator: false,
+          mainScrollable: '.right-panel',
+          parentId: 'snippet_' + snippet.id(),
+          clonedContainerPosition: "absolute"
+        });
+      }
     }
     $(".dataTables_filter").hide();
     var dataTableEl = $(el).parents(".dataTables_wrapper");
@@ -2614,28 +2622,30 @@ ${ hueIcons.symbols() }
           return;
         }
         viewModel.selectedNotebook().snippets().forEach(function (snippet) {
-          var _el = $("#snippet_" + snippet.id()).find(".resultTable");
-          if (viewModel.editorMode) {
-            _el.jHueTableExtender({
-              fixedHeader: true,
-              fixedFirstColumn: true,
-              includeNavigator: false,
-              mainScrollable: '.right-panel',
-              stickToTopPosition: viewModel.isPlayerMode() ? 1 : 73,
-              parentId: 'snippet_' + snippet.id(),
-              clonedContainerPosition: "fixed"
-            });
-            _el.jHueHorizontalScrollbar();
-          }
-          else {
-            _el.jHueTableExtender({
-              fixedHeader: true,
-              fixedFirstColumn: true,
-              includeNavigator: false,
-              mainScrollable: '.right-panel',
-              parentId: 'snippet_' + snippet.id(),
-              clonedContainerPosition: "absolute"
-            });
+          if (!snippet.result.hasManyColumns()) {
+            var _el = $("#snippet_" + snippet.id()).find(".resultTable");
+            if (viewModel.editorMode) {
+              _el.jHueTableExtender({
+                fixedHeader: true,
+                fixedFirstColumn: true,
+                includeNavigator: false,
+                mainScrollable: '.right-panel',
+                stickToTopPosition: viewModel.isPlayerMode() ? 1 : 73,
+                parentId: 'snippet_' + snippet.id(),
+                clonedContainerPosition: "fixed"
+              });
+              _el.jHueHorizontalScrollbar();
+            }
+            else {
+              _el.jHueTableExtender({
+                fixedHeader: true,
+                fixedFirstColumn: true,
+                includeNavigator: false,
+                mainScrollable: '.right-panel',
+                parentId: 'snippet_' + snippet.id(),
+                clonedContainerPosition: "absolute"
+              });
+            }
           }
         });
       }