marky

Lightweight bookmarking + plaintext archive
Log | Files | Refs | README | LICENSE

commit ba381a0d8736414280ff50d3f5bdee45ba5d5e97
parent 0df5a795894a1355d2ec4d026c07a952b01d33c9
Author: David Eisinger <[email protected]>
Date:   Mon, 13 Oct 2025 00:13:46 -0400

Add pagination stats

Diffstat:
Minternal/api.go | 2+-
Minternal/web/index.html | 3+++
Minternal/web/styles.css | 2++
Minternal/web/user.html | 6++++++
4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/internal/api.go b/internal/api.go @@ -542,7 +542,7 @@ func NewHandlerWithConfig(db *DB, cfg HandlerConfig) (http.Handler, error) { if totalPages < 1 { totalPages = 1 } - pageObj := map[string]any{"page": page, "size": size, "total": totalPages, "username": u.Username, "owner": isOwnerAuthorized(r, u, db)} + pageObj := map[string]any{"page": page, "size": size, "total": totalPages, "count": total, "username": u.Username, "owner": isOwnerAuthorized(r, u, db)} if query != "" { pageObj["query"] = query pageObj["queryEncoded"] = url.QueryEscape(query) diff --git a/internal/web/index.html b/internal/web/index.html @@ -84,6 +84,9 @@ <input name="q" type="search" placeholder="Search…" :value="pager && pager.query ? pager.query : ''" /> <button>Search</button> </form> + <p v-if="pager" class="muted results-summary"> + Displaying {{ (pager.count||0) === 0 ? 0 : ((pager.page-1)*pager.size + 1) }}-{{ (pager.count||0) === 0 ? 0 : ((pager.page-1)*pager.size + results.length) }} of {{ pager.count || 0 }} bookmarks + </p> <div class="results"> <article v-for="b in results" :key="b.id" :class="['card', { private: !b.public }]"> <h3> diff --git a/internal/web/styles.css b/internal/web/styles.css @@ -13,6 +13,8 @@ header { border-bottom: 1px solid #ddd3; } .container h1 a { color: inherit; text-decoration: none; } .container h1 a:hover { text-decoration: underline; } .muted { color: #666; margin: 0 0 8px 0; font-size: 13px; } +/* Ensure the results summary has balanced vertical spacing */ +.results-summary { margin-top: 8px; } .top-links { font-size: 13px; color: #555; display: flex; flex-direction: column; align-items: flex-end; text-align: right; gap: 10px; } .top-links .user-line { white-space: nowrap; } .top-links a { color: inherit; } diff --git a/internal/web/user.html b/internal/web/user.html @@ -46,6 +46,9 @@ <input name="q" type="search" placeholder="Search…" :value="pager && pager.query ? pager.query : ''" /> <button>Search</button> </form> + <p v-if="pager" class="muted results-summary"> + Displaying {{ (pager.count||0) === 0 ? 0 : ((pager.page-1)*pager.size + 1) }}-{{ (pager.count||0) === 0 ? 0 : ((pager.page-1)*pager.size + results.length) }} of {{ pager.count || 0 }} bookmarks + </p> <div class="results"> <article v-for="b in results" :key="b.id" :class="['card', { private: !b.public }]"> <h3><a :href="b.url" target="_blank" rel="noopener noreferrer">{{ b.title || b.url }}</a></h3> @@ -122,6 +125,9 @@ <a :href="`/u:${viewUser}.rss`" title="User RSS feed">RSS</a> </span> </h2> + <p v-if="pager" class="muted results-summary"> + Displaying {{ (pager.count||0) === 0 ? 0 : ((pager.page-1)*pager.size + 1) }}-{{ (pager.count||0) === 0 ? 0 : ((pager.page-1)*pager.size + results.length) }} of {{ pager.count || 0 }} bookmarks + </p> <div class="results"> <article v-for="b in results" :key="b.id" class="card"> <h3><a :href="b.url" target="_blank" rel="noopener noreferrer">{{ b.title || b.url }}</a></h3>