Commit 251240c0 authored by Alfredo Sumaran's avatar Alfredo Sumaran

Refresh page according remaining todos

parent a5fb9980
class @Todos class @Todos
PER_PAGE = 20
constructor: (@name) -> constructor: (@name) ->
@clearListeners() @clearListeners()
@initBtnListeners() @initBtnListeners()
...@@ -24,6 +26,7 @@ class @Todos ...@@ -24,6 +26,7 @@ class @Todos
dataType: 'json' dataType: 'json'
data: '_method': 'delete' data: '_method': 'delete'
success: (data) => success: (data) =>
@redirectIfNeeded data.count
@clearDone $this.closest('li') @clearDone $this.closest('li')
@updateBadges data @updateBadges data
...@@ -54,3 +57,43 @@ class @Todos ...@@ -54,3 +57,43 @@ class @Todos
updateBadges: (data) -> updateBadges: (data) ->
$('.todos-pending .badge, .todos-pending-count').text data.count $('.todos-pending .badge, .todos-pending-count').text data.count
$('.todos-done .badge').text data.done_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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment