func LineChartElements()

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
}