tree: directories first, add size column, fix ..

Signed-off-by: Derek Stevens <nilix@nilfm.cc>
This commit is contained in:
Derek Stevens 2023-02-01 23:01:36 -07:00 committed by Anirudh Oppiliappan
parent ee800624f5
commit b78354aee2
No known key found for this signature in database
GPG Key ID: 8A93F96F78C5D4C4
4 changed files with 30 additions and 15 deletions

View File

@ -19,7 +19,7 @@ func (g *GitRepo) FileTree(path string) ([]NiceTree, error) {
}
if path == "" {
files = makeNiceTree(tree.Entries)
files = makeNiceTree(tree)
} else {
o, err := tree.FindEntry(path)
if err != nil {
@ -32,7 +32,7 @@ func (g *GitRepo) FileTree(path string) ([]NiceTree, error) {
return nil, err
}
files = makeNiceTree(subtree.Entries)
files = makeNiceTree(subtree)
}
}
@ -48,15 +48,17 @@ type NiceTree struct {
IsSubtree bool
}
func makeNiceTree(es []object.TreeEntry) []NiceTree {
func makeNiceTree(t *object.Tree) []NiceTree {
nts := []NiceTree{}
for _, e := range es {
for _, e := range t.Entries {
mode, _ := e.Mode.ToOSFileMode()
sz, _ := t.Size(e.Name)
nts = append(nts, NiceTree{
Name: e.Name,
Mode: mode.String(),
IsFile: e.Mode.IsFile(),
Size: sz,
})
}

View File

@ -254,6 +254,7 @@ func (d *deps) Log(w http.ResponseWriter, r *http.Request) {
data["name"] = name
data["ref"] = ref
data["desc"] = getDescription(path)
data["dotdot"] = filepath.Dir(path)
if err := t.ExecuteTemplate(w, "log", data); err != nil {
log.Println(err)

View File

@ -125,7 +125,7 @@ a:hover {
.tree {
display: grid;
grid-template-columns: 8em minmax(0, 1fr);
grid-template-columns: 10ch auto 1fr;
grid-row-gap: 0.5em;
grid-column-gap: 1em;
min-width: 0;
@ -145,9 +145,12 @@ a:hover {
white-space: pre-wrap;
}
.mode {
.mode, .size {
font-family: var(--mono-font);
}
.size {
text-align: right;
}
.readme pre {
white-space: pre-wrap;

View File

@ -18,26 +18,35 @@
<div class="tree">
{{ if $parent }}
<div></div>
<div><a href="../">..</a></div>
<div></div>
<div><a href="/{{ $repo }}/tree/{{ $ref }}/{{ .dotdot }}">..</a></div>
{{ end }}
{{ range .files }}
{{ if not .IsFile }}
<div class="mode">{{ .Mode }}</div>
<div class="size">{{ .Size }}</div>
<div>
{{ if .IsFile }}
{{ if $parent }}
<a href="/{{ $repo }}/blob/{{ $ref }}/{{ $parent }}/{{ .Name }}">{{ .Name }}</a>
{{ else }}
<a href="/{{ $repo }}/blob/{{ $ref }}/{{ .Name }}">{{ .Name }}</a>
{{ end }}
{{ else }}
{{ if $parent }}
<a href="/{{ $repo }}/tree/{{ $ref }}/{{ $parent }}/{{ .Name }}">{{ .Name }}/</a>
{{ else }}
<a href="/{{ $repo }}/tree/{{ $ref }}/{{ .Name }}">{{ .Name }}/</a>
{{ end }}
{{ end }}
</div>
{{ end }}
{{ end }}
{{ range .files }}
{{ if .IsFile }}
<div class="mode">{{ .Mode }}</div>
<div class="size">{{ .Size }}</div>
<div>
{{ if $parent }}
<a href="/{{ $repo }}/blob/{{ $ref }}/{{ $parent }}/{{ .Name }}">{{ .Name }}</a>
{{ else }}
<a href="/{{ $repo }}/blob/{{ $ref }}/{{ .Name }}">{{ .Name }}</a>
{{ end }}
</div>
{{ end }}
{{ end }}
</div>
<article>
<pre>