aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ideas.md1
-rw-r--r--internal/server/server.go23
-rw-r--r--internal/server/templates/index.html2
3 files changed, 21 insertions, 5 deletions
diff --git a/ideas.md b/ideas.md
index d5d437a..ebda3a4 100644
--- a/ideas.md
+++ b/ideas.md
@@ -19,7 +19,6 @@
### Interactive Features
- Keyboard shortcuts for navigation
-- Search/filter monitors
- Bulk actions on monitors
- Quick status overview in browser tab title
diff --git a/internal/server/server.go b/internal/server/server.go
index 28b3662..50ff1ea 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -120,6 +120,7 @@ type PageData struct {
Groups []GroupData
Incidents []IncidentData
OverallStatus string
+ StatusCounts StatusCounts // Counts for tab title
LastUpdated time.Time
CurrentTime string // Formatted date/time for display (without timezone)
TimezoneTooltip string // JSON data for timezone tooltip
@@ -132,6 +133,14 @@ type PageData struct {
Scale float64 // UI scale factor (0.5-2.0)
}
+// StatusCounts holds monitor status counts for display
+type StatusCounts struct {
+ Up int
+ Down int
+ Degraded int
+ Total int
+}
+
// GroupData contains data for a monitor group
type GroupData struct {
Name string
@@ -221,6 +230,7 @@ func (s *Server) handleIndex(w http.ResponseWriter, r *http.Request) {
overallUp := true
hasDegraded := false
var mostRecentCheck time.Time
+ var statusCounts StatusCounts
// Build groups
for _, group := range s.config.Groups {
@@ -275,11 +285,17 @@ func (s *Server) handleIndex(w http.ResponseWriter, r *http.Request) {
md.Ticks = ticks
}
- // Update overall status
- if stat.CurrentStatus == "down" {
+ // Update overall status and counts
+ statusCounts.Total++
+ switch stat.CurrentStatus {
+ case "down":
overallUp = false
- } else if stat.CurrentStatus == "degraded" {
+ statusCounts.Down++
+ case "degraded":
hasDegraded = true
+ statusCounts.Degraded++
+ case "up":
+ statusCounts.Up++
}
} else {
md.Status = "unknown"
@@ -324,6 +340,7 @@ func (s *Server) handleIndex(w http.ResponseWriter, r *http.Request) {
} else {
data.OverallStatus = "All Systems Operational"
}
+ data.StatusCounts = statusCounts
// Build incidents
for _, inc := range s.config.Incidents {
diff --git a/internal/server/templates/index.html b/internal/server/templates/index.html
index d70b496..3c35f42 100644
--- a/internal/server/templates/index.html
+++ b/internal/server/templates/index.html
@@ -12,7 +12,7 @@
{{end}}
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>{{.Site.Name}}</title>
+ <title>{{if eq .OverallStatus "All Systems Operational"}}[OK]{{else if eq .OverallStatus "Partial Outage"}}[!{{.StatusCounts.Degraded}}]{{else}}[X{{.StatusCounts.Down}}]{{end}} {{.Site.Name}}</title>
<meta name="description" content="{{.Site.Description}}">
{{if .Site.Favicon}}
<link rel="icon" href="{{.Site.Favicon}}">