tree: directories first, add size column, fix ..
Signed-off-by: Derek Stevens <nilix@nilfm.cc>
This commit is contained in:
		
							parent
							
								
									ee800624f5
								
							
						
					
					
						commit
						b78354aee2
					
				
							
								
								
									
										10
									
								
								git/tree.go
								
								
								
								
							
							
						
						
									
										10
									
								
								git/tree.go
								
								
								
								
							| 
						 | 
					@ -19,7 +19,7 @@ func (g *GitRepo) FileTree(path string) ([]NiceTree, error) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if path == "" {
 | 
						if path == "" {
 | 
				
			||||||
		files = makeNiceTree(tree.Entries)
 | 
							files = makeNiceTree(tree)
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		o, err := tree.FindEntry(path)
 | 
							o, err := tree.FindEntry(path)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@ func (g *GitRepo) FileTree(path string) ([]NiceTree, error) {
 | 
				
			||||||
				return nil, err
 | 
									return nil, err
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			files = makeNiceTree(subtree.Entries)
 | 
								files = makeNiceTree(subtree)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,15 +48,17 @@ type NiceTree struct {
 | 
				
			||||||
	IsSubtree bool
 | 
						IsSubtree bool
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func makeNiceTree(es []object.TreeEntry) []NiceTree {
 | 
					func makeNiceTree(t *object.Tree) []NiceTree {
 | 
				
			||||||
	nts := []NiceTree{}
 | 
						nts := []NiceTree{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, e := range es {
 | 
						for _, e := range t.Entries {
 | 
				
			||||||
		mode, _ := e.Mode.ToOSFileMode()
 | 
							mode, _ := e.Mode.ToOSFileMode()
 | 
				
			||||||
 | 
							sz, _ := t.Size(e.Name)
 | 
				
			||||||
		nts = append(nts, NiceTree{
 | 
							nts = append(nts, NiceTree{
 | 
				
			||||||
			Name:   e.Name,
 | 
								Name:   e.Name,
 | 
				
			||||||
			Mode:   mode.String(),
 | 
								Mode:   mode.String(),
 | 
				
			||||||
			IsFile: e.Mode.IsFile(),
 | 
								IsFile: e.Mode.IsFile(),
 | 
				
			||||||
 | 
								Size:   sz,
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -254,6 +254,7 @@ func (d *deps) Log(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
	data["name"] = name
 | 
						data["name"] = name
 | 
				
			||||||
	data["ref"] = ref
 | 
						data["ref"] = ref
 | 
				
			||||||
	data["desc"] = getDescription(path)
 | 
						data["desc"] = getDescription(path)
 | 
				
			||||||
 | 
						data["dotdot"] = filepath.Dir(path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := t.ExecuteTemplate(w, "log", data); err != nil {
 | 
						if err := t.ExecuteTemplate(w, "log", data); err != nil {
 | 
				
			||||||
		log.Println(err)
 | 
							log.Println(err)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -125,7 +125,7 @@ a:hover {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.tree {
 | 
					.tree {
 | 
				
			||||||
  display: grid;
 | 
					  display: grid;
 | 
				
			||||||
  grid-template-columns: 8em minmax(0, 1fr);
 | 
					  grid-template-columns: 10ch auto 1fr;
 | 
				
			||||||
  grid-row-gap: 0.5em;
 | 
					  grid-row-gap: 0.5em;
 | 
				
			||||||
  grid-column-gap: 1em;
 | 
					  grid-column-gap: 1em;
 | 
				
			||||||
  min-width: 0;
 | 
					  min-width: 0;
 | 
				
			||||||
| 
						 | 
					@ -145,9 +145,12 @@ a:hover {
 | 
				
			||||||
  white-space: pre-wrap;
 | 
					  white-space: pre-wrap;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.mode {
 | 
					.mode, .size {
 | 
				
			||||||
  font-family: var(--mono-font);
 | 
					  font-family: var(--mono-font);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.size {
 | 
				
			||||||
 | 
					  text-align: right;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.readme pre {
 | 
					.readme pre {
 | 
				
			||||||
  white-space: pre-wrap;
 | 
					  white-space: pre-wrap;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,26 +18,35 @@
 | 
				
			||||||
      <div class="tree">
 | 
					      <div class="tree">
 | 
				
			||||||
        {{ if $parent }}
 | 
					        {{ if $parent }}
 | 
				
			||||||
        <div></div>
 | 
					        <div></div>
 | 
				
			||||||
        <div><a href="../">..</a></div>
 | 
					        <div></div>
 | 
				
			||||||
 | 
					        <div><a href="/{{ $repo }}/tree/{{ $ref }}/{{ .dotdot }}">..</a></div>
 | 
				
			||||||
        {{ end }}
 | 
					        {{ end }}
 | 
				
			||||||
        {{ range .files }}
 | 
					        {{ range .files }}
 | 
				
			||||||
 | 
					        {{ if not .IsFile }}
 | 
				
			||||||
        <div class="mode">{{ .Mode }}</div>
 | 
					        <div class="mode">{{ .Mode }}</div>
 | 
				
			||||||
 | 
					        <div class="size">{{ .Size }}</div>
 | 
				
			||||||
        <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 }}
 | 
					          {{ if $parent }}
 | 
				
			||||||
          <a href="/{{ $repo }}/tree/{{ $ref }}/{{ $parent }}/{{ .Name }}">{{ .Name }}/</a>
 | 
					          <a href="/{{ $repo }}/tree/{{ $ref }}/{{ $parent }}/{{ .Name }}">{{ .Name }}/</a>
 | 
				
			||||||
          {{ else }}
 | 
					          {{ else }}
 | 
				
			||||||
          <a href="/{{ $repo }}/tree/{{ $ref }}/{{ .Name }}">{{ .Name }}/</a>
 | 
					          <a href="/{{ $repo }}/tree/{{ $ref }}/{{ .Name }}">{{ .Name }}/</a>
 | 
				
			||||||
          {{ end }}
 | 
					          {{ end }}
 | 
				
			||||||
        {{ end }}
 | 
					 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        {{ end }}
 | 
					        {{ 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>
 | 
					      </div>
 | 
				
			||||||
      <article>
 | 
					      <article>
 | 
				
			||||||
        <pre>
 | 
					        <pre>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue