Refresh page according remaining todos
This commit is contained in:
parent
a5fb998010
commit
251240c026
1 changed files with 43 additions and 0 deletions
|
@ -1,4 +1,6 @@
|
|||
class @Todos
|
||||
PER_PAGE = 20
|
||||
|
||||
constructor: (@name) ->
|
||||
@clearListeners()
|
||||
@initBtnListeners()
|
||||
|
@ -24,6 +26,7 @@ class @Todos
|
|||
dataType: 'json'
|
||||
data: '_method': 'delete'
|
||||
success: (data) =>
|
||||
@redirectIfNeeded data.count
|
||||
@clearDone $this.closest('li')
|
||||
@updateBadges data
|
||||
|
||||
|
@ -54,3 +57,43 @@ class @Todos
|
|||
updateBadges: (data) ->
|
||||
$('.todos-pending .badge, .todos-pending-count').text data.count
|
||||
$('.todos-done .badge').text data.done_count
|
||||
|
||||
getRenderedPages: ->
|
||||
$('.gl-pagination .page').length
|
||||
|
||||
getCurrentPage: ->
|
||||
parseInt($.trim($('.gl-pagination .page.active').text()))
|
||||
|
||||
redirectIfNeeded: (total) ->
|
||||
currPages = @getRenderedPages()
|
||||
currPage = @getCurrentPage()
|
||||
|
||||
newPages = Math.ceil(total / PER_PAGE)
|
||||
url = location.href # Includes query strings
|
||||
|
||||
# Refresh if no remaining Todos
|
||||
if !total
|
||||
location.reload()
|
||||
return
|
||||
|
||||
# Do nothing if no pagination
|
||||
return if !currPages
|
||||
|
||||
# If new total of pages if 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
|
||||
url = @updateQueryStringParameter(url, 'page', currPages - 1)
|
||||
|
||||
location.replace url
|
||||
|
||||
updateQueryStringParameter: (uri, key, value) ->
|
||||
separator = if uri.indexOf('?') isnt -1 then "&" else "?"
|
||||
|
||||
# Matches key and value
|
||||
regex = new RegExp("([?&])" + key + "=.*?(&|#|$)", "i")
|
||||
|
||||
if uri.match(regex)
|
||||
return uri.replace(regex, '$1' + key + "=" + value + '$2')
|
||||
|
||||
uri + separator + key + "=" + value
|
||||
|
|
Loading…
Reference in a new issue