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  }