diff --git a/docs/configuration.md b/docs/configuration.md index b3ac57a2f..2d993c6a0 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1941,10 +1941,14 @@ You can hover over the "ERROR" text to view more information. | sites | array | yes | | | style | string | no | | | show-failing-only | boolean | no | false | +| hide-details | boolean | no | false | ##### `show-failing-only` Shows only a list of failing sites when set to `true`. +##### `hide-details` +Hides status text and response times, leaving only each site title and status icon. + ##### `style` Used to change the appearance of the widget. Possible values are `compact`. diff --git a/internal/glance/templates/monitor-compact.html b/internal/glance/templates/monitor-compact.html index dca568398..127f7c03a 100644 --- a/internal/glance/templates/monitor-compact.html +++ b/internal/glance/templates/monitor-compact.html @@ -22,7 +22,7 @@ {{ define "site" }} {{ .Title }} -{{ if not .Status.TimedOut }}
{{ .Status.ResponseTime.Milliseconds | formatNumber }}ms
{{ end }} +{{ if and (not .HideDetails) (not .Status.TimedOut) }}
{{ .Status.ResponseTime.Milliseconds | formatNumber }}ms
{{ end }} {{ if eq .StatusStyle "ok" }}
diff --git a/internal/glance/templates/monitor.html b/internal/glance/templates/monitor.html index cbdcbae17..9113d2a6e 100644 --- a/internal/glance/templates/monitor.html +++ b/internal/glance/templates/monitor.html @@ -26,7 +26,7 @@ {{ end }}
{{ .Title }} - {{ end }}
{{ if eq .StatusStyle "ok" }}
diff --git a/internal/glance/widget-monitor.go b/internal/glance/widget-monitor.go index cdce0d6bd..337f8e9e3 100644 --- a/internal/glance/widget-monitor.go +++ b/internal/glance/widget-monitor.go @@ -27,15 +27,20 @@ type monitorWidget struct { SameTab bool `yaml:"same-tab"` StatusText string `yaml:"-"` StatusStyle string `yaml:"-"` + HideDetails bool `yaml:"-"` AltStatusCodes []int `yaml:"alt-status-codes"` } `yaml:"sites"` Style string `yaml:"style"` ShowFailingOnly bool `yaml:"show-failing-only"` + HideDetails bool `yaml:"hide-details"` HasFailing bool `yaml:"-"` } func (widget *monitorWidget) initialize() error { widget.withTitle("Monitor").withCacheDuration(5 * time.Minute) + for i := range widget.Sites { + widget.Sites[i].HideDetails = widget.HideDetails + } return nil } diff --git a/internal/glance/widget-monitor_test.go b/internal/glance/widget-monitor_test.go new file mode 100644 index 000000000..cd725c225 --- /dev/null +++ b/internal/glance/widget-monitor_test.go @@ -0,0 +1,44 @@ +package glance + +import ( + "strings" + "testing" + "time" +) + +func TestMonitorWidgetHideDetails(t *testing.T) { + for _, style := range []string{"", "compact"} { + t.Run(style, func(t *testing.T) { + widget := &monitorWidget{ + Style: style, + HideDetails: true, + } + widget.Sites = make([]struct { + *SiteStatusRequest `yaml:",inline"` + Status *siteStatus `yaml:"-"` + URL string `yaml:"-"` + ErrorURL string `yaml:"error-url"` + Title string `yaml:"title"` + Icon customIconField `yaml:"icon"` + SameTab bool `yaml:"same-tab"` + StatusText string `yaml:"-"` + StatusStyle string `yaml:"-"` + HideDetails bool `yaml:"-"` + AltStatusCodes []int `yaml:"alt-status-codes"` + }, 1) + widget.Sites[0].Title = "Service" + widget.Sites[0].Status = &siteStatus{Code: 200, ResponseTime: 123 * time.Millisecond} + widget.Sites[0].StatusText = "OK" + widget.Sites[0].StatusStyle = "ok" + + if err := widget.initialize(); err != nil { + t.Fatalf("initialize monitor widget: %v", err) + } + + rendered := string(widget.Render()) + if strings.Contains(rendered, "123ms") || strings.Contains(rendered, ">OK<") { + t.Fatal("expected status details to be hidden") + } + }) + } +}