From 92fc37adb42fedfab67c030b19b75f36709455ce Mon Sep 17 00:00:00 2001 From: Joxit Date: Tue, 4 Jun 2019 22:06:14 +0200 Subject: [PATCH] feat(pagination): Add handler to pagination buttons --- src/scripts/script.js | 4 +++- src/scripts/utils.js | 12 +++++++++++- src/tags/app.tag | 18 ++++++++++++++++++ src/tags/pagination.tag | 11 ++++++++++- src/tags/taglist.tag | 5 +++++ 5 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/scripts/script.js b/src/scripts/script.js index 5f08bdc..a48f4b2 100644 --- a/src/scripts/script.js +++ b/src/scripts/script.js @@ -85,7 +85,7 @@ registryUI.removeServer = function(url) { } registryUI.updateHistory = function(url) { - history.pushState(null, '', (url ? '?url=' + registryUI.encodeURI(url) : '?') + window.location.hash); + registryUI.updateQueryString({ url: registryUI.encodeURI(url) }) registryUI._url = url; } @@ -100,10 +100,12 @@ registryUI.getUrlQueryParam = function () { }; registryUI.encodeURI = function(url) { + if (!url) { return; } return url.indexOf('&') < 0 ? window.encodeURIComponent(url) : btoa(url); }; registryUI.decodeURI = function(url) { + if (!url) { return; } return url.startsWith('http') ? window.decodeURIComponent(url) : atob(url); }; diff --git a/src/scripts/utils.js b/src/scripts/utils.js index 4087294..878685e 100644 --- a/src/scripts/utils.js +++ b/src/scripts/utils.js @@ -76,7 +76,7 @@ registryUI.getPage = function(elts, page, limit) { registryUI.getNumPages = function(elts, limit) { if (!limit) { limit = 100; } if (!elts) { return 0; } - return Math.trunc((elts.length / limit) % 10); + return Math.trunc((elts.length / limit) % 10) + 1; } registryUI.getPageLabels = function(page, nPages) { @@ -95,4 +95,14 @@ registryUI.getPageLabels = function(page, nPages) { pageLabels.push({'icon': 'last_page', page: nPages}); } return pageLabels; +} + +registryUI.updateQueryString = function(qs) { + var search = ''; + for (var key in qs) { + if (qs[key] !== undefined) { + search += (search.length > 0 ? '&' : '?') +key + '=' + qs[key]; + } + } + history.pushState(null, '', search + window.location.hash); } \ No newline at end of file diff --git a/src/tags/app.tag b/src/tags/app.tag index e9a6dd4..01c9175 100644 --- a/src/tags/app.tag +++ b/src/tags/app.tag @@ -231,6 +231,24 @@ along with this program. If not, see . return qs.page !== undefined ? parseInt(qs.page.replace(/#.*/, '')) : 1; } catch(e) { return 1; } } + + registryUI.getQueryParams = function(update) { + var qs = route.query(); + update = update || {}; + for (var key in qs) { + if (qs[key] !== undefined) { + qs[key] = qs[key].replace(/#!.*/, ''); + } else { + delete qs[key]; + } + } + for (var key in update) { + if (update[key] !== undefined) { + qs[key] = update[key]; + } + } + return qs; + } route.start(true); \ No newline at end of file diff --git a/src/tags/pagination.tag b/src/tags/pagination.tag index 7ac292d..ee9df82 100644 --- a/src/tags/pagination.tag +++ b/src/tags/pagination.tag @@ -25,7 +25,16 @@ along with this program. If not, see .
\ No newline at end of file diff --git a/src/tags/taglist.tag b/src/tags/taglist.tag index 2514a2d..a2008dd 100644 --- a/src/tags/taglist.tag +++ b/src/tags/taglist.tag @@ -113,6 +113,11 @@ along with this program. If not, see . } }); + this.on('page-update', function(page) { + self.page = page; + this.update(); + }); + this._getRemoveImageTags = function() { var images = self.refs['taglist-tag'].tags['remove-image']; if (!(images instanceof Array)) {