diff options
| author | Leonardo Bishop <me@leonardobishop.net> | 2025-07-08 23:26:05 +0100 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.net> | 2025-07-08 23:26:05 +0100 |
| commit | cdb75d3fcbc9339b897f8c6ff4d69a577f017393 (patch) | |
| tree | 5e757cd236540c2cea9874c1bc09f19548db05d5 /web/command/html/site.go | |
| parent | b56101f1a11552067f594679a497ebd4cf7427d4 (diff) | |
Rewrite in Go
Diffstat (limited to 'web/command/html/site.go')
| -rw-r--r-- | web/command/html/site.go | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/web/command/html/site.go b/web/command/html/site.go new file mode 100644 index 0000000..b4239b1 --- /dev/null +++ b/web/command/html/site.go @@ -0,0 +1,73 @@ +package html + +import ( + "fmt" + + "github.com/LMBishop/scrapbook/pkg/config" + "github.com/LMBishop/scrapbook/pkg/site" + . "maragu.dev/gomponents" + . "maragu.dev/gomponents/html" +) + +func SitePage(mainConfig *config.MainConfig, site *site.Site) Node { + versions, err := site.GetAllVersions() + currentVersion, _ := site.GetCurrentVersion() + + return page("Site "+site.Name, + H1(Text("Site "+site.Name)), + + If(site.EvaluateSiteStatus() != "live", alertError(site.EvaluateSiteStatusReason())), + + FieldSet( + Legend(Text("Site actions")), + + Div( + Class("control-group"), + + navButton("Upload new version", "upload"), + navButton("Disable site", "disable"), + navButton("Delete site", "delete"), + ), + ), + + H2(Text("Version history")), + + If(len(versions) == 0, Span(Class("span"), alert("There are no versions to display", ""))), + If(err != nil, Span(Class("span"), alertError(fmt.Errorf("Cannot show site versions: %w", err).Error()))), + If(len(versions) > 0 && err == nil, Group{ + Div( + Class("versions-table"), + Group{ + Span( + Class("header date"), + Text("Date"), + ), + Span( + Class("header actions"), + Text("Actions"), + ), + }, + + Map(versions, func(version string) Node { + return Group{ + Span( + Class("date"), + Span(Text(version)), + If(currentVersion == version, Span(Class("current"), Text("current"))), + ), + Span( + Class("actions"), + If(currentVersion != version, navButton("Set current", fmt.Sprintf("/site/%s/", site.Name))), + navButton("Details", fmt.Sprintf("version/%s/", version)), + ), + } + }), + ), + }), + + H2(Text("API endpoints")), + P(Code(Text(fmt.Sprintf("http://%s/api/site/%s/upload", mainConfig.Command.Host, site.Name)))), + + navButton("Go back", "/"), + ) +} |
