Browse Source

HUE-7949 [dashboard] Correct Gridster seldom invalid calculation of widget heights after a resize

Enrico Berti 7 years ago
parent
commit
d5e1399eea

+ 1 - 1
desktop/libs/dashboard/src/dashboard/static/dashboard/js/search.ko.js

@@ -1890,7 +1890,7 @@ var SearchViewModel = function (collection_json, query_json, initial_json, has_g
     self.draggableFilter = ko.observable(bareWidgetBuilder("Filter Bar", "filter-widget", 3));
     self.draggableTree = ko.observable(bareWidgetBuilder("Tree", "tree-widget", 6)); // Deprecated
     self.draggableHeatmap = ko.observable(bareWidgetBuilder("Heatmap", "heatmap-widget", 6));
-    self.draggableCounter = ko.observable(bareWidgetBuilder("Counter", "hit-widget", 3));
+    self.draggableCounter = ko.observable(bareWidgetBuilder("Counter", "hit-widget", 6));
     self.draggableBucket = ko.observable(bareWidgetBuilder("Chart", "bucket-widget", 6));
     self.draggableTimeline = ko.observable(bareWidgetBuilder("Timeline", "timeline-widget", 6));
     self.draggableGradienMap = ko.observable(bareWidgetBuilder("Gradient Map", "gradient-map-widget", 6));

+ 7 - 1
desktop/libs/dashboard/src/dashboard/templates/common_search.mako

@@ -4137,7 +4137,13 @@ $(document).ready(function () {
       var $gridster = $('.gridster>ul').data('gridster');
       $('.gridster>ul>li.gs-w').each(function () {
         var $el = $(this);
-        $gridster.resize_widget($el, parseInt($el.data('sizex')), Math.floor($el.find('.card-widget').height() / WIDGET_BASE_HEIGHT));
+        var newYSize = Math.floor($el.find('.card-widget').height() / WIDGET_BASE_HEIGHT);
+        $gridster.resize_widget($el, parseInt($el.data('sizex')), newYSize, function() {
+          var scrollableDifference = $el[0].scrollHeight - $el[0].clientHeight;
+          if (scrollableDifference > 0) {
+            $gridster.resize_widget($el, parseInt($el.data('sizex')), newYSize + Math.ceil(scrollableDifference / WIDGET_BASE_HEIGHT));
+          }
+        });
       });
       huePubSub.publish('gridster.clean.whitespace');
     }