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
}