45
vendor/github.com/guptarohit/asciigraph/legend.go
generated
vendored
Normal file
45
vendor/github.com/guptarohit/asciigraph/legend.go
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
package asciigraph
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"strings"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
// Create legend item as a colored box and text
|
||||
func createLegendItem(text string, color AnsiColor) (string, int) {
|
||||
return fmt.Sprintf(
|
||||
"%s■%s %s",
|
||||
color.String(),
|
||||
Default.String(),
|
||||
text,
|
||||
),
|
||||
// Can't use len() because of AnsiColor, add 2 for box and space
|
||||
utf8.RuneCountInString(text) + 2
|
||||
}
|
||||
|
||||
// Add legend for each series added to the graph
|
||||
func addLegends(lines *bytes.Buffer, config *config, lenMax int, leftPad int) {
|
||||
lines.WriteString("\n\n")
|
||||
lines.WriteString(strings.Repeat(" ", leftPad))
|
||||
|
||||
var legendsText string
|
||||
var legendsTextLen int
|
||||
rightPad := 3
|
||||
for i, text := range config.SeriesLegends {
|
||||
item, itemLen := createLegendItem(text, config.SeriesColors[i])
|
||||
legendsText += item
|
||||
legendsTextLen += itemLen
|
||||
|
||||
if i < len(config.SeriesLegends)-1 {
|
||||
legendsText += strings.Repeat(" ", rightPad)
|
||||
legendsTextLen += rightPad
|
||||
}
|
||||
}
|
||||
|
||||
if legendsTextLen < lenMax {
|
||||
lines.WriteString(strings.Repeat(" ", (lenMax-legendsTextLen)/2))
|
||||
}
|
||||
lines.WriteString(legendsText)
|
||||
}
|
||||
Reference in New Issue
Block a user