From 21ddc5b7136dfea1fb18efbee4f54d9603cf69ee Mon Sep 17 00:00:00 2001 From: Ilya Kreymer Date: Wed, 14 Jun 2023 17:17:20 -0700 Subject: [PATCH] Show All Pages Option (#177) * show all pages: - add option to 'show all pages' if additional non-seed pages are present in the wacz file - only show checkbox if there are additional pages - tweak page results to just show 'Pages' or 'Pages Shown' to avoid confusion over 'Pages Found' - bump to 1.8.0 fixes #176 CHANGES: add changes for 1.8.0 --- CHANGES.md | 5 + _data/package.json | 4 +- package.json | 4 +- src/pages.js | 35 +- sw.js | 1100 ++---------------- ui.js | 2760 ++++++++++++++++++++++++++++++++++++++++---- yarn.lock | 8 +- 7 files changed, 2705 insertions(+), 1211 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index a924027..8815212 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,10 @@ ## CHANGES +v1.8.0 +- UI: Add 'Show All Pages' option to show non-seed pages that are previously only available via search +- Embeds: add 'swName' option to allow customizing 'sw.js' to a different filename +- Dependencies: Update to wabac.js 2.16.1 -- varioues loading improvements related to surt + v1.7.15 - UI: Loading: support URLs that have query/hashes after extension - Dependencies: Update to wabac.js 2.16.0 -- improved support for Multi WACZ files diff --git a/_data/package.json b/_data/package.json index ecfd7af..25cfbe0 100644 --- a/_data/package.json +++ b/_data/package.json @@ -1,7 +1,7 @@ { "name": "replaywebpage", "productName": "ReplayWeb.page", - "version": "1.7.15", + "version": "1.8.0", "description": "Serverless Web Archive Replay", "repository": "https://github.com/webrecorder/replayweb.page", "homepage": "https://replayweb.page/", @@ -14,7 +14,7 @@ "electron-log": "^4.4.1", "electron-updater": "^5.3.0", "fetch-ndjson": "^1.1.6", - "flexsearch": "^0.7.21", + "flexsearch": "^0.7.31", "keyword-mark-element": "^0.2.0", "lit": "^2.1.1", "marked": "^4.0.10", diff --git a/package.json b/package.json index ecfd7af..25cfbe0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "replaywebpage", "productName": "ReplayWeb.page", - "version": "1.7.15", + "version": "1.8.0", "description": "Serverless Web Archive Replay", "repository": "https://github.com/webrecorder/replayweb.page", "homepage": "https://replayweb.page/", @@ -14,7 +14,7 @@ "electron-log": "^4.4.1", "electron-updater": "^5.3.0", "fetch-ndjson": "^1.1.6", - "flexsearch": "^0.7.21", + "flexsearch": "^0.7.31", "keyword-mark-element": "^0.2.0", "lit": "^2.1.1", "marked": "^4.0.10", diff --git a/src/pages.js b/src/pages.js index 0f4cf64..607e2a3 100644 --- a/src/pages.js +++ b/src/pages.js @@ -29,6 +29,9 @@ class Pages extends LitElement this.loading = false; this.updatingSearch = false; + this.showAllPages = false; + this.hasExtraPages = false; + this.currList = 0; this.active = false; @@ -77,6 +80,8 @@ class Pages extends LitElement filteredPages: { type: Array }, sortedPages: { type: Array }, + showAllPages: { type: Boolean }, + query: { type: String }, defaultKey: { type: String }, @@ -120,7 +125,10 @@ class Pages extends LitElement } else if (changedProperties.has("currList")) { this.filter(); + } else if (changedProperties.has("showAllPages")) { + this.filter(); } + if (changedProperties.has("active") && this.active) { if (this.changeNeeded) { this.filter(); @@ -173,6 +181,8 @@ class Pages extends LitElement if (this.flex && this.query && this.textPages) { const results = await this.flex.searchAsync(this.query, 25); this.filteredPages = results.map(inx => this.textPages[inx]); + } else if (this.showAllPages && this.hasExtraPages) { + this.filteredPages = [...this.textPages]; } else { this.filteredPages = [...this.collInfo.pages]; } @@ -213,6 +223,9 @@ class Pages extends LitElement this.flex = flex; this.textPages = pages; + this.hasExtraPages = this.textPages && this.collInfo && this.collInfo.pages && + this.textPages.length > this.collInfo.pages.length; + return Promise.all(pages.map((page, index) => { let text = page.url; if (page.title) { @@ -526,7 +539,7 @@ class Pages extends LitElement
-
+
${this.editable && this.editing ? html`
@@ -535,7 +548,15 @@ class Pages extends LitElement ${this.editable ? html`` : html``} - ${this.formatResults()} + ${this.hasExtraPages ? html` + + + ` : ""} + + ${this.formatResults()} ${this.editable ? html`
@@ -855,19 +876,19 @@ class Pages extends LitElement formatResults() { // Default behavior: Count all available pages if (!this.query) { - const length = this.collInfo.pages.length; + const length = this.filteredPages.length; if (length === this.sortedPages.length) { - return `${length} Page${length ? "s" : ""} Found`; + return `${length} Page${length !== 1 ? "s" : ""}`; } else { - return `${this.sortedPages.length} of ${length} Pages Found`; + return `${this.sortedPages.length} of ${length} Pages Shown`; } } // ... unless they were filtered if (this.sortedPages.length === 1) { - return "1 Page Found"; + return "1 Page"; } else { - return `${this.sortedPages.length} Pages Found`; + return `${this.sortedPages.length} Pages`; } } diff --git a/sw.js b/sw.js index 5383f5d..010a955 100644 --- a/sw.js +++ b/sw.js @@ -1,979 +1,121 @@ -/*! 'sw.js is part of ReplayWeb.page (https://replayweb.page) Copyright (C) 2020-2023, Webrecorder Software. Licensed under the Affero General Public License v3.' */(()=>{var __webpack_modules__={"./index.html": -/*!********************!*\ - !*** ./index.html ***! - \********************/(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("\\n\\n\\n\\n\\nReplayWeb.page\\n\\n