in pkg/display/graph/linear/linear.go [81:121]
func LineChartElements(lineCharts map[string]*linechart.LineChart) [][]grid.Element {
cols := maxSqrt(len(lineCharts))
rows := make([][]grid.Element, int(math.Ceil(float64(len(lineCharts))/float64(cols))))
var charts []*linechart.LineChart
var titles []string
for t := range lineCharts {
titles = append(titles, t)
}
sort.Strings(titles)
for _, title := range titles {
charts = append(charts, lineCharts[title])
}
for r := range rows {
var row []grid.Element
for c := 0; c < cols && r*cols+c < len(lineCharts); c++ {
percentage := int(math.Floor(float64(100) / float64(cols)))
if r == len(rows)-1 {
percentage = int(math.Floor(float64(100) / float64(len(lineCharts)-r*cols)))
}
title := titles[r*cols+c]
chart := charts[r*cols+c]
row = append(row, grid.ColWidthPerc(
int(math.Min(99, float64(percentage))),
grid.Widget(
chart,
container.Border(linestyle.Light),
container.BorderTitleAlignCenter(),
container.BorderTitle(title),
),
))
}
rows[r] = row
}
return rows
}