pie trims common prefix and sorts slice names

main
Bel LaPointe 2024-07-22 07:12:36 -06:00
parent 3211dbd73f
commit 16bbeb8749
1 changed files with 16 additions and 0 deletions

View File

@ -3,6 +3,8 @@ package view
import ( import (
"fmt" "fmt"
"io" "io"
"slices"
"strings"
"github.com/go-echarts/go-echarts/v2/charts" "github.com/go-echarts/go-echarts/v2/charts"
"github.com/go-echarts/go-echarts/v2/opts" "github.com/go-echarts/go-echarts/v2/opts"
@ -123,6 +125,20 @@ func (pie *Pie) AddX(v interface{}) {
} }
func (pie *Pie) Render(w io.Writer) error { func (pie *Pie) Render(w io.Writer) error {
slices.SortFunc(pie.series, func(a, b opts.PieData) int {
return strings.Compare(a.Name, b.Name)
})
commonPrefixLen := 0
for i := 0; i < len(pie.series[0].Name) && i < len(pie.series[len(pie.series)-1].Name); i++ {
if pie.series[0].Name[i] != pie.series[len(pie.series)-1].Name[i] {
break
}
commonPrefixLen = i
}
for i := range pie.series {
pie.series[i].Name = pie.series[i].Name[commonPrefixLen:]
}
pie.AddSeries("", pie.series) pie.AddSeries("", pie.series)
pie.SetGlobalOptions(charts.WithLegendOpts(opts.Legend{ pie.SetGlobalOptions(charts.WithLegendOpts(opts.Legend{
Show: false, Show: false,