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

64 lines
1.6 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"
2021-11-17 18:37:38 +08:00
"git.makerforce.io/photos/photos/web"
2020-05-31 21:51:09 +08:00
)
var funcs = template.FuncMap{
2020-08-23 00:21:56 +08:00
"ar": func(p Photo) float64 { return float64(p.Size.Width) / float64(p.Size.Height) },
"mul": func(a, b float64) float64 { return a * b },
"bucketmetadatatitle": func(t lib.BucketMetadataTitle) string { return strings.TrimSpace(string(t)) },
"photometadatatitle": func(t lib.PhotoMetadataTitle) string { return strings.TrimSpace(string(t)) },
"photo": photo,
"preview": preview,
2020-05-31 21:51:09 +08:00
}
type IndexTemplateData struct {
2020-08-23 00:21:56 +08:00
Assets string
Control string
Bucket lib.Bucket
Title lib.BucketMetadataTitle
Photos []Photo
Development bool
2020-05-31 21:51:09 +08:00
}
type Photo struct {
lib.Photo
2020-08-23 00:21:56 +08:00
Size lib.PhotoMetadataSize
Title lib.PhotoMetadataTitle
Tags lib.PhotoMetadataTags
2020-05-31 21:51:09 +08:00
}
2020-08-23 00:21:56 +08:00
var viewTemplate = mustTemplateAsset("view/index.tmpl")
var manageTemplate = mustTemplateAsset("manage/index.tmpl")
2020-05-31 21:51:09 +08:00
func mustTemplateAsset(name string) *template.Template {
2021-11-17 18:37:38 +08:00
buf, err := web.FS.ReadFile(name)
2020-05-31 21:51:09 +08:00
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 {
2020-08-23 00:21:56 +08:00
return template.URL(p.Path().String())
2020-06-01 18:07:48 +08:00
}
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-08-23 00:21:56 +08:00
path := strings.ReplaceAll(preview.Path().String(), ",", "%2C")
2020-06-01 18:07:48 +08:00
return template.Srcset(path)
2020-05-31 21:51:09 +08:00
}