From ee1cde8a0400244c582f8246889f893f60c937c3 Mon Sep 17 00:00:00 2001
From: Svilen Markov <7613769+svilenmarkov@users.noreply.github.com>
Date: Fri, 17 Jan 2025 19:09:49 +0000
Subject: [PATCH] Update monitor widget
---
internal/glance/templates/monitor.html | 4 ----
internal/glance/widget-monitor.go | 19 +++++++++++++------
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/internal/glance/templates/monitor.html b/internal/glance/templates/monitor.html
index 291d638..7e95b99 100644
--- a/internal/glance/templates/monitor.html
+++ b/internal/glance/templates/monitor.html
@@ -25,11 +25,7 @@
{{ end }}
- {{ if and .Status.Error ( ne "" .ErrorURL)}}
-
{{ .Title }}
- {{ else }}
{{ .Title }}
- {{ end }}
{{ if not .Status.Error }}
- {{ .StatusText }}
diff --git a/internal/glance/widget-monitor.go b/internal/glance/widget-monitor.go
index c32ca21..76f0d45 100644
--- a/internal/glance/widget-monitor.go
+++ b/internal/glance/widget-monitor.go
@@ -20,6 +20,7 @@ type monitorWidget struct {
Sites []struct {
*SiteStatusRequest `yaml:",inline"`
Status *siteStatus `yaml:"-"`
+ URL string `yaml:"-"`
ErrorURL string `yaml:"error-url"`
Title string `yaml:"title"`
Icon customIconField `yaml:"icon"`
@@ -59,10 +60,16 @@ func (widget *monitorWidget) update(ctx context.Context) {
status := &statuses[i]
site.Status = status
- if !slices.Contains(site.AltStatusCodes, status.Code) && (status.Code >= 400 || status.TimedOut || status.Error != nil) {
+ if !slices.Contains(site.AltStatusCodes, status.Code) && (status.Code >= 400 || status.Error != nil) {
widget.HasFailing = true
}
+ if status.Error != nil && site.ErrorURL != "" {
+ site.URL = site.ErrorURL
+ } else {
+ site.URL = site.DefaultURL
+ }
+
site.StatusText = statusCodeToText(status.Code, site.AltStatusCodes)
site.StatusStyle = statusCodeToStyle(status.Code, site.AltStatusCodes)
}
@@ -89,12 +96,12 @@ func statusCodeToText(status int, altStatusCodes []int) string {
if status == 401 {
return "Unauthorized"
}
- if status >= 400 {
- return "Client Error"
- }
if status >= 500 {
return "Server Error"
}
+ if status >= 400 {
+ return "Client Error"
+ }
return strconv.Itoa(status)
}
@@ -108,7 +115,7 @@ func statusCodeToStyle(status int, altStatusCodes []int) string {
}
type SiteStatusRequest struct {
- URL string `yaml:"url"`
+ DefaultURL string `yaml:"url"`
CheckURL string `yaml:"check-url"`
AllowInsecure bool `yaml:"allow-insecure"`
}
@@ -125,7 +132,7 @@ func fetchSiteStatusTask(statusRequest *SiteStatusRequest) (siteStatus, error) {
if statusRequest.CheckURL != "" {
url = statusRequest.CheckURL
} else {
- url = statusRequest.URL
+ url = statusRequest.DefaultURL
}
request, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {