From e1de5d1538db6872727280771e2be0a8acc41843 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 20 Jun 2017 22:36:15 +0200 Subject: Custom pagination on ranking pages Fixes #8 --- http/res/ranking.js | 27 +++++++++++++++++++++++++-- templates/ranking.html | 17 ++++++++++++++++- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/http/res/ranking.js b/http/res/ranking.js index e36a992..f5b3d5e 100644 --- a/http/res/ranking.js +++ b/http/res/ranking.js @@ -82,6 +82,9 @@ var ranking = { allParams.forEach(function(param) { paramsChanged |= ranking.paramChanged(params, param); }); + if (ranking.paramChanged(params, 'pagesize')) { + $('table.data-table').removeAttr('data-paginate'); + } $('button.btn-primary').removeClass('btn-primary'); params.forEach(function(values, param) { values.forEach(function(value) { @@ -114,7 +117,11 @@ var ranking = { } $('table.data-table, .filters .panel-body').css('opacity', 1); ranking.filtersDisabled = false; - var pagesize = 40; + ranking.paginate(params); + }, + + paginate: function(params) { + var pagesize = params.get('pagesize') ? parseInt(params.get('pagesize')[0]) : parseInt($('select#pagesize').val()); var page = params.get('page') || [0]; var count = $('table.table-paginate').paginate(pagesize, parseInt(page[0])); $('table.data-table tbody tr[data-paginate-visible=1]').eq(0).addClass('gold'); @@ -122,6 +129,7 @@ var ranking = { $('table.data-table tbody tr[data-paginate-visible=1]').eq(2).addClass('bronze'); ranking.buildPaginator('#top-paginator', count, pagesize, page[0] || 1); ranking.buildPaginator('#bottom-paginator', count, pagesize, page[0] || 1); + $(document).trigger('pagesizeChanged', { 'count': count, 'size': pagesize }); }, filtersDisabled: false, @@ -136,7 +144,7 @@ var ranking = { row.hide(); hidden = true; } - } else if (param != 'page') { + } else if (param.substr(0, 4) != 'page') { if (value.indexOf(row.find('td.' + param).text().trim()) == -1) { row.hide(); hidden = true; @@ -266,7 +274,22 @@ var ranking = { }, $(this)); }); + $('select#pagesize').change(function() { + $('table.data-table').removeAttr('data-paginate'); + handleParams(function(target, ev) { + var params = ranking.parseHash(location.hash); + params.delete('page'); + params.set('pagesize', [parseInt(target.val())]); + return params; + }, $(this)); + }); + $(document).on('click', 'button.paginator-prev, button.paginator-next, button.paginator-page', ranking.changePage); + + $(document).on('pagesizeChanged', function(ev, params) { + $('span#paginate-count').text(params.count); + $('select#pagesize').val(params.size); + }); } }; diff --git a/templates/ranking.html b/templates/ranking.html index 6451c35..7c10843 100644 --- a/templates/ranking.html +++ b/templates/ranking.html @@ -149,7 +149,22 @@ -
+
+
+
+
Na stronÄ™:
+
+ +
+ razem: 1000 +
+

-- cgit v1.2.3