templates/tree.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | package templates
import (
"fmt"
"go.alanpearce.eu/elgit/git"
g "go.alanpearce.eu/gomponents"
. "go.alanpearce.eu/gomponents/html"
)
// TreePage renders a repository file tree view
func TreePage(data PageData, files []git.NiceTree, readme string, dotdot string) g.Node {
return Page(data, []g.Node{
RepoHeader(data),
RenderNav(data),
Main(
Div(Class("tree"),
g.If(data.Parent != "",
g.Group{
Div(),
Div(),
Div(A(Href(joinPaths(data.Name, "tree", data.Ref, dotdot)), g.Text(".."))),
},
),
g.Map(files, func(file git.NiceTree) g.Node {
if !file.IsFile {
return g.Group{
Div(Class("mode"), g.Text(file.Mode)),
Div(Class("size"), g.Text(fmt.Sprintf("%d", file.Size))),
Div(
g.If(data.Parent != "",
A(
Href(
joinPaths(data.Name, "tree", data.Ref, data.Parent, file.Name),
),
g.Text(file.Name+"/"),
),
A(
Href(joinPaths(data.Name, "tree", data.Ref, file.Name)),
g.Text(file.Name+"/"),
),
),
),
}
}
return nil
}),
g.Map(files, func(file git.NiceTree) g.Node {
if file.IsFile {
return g.Group{
Div(Class("mode"), g.Text(file.Mode)),
Div(Class("size"), g.Text(fmt.Sprintf("%d", file.Size))),
Div(
g.If(data.Parent != "",
A(
Href(
fmt.Sprintf("/%s/blob/%s/%s/%s", data.Name, data.Ref, data.Parent, file.Name),
),
g.Text(file.Name),
),
A(
Href(fmt.Sprintf("/%s/blob/%s/%s", data.Name, data.Ref, file.Name)),
g.Text(file.Name),
),
),
),
}
}
return nil
}),
),
Article(
g.If(readme != "", Pre(g.Raw(readme))),
),
)})
}
|