diff --git a/web/pgadmin/browser/static/js/collection.js b/web/pgadmin/browser/static/js/collection.js index aa758afd..6722b7c5 100644 --- a/web/pgadmin/browser/static/js/collection.js +++ b/web/pgadmin/browser/static/js/collection.js @@ -188,7 +188,7 @@ define([ 'remove': function() { if (this.grid) { if (this.grid.collection) { - this.grid.collection.reset(null, {silent: true}); + this.grid.collection.reset({silent: true}); delete (this.grid.collection); } delete (this.grid); diff --git a/web/pgadmin/misc/statistics/static/js/statistics.js b/web/pgadmin/misc/statistics/static/js/statistics.js index cfd573e1..5441f883 100644 --- a/web/pgadmin/misc/statistics/static/js/statistics.js +++ b/web/pgadmin/misc/statistics/static/js/statistics.js @@ -104,7 +104,9 @@ define('misc.statistics', [ offText: gettext('False'), onColor: 'success', offColor: 'primary', - size: 'mini', + size: 'small', + width: null, + height: null, } ); @@ -117,7 +119,7 @@ define('misc.statistics', [ _.bindAll( this, 'showStatistics', 'panelVisibilityChanged', - '__createMultiLineStatistics', '__createSingleLineStatistics'); + '__createMultiLineStatistics', '__createSingleLineStatistics', '__loadMoreRows'); _.extend( this, { @@ -253,10 +255,22 @@ define('misc.statistics', [ clearTimeout(timer); $msgContainer.text(''); if (res.data) { - var data = res.data; + var data = self.data = res.data; if (node.hasCollectiveStatistics || data['rows'].length > 1) { + // Listen scroll event to load more rows + pgBrowser.Events.on( + 'pgadmin-browser:panel-statistics:' + + wcDocker.EVENT.SCROLLED, + self.__loadMoreRows + ); self.__createMultiLineStatistics.call(self, data, node.statsPrettifyFields); } else { + // Do not listen the scroll event + pgBrowser.Events.off( + 'pgadmin-browser:panel-statistics:' + + wcDocker.EVENT.SCROLLED, + self.__loadMoreRows + ); self.__createSingleLineStatistics.call(self, data, node.statsPrettifyFields); } @@ -386,7 +400,17 @@ define('misc.statistics', [ } - this.collection.reset(rows); + this.collection.reset(rows.splice(0, 50)); + }, + + __loadMoreRows: function() { + let elem = $('.pg-panel-statistics-container').closest('.wcFrameCenter')[0]; + if ((elem.scrollHeight - 10) < elem.scrollTop + elem.offsetHeight) { + var rows = this.data['rows']; + if (rows.length > 0) { + this.collection.add(rows.splice(0, 50)); + } + } }, __createSingleLineStatistics: function(data, prettifyFields) {