diff --git a/README.md b/README.md index 84020469..d234bbdb 100644 --- a/README.md +++ b/README.md @@ -263,6 +263,8 @@ If you want to test it locally, see [Docker](#docker). | `ui` | UI configuration. | `{}` | | `ui.title` | [Title of the document](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title). | `Health Dashboard ǀ Gatus` | | `ui.description` | Meta description for the page. | `Gatus is an advanced...`. | +| `ui.dashboard-heading` | Dashboard title between header and endpoints | `Health Dashboard` | +| `ui.dashboard-subheading` | Dashboard description between header and endpoints | `Monitor the health of your endpoints in real-time` | | `ui.header` | Header at the top of the dashboard. | `Gatus` | | `ui.logo` | URL to the logo to display. | `""` | | `ui.link` | Link to open when the logo is clicked. | `""` | diff --git a/config/ui/ui.go b/config/ui/ui.go index 649007a3..e56a8c5c 100644 --- a/config/ui/ui.go +++ b/config/ui/ui.go @@ -10,14 +10,16 @@ import ( ) const ( - defaultTitle = "Health Dashboard | Gatus" - defaultDescription = "Gatus is an advanced automated status page that lets you monitor your applications and configure alerts to notify you if there's an issue" - defaultHeader = "Gatus" - defaultLogo = "" - defaultLink = "" - defaultCustomCSS = "" - defaultSortBy = "name" - defaultFilterBy = "none" + defaultTitle = "Health Dashboard | Gatus" + defaultDescription = "Gatus is an advanced automated status page that lets you monitor your applications and configure alerts to notify you if there's an issue" + defaultHeader = "Gatus" + defaultDashboardHeading = "Health Dashboard" + defaultDashboardSubheading = "Monitor the health of your endpoints in real-time" + defaultLogo = "" + defaultLink = "" + defaultCustomCSS = "" + defaultSortBy = "name" + defaultFilterBy = "none" ) var ( @@ -30,17 +32,18 @@ var ( // Config is the configuration for the UI of Gatus type Config struct { - Title string `yaml:"title,omitempty"` // Title of the page - Description string `yaml:"description,omitempty"` // Meta description of the page - Header string `yaml:"header,omitempty"` // Header is the text at the top of the page - Logo string `yaml:"logo,omitempty"` // Logo to display on the page - Link string `yaml:"link,omitempty"` // Link to open when clicking on the logo - Buttons []Button `yaml:"buttons,omitempty"` // Buttons to display below the header - CustomCSS string `yaml:"custom-css,omitempty"` // Custom CSS to include in the page - DarkMode *bool `yaml:"dark-mode,omitempty"` // DarkMode is a flag to enable dark mode by default - DefaultSortBy string `yaml:"default-sort-by,omitempty"` // DefaultSortBy is the default sort option ('name', 'group', 'health') - DefaultFilterBy string `yaml:"default-filter-by,omitempty"` // DefaultFilterBy is the default filter option ('none', 'failing', 'unstable') - + Title string `yaml:"title,omitempty"` // Title of the page + Description string `yaml:"description,omitempty"` // Meta description of the page + DashboardHeading string `yaml:"dashboard-heading,omitempty"` // Dashboard Title between header and endpoints + DashboardSubheading string `yaml:"dashboard-subheading,omitempty"` // Dashboard Description between header and endpoints + Header string `yaml:"header,omitempty"` // Header is the text at the top of the page + Logo string `yaml:"logo,omitempty"` // Logo to display on the page + Link string `yaml:"link,omitempty"` // Link to open when clicking on the logo + Buttons []Button `yaml:"buttons,omitempty"` // Buttons to display below the header + CustomCSS string `yaml:"custom-css,omitempty"` // Custom CSS to include in the page + DarkMode *bool `yaml:"dark-mode,omitempty"` // DarkMode is a flag to enable dark mode by default + DefaultSortBy string `yaml:"default-sort-by,omitempty"` // DefaultSortBy is the default sort option ('name', 'group', 'health') + DefaultFilterBy string `yaml:"default-filter-by,omitempty"` // DefaultFilterBy is the default filter option ('none', 'failing', 'unstable') ////////////////////////////////////////////// // Non-configurable - used for UI rendering // ////////////////////////////////////////////// @@ -73,6 +76,8 @@ func GetDefaultConfig() *Config { return &Config{ Title: defaultTitle, Description: defaultDescription, + DashboardHeading: defaultDashboardHeading, + DashboardSubheading: defaultDashboardSubheading, Header: defaultHeader, Logo: defaultLogo, Link: defaultLink, @@ -92,6 +97,12 @@ func (cfg *Config) ValidateAndSetDefaults() error { if len(cfg.Description) == 0 { cfg.Description = defaultDescription } + if len(cfg.DashboardHeading) == 0 { + cfg.DashboardHeading = defaultDashboardHeading + } + if len(cfg.DashboardSubheading) == 0 { + cfg.DashboardSubheading = defaultDashboardSubheading + } if len(cfg.Header) == 0 { cfg.Header = defaultHeader } diff --git a/config/ui/ui_test.go b/config/ui/ui_test.go index 86cf5d5b..ec132bf4 100644 --- a/config/ui/ui_test.go +++ b/config/ui/ui_test.go @@ -8,11 +8,13 @@ import ( func TestConfig_ValidateAndSetDefaults(t *testing.T) { cfg := &Config{ - Title: "", - Description: "", - Header: "", - Logo: "", - Link: "", + Title: "", + Description: "", + DashboardHeading: "", + DashboardSubheading: "", + Header: "", + Logo: "", + Link: "", } if err := cfg.ValidateAndSetDefaults(); err != nil { t.Error("expected no error, got", err.Error()) @@ -23,6 +25,12 @@ func TestConfig_ValidateAndSetDefaults(t *testing.T) { if cfg.Description != defaultDescription { t.Errorf("expected description to be %s, got %s", defaultDescription, cfg.Description) } + if cfg.DashboardHeading != defaultDashboardHeading { + t.Errorf("expected DashboardHeading to be %s, got %s", defaultDashboardHeading, cfg.DashboardHeading) + } + if cfg.DashboardSubheading != defaultDashboardSubheading { + t.Errorf("expected DashboardSubheading to be %s, got %s", defaultDashboardSubheading, cfg.DashboardSubheading) + } if cfg.Header != defaultHeader { t.Errorf("expected header to be %s, got %s", defaultHeader, cfg.Header) } @@ -78,6 +86,12 @@ func TestGetDefaultConfig(t *testing.T) { if defaultConfig.Title != defaultTitle { t.Error("expected GetDefaultConfig() to return defaultTitle, got", defaultConfig.Title) } + if defaultConfig.DashboardHeading != defaultDashboardHeading { + t.Error("expected GetDefaultConfig() to return defaultDashboardHeading, got", defaultConfig.DashboardHeading) + } + if defaultConfig.DashboardSubheading != defaultDashboardSubheading { + t.Error("expected GetDefaultConfig() to return defaultDashboardSubheading, got", defaultConfig.DashboardSubheading) + } if defaultConfig.Logo != defaultLogo { t.Error("expected GetDefaultConfig() to return defaultLogo, got", defaultConfig.Logo) } diff --git a/web/app/public/index.html b/web/app/public/index.html index 5655ef75..292029a9 100644 --- a/web/app/public/index.html +++ b/web/app/public/index.html @@ -3,7 +3,7 @@