diff options
| author | Jacob Schatz <jschatz@gitlab.com> | 2016-04-20 22:26:21 +0000 |
|---|---|---|
| committer | Jacob Schatz <jschatz@gitlab.com> | 2016-04-20 22:26:21 +0000 |
| commit | 7dc16fe6ba58a73b2586044a59d133c70d7fa419 (patch) | |
| tree | 669f6ad9485d3dd0fe1b05d7549fdf6c6258d550 /app/assets | |
| parent | 7e6d59067eb614a139cfa438d4c9f9f9f5368a47 (diff) | |
| parent | 3602aa7d687995b7c4f6d8bf7cc4eea45a6cd754 (diff) | |
| download | gitlab-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.coffee | 43 |
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 |
