diff options
author | Alan Pearce | 2025-03-18 22:40:46 +0100 |
---|---|---|
committer | Alan Pearce | 2025-03-19 17:33:58 +0100 |
commit | 896d844cac976afd0ee8aa73dd2fb28e15e7ac79 (patch) | |
tree | cc8d288d0039cb3d2084f43cafe8d4e0aea50e8b /internal/components/combined.go | |
parent | 1183108baa44fde88944e9207fb7763668c2b448 (diff) | |
download | searchix-896d844cac976afd0ee8aa73dd2fb28e15e7ac79.tar.lz searchix-896d844cac976afd0ee8aa73dd2fb28e15e7ac79.tar.zst searchix-896d844cac976afd0ee8aa73dd2fb28e15e7ac79.zip |
feat: Convert templ components to gomponents
Diffstat (limited to 'internal/components/combined.go')
-rw-r--r-- | internal/components/combined.go | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/internal/components/combined.go b/internal/components/combined.go new file mode 100644 index 0000000..d8c6fea --- /dev/null +++ b/internal/components/combined.go @@ -0,0 +1,56 @@ +package components + +import ( + "go.alanpearce.eu/searchix/internal/config" + "go.alanpearce.eu/searchix/internal/index" + "go.alanpearce.eu/searchix/internal/nix" + + g "go.alanpearce.eu/gomponents" + . "go.alanpearce.eu/gomponents/html" +) + +func CombinedData(data nix.Importable) g.Node { + switch data.(type) { + case nix.Option: + if o := convertMatch[nix.Option](data); o != nil { + return firstSentence(o.Description) + } + case nix.Package: + if p := convertMatch[nix.Package](data); p != nil { + return g.Text(firstSentence(p.Description)) + } + } + + return g.Text("") +} + +func Combined(result *index.Result) g.Node { + return Table( + THead( + Tr( + Th(Scope("col"), g.Text("Attribute")), + Th(Scope("col"), g.Text("Description")), + g.If(config.DevMode, + Th(Scope("col"), g.Text("Score")), + ), + ), + ), + TBody( + g.Map(result.Hits, func(hit index.DocumentMatch) g.Node { + return Tr( + Td( + openCombinedDialogLink(nix.GetKey(hit.Data)), + ), + Td( + CombinedData(hit.Data), + ), + g.If(config.DevMode, + Td( + Score(hit), + ), + ), + ) + }), + ), + ) +} |