Add basic sorting to management interface
This commit is contained in:
parent
42fd1973b8
commit
6cf327226d
@ -21,6 +21,7 @@ type BookmarkManager struct {
|
|||||||
type SearchOptions struct {
|
type SearchOptions struct {
|
||||||
Query string
|
Query string
|
||||||
Tags []string
|
Tags []string
|
||||||
|
Sort string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBookmarkManager(db *DB) *BookmarkManager {
|
func NewBookmarkManager(db *DB) *BookmarkManager {
|
||||||
@ -138,10 +139,22 @@ func (m *BookmarkManager) Search(opts SearchOptions) ([]entity.Bookmark, error)
|
|||||||
bhQuery = bolthold.Query(*bhQuery.And("Tags").ContainsAll(bolthold.Slice(opts.Tags)...))
|
bhQuery = bolthold.Query(*bhQuery.And("Tags").ContainsAll(bolthold.Slice(opts.Tags)...))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if opts.Sort == "title" {
|
||||||
|
bhQuery.SortBy("Info.Title")
|
||||||
|
} else if opts.Sort == "created" {
|
||||||
|
bhQuery.SortBy("TimestampCreated")
|
||||||
|
} else if opts.Sort == "scraped" {
|
||||||
|
bhQuery.SortBy("TimestampLastScraped")
|
||||||
|
|
||||||
|
} else {
|
||||||
|
bhQuery.SortBy("ID")
|
||||||
|
}
|
||||||
|
|
||||||
out := []entity.Bookmark{}
|
out := []entity.Bookmark{}
|
||||||
err := m.db.store.ForEach(&bhQuery,
|
err := m.db.store.ForEach(&bhQuery,
|
||||||
func(bm *entity.Bookmark) error {
|
func(bm *entity.Bookmark) error {
|
||||||
out = append(out, *bm)
|
out = append(out, *bm)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -13,8 +13,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ template "tags_widget.html" . }}
|
{{ template "tags_widget.html" . }}
|
||||||
|
{{ template "manage_results.html" . }}
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
{{ template "manage_results.html" . }}
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@ -2,10 +2,10 @@
|
|||||||
<table id="manage-results">
|
<table id="manage-results">
|
||||||
<tr>
|
<tr>
|
||||||
<th> </th>
|
<th> </th>
|
||||||
<th>title/url</th>
|
<th hx-post="/manage/results?sort=title" hx-target="#manage-results">title/url</th>
|
||||||
<th>tags</th>
|
<th>tags</th>
|
||||||
<th class="show-for-large">created</th>
|
<th hx-post="/manage/results?sort=created" hx-target="#manage-results" class="show-for-large">created</th>
|
||||||
<th class="show-for-large">scraped</th>
|
<th hx-post="/manage/results?sort=scraped" hx-target="#manage-results" class="show-for-large">scraped</th>
|
||||||
</tr>
|
</tr>
|
||||||
{{ range .bookmarks }}
|
{{ range .bookmarks }}
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -92,14 +92,14 @@ func Create(bmm *db.BookmarkManager, cmm *db.ConfigManager) *Server {
|
|||||||
r.POST("/manage/results", func(c *gin.Context) {
|
r.POST("/manage/results", func(c *gin.Context) {
|
||||||
query := c.PostForm("query")
|
query := c.PostForm("query")
|
||||||
tags := []string{}
|
tags := []string{}
|
||||||
|
sort := c.Query("sort")
|
||||||
|
|
||||||
if c.PostForm("tags_hidden") != "" {
|
if c.PostForm("tags_hidden") != "" {
|
||||||
tags = strings.Split(c.PostForm("tags_hidden"), "|")
|
tags = strings.Split(c.PostForm("tags_hidden"), "|")
|
||||||
}
|
}
|
||||||
allBookmarks, _ := bmm.Search(db.SearchOptions{Query: query, Tags: tags})
|
allBookmarks, _ := bmm.Search(db.SearchOptions{Query: query, Tags: tags, Sort: sort})
|
||||||
meta := gin.H{"config": config, "bookmarks": allBookmarks}
|
meta := gin.H{"config": config, "bookmarks": allBookmarks}
|
||||||
|
|
||||||
log.Printf("query is %s, tags %v", query, tags)
|
|
||||||
|
|
||||||
c.HTML(http.StatusOK,
|
c.HTML(http.StatusOK,
|
||||||
"manage_results.html", meta,
|
"manage_results.html", meta,
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user