github.com/wtfutil/wtf@v0.43.0/modules/grafana/display.go (about) 1 package grafana 2 3 import "fmt" 4 5 func (widget *Widget) content() (string, string, bool) { 6 title := widget.CommonSettings().Title 7 8 var out string 9 if widget.Err != nil { 10 return title, widget.Err.Error(), false 11 } else { 12 for idx, alert := range widget.Alerts { 13 out += fmt.Sprintf(` ["%d"][%s]%s - %s[""]`, 14 idx, 15 stateColor(alert.State), 16 stateToEmoji(alert.State), 17 alert.Name, 18 ) 19 out += "\n" 20 } 21 } 22 23 return title, out, false 24 } 25 26 func stateColor(state AlertState) string { 27 switch state { 28 case Ok: 29 return "green" 30 case Paused: 31 return "yellow" 32 case Alerting: 33 return "red" 34 case Pending: 35 return "orange" 36 case NoData: 37 return "yellow" 38 default: 39 return "white" 40 } 41 } 42 43 func stateToEmoji(state AlertState) string { 44 switch state { 45 case Ok: 46 return "✔" 47 case Paused: 48 return "⏸" 49 case Alerting: 50 return "✘" 51 case Pending: 52 return "?" 53 case NoData: 54 return "?" 55 } 56 return "" 57 }