From 1cf6d415b7e9b580c7a683a07f3325e80455e585 Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Fri, 23 May 2014 13:57:15 +0200 Subject: [PATCH] SONAR-5007 Fix infinite scrolling --- .../src/main/coffee/coding-rules/app.coffee | 38 +++++++++++-------- .../views/coding-rules-list-view.coffee | 13 +++---- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/sonar-server/src/main/coffee/coding-rules/app.coffee b/sonar-server/src/main/coffee/coding-rules/app.coffee index 2b690a931ae..100614eb00d 100644 --- a/sonar-server/src/main/coffee/coding-rules/app.coffee +++ b/sonar-server/src/main/coffee/coding-rules/app.coffee @@ -131,6 +131,11 @@ requirejs [ # Optimize requested fields _.extend fetchQuery, f: 'name,lang,status' + if @codingRulesListView + scrollOffset = jQuery('.navigator-results')[0].scrollTop + else + scrollOffset = 0 + @layout.showSpinner 'resultsRegion' @layout.showSpinner 'facetsRegion' unless fromFacets || !firstPage jQuery.ajax @@ -150,12 +155,16 @@ requirejs [ pageIndex: r.p pageSize: r.ps pages: 1 + (r.total / r.ps) + @codingRulesListView = new CodingRulesListView app: @ collection: @codingRules @layout.resultsRegion.show @codingRulesListView @codingRulesListView.selectFirst() + unless firstPage + jQuery('.navigator-results')[0].scrollTop = scrollOffset + unless fromFacets @codingRulesFacetsView = new CodingRulesFacetsView app: @ @@ -349,25 +358,24 @@ requirejs [ # Call app before start the application appXHR = jQuery.ajax url: "#{baseUrl}/api/rules/app" + .done (r) -> + App.appState = new Backbone.Model + App.state = new Backbone.Model + App.canWrite = r.canWrite + App.qualityProfiles = r.qualityprofiles + App.languages = r.languages + App.repositories = r.repositories + App.statuses = r.statuses + App.characteristics = r.characteristics + + App.facetPropertyToLabels = + 'languages': App.languages + 'repositories': App.repositories # Message bundles l10nXHR = window.requestMessages() - jQuery.when(appXHR, l10nXHR) - .done (r) -> - App.appState = new Backbone.Model - App.state = new Backbone.Model - App.canWrite = r.canWrite - App.qualityProfiles = r.qualityprofiles - App.languages = r.languages - App.repositories = r.repositories - App.statuses = r.statuses - App.characteristics = r.characteristics - - App.facetPropertyToLabels = - 'languages': App.languages - 'repositories': App.repositories - + jQuery.when(appXHR, l10nXHR).done -> # Remove the initial spinner jQuery('#coding-rules-page-loader').remove() diff --git a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-list-view.coffee b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-list-view.coffee index 3c9eb0b3d29..7bd846b35bb 100644 --- a/sonar-server/src/main/coffee/coding-rules/views/coding-rules-list-view.coffee +++ b/sonar-server/src/main/coffee/coding-rules/views/coding-rules-list-view.coffee @@ -29,22 +29,21 @@ define [ key 'up', 'list', => @selectPrev() key 'down', 'list', => @selectNext() - that = @ $scrollEl = jQuery('.navigator-results') scrollEl = $scrollEl.get(0) - onScroll = -> - if (scrollEl.offsetHeight + scrollEl.scrollTop >= scrollEl.scrollHeight) - that.options.app.fetchNextPage() - throttledScroll = _.throttle(onScroll, 300) - $scrollEl.off('scroll').on('scroll', throttledScroll) + onScroll = => + if scrollEl.offsetHeight + scrollEl.scrollTop >= scrollEl.scrollHeight + @options.app.fetchNextPage() + throttledScroll = _.throttle onScroll, 300 + $scrollEl.off('scroll').on 'scroll', throttledScroll close: -> - super key.unbind 'up', 'list' key.unbind 'down', 'list' scrollEl = jQuery '.navigator-results' scrollEl.off 'scroll'; + super selectIssue: (el, open) -> -- 2.39.5