in pkg/display/graph/gauge/gauge.go [196:250]
func Display(ctx context.Context, metrics [][]*api.SelectedRecord) error {
t, err := termbox.New()
if err != nil {
return err
}
defer t.Close()
c, err := container.New(
t,
container.ID(RootID),
)
if err != nil {
return err
}
var columns []*MetricColumn
configs, err := dashboard.LoadTemplate(ctx.Value(contextkey.DashboardTemplate{}).(string))
if err != nil {
return nil
}
for i := range configs.Metrics {
col, innerErr := NewMetricColumn(metrics[i], &configs.Metrics[i])
if innerErr != nil {
return innerErr
}
columns = append(columns, col)
}
gridOpts, err := layout(MetricColumnsElement(columns))
if err != nil {
return err
}
err = c.Update(RootID, append(
gridOpts,
container.Border(linestyle.Light),
container.BorderTitle("[Global Metrics]-PRESS Q TO QUIT"))...,
)
if err != nil {
return err
}
con, cancel := context.WithCancel(context.Background())
quitter := func(keyboard *terminalapi.Keyboard) {
if strings.EqualFold(keyboard.Key.String(), "q") {
cancel()
}
}
err = termdash.Run(con, t, c, termdash.KeyboardSubscriber(quitter))
return err
}