diff options
-rw-r--r-- | pkg/list/list.go | 6 | ||||
-rw-r--r-- | pkg/view/media.go | 11 | ||||
-rw-r--r-- | templates/album.qtpl | 21 | ||||
-rw-r--r-- | templates/media.qtpl | 21 | ||||
-rw-r--r-- | templates/mosaic.qtpl | 24 |
5 files changed, 37 insertions, 46 deletions
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 %} </div> <div class="columns"> -{% for _, c := range list.Chunck(p.Medias, 4) %} - <div class="column is-3"> - {% for _, media := range c %} - <div class="card-image"> - {% if media.IsVideo() %} - <video class="image is-fit" controls muted="true" poster="/media/thumbnail/?path_hash={%s media.PathHash %}" preload="{%s p.PreloadAttr() %}"> - <source src="/media/image/?path_hash={%s media.PathHash %}" type="{%s media.MIMEType %}"> - </video> - {% else %} - <figure class="image is-fit"> - <img src="/media/thumbnail/?path_hash={%s media.PathHash %}"> - </figure> - {% endif %} - </div> - {% endfor %} - </div> -{% endfor %} +{%= Mosaic(p.Medias, p.PreloadAttr()) %} </div> <div> - <a href="/media/?page={%d p.Next.Page %}" class="button is-pulled-right">next</a> + <a href="/media?page={%d p.Next.Page %}" class="button is-pulled-right">next</a> </div> {% 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() %} <div class="columns"> -{% for _, c := range list.Chunck(p.Medias, 4) %} - <div class="column is-3"> - {% for _, media := range c %} - <div class="card-image"> - {% if media.IsVideo() %} - <video class="image is-fit" controls muted="true" poster="/media/thumbnail/?path_hash={%s media.PathHash %}" preload="{%s p.PreloadAttr() %}"> - <source src="/media/image/?path_hash={%s media.PathHash %}" type="{%s media.MIMEType %}"> - </video> - {% else %} - <figure class="image is-fit"> - <img src="/media/thumbnail/?path_hash={%s media.PathHash %}"> - </figure> - {% endif %} - </div> - {% endfor %} - </div> -{% endfor %} +{%= Mosaic(p.Medias, p.PreloadAttr()) %} </div> <div> - <a href="/media/?page={%d p.Next.Page %}" class="button is-pulled-right">next</a> + <a href="/media?page={%d p.Next.Page %}" class="button is-pulled-right">next</a> </div> {% 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) %} +<div class="columns"> +{% for _, c := range list.Distribuite(medias, 6) %} + <div class="column is-2"> + {% for _, media := range c %} + <div class="card-image"> + {% if media.IsVideo() %} + <video class="image is-fit" controls muted="true" poster="/media/thumbnail?path_hash={%s media.PathHash %}" preload="{%s preloadAttr %}"> + <source src="/media/image?path_hash={%s media.PathHash %}" type="{%s media.MIMEType %}"> + </video> + {% else %} + <figure class="image is-fit"> + <img src="/media/thumbnail?path_hash={%s media.PathHash %}"> + </figure> + {% endif %} + </div> + {% endfor %} + </div> +{% endfor %} +</div> +{% endfunc %} |