diff --git a/site/data/severity.toml b/site/data/severity.toml
index 8b69bbc..8f56240 100644
--- a/site/data/severity.toml
+++ b/site/data/severity.toml
@@ -11,3 +11,17 @@
degraded-performance = "warning"
partial-outage = "warning"
major-outage = "danger"
+
+[levels]
+ 0 = "ok"
+ 1 = "under-maintenance"
+ 2 = "degraded-performance"
+ 3 = "partial-outage"
+ 4 = "major-outage"
+
+[levels_reverse]
+ ok = 0
+ under-maintenance = 1
+ degraded-performance = 2
+ partial-outage = 3
+ major-outage = 4
diff --git a/site/layouts/partials/systems.html b/site/layouts/partials/systems.html
index d4e0c17..e35d41d 100644
--- a/site/layouts/partials/systems.html
+++ b/site/layouts/partials/systems.html
@@ -9,15 +9,19 @@
{{- $name -}}
{{ if $.incidents }}
+ {{ $.content.Scratch.Set "max" 0 }}
{{ range $.incidents }}
{{ if in .Params.affectedsystems $name }}
- {{ $alert := index .Site.Data.severity.alerts .Params.severity }}
- {{ $desc := index .Site.Data.severity.descriptions .Params.severity }}
- {{ partial "status-badge" (dict "alert" $alert "description" $desc) }}
- {{ else }}
- {{ partial "status-badge" (dict "alert" $okAlert "description" $okDesc) }}
+ {{ $level := index .Site.Data.severity.levels_reverse .Params.severity }}
+ {{ if gt $level ($.content.Scratch.Get "max") }}
+ {{ $.content.Scratch.Set "max" $level }}
+ {{ end }}
{{ end }}
{{ end }}
+ {{ $severity := index $.content.Site.Data.severity.levels (string ($.content.Scratch.Get "max")) }}
+ {{ $alert := index $.content.Site.Data.severity.alerts $severity }}
+ {{ $desc := index $.content.Site.Data.severity.descriptions $severity }}
+ {{ partial "status-badge" (dict "alert" $alert "description" $desc) }}
{{ else }}
{{ partial "status-badge" (dict "alert" $okAlert "description" $okDesc) }}
{{ end }}