pages tweaks:
- display no results message in main view - better view of score column in mobile view - rename: rwp:// -> search://, Score -> Match - only cache textIndex if non-zero result
This commit is contained in:
+2
-5
@@ -1,7 +1,7 @@
|
|||||||
import { LitElement, html, css } from 'lit-element';
|
import { LitElement, html, css } from 'lit-element';
|
||||||
import { wrapCss, rwpLogo, IS_APP } from './misc';
|
import { wrapCss, rwpLogo, IS_APP } from './misc';
|
||||||
|
|
||||||
import { sourceToId } from './pageutils';
|
import { sourceToId, tsToDate } from './pageutils';
|
||||||
|
|
||||||
import fasBook from '@fortawesome/fontawesome-free/svgs/solid/book.svg';
|
import fasBook from '@fortawesome/fontawesome-free/svgs/solid/book.svg';
|
||||||
|
|
||||||
@@ -9,10 +9,7 @@ import farListAlt from '@fortawesome/fontawesome-free/svgs/regular/list-alt.svg'
|
|||||||
import farResources from '@fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg';
|
import farResources from '@fortawesome/fontawesome-free/svgs/solid/puzzle-piece.svg';
|
||||||
import farPages from '@fortawesome/fontawesome-free/svgs/regular/file-image.svg';
|
import farPages from '@fortawesome/fontawesome-free/svgs/regular/file-image.svg';
|
||||||
|
|
||||||
import { tsToDate } from './pageutils';
|
|
||||||
|
|
||||||
import fasRefresh from '@fortawesome/fontawesome-free/svgs/solid/redo-alt.svg';
|
import fasRefresh from '@fortawesome/fontawesome-free/svgs/solid/redo-alt.svg';
|
||||||
import fasSearch from '@fortawesome/fontawesome-free/svgs/solid/search.svg';
|
|
||||||
import fasFullscreen from '@fortawesome/fontawesome-free/svgs/solid/desktop.svg';
|
import fasFullscreen from '@fortawesome/fontawesome-free/svgs/solid/desktop.svg';
|
||||||
import fasUnfullscreen from '@fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg';
|
import fasUnfullscreen from '@fortawesome/fontawesome-free/svgs/solid/compress-arrows-alt.svg';
|
||||||
|
|
||||||
@@ -21,7 +18,7 @@ import fasRight from '@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg';
|
|||||||
import fasMenuV from '@fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg';
|
import fasMenuV from '@fortawesome/fontawesome-free/svgs/solid/ellipsis-v.svg';
|
||||||
|
|
||||||
|
|
||||||
const RWP_SCHEME = "rwp://";
|
const RWP_SCHEME = "search://";
|
||||||
|
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|||||||
+29
-15
@@ -46,7 +46,7 @@ class Pages extends LitElement
|
|||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
"key": "",
|
"key": "",
|
||||||
"name": "Score",
|
"name": "Best Match",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "title",
|
"key": "title",
|
||||||
@@ -191,9 +191,9 @@ class Pages extends LitElement
|
|||||||
|
|
||||||
let resp = await cache.match(indexUrl);
|
let resp = await cache.match(indexUrl);
|
||||||
|
|
||||||
if (!resp) {
|
if (!resp || !Number(resp.headers.get("Content-Length"))) {
|
||||||
resp = await fetch(`${this.collInfo.apiPrefix}/textIndex`);
|
resp = await fetch(`${this.collInfo.apiPrefix}/textIndex`);
|
||||||
if (resp.status === 200) {
|
if (resp.status === 200 && Number(resp.headers.get("Content-Length"))) {
|
||||||
cache.put(indexUrl, resp.clone());
|
cache.put(indexUrl, resp.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -353,6 +353,7 @@ class Pages extends LitElement
|
|||||||
|
|
||||||
.mobile-header {
|
.mobile-header {
|
||||||
margin: 0.5rem;
|
margin: 0.5rem;
|
||||||
|
margin-left: 1.0rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
@@ -499,7 +500,7 @@ class Pages extends LitElement
|
|||||||
|
|
||||||
<div class="header columns is-hidden-mobile">
|
<div class="header columns is-hidden-mobile">
|
||||||
${this.query ? html`
|
${this.query ? html`
|
||||||
<a @click="${this.onSort}" data-key="" class="column is-1 ${this.sortKey === "" ? (this.sortDesc ? "desc" : "asc") : ''}">Score</a>` : ``}
|
<a @click="${this.onSort}" data-key="" class="column is-1 ${this.sortKey === "" ? (this.sortDesc ? "desc" : "asc") : ''}">Match</a>` : ``}
|
||||||
|
|
||||||
<a @click="${this.onSort}" data-key="ts" class="column is-2 ${this.sortKey === "ts" ? (this.sortDesc ? "desc" : "asc") : ''}">Date</a>
|
<a @click="${this.onSort}" data-key="ts" class="column is-2 ${this.sortKey === "ts" ? (this.sortDesc ? "desc" : "asc") : ''}">Date</a>
|
||||||
<a @click="${this.onSort}" data-key="title" class="column is-6 pagetitle ${this.sortKey === "title" ? (this.sortDesc ? "desc" : "asc") : ''}">Page Title</a>
|
<a @click="${this.onSort}" data-key="title" class="column is-6 pagetitle ${this.sortKey === "title" ? (this.sortDesc ? "desc" : "asc") : ''}">Page Title</a>
|
||||||
@@ -526,11 +527,12 @@ class Pages extends LitElement
|
|||||||
${this.renderPageHeader()}
|
${this.renderPageHeader()}
|
||||||
</div>
|
</div>
|
||||||
<div class="scroller" @scroll="${this.onScroll}">
|
<div class="scroller" @scroll="${this.onScroll}">
|
||||||
${this.sortedPages.map((p, i) => html`
|
${this.sortedPages.length ? html`
|
||||||
<div class="content ${this.selectedPages.has(p.id) ? 'selected' : ''}">
|
${this.sortedPages.map((p, i) => html`
|
||||||
<wr-page-entry .index="${this.query ? (this.sortDesc ? this.sortedPages.length - i : i + 1) : 0}" .editable="${this.editable}" .selected="${this.selectedPages.has(p.id)}" @sel-page="${this.onSelectToggle}" @delete-page="${this.onDeletePage}" replayPrefix="${this.collInfo.replayPrefix}" query="${this.query}" .page="${p}">
|
<div class="content ${this.selectedPages.has(p.id) ? 'selected' : ''}">
|
||||||
</wr-page-entry>
|
<wr-page-entry .index="${this.query ? (this.sortDesc ? this.sortedPages.length - i : i + 1) : 0}" .editable="${this.editable}" .selected="${this.selectedPages.has(p.id)}" @sel-page="${this.onSelectToggle}" @delete-page="${this.onDeletePage}" replayPrefix="${this.collInfo.replayPrefix}" query="${this.query}" .page="${p}">
|
||||||
</div>`)}
|
</wr-page-entry>
|
||||||
|
</div>`)}` : html`<p class="mobile-header">${this.getNoResultsMessage()}</p>`}
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
@@ -623,6 +625,14 @@ class Pages extends LitElement
|
|||||||
}
|
}
|
||||||
|
|
||||||
formatResults() {
|
formatResults() {
|
||||||
|
if (this.sortedPages.length === 1) {
|
||||||
|
return "1 Page Found";
|
||||||
|
} else {
|
||||||
|
return `${this.sortedPages.length} Pages Found`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getNoResultsMessage() {
|
||||||
if (!this.collInfo || !this.collInfo.pages.length) {
|
if (!this.collInfo || !this.collInfo.pages.length) {
|
||||||
return html`No Pages defined this archive. Check out <a href="#view=resources">Page Resources</a> to search by URL.`;
|
return html`No Pages defined this archive. Check out <a href="#view=resources">Page Resources</a> to search by URL.`;
|
||||||
}
|
}
|
||||||
@@ -635,13 +645,11 @@ class Pages extends LitElement
|
|||||||
return "Searching...";
|
return "Searching...";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.sortedPages.length) {
|
if (!this.query) {
|
||||||
return this.query ? "No Pages Found. Try changing the search query." : "No Pages Found";
|
return "No Pages Found. Try changing the search query.";
|
||||||
} else if (this.sortedPages.length === 1) {
|
|
||||||
return "1 Page Found";
|
|
||||||
} else {
|
|
||||||
return `${this.sortedPages.length} Pages Found`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return "No Pages Found";
|
||||||
}
|
}
|
||||||
|
|
||||||
onScroll(event) {
|
onScroll(event) {
|
||||||
@@ -738,6 +746,12 @@ class PageEntry extends LitElement
|
|||||||
.col-date div {
|
.col-date div {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
.col-index {
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
left: 0px;
|
||||||
|
margin-top: -0.75em;
|
||||||
|
}
|
||||||
.columns {
|
.columns {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column-reverse;
|
flex-direction: column-reverse;
|
||||||
|
|||||||
@@ -293,7 +293,7 @@
|
|||||||
|
|
||||||
"@webrecorder/wabac@github:webrecorder/wabac.js":
|
"@webrecorder/wabac@github:webrecorder/wabac.js":
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://codeload.github.com/webrecorder/wabac.js/tar.gz/a286e76e705a8686c124e755cb22fad9618f4f23"
|
resolved "https://codeload.github.com/webrecorder/wabac.js/tar.gz/c9d31d3162050b5329fbe2287c80a0270c44c461"
|
||||||
dependencies:
|
dependencies:
|
||||||
brotli "github:foliojs/brotli.js"
|
brotli "github:foliojs/brotli.js"
|
||||||
fast-xml-parser "^3.15.1"
|
fast-xml-parser "^3.15.1"
|
||||||
|
|||||||
Reference in New Issue
Block a user