refactor: adjust chart render function
This commit is contained in:
parent
6ae7e1d1b3
commit
5ccc497ad3
3 changed files with 49 additions and 15 deletions
|
|
@ -26,11 +26,7 @@ import (
|
|||
"github.com/wcharczuk/go-chart/v2"
|
||||
)
|
||||
|
||||
func BarChartRender(opt ChartOption) (*Draw, error) {
|
||||
result, err := chartBasicRender(&opt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
func barChartRender(opt ChartOption, result *basicRenderResult) (*Draw, error) {
|
||||
d := result.d
|
||||
|
||||
bd, err := NewDraw(DrawOption{
|
||||
|
|
|
|||
42
chart.go
42
chart.go
|
|
@ -30,6 +30,12 @@ import (
|
|||
"github.com/wcharczuk/go-chart/v2/drawing"
|
||||
)
|
||||
|
||||
const (
|
||||
ChartTypeLine = "line"
|
||||
ChartTypeBar = "bar"
|
||||
ChartTypePie = "pie"
|
||||
)
|
||||
|
||||
type SeriesData struct {
|
||||
Value float64
|
||||
Style chart.Style
|
||||
|
|
@ -158,6 +164,42 @@ type basicRenderResult struct {
|
|||
yRange *Range
|
||||
d *Draw
|
||||
titleBox chart.Box
|
||||
seriesOffset int
|
||||
}
|
||||
|
||||
func ChartRender(opt ChartOption) (*Draw, error) {
|
||||
result, err := chartBasicRender(&opt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
lineSeries := make([]Series, 0)
|
||||
barSeries := make([]Series, 0)
|
||||
for _, item := range opt.SeriesList {
|
||||
switch item.Type {
|
||||
case ChartTypeBar:
|
||||
barSeries = append(barSeries, item)
|
||||
default:
|
||||
lineSeries = append(lineSeries, item)
|
||||
}
|
||||
}
|
||||
if len(barSeries) != 0 {
|
||||
o := opt
|
||||
o.SeriesList = barSeries
|
||||
_, err = barChartRender(o, result)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
if len(lineSeries) != 0 {
|
||||
o := opt
|
||||
o.SeriesList = lineSeries
|
||||
result.seriesOffset = len(barSeries)
|
||||
_, err = lineChartRender(o, result)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return result.d, nil
|
||||
}
|
||||
|
||||
func chartBasicRender(opt *ChartOption) (*basicRenderResult, error) {
|
||||
|
|
|
|||
|
|
@ -27,11 +27,7 @@ import (
|
|||
"github.com/wcharczuk/go-chart/v2/drawing"
|
||||
)
|
||||
|
||||
func LineChartRender(opt ChartOption) (*Draw, error) {
|
||||
result, err := chartBasicRender(&opt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
func lineChartRender(opt ChartOption, result *basicRenderResult) (*Draw, error) {
|
||||
|
||||
d := result.d
|
||||
theme := NewTheme(opt.Theme)
|
||||
|
|
@ -55,7 +51,7 @@ func LineChartRender(opt ChartOption) (*Draw, error) {
|
|||
Y: y,
|
||||
X: xRange.getWidth(float64(j)),
|
||||
})
|
||||
seriesColor := theme.GetSeriesColor(i)
|
||||
seriesColor := theme.GetSeriesColor(i + result.seriesOffset)
|
||||
dotFillColor := drawing.ColorWhite
|
||||
if theme.IsDark() {
|
||||
dotFillColor = seriesColor
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue