func Display()

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
}