]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5007 Fix infinite scrolling
authorStas Vilchik <vilchiks@gmail.com>
Fri, 23 May 2014 11:57:15 +0000 (13:57 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Fri, 23 May 2014 11:57:15 +0000 (13:57 +0200)
sonar-server/src/main/coffee/coding-rules/app.coffee
sonar-server/src/main/coffee/coding-rules/views/coding-rules-list-view.coffee

index 2b690a931ae5cd455b60a94638b48719a45cea92..100614eb00d83a4b1fdb3ee4e2b221142d0a5940 100644 (file)
@@ -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()
 
index 3c9eb0b3d2964c2e326a6097b2be49307f476a1a..7bd846b35bb39bcaf13006879f6f0397bf4074dd 100644 (file)
@@ -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) ->