func Display()

in pkg/display/graph/linear/linear.go [136:187]


func Display(cliCtx *cli.Context, inputs map[string]map[string]*displayable.MetricValue) 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
	}

	elements := make(map[string]*linechart.LineChart)

	for title, input := range inputs {
		w, e := NewLineChart(input)
		if e != nil {
			return e
		}
		elements[title] = w
	}

	gridOpts, err := layout(LineChartElements(elements))
	if err != nil {
		return err
	}

	err = c.Update(RootID, append(
		gridOpts,
		container.Border(linestyle.Light),
		container.BorderTitle(fmt.Sprintf("[%s]-PRESS Q TO QUIT", cliCtx.String("name"))),
		container.BorderTitleAlignLeft())...,
	)

	if err != nil {
		return err
	}

	ctx, cancel := context.WithCancel(context.Background())
	quitter := func(keyboard *terminalapi.Keyboard) {
		if strings.EqualFold(keyboard.Key.String(), "q") {
			cancel()
		}
	}

	err = termdash.Run(ctx, t, c, termdash.KeyboardSubscriber(quitter))

	return err
}