all repos — elgit @ 74eea2ebbccc8458b5b62002d281b2b49f5c30c4

fork of legit: web frontend for git, written in go

switch to gomponents

Alan Pearce
commit

74eea2ebbccc8458b5b62002d281b2b49f5c30c4

parent

776a7b0dafa651c5ba71381608e9726d9756c3b1

1 file changed, 76 insertions(+), 0 deletions(-)

changed files
A templates/tree.go
@@ -0,0 +1,76 @@
+package templates + +import ( + "fmt" + + "go.alanpearce.eu/elgit/git" + g "go.alanpearce.eu/gomponents" + . "go.alanpearce.eu/gomponents/html" +) + +// Tree renders a repository file tree view +func Tree(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(fmt.Sprintf("/%s/tree/%s/%s", data.Name, 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( + fmt.Sprintf("/%s/tree/%s/%s/%s", data.Name, data.Ref, data.Parent, file.Name), + ), + g.Text(file.Name+"/"), + ), + A( + Href(fmt.Sprintf("/%s/tree/%s/%s", data.Name, 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))), + ), + )}) +}