From 9c5298aebf82b30002365595fed47814a0cae045 Mon Sep 17 00:00:00 2001 From: Svilen Markov <7613769+svilenmarkov@users.noreply.github.com> Date: Sat, 16 Nov 2024 11:10:46 +0000 Subject: [PATCH] Add compact style for monitor widget --- docs/configuration.md | 8 ++ .../images/monitor-widget-compact-preview.png | Bin 0 -> 15331 bytes internal/assets/static/main.css | 1 + internal/assets/templates.go | 1 + .../assets/templates/monitor-compact.html | 39 ++++++++++ internal/widget/monitor.go | 71 ++++++++++-------- 6 files changed, 87 insertions(+), 33 deletions(-) create mode 100644 docs/images/monitor-widget-compact-preview.png create mode 100644 internal/assets/templates/monitor-compact.html diff --git a/docs/configuration.md b/docs/configuration.md index f8221b8..832d035 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1149,11 +1149,19 @@ You can hover over the "ERROR" text to view more information. | Name | Type | Required | Default | | ---- | ---- | -------- | ------- | | sites | array | yes | | +| style | string | no | | | show-failing-only | boolean | no | false | ##### `show-failing-only` Shows only a list of failing sites when set to `true`. +##### `style` +Used to change the appearance of the widget. Possible values are `compact`. + +Preview of `compact`: + +![](images/monitor-widget-compact-preview.png) + ##### `sites` Properties for each site: diff --git a/docs/images/monitor-widget-compact-preview.png b/docs/images/monitor-widget-compact-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..3e81fce8e04b08db3f7ebf85cd17329126cd4705 GIT binary patch literal 15331 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 literal 0 HcmV?d00001 diff --git a/internal/assets/static/main.css b/internal/assets/static/main.css index 3c342a0..3268a48 100644 --- a/internal/assets/static/main.css +++ b/internal/assets/static/main.css @@ -1830,6 +1830,7 @@ details[open] .summary::after { .list { --list-half-gap: 0rem; } .list-gap-2 { --list-half-gap: 0.1rem; } .list-gap-4 { --list-half-gap: 0.2rem; } +.list-gap-8 { --list-half-gap: 0.4rem; } .list-gap-10 { --list-half-gap: 0.5rem; } .list-gap-14 { --list-half-gap: 0.7rem; } .list-gap-20 { --list-half-gap: 1rem; } diff --git a/internal/assets/templates.go b/internal/assets/templates.go index 324f8ca..4834078 100644 --- a/internal/assets/templates.go +++ b/internal/assets/templates.go @@ -32,6 +32,7 @@ var ( RSSHorizontalCardsTemplate = compileTemplate("rss-horizontal-cards.html", "widget-base.html") RSSHorizontalCards2Template = compileTemplate("rss-horizontal-cards-2.html", "widget-base.html") MonitorTemplate = compileTemplate("monitor.html", "widget-base.html") + MonitorCompactTemplate = compileTemplate("monitor-compact.html", "widget-base.html") TwitchGamesListTemplate = compileTemplate("twitch-games-list.html", "widget-base.html") TwitchChannelsTemplate = compileTemplate("twitch-channels.html", "widget-base.html") RepositoryTemplate = compileTemplate("repository.html", "widget-base.html") diff --git a/internal/assets/templates/monitor-compact.html b/internal/assets/templates/monitor-compact.html new file mode 100644 index 0000000..327c978 --- /dev/null +++ b/internal/assets/templates/monitor-compact.html @@ -0,0 +1,39 @@ +{{ template "widget-base.html" . }} + +{{ define "widget-content" }} +{{ if not (and .ShowFailingOnly (not .HasFailing)) }} +
    + {{ range .Sites }} + {{ if and $.ShowFailingOnly (eq .StatusStyle "ok" ) }}{{ continue }}{{ end }} +
    + {{ template "site" . }} +
    + {{ end }} +
+{{ else }} +
+

All sites are online

+ + + +
+{{ end }} +{{ end }} + +{{ define "site" }} +{{ .Title }} +{{ if not .Status.TimedOut }}
{{ .Status.ResponseTime.Milliseconds | formatNumber }}ms
{{ end }} +{{ if eq .StatusStyle "ok" }} +
+ + + +
+{{ else }} +
+ + + +
+{{ end }} +{{ end }} diff --git a/internal/widget/monitor.go b/internal/widget/monitor.go index 14b1d70..f769a4e 100644 --- a/internal/widget/monitor.go +++ b/internal/widget/monitor.go @@ -11,37 +11,6 @@ import ( "github.com/glanceapp/glance/internal/feed" ) -func statusCodeToText(status int, altStatusCodes []int) string { - if status == 200 || slices.Contains(altStatusCodes, status) { - return "OK" - } - if status == 404 { - return "Not Found" - } - if status == 403 { - return "Forbidden" - } - if status == 401 { - return "Unauthorized" - } - if status >= 400 { - return "Client Error" - } - if status >= 500 { - return "Server Error" - } - - return strconv.Itoa(status) -} - -func statusCodeToStyle(status int, altStatusCodes []int) string { - if status == 200 || slices.Contains(altStatusCodes, status) { - return "ok" - } - - return "error" -} - type Monitor struct { widgetBase `yaml:",inline"` Sites []struct { @@ -54,8 +23,9 @@ type Monitor struct { StatusStyle string `yaml:"-"` AltStatusCodes []int `yaml:"alt-status-codes"` } `yaml:"sites"` - ShowFailingOnly bool `yaml:"show-failing-only"` - HasFailing bool `yaml:"-"` + Style string `yaml:"style"` + ShowFailingOnly bool `yaml:"show-failing-only"` + HasFailing bool `yaml:"-"` } func (widget *Monitor) Initialize() error { @@ -96,5 +66,40 @@ func (widget *Monitor) Update(ctx context.Context) { } func (widget *Monitor) Render() template.HTML { + if widget.Style == "compact" { + return widget.render(widget, assets.MonitorCompactTemplate) + } + return widget.render(widget, assets.MonitorTemplate) } + +func statusCodeToText(status int, altStatusCodes []int) string { + if status == 200 || slices.Contains(altStatusCodes, status) { + return "OK" + } + if status == 404 { + return "Not Found" + } + if status == 403 { + return "Forbidden" + } + if status == 401 { + return "Unauthorized" + } + if status >= 400 { + return "Client Error" + } + if status >= 500 { + return "Server Error" + } + + return strconv.Itoa(status) +} + +func statusCodeToStyle(status int, altStatusCodes []int) string { + if status == 200 || slices.Contains(altStatusCodes, status) { + return "ok" + } + + return "error" +}