all repos — elgit @ fed19ae329323cca0f7b49624486966fbce8096b

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

use gitweb/gitolite directory layout (including subdirs)

Alan Pearce
commit

fed19ae329323cca0f7b49624486966fbce8096b

parent

9c336ff148d48d09a4f4866798511cdcce50202a

1 file changed, 33 insertions(+), 18 deletions(-)

changed files
M templates/index.gotemplates/index.go
@@ -1,36 +1,51 @@
package templates import ( - "time" - + "github.com/dustin/go-humanize" + "go.alanpearce.eu/elgit/data" g "go.alanpearce.eu/gomponents" + c "go.alanpearce.eu/gomponents/components" . "go.alanpearce.eu/gomponents/html" ) -type RepoInfo struct { - DisplayName string - Name string - Desc string - Idle string - LastCommit time.Time -} - -func Index(data PageData, repos []RepoInfo) g.Node { - return Page(data, g.Group{ +func Index(pd PageData, entries *data.Entries) g.Node { + return Page(pd, g.Group{ Header( - H1(g.Text(data.Meta.Title)), - H2(g.Text(data.Meta.Description)), + H1(g.Text(pd.Meta.Title)), + H2(g.Text(pd.Meta.Description)), ), Main( Div(Class("index"), - g.Map(repos, func(repo RepoInfo) g.Node { + g.Map(entries.Children, func(entry *data.Entry) g.Node { + return g.If(len(entry.Repositories) == 1, + Repository(entry.Repositories[0], 0), + ) + }), + g.MapMap(entries.Map, func(category string, entry *data.Entry) g.Node { return g.Group{ - Div(Class("index-name"), A(Href("/"+repo.Name), g.Text(repo.DisplayName))), - Div(Class("desc"), g.Text(repo.Desc)), - Div(g.Text(repo.Idle)), + Div(Class("index-category"), + Header(g.Text(category)), + ), + g.Map(entry.Repositories, func(repo *data.Repository) g.Node { + return Repository(repo, 1) + }), } }), ), ), }) } + +func Repository(repo *data.Repository, level int) g.Node { + return g.Group{ + Div( + c.Classes{ + "index-name": level == 0, + "index-category-name": level >= 1, + }, + A(Href("/"+repo.Slug), g.Text(repo.Name)), + ), + Div(Class("desc"), g.Text(repo.Description)), + Div(g.Text(humanize.Time(repo.LastCommit))), + } +}