diff --git a/web/main.go b/web/main.go index 3f4eba9..f8fdc8d 100644 --- a/web/main.go +++ b/web/main.go @@ -430,6 +430,7 @@ func main() { IpCount: len(uniqueIpHashes), Pinned: thread.Pinned, Locked: thread.Locked, + BumpedAt: thread.BumpedAt, }) } diff --git a/web/static/index.js b/web/static/index.js index d9f2584..7b8900b 100644 --- a/web/static/index.js +++ b/web/static/index.js @@ -71,7 +71,7 @@ function highlightPost(postId, e, status = true) { } function resizeCatalogPreviewImgs() { - const value = $("selectSortBy").value; + const value = $("selectResize").value; const postsImages = Array.from(document.querySelectorAll(".catalog-preview img")); for (const postImage of postsImages) { switch (value) { @@ -105,6 +105,25 @@ function applyCatalogSearch() { } } +function applyCatalogSort(desc = true) { + const sortBy = $("selectSortBy").value; + + const catalog = document.getElementById('catalog'); + const previews = Array.from(catalog.children); + + previews.sort((a, b) => { + const pinDiff = (+b.dataset.pinned) - (+a.dataset.pinned); + if (pinDiff !== 0) return pinDiff; + + const bumpDiff = (+a.dataset[sortBy]) - (+b.dataset[sortBy]); + return desc ? -bumpDiff : bumpDiff; + }); + + const frag = document.createDocumentFragment(); + previews.forEach(el => frag.appendChild(el)); + catalog.appendChild(frag); +} + function currentBoardSlug() { return window.location.pathname.split("/")[1] || ""; } diff --git a/web/views/board.templ b/web/views/board.templ index 2adbd82..852d223 100644 --- a/web/views/board.templ +++ b/web/views/board.templ @@ -6,6 +6,7 @@ import ( "github.com/dominicf2001/comfychan/internal/util" "github.com/dominicf2001/comfychan/web/views/shared" "strconv" + "time" ) templ BoardHeader(board database.Board) { @@ -32,10 +33,15 @@ templ Board(board database.Board, isAdmin bool) {