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

53 lines
1.1 KiB
Go
Raw Normal View History

2020-05-31 21:51:09 +08:00
package main
import (
"html/template"
2020-06-01 18:07:48 +08:00
"strings"
2020-05-31 21:51:09 +08:00
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 },
2020-06-01 18:07:48 +08:00
"photo": photo,
2020-05-31 21:51:09 +08:00
"preview": preview,
}
type IndexTemplateData struct {
Assets 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)),
)
}
2020-06-01 18:07:48 +08:00
func photo(p Photo) template.URL {
return template.URL(p.Path())
}
2020-05-31 21:51:09 +08:00
func preview(p Photo, height int, format lib.PhotoFormat, quality int) template.Srcset {
preview := p.GetPreview(lib.PreviewOption{
Height: height,
Format: format,
Quality: quality,
})
2020-06-01 18:07:48 +08:00
path := strings.ReplaceAll(preview.Path(), ",", "%2C")
return template.Srcset(path)
2020-05-31 21:51:09 +08:00
}