aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/html/html.go
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2023-05-09 18:25:02 +0200
committerAleksandr Nogikh <wp32pw@gmail.com>2023-05-10 09:02:53 +0200
commitdfd5a9acc134f1ea849a49efee7dd7f50c836e75 (patch)
treeac41d021e09d5b8ac2c70938d59432092415e798 /pkg/html/html.go
parent1964022bd4ae3c35688b98f6a4db45076c7d002c (diff)
dashboard: support filtering over multiple labels
For each label, allow only one value to be specified. At the same time, allow multiple different labels (subsystem, origin, prio, etc) be specified together.
Diffstat (limited to 'pkg/html/html.go')
-rw-r--r--pkg/html/html.go29
1 files changed, 27 insertions, 2 deletions
diff --git a/pkg/html/html.go b/pkg/html/html.go
index 72c2956e0..930fdd923 100644
--- a/pkg/html/html.go
+++ b/pkg/html/html.go
@@ -194,6 +194,30 @@ func commitLink(repo, commit string) string {
}
func AmendURL(baseURL, key, value string) string {
+ return TransformURL(baseURL, key, func(_ []string) []string {
+ if value == "" {
+ return nil
+ }
+ return []string{value}
+ })
+}
+
+func DropParam(baseURL, key, value string) string {
+ return TransformURL(baseURL, key, func(oldValues []string) []string {
+ if value == "" {
+ return nil
+ }
+ var newValues []string
+ for _, iterVal := range oldValues {
+ if iterVal != value {
+ newValues = append(newValues, iterVal)
+ }
+ }
+ return newValues
+ })
+}
+
+func TransformURL(baseURL, key string, f func([]string) []string) string {
if baseURL == "" {
return ""
}
@@ -202,10 +226,11 @@ func AmendURL(baseURL, key, value string) string {
return ""
}
values := parsed.Query()
- if value == "" {
+ ret := f(values[key])
+ if len(ret) == 0 {
values.Del(key)
} else {
- values.Set(key, value)
+ values[key] = ret
}
parsed.RawQuery = values.Encode()
return parsed.String()