summaryrefslogtreecommitdiff
path: root/app/assets
diff options
context:
space:
mode:
authorJacob Schatz <jschatz@gitlab.com>2016-04-20 22:26:21 +0000
committerJacob Schatz <jschatz@gitlab.com>2016-04-20 22:26:21 +0000
commit7dc16fe6ba58a73b2586044a59d133c70d7fa419 (patch)
tree669f6ad9485d3dd0fe1b05d7549fdf6c6258d550 /app/assets
parent7e6d59067eb614a139cfa438d4c9f9f9f5368a47 (diff)
parent3602aa7d687995b7c4f6d8bf7cc4eea45a6cd754 (diff)
downloadgitlab-ce-7dc16fe6ba58a73b2586044a59d133c70d7fa419.tar.gz
Merge branch 'issue_14678' into 'master'
Refresh page according remaining todos Fixes #14678 See merge request !3428
Diffstat (limited to 'app/assets')
-rw-r--r--app/assets/javascripts/todos.js.coffee43
1 files changed, 42 insertions, 1 deletions
diff --git a/app/assets/javascripts/todos.js.coffee b/app/assets/javascripts/todos.js.coffee
index 00d2b641723..10e698d6a54 100644
--- a/app/assets/javascripts/todos.js.coffee
+++ b/app/assets/javascripts/todos.js.coffee
@@ -1,5 +1,11 @@
class @Todos
- constructor: (@name) ->
+ constructor: (opts = {}) ->
+ {
+ @el = $('.js-todos-options')
+ } = opts
+
+ @perPage = @el.data('perPage')
+
@clearListeners()
@initBtnListeners()
@@ -26,6 +32,7 @@ class @Todos
dataType: 'json'
data: '_method': 'delete'
success: (data) =>
+ @redirectIfNeeded data.count
@clearDone $this.closest('li')
@updateBadges data
@@ -57,6 +64,40 @@ class @Todos
$('.todos-pending .badge, .todos-pending-count').text data.count
$('.todos-done .badge').text data.done_count
+ getTotalPages: ->
+ @el.data('totalPages')
+
+ getCurrentPage: ->
+ @el.data('currentPage')
+
+ getTodosPerPage: ->
+ @el.data('perPage')
+
+ redirectIfNeeded: (total) ->
+ currPages = @getTotalPages()
+ currPage = @getCurrentPage()
+
+ # Refresh if no remaining Todos
+ if not total
+ location.reload()
+ return
+
+ # Do nothing if no pagination
+ return if not currPages
+
+ newPages = Math.ceil(total / @getTodosPerPage())
+ url = location.href # Includes query strings
+
+ # If new total of pages is different than we have now
+ if newPages isnt currPages
+ # Redirect to previous page if there's one available
+ if currPages > 1 and currPage is currPages
+ pageParams =
+ page: currPages - 1
+ url = gl.utils.mergeUrlParams(pageParams, url)
+
+ Turbolinks.visit(url)
+
goToTodoUrl: (e)->
todoLink = $(this).data('url')
return unless todoLink