From aea56efe748fb4d46176558e0d7066970404bf87 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Thu, 17 Mar 2022 20:20:18 +0100 Subject: [PATCH] Fix pagination buttons --- .../plugins/core/qdn/websites.src.js | 50 +++++++++++-------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/qortal-ui-plugins/plugins/core/qdn/websites.src.js b/qortal-ui-plugins/plugins/core/qdn/websites.src.js index 4f4c00a1..851de9d5 100644 --- a/qortal-ui-plugins/plugins/core/qdn/websites.src.js +++ b/qortal-ui-plugins/plugins/core/qdn/websites.src.js @@ -276,10 +276,10 @@ class Websites extends LitElement { render(html`${this.renderInfo(data.item)}`, root) }}> - { + { render(html`${this.renderPublishedBy(data.item)}`, root) }}> - + { render(html`${this.renderFollowUnfollowButton(data.item)}`, root); }}> @@ -292,7 +292,7 @@ class Websites extends LitElement {

Websites

- + { render(html`${this.renderAvatar(data.item)}`, root) }}> @@ -301,10 +301,10 @@ class Websites extends LitElement { render(html`${this.renderInfo(data.item)}`, root) }}> - { + { render(html`${this.renderPublishedBy(data.item)}`, root) }}> - + { render(html`${this.renderFollowUnfollowButton(data.item)}`, root); }}> @@ -315,10 +315,10 @@ class Websites extends LitElement {
- ${this.resources == null ? html` + ${this.pageRes == null ? html` Loading... `: ''} - ${this.isEmptyArray(this.resources) ? html` + ${this.isEmptyArray(this.pageRes) ? html` No websites available `: ''}
@@ -353,7 +353,7 @@ class Websites extends LitElement { }}>
- ${this.webResources == null ? html` + ${this.webResources == null ? html` Loading... `: ''} ${this.isEmptyArray(this.webResources) ? html` @@ -391,7 +391,7 @@ class Websites extends LitElement { }}> - ${this.blockResources == null ? html` + ${this.blockResources == null ? html` Loading... `: ''} ${this.isEmptyArray(this.blockResources) ? html` @@ -595,11 +595,11 @@ class Websites extends LitElement { async getData(offset) { const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node] const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port - let jsonUrl = `${nodeUrl}/arbitrary/resources?service=WEBSITE&default=true&limit=20&offset=${offset}&reverse=false&includestatus=true&includemetadata=true`; - const jsonRes = await fetch(jsonUrl); - const jsonData = await jsonRes.json(); + let jsonUrl = `${nodeUrl}/arbitrary/resources?service=WEBSITE&default=true&limit=20&offset=${offset}&reverse=false&includestatus=true&includemetadata=true` + const jsonRes = await fetch(jsonUrl) + const jsonData = await jsonRes.json() - this.pageRes = jsonData; + this.pageRes = jsonData } async updateItemsFromPage(page) { @@ -608,13 +608,21 @@ class Websites extends LitElement { } if (!this.pages) { - this.pages = Array.apply(null, { length: Math.ceil(this.resources.length / this.resourcesGrid.pageSize) }).map((item, index) => { + this.pages = Array.apply(null, { length: Math.ceil(this.resources.length / 20) }).map((item, index) => { return index + 1 }) + let offset = 0; + const prevBtn = document.createElement('button') prevBtn.textContent = '<' prevBtn.addEventListener('click', () => { + if (parseInt(this.pagesControl.querySelector('[selected]').textContent) > 1) { + offset = (parseInt(this.pagesControl.querySelector('[selected]').textContent) - 2) * 20; + } else { + offset = 0; + } + this.getData(offset); const selectedPage = parseInt(this.pagesControl.querySelector('[selected]').textContent) this.updateItemsFromPage(selectedPage - 1) }) @@ -623,7 +631,7 @@ class Websites extends LitElement { this.pages.forEach((pageNumber) => { const pageBtn = document.createElement('button') pageBtn.textContent = pageNumber - let offset = 1; + let offset = 0; pageBtn.addEventListener('click', (e) => { if (parseInt(e.target.textContent) > 1) { offset = (parseInt(e.target.textContent) - 1) * 20; @@ -642,6 +650,12 @@ class Websites extends LitElement { const nextBtn = window.document.createElement('button') nextBtn.textContent = '>' nextBtn.addEventListener('click', () => { + if (parseInt(this.pagesControl.querySelector('[selected]').textContent) >= 1) { + offset = ((parseInt(this.pagesControl.querySelector('[selected]').textContent) + 1) * 20) - 20; + } else { + offset = 0; + } + this.getData(offset); const selectedPage = parseInt(this.pagesControl.querySelector('[selected]').textContent) this.updateItemsFromPage(selectedPage + 1) }) @@ -670,16 +684,12 @@ class Websites extends LitElement { } } }) - let start = (page - 1) * this.resourcesGrid.pageSize - let end = page * this.resourcesGrid.pageSize - - this.resourcesGrid.items = this.pageRes } async showWebsites() { await this.getArbitraryResources() - await this.getResourcesGrid() await this.getData(0) + await this.getResourcesGrid() await this.updateItemsFromPage(1, true) }