From 788aba3d0d0bc98c0164f87cf3a4941cf4587a54 Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Sat, 14 May 2022 21:30:18 -0600 Subject: [PATCH] Fix new index page --- srv/src/api/render.go | 2 +- srv/src/api/tpl/index.html | 48 ++++++++++++++++++++++---------------- srv/src/post/post.go | 17 +++++--------- srv/src/post/post_test.go | 2 ++ static/src/assets/main.css | 5 ++++ 5 files changed, 42 insertions(+), 32 deletions(-) diff --git a/srv/src/api/render.go b/srv/src/api/render.go index 6359505..cacdb26 100644 --- a/srv/src/api/render.go +++ b/srv/src/api/render.go @@ -42,7 +42,7 @@ func mustParseTpl(name string) *template.Template { func (a *api) renderIndexHandler() http.Handler { tpl := mustParseTpl("index.html") - const pageCount = 20 + const pageCount = 10 return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { diff --git a/srv/src/api/tpl/index.html b/srv/src/api/tpl/index.html index b71dc01..1858ea8 100644 --- a/srv/src/api/tpl/index.html +++ b/srv/src/api/tpl/index.html @@ -1,28 +1,36 @@ {{ define "body" }} - -{{ if ge .PrevPage 0 }} -Previous -{{ end }} + {{ if or (ge .PrevPage 0) (ge .NextPage 0) }} +
+ + {{ if ge .PrevPage 0 }} + Newer + {{ end }} + + {{ if ge .NextPage 0 }} + Older + {{ end }} + +
+ {{ end }} -{{ if ge .NextPage 0 }} -Next {{ end }} {{ template "base.html" . }} diff --git a/srv/src/post/post.go b/srv/src/post/post.go index cadfcfc..3eab9bc 100644 --- a/srv/src/post/post.go +++ b/srv/src/post/post.go @@ -31,7 +31,7 @@ type Post struct { ID string Title string Description string - Tags []string + Tags []string // only alphanumeric supported Series string Body string } @@ -199,12 +199,13 @@ func (s *store) get( query := fmt.Sprintf( `SELECT - p.id, p.title, p.description, p.series, pt.tag, + p.id, p.title, p.description, p.series, GROUP_CONCAT(pt.tag), p.published_at, p.last_updated_at, p.body FROM posts p LEFT JOIN post_tags pt ON (p.id = pt.post_id) `+where+` + GROUP BY (p.id) ORDER BY p.published_at %s, p.title %s`, s.order, s.order, ) @@ -243,18 +244,12 @@ func (s *store) get( return nil, fmt.Errorf("scanning row: %w", err) } - if tag.Valid { - - if l := len(posts); l > 0 && posts[l-1].ID == post.ID { - posts[l-1].Tags = append(posts[l-1].Tags, tag.String) - continue - } + post.Series = series.String - post.Tags = append(post.Tags, tag.String) + if tag.String != "" { + post.Tags = strings.Split(tag.String, ",") } - post.Series = series.String - if publishedAt.Valid { post.PublishedAt = time.Unix(publishedAt.Int64, 0).UTC() } diff --git a/srv/src/post/post_test.go b/srv/src/post/post_test.go index c5587c8..db247d1 100644 --- a/srv/src/post/post_test.go +++ b/srv/src/post/post_test.go @@ -159,6 +159,8 @@ func TestStore(t *testing.T) { h.testStoredPost(3), } + posts[1].Tags = []string{"1", "2"} + for _, post := range posts { assert.NoError(t, h.store.Set(post.Post, now)) } diff --git a/static/src/assets/main.css b/static/src/assets/main.css index e547067..cc4aedf 100644 --- a/static/src/assets/main.css +++ b/static/src/assets/main.css @@ -98,3 +98,8 @@ footer { { max-width: 100%; } + +#page-turner { + height: 2rem; + font-size: 2rem; +}