diff --git a/modules/uptimerobot/settings.go b/modules/uptimerobot/settings.go index fe638ee1..878e4fa5 100644 --- a/modules/uptimerobot/settings.go +++ b/modules/uptimerobot/settings.go @@ -17,6 +17,7 @@ type Settings struct { apiKey string `help:"An UptimeRobot API key."` uptimePeriods string `help:"The periods over which to display uptime (in days, dash-separated)." optional:"true"` + offlineFirst bool `help:"Display offline monitors at the top." optional:"true"` } func NewSettingsFromYAML(name string, ymlConfig *config.Config, globalConfig *config.Config) *Settings { @@ -26,6 +27,7 @@ func NewSettingsFromYAML(name string, ymlConfig *config.Config, globalConfig *co apiKey: ymlConfig.UString("apiKey", os.Getenv("WTF_UPTIMEROBOT_APIKEY")), uptimePeriods: ymlConfig.UString("uptimePeriods", "30"), + offlineFirst: ymlConfig.UBool("offlineFirst", false), } cfg.ModuleSecret(name, globalConfig, &settings.apiKey). diff --git a/modules/uptimerobot/widget.go b/modules/uptimerobot/widget.go index 1827a1e3..bcb69d24 100644 --- a/modules/uptimerobot/widget.go +++ b/modules/uptimerobot/widget.go @@ -47,6 +47,22 @@ func (widget *Widget) Refresh() { } monitors, err := widget.getMonitors() + + if widget.settings.offlineFirst { + var tmp Monitor + var next int + for i := 0; i < len(monitors); i++ { + if monitors[i].State != 2 { + tmp = monitors[i] + for j := i; j > next; j-- { + monitors[j] = monitors[j-1] + } + monitors[next] = tmp + next++ + } + } + } + widget.monitors = monitors widget.err = err widget.SetItemCount(len(monitors))