{{define "alert_row"}} {{$a := .Alert}} {{$hostNames := .HostNames}} {{$usernames := .Usernames}} {{$filter := .Filter}} {{$status := alertStatus $a.ResolvedAt $a.AcknowledgedAt}} {{/* derive query string for redirect-back after ack/resolve */}} {{$qs := ""}} {{if $filter.Status}}{{$qs = printf "status=%s" $filter.Status}}{{end}} {{if $filter.Severity}}{{$qs = printf "%s&severity=%s" $qs $filter.Severity}}{{end}} {{if $filter.HostID}}{{$qs = printf "%s&host_id=%s" $qs $filter.HostID}}{{end}} {{if $filter.Search}}{{$qs = printf "%s&q=%s" $qs $filter.Search}}{{end}}
{{/* dot */}}
{{if eq $status "resolved"}} {{else if eq $a.Severity "critical"}} {{else if eq $a.Severity "warning"}} {{else}} {{end}}
{{/* severity + kind tag */}}
{{if eq $a.Severity "critical"}} {{$a.Kind}} {{else if eq $a.Severity "warning"}} {{$a.Kind}} {{else}} {{$a.Kind}} {{end}}
{{/* host */}}
{{mapGet $hostNames $a.HostID}}
{{/* message */}}
{{$a.Message}}
{{/* raised (created_at) */}}
{{relTime $a.CreatedAt}}
{{/* last seen */}}
{{if and (eq $status "open") (stillHappening $a.LastSeenAt)}} still happening · {{relTime $a.LastSeenAt}} {{else}} {{relTime $a.LastSeenAt}} {{end}}
{{/* actions */}}
{{if eq $status "open"}}
{{if $qs}}{{end}}
{{if $qs}}{{end}}
{{else if eq $status "acknowledged"}} {{$ackedBy := ""}} {{if $a.AcknowledgedBy}} {{$id := deref $a.AcknowledgedBy}} {{if index $usernames $id}}{{$ackedBy = index $usernames $id}}{{else}}{{$ackedBy = $id}}{{end}} {{end}} ack'd{{if $ackedBy}} by {{$ackedBy}}{{end}} · {{relTime $a.AcknowledgedAt}}
{{if $qs}}{{end}}
{{else}} resolved · {{relTime $a.ResolvedAt}} {{end}}
{{end}}