package html
import (
"fmt"
"strconv"
. "github.com/LMBishop/scrapbook/web/skeleton"
. "maragu.dev/gomponents"
. "maragu.dev/gomponents/html"
)
type File struct {
Name string
IsDir bool
Size int64
Mtime int
}
func IndexPage(dir string, err bool, files []File) Node {
return Page("Index of "+dir,
H1(Text("Index of "+dir)),
Div(
Class("table files-table"),
Group{
Span(
Class("header name"),
Text("Name"),
),
Span(
Class("header size"),
Text("Size"),
),
Span(
Class("header last-modified"),
Text("Last modified"),
),
},
If(files != nil, Map(files, func(file File) Node {
var fileName string
if file.IsDir {
fileName = file.Name + "/"
} else {
fileName = file.Name
}
return Group{
A(
Class("name"),
Href(fileName),
Text(fileName),
),
Span(
Class("size"),
If(file.IsDir, Text("--")),
If(!file.IsDir, Text(strconv.FormatInt(file.Size, 10)+" bytes")),
),
Span(
Class("last-modified"),
Text("--"),
),
}
})),
),
If(err, AlertError(fmt.Sprintf("Failed to list directory"))),
)
}