From 58643f38bdd62dc538a03865b1f81eb77d957779 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Tue, 31 Dec 2024 14:56:37 +0100 Subject: feat: show scores in results table in dev mode --- frontend/static/search.js | 11 +++++++++++ frontend/static/style.css | 5 +++++ internal/components/combined.templ | 9 +++++++++ internal/components/dev.templ | 18 ++++++++++++++++++ internal/components/options.templ | 13 +++++++++++-- internal/components/packages.templ | 13 +++++++++++-- internal/components/page.templ | 7 ++++++- internal/config/config.go | 3 +++ 8 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 internal/components/dev.templ diff --git a/frontend/static/search.js b/frontend/static/search.js index 760ca28..52fa2f4 100644 --- a/frontend/static/search.js +++ b/frontend/static/search.js @@ -28,10 +28,21 @@ if (window.trustedTypes && trustedTypes.createPolicy) { }); } +function openSiblingDialog(ev) { + const dialog = ev.target.nextElementSibling; + dialog.showModal(); + dialog.querySelector("button").addEventListener("click", function () { + dialog.close(); + }); +} + function addOpenDialogListeners(results) { results.querySelectorAll("a.open-dialog").forEach(function (element) { element.addEventListener("click", handleDialogOpen); }); + results.querySelectorAll("a.open-sibling-dialog").forEach(function (element) { + element.addEventListener("click", openSiblingDialog); + }); } function paginationLinkClicked(ev) { diff --git a/frontend/static/style.css b/frontend/static/style.css index 60b38c8..8766844 100644 --- a/frontend/static/style.css +++ b/frontend/static/style.css @@ -185,3 +185,8 @@ li { p:last-child { margin-bottom: unset; } + +.open-sibling-dialog { + cursor: pointer; + text-decoration: underline; +} diff --git a/internal/components/combined.templ b/internal/components/combined.templ index eeacdb5..3beddcd 100644 --- a/internal/components/combined.templ +++ b/internal/components/combined.templ @@ -1,6 +1,7 @@ package components import ( + "go.alanpearce.eu/searchix/internal/config" "go.alanpearce.eu/searchix/internal/index" "go.alanpearce.eu/searchix/internal/nix" ) @@ -11,6 +12,9 @@ templ Combined(result *index.Result) { Attribute Description + if config.DevMode { + Score + } @@ -31,6 +35,11 @@ templ Combined(result *index.Result) { } } + if config.DevMode { + + @score(hit) + + } } diff --git a/internal/components/dev.templ b/internal/components/dev.templ new file mode 100644 index 0000000..a03eb4b --- /dev/null +++ b/internal/components/dev.templ @@ -0,0 +1,18 @@ +package components + +import ( + "go.alanpearce.eu/searchix/internal/index" + "strconv" +) + +templ score(h index.DocumentMatch) { + + { strconv.FormatFloat(h.Score, 'f', 2, 64) } + + + +
+			{ h.Expl.String() }
+		
+
+} diff --git a/internal/components/options.templ b/internal/components/options.templ index 8e31132..097f66f 100644 --- a/internal/components/options.templ +++ b/internal/components/options.templ @@ -1,6 +1,7 @@ package components import ( + "go.alanpearce.eu/searchix/internal/config" "go.alanpearce.eu/searchix/internal/index" "go.alanpearce.eu/searchix/internal/nix" ) @@ -11,19 +12,22 @@ templ Options(result *index.Result) { Title Description + if config.DevMode { + Score + } for _, hit := range result.Hits { if m := convertMatch[nix.Option](hit.Data); m != nil { - @optionRow(*m) + @optionRow(hit, *m) } } } -templ optionRow(o nix.Option) { +templ optionRow(hit index.DocumentMatch, o nix.Option) { @openDialogLink(o.Name) @@ -32,5 +36,10 @@ templ optionRow(o nix.Option) { @markdown(firstSentence(o.Description)) + if config.DevMode { + + @score(hit) + + } } diff --git a/internal/components/packages.templ b/internal/components/packages.templ index b90fcd5..6e14026 100644 --- a/internal/components/packages.templ +++ b/internal/components/packages.templ @@ -1,6 +1,7 @@ package components import ( + "go.alanpearce.eu/searchix/internal/config" "go.alanpearce.eu/searchix/internal/index" "go.alanpearce.eu/searchix/internal/nix" ) @@ -12,19 +13,22 @@ templ Packages(result *index.Result) { Attribute Name Description + if config.DevMode { + Score + } for _, hit := range result.Hits { if m := convertMatch[nix.Package](hit.Data); m != nil { - @packageRow(*m) + @packageRow(hit, *m) } } } -templ packageRow(p nix.Package) { +templ packageRow(hit index.DocumentMatch, p nix.Package) { @openDialogLink(p.Attribute) @@ -35,5 +39,10 @@ templ packageRow(p nix.Package) { { p.Description } + if config.DevMode { + + @score(hit) + + } } diff --git a/internal/components/page.templ b/internal/components/page.templ index b6c9a82..127d1ba 100644 --- a/internal/components/page.templ +++ b/internal/components/page.templ @@ -15,7 +15,12 @@ templ Page(tdata TemplateData) { - Searchix + + Searchix + if config.DevMode { + (Dev) + } + for _, sheet := range tdata.Assets.Stylesheets { } diff --git a/internal/config/config.go b/internal/config/config.go index b5f2ee4..33ce1da 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -12,6 +12,7 @@ import ( ) var Version string +var DevMode bool type URL struct { *url.URL @@ -127,6 +128,8 @@ func GetConfig(filename string, log *log.Logger) (*Config, error) { } } + DevMode = config.Web.Environment == "development" + config.Web.ContentSecurityPolicy.ScriptSrc = append( config.Web.ContentSecurityPolicy.ScriptSrc, config.Web.BaseURL.JoinPath("/static/").String(), -- cgit 1.4.1