From a1f09d1f143012570a62bcb2a8fe51c439ad68fb Mon Sep 17 00:00:00 2001 From: Gabriel Arakaki Giovanini Date: Fri, 18 Aug 2023 21:57:47 +0200 Subject: feat: Make mosaic reusable --- pkg/list/list.go | 6 +++--- pkg/view/media.go | 11 ++++++----- templates/album.qtpl | 21 ++------------------- templates/media.qtpl | 21 ++------------------- templates/mosaic.qtpl | 24 ++++++++++++++++++++++++ 5 files changed, 37 insertions(+), 46 deletions(-) create mode 100644 templates/mosaic.qtpl diff --git a/pkg/list/list.go b/pkg/list/list.go index 3aa9d65..b6b6b89 100644 --- a/pkg/list/list.go +++ b/pkg/list/list.go @@ -13,15 +13,15 @@ type Pair[T, U any] struct { Right U } -func Chunck[T any](slice []T, size int) [][]T { +func Distribuite[T any](slice []T, size int) [][]T { chuncks := make([][]T, size) for i := 0; i < len(slice); i += size { for x := 0; x < size; x++ { end := i + x - if end > len(slice) { - break + if end >= len(slice) { + return chuncks } chuncks[x] = append(chuncks[x], slice[end]) diff --git a/pkg/view/media.go b/pkg/view/media.go index 3124119..d5aace2 100644 --- a/pkg/view/media.go +++ b/pkg/view/media.go @@ -44,7 +44,8 @@ func getPagination(r *http.Request) *repository.Pagination { } if albumIDStr == "" { - page = 0 + id := uint(0) + albumID = &id } else if p, err := strconv.Atoi(albumIDStr); err == nil { id := uint(p) albumID = &id @@ -132,9 +133,9 @@ func (self *MediaView) GetThumbnail(w http.ResponseWriter, r *http.Request) erro } func (self *MediaView) SetMyselfIn(r *ext.Router) { - r.GET("/media/", self.Index) - r.POST("/media/", self.Index) + r.GET("/media", self.Index) + r.POST("/media", self.Index) - r.GET("/media/image/", self.GetImage) - r.GET("/media/thumbnail/", self.GetThumbnail) + r.GET("/media/image", self.GetImage) + r.GET("/media/thumbnail", self.GetThumbnail) } diff --git a/templates/album.qtpl b/templates/album.qtpl index 328c6d4..1f25bf6 100644 --- a/templates/album.qtpl +++ b/templates/album.qtpl @@ -1,5 +1,4 @@ {% import "git.sr.ht/~gabrielgio/img/pkg/database/repository" %} -{% import "git.sr.ht/~gabrielgio/img/pkg/list" %} {% code type AlbumPage struct { @@ -28,26 +27,10 @@ func (m *AlbumPage) PreloadAttr() string { {% endfor %}
-{% for _, c := range list.Chunck(p.Medias, 4) %} -
- {% for _, media := range c %} -
- {% if media.IsVideo() %} - - {% else %} -
- -
- {% endif %} -
- {% endfor %} -
-{% endfor %} +{%= Mosaic(p.Medias, p.PreloadAttr()) %}
- next + next
{% endfunc %} diff --git a/templates/media.qtpl b/templates/media.qtpl index 7dcdf54..737d03d 100644 --- a/templates/media.qtpl +++ b/templates/media.qtpl @@ -1,5 +1,4 @@ {% import "git.sr.ht/~gabrielgio/img/pkg/database/repository" %} -{% import "git.sr.ht/~gabrielgio/img/pkg/list" %} {% code type MediaPage struct { @@ -20,26 +19,10 @@ func (m *MediaPage) PreloadAttr() string { {% func (p *MediaPage) Content() %}
-{% for _, c := range list.Chunck(p.Medias, 4) %} -
- {% for _, media := range c %} -
- {% if media.IsVideo() %} - - {% else %} -
- -
- {% endif %} -
- {% endfor %} -
-{% endfor %} +{%= Mosaic(p.Medias, p.PreloadAttr()) %}
- next + next
{% endfunc %} diff --git a/templates/mosaic.qtpl b/templates/mosaic.qtpl new file mode 100644 index 0000000..18dbcba --- /dev/null +++ b/templates/mosaic.qtpl @@ -0,0 +1,24 @@ +{% import "git.sr.ht/~gabrielgio/img/pkg/database/repository" %} +{% import "git.sr.ht/~gabrielgio/img/pkg/list" %} + +{% func Mosaic(medias []*repository.Media, preloadAttr string) %} +
+{% for _, c := range list.Distribuite(medias, 6) %} +
+ {% for _, media := range c %} +
+ {% if media.IsVideo() %} + + {% else %} +
+ +
+ {% endif %} +
+ {% endfor %} +
+{% endfor %} +
+{% endfunc %} -- cgit v1.2.3