From b8999f7adec506069cebd5aefe9f5f6b98e1120a Mon Sep 17 00:00:00 2001 From: Markus Stenberg Date: Sun, 28 Apr 2024 10:29:50 +0300 Subject: [PATCH] Removed hardcoded form field names --- README.md | 4 -- config.go | 4 +- log.templ | 30 +++++++------- log_list.go | 45 +++++++-------------- log_list_test.go | 2 +- log_rule.templ | 2 +- log_rule_templ.go | 14 +++++-- log_rule_templ.txt | 3 +- log_templ.go | 96 +++++++++++++++++++++++--------------------- log_templ.txt | 3 +- querywrapper.go | 42 +++++++++++++++++++ querywrapper_test.go | 28 +++++++++++++ 12 files changed, 171 insertions(+), 102 deletions(-) create mode 100644 querywrapper.go create mode 100644 querywrapper_test.go diff --git a/README.md b/README.md index a4fc18d..e698d18 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,3 @@ local Lixie instance which probably does not exist. - style the pages properly (right now just basic Bootstrap and one or two ugly bits remain) - -- perhaps submit names + fields should still be from variables and not - hardcoded to templ files? problem is, the golang tags cannot(?) be based - on variables anyway diff --git a/config.go b/config.go index 8ebd030..fab1781 100644 --- a/config.go +++ b/config.go @@ -15,5 +15,7 @@ const primaryStreamKey = "source" // This is global user-specific configuration from/to cookie type GlobalConfig struct { // Full Text Search string - Search string `json:"search" cm:"gsearch"` + Search string `json:"s" cm:"gsearch"` } + +const globalSearchKey = "gsearch" // must match cm: tag above diff --git a/log.templ b/log.templ index be2f428..c97009c 100644 --- a/log.templ +++ b/log.templ @@ -2,7 +2,6 @@ package main import "github.com/fingon/lixie/data" -import "fmt" import "strconv" templ LogListRuleLink(rule *data.LogRule) { @@ -44,11 +43,11 @@ templ LogListTable(m LogListModel) { if m.Config.Expand != log.Hash() && !m.DisableActions { {primaryStreamKey}={log.Stream[primaryStreamKey]} - + +{strconv.Itoa(len(log.StreamKeys)-1)} } else { - - + - for _, k := range log.StreamKeys { {k}={log.Stream[k]}
} @@ -56,11 +55,11 @@ templ LogListTable(m LogListModel) { if m.Config.Expand != log.Hash() && !m.DisableActions { - + +{strconv.Itoa(len(log.FieldsKeys))} } else { - - + - for _, k := range log.FieldsKeys { {k}={toJSON(log.Fields[k])}
} @@ -87,7 +86,7 @@ templ LogListTable(m LogListModel) { hx-trigger="revealed" hx-swap="outerHTML" hx-select="tbody > tr" - hx-get={m.Config.WithBeforeHash(m.Logs[len(m.Logs)-1].Hash()).ToLinkString()}> + hx-get={m.Config.WithBeforeHash(m.Logs[len(m.Logs)-1].Hash()).Query().ToLinkString()}> Loading More... @@ -102,21 +101,23 @@ templ LogList(m LogListModel) { @Row("refresh-and-count") { @Col(3) { if m.Config.AutoRefresh { - Turn off autorefresh -
Turn off autorefresh +
} else { - Turn on autorefresh - Refresh + Turn on autorefresh + Refresh } } @Col(2) {
- if m.Config.Filter == verdict { - + {data.LogVerdictToString(verdict)} filtered } else { - + No {data.LogVerdictToString(verdict)} } diff --git a/log_list.go b/log_list.go index b3272de..9212b37 100644 --- a/log_list.go +++ b/log_list.go @@ -9,10 +9,8 @@ package main import ( "net/http" - "net/url" "strconv" - "github.com/a-h/templ" "github.com/fingon/lixie/cm" "github.com/fingon/lixie/data" ) @@ -23,16 +21,21 @@ type LogListConfig struct { Global GlobalConfig // Local state (cookie) - AutoRefresh bool `json:"ar" cm:"ar"` - Filter int `json:"f" cm:"f"` + AutoRefresh bool `json:"ar" cm:"auto-refresh"` + Filter int `json:"f" cm:"filter"` // These are only handled via links BeforeHash uint64 Expand uint64 } -const expandKey = "exp" -const beforeKey = "b" +// These must match ^ cm tags +const llAutoRefreshKey = "auto-refresh" +const llFilterKey = "filter" + +// These are handled only in templates +const expandKey = "expand" +const beforeKey = "before" func (self *LogListConfig) Init(s cm.CookieSource, wr *cm.URLWrapper, w http.ResponseWriter) error { // Global config @@ -72,40 +75,22 @@ func (self LogListConfig) WithExpand(v uint64) LogListConfig { return self } -func (self LogListConfig) ToLinkString2(extra string) string { +func (self LogListConfig) Query() *QueryWrapper { base := topLevelLog.Path + "/" - v := url.Values{} + + q := QueryWrapper{Base: base} // Cookie-based stuff is handled in Init // Link-based things start here if self.BeforeHash != 0 { - v.Set(beforeKey, strconv.FormatUint(self.BeforeHash, 10)) + q.Add(beforeKey, strconv.FormatUint(self.BeforeHash, 10)) } if self.Expand != 0 { - v.Set(expandKey, strconv.FormatUint(self.Expand, 10)) + q.Add(expandKey, strconv.FormatUint(self.Expand, 10)) } - switch { - case len(v) > 0 && extra != "": - return base + "?" + extra + "&" + v.Encode() - case len(v) > 0: - return base + "?" + v.Encode() - case extra != "": - return base + "?" + extra - } - return base -} - -func (self LogListConfig) ToLinkString() string { - return self.ToLinkString2("") -} - -func (self LogListConfig) ToLink2(extra string) templ.SafeURL { - return templ.URL(self.ToLinkString2(extra)) -} -func (self LogListConfig) ToLink() templ.SafeURL { - return self.ToLink2("") + return &q } type LogListModel struct { diff --git a/log_list_test.go b/log_list_test.go index 04a162a..7816e76 100644 --- a/log_list_test.go +++ b/log_list_test.go @@ -17,7 +17,7 @@ import ( func TestLogList(t *testing.T) { conf := LogListConfig{Expand: uint64(42), BeforeHash: 13} - s := conf.ToLinkString() + s := conf.Query().ToLinkString() u, err := url.Parse(s) assert.Equal(t, err, nil) diff --git a/log_rule.templ b/log_rule.templ index db6346d..81a2b88 100644 --- a/log_rule.templ +++ b/log_rule.templ @@ -201,7 +201,7 @@ templ LogRuleList(m LogRuleListModel) { } @Col(2) { - Loading More... -
diff --git a/log_templ.go b/log_templ.go index 9480e6b..2e3e772 100644 --- a/log_templ.go +++ b/log_templ.go @@ -11,7 +11,6 @@ import "io" import "bytes" import "github.com/fingon/lixie/data" -import "fmt" import "strconv" func LogListRuleLink(rule *data.LogRule) templ.Component { @@ -44,7 +43,7 @@ func LogListRuleLink(rule *data.LogRule) templ.Component { var templ_7745c5c3_Var3 string templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(rule.ID)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 9, Col: 62} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 8, Col: 62} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) if templ_7745c5c3_Err != nil { @@ -149,7 +148,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var7 string templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(log.Time.Format("15:04:05.000")) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 42, Col: 46} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 41, Col: 46} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) if templ_7745c5c3_Err != nil { @@ -163,7 +162,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var8 string templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(primaryStreamKey) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 45, Col: 31} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 44, Col: 31} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) if templ_7745c5c3_Err != nil { @@ -176,7 +175,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var9 string templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(log.Stream[primaryStreamKey]) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 45, Col: 62} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 44, Col: 62} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) if templ_7745c5c3_Err != nil { @@ -186,7 +185,7 @@ func LogListTable(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var10 templ.SafeURL = m.Config.WithExpand(log.Hash()).ToLink() + var templ_7745c5c3_Var10 templ.SafeURL = m.Config.WithExpand(log.Hash()).Query().ToLink() _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var10))) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -198,7 +197,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var11 string templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(len(log.StreamKeys) - 1)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 47, Col: 53} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 46, Col: 53} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) if templ_7745c5c3_Err != nil { @@ -213,7 +212,7 @@ func LogListTable(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var12 templ.SafeURL = m.Config.WithExpand(0).ToLink() + var templ_7745c5c3_Var12 templ.SafeURL = m.Config.WithExpand(0).Query().ToLink() _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var12))) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -226,7 +225,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var13 string templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(k) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 52, Col: 18} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 51, Col: 18} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) if templ_7745c5c3_Err != nil { @@ -239,7 +238,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var14 string templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(log.Stream[k]) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 52, Col: 34} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 51, Col: 34} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) if templ_7745c5c3_Err != nil { @@ -260,7 +259,7 @@ func LogListTable(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var15 templ.SafeURL = m.Config.WithExpand(log.Hash()).ToLink() + var templ_7745c5c3_Var15 templ.SafeURL = m.Config.WithExpand(log.Hash()).Query().ToLink() _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var15))) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -272,7 +271,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var16 string templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(strconv.Itoa(len(log.FieldsKeys))) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 59, Col: 51} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 58, Col: 51} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) if templ_7745c5c3_Err != nil { @@ -287,7 +286,7 @@ func LogListTable(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var17 templ.SafeURL = m.Config.WithExpand(0).ToLink() + var templ_7745c5c3_Var17 templ.SafeURL = m.Config.WithExpand(0).Query().ToLink() _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var17))) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -300,7 +299,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var18 string templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(k) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 64, Col: 18} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 63, Col: 18} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18)) if templ_7745c5c3_Err != nil { @@ -313,7 +312,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var19 string templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(toJSON(log.Fields[k])) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 64, Col: 42} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 63, Col: 42} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) if templ_7745c5c3_Err != nil { @@ -345,7 +344,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var20 string templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(log.Message) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 73, Col: 29} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 72, Col: 29} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20)) if templ_7745c5c3_Err != nil { @@ -363,7 +362,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var21 string templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(log.Message) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 75, Col: 30} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 74, Col: 30} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21)) if templ_7745c5c3_Err != nil { @@ -377,7 +376,7 @@ func LogListTable(m LogListModel) templ.Component { var templ_7745c5c3_Var22 string templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(log.Message) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 77, Col: 26} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 76, Col: 26} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22)) if templ_7745c5c3_Err != nil { @@ -394,7 +393,7 @@ func LogListTable(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(m.Config.WithBeforeHash(m.Logs[len(m.Logs)-1].Hash()).ToLinkString())) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(m.Config.WithBeforeHash(m.Logs[len(m.Logs)-1].Hash()).Query().ToLinkString())) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -450,7 +449,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var27 templ.SafeURL = m.Config.ToLink2("ar=false") + var templ_7745c5c3_Var27 templ.SafeURL = m.Config.Query().Add(llAutoRefreshKey, "false").ToLink() _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var27))) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -459,7 +458,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(m.Config.ToLinkString())) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(m.Config.Query().ToLinkString())) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -472,7 +471,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var28 templ.SafeURL = m.Config.ToLink2("ar=true") + var templ_7745c5c3_Var28 templ.SafeURL = m.Config.Query().Add(llAutoRefreshKey, "true").ToLink() _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var28))) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -481,7 +480,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var29 templ.SafeURL = m.Config.ToLink() + var templ_7745c5c3_Var29 templ.SafeURL = m.Config.Query().ToLink() _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var29))) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err @@ -514,7 +513,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(m.Config.ToLinkString())) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(globalSearchKey)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -522,7 +521,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(m.Config.Global.Search)) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(m.Config.Query().ToLinkString())) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -530,6 +529,14 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(m.Config.Global.Search)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 53) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } if !templ_7745c5c3_IsBuffer { _, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer) } @@ -539,7 +546,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 53) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 54) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -549,54 +556,53 @@ func LogList(m LogListModel) templ.Component { templ_7745c5c3_Buffer = templ.GetBuffer() defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 54) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 55) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } for verdict := range data.NumLogVerdicts { - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 55) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 56) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } if m.Config.Filter == verdict { - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 56) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 57) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var32 templ.SafeURL = m.Config.ToLink() + var templ_7745c5c3_Var32 templ.SafeURL = m.Config.Query().ToLink() _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var32))) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 57) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 58) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } var templ_7745c5c3_Var33 string templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(data.LogVerdictToString(verdict)) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 131, Col: 51} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `log.templ`, Line: 132, Col: 51} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 58) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 59) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } else { - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 59) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 60) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - var templ_7745c5c3_Var34 templ.SafeURL = m.Config.ToLink2( - fmt.Sprintf("f=%d", verdict)) + var templ_7745c5c3_Var34 templ.SafeURL = m.Config.Query().Add(llFilterKey, strconv.Itoa(verdict)).ToLink() _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var34))) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 60) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 61) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -609,17 +615,17 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 61) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 62) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 62) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 63) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 63) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 64) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -632,7 +638,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 64) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 65) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -642,7 +648,7 @@ func LogList(m LogListModel) templ.Component { templ_7745c5c3_Buffer = templ.GetBuffer() defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 65) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 66) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -655,7 +661,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 66) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 67) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -668,7 +674,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 67) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 68) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -690,7 +696,7 @@ func LogList(m LogListModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 68) + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 69) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/log_templ.txt b/log_templ.txt index 4513e28..2af2750 100644 --- a/log_templ.txt +++ b/log_templ.txt @@ -47,7 +47,8 @@ \">Turn on autorefresh Refresh -
diff --git a/querywrapper.go b/querywrapper.go new file mode 100644 index 0000000..9527482 --- /dev/null +++ b/querywrapper.go @@ -0,0 +1,42 @@ +/* + * Author: Markus Stenberg + * + * Copyright (c) 2024 Markus Stenberg + * + * Created: Sun Apr 28 10:03:22 2024 mstenber + * Last modified: Sun Apr 28 10:25:19 2024 mstenber + * Edit time: 9 min + * + */ + +package main + +import ( + "net/url" + + "github.com/a-h/templ" +) + +type QueryWrapper struct { + Base string + Values url.Values +} + +func (self *QueryWrapper) Add(key, value string) *QueryWrapper { + if self.Values == nil { + self.Values = url.Values{} + } + self.Values.Add(key, value) + return self +} + +func (self QueryWrapper) ToLink() templ.SafeURL { + return templ.URL(self.ToLinkString()) +} + +func (self QueryWrapper) ToLinkString() string { + if len(self.Values) > 0 { + return self.Base + "?" + self.Values.Encode() + } + return self.Base +} diff --git a/querywrapper_test.go b/querywrapper_test.go new file mode 100644 index 0000000..afb34ec --- /dev/null +++ b/querywrapper_test.go @@ -0,0 +1,28 @@ +/* + * Author: Markus Stenberg + * + * Copyright (c) 2024 Markus Stenberg + * + * Created: Sun Apr 28 10:08:33 2024 mstenber + * Last modified: Sun Apr 28 10:20:02 2024 mstenber + * Edit time: 5 min + * + */ + +package main + +import ( + "testing" + + "gotest.tools/v3/assert" +) + +func TestQueryWrapper(t *testing.T) { + qw := QueryWrapper{Base: "x"} + qw2 := qw.Add("foo", "bar") + + // This is just chaining convenience. Ensure that is the case + assert.Equal(t, &qw, qw2) + + assert.DeepEqual(t, qw.Values["foo"], []string{"bar"}) +}