1
0
Fork 0
photos/cmd/web/templates.go

54 lines
1.1 KiB
Go

package main
import (
"html/template"
"strings"
lib "git.makerforce.io/photos/photos/pkg/bucket"
)
var funcs = template.FuncMap{
"ar": func(p Photo) float64 { return float64(p.Width) / float64(p.Height) },
"mul": func(a, b float64) float64 { return a * b },
"photo": photo,
"preview": preview,
}
type IndexTemplateData struct {
Assets string
Bucket string
Metadata lib.BucketMetadata
Photos []Photo
}
type Photo struct {
lib.Photo
lib.PhotoMetadata
}
var indexTemplate = mustTemplateAsset("index")
func mustTemplateAsset(name string) *template.Template {
buf, err := Asset("view/" + name + ".tmpl")
if err != nil {
panic(err)
}
return template.Must(
template.New(name).Funcs(funcs).Parse(string(buf)),
)
}
func photo(p Photo) template.URL {
return template.URL(p.Path())
}
func preview(p Photo, height int, format lib.PhotoFormat, quality int) template.Srcset {
preview := p.GetPreview(lib.PreviewOption{
Height: height,
Format: format,
Quality: quality,
})
path := strings.ReplaceAll(preview.Path(), ",", "%2C")
return template.Srcset(path)
}