feat: support make point and make line

This commit is contained in:
vicanso 2022-02-10 23:24:30 +08:00
parent fd05250305
commit e558634dda
16 changed files with 308 additions and 51 deletions

View file

@ -80,6 +80,14 @@ func (o *ChartOption) FillDefault(theme string) {
if o.BackgroundColor.IsZero() {
o.BackgroundColor = t.GetBackgroundColor()
}
if o.Padding.IsZero() {
o.Padding = chart.Box{
Top: 20,
Right: 10,
Bottom: 10,
Left: 10,
}
}
// 标题的默认值
if o.Title.Style.FontColor.IsZero() {
@ -110,7 +118,7 @@ func (o *ChartOption) FillDefault(theme string) {
o.Title.SubtextStyle.Font = o.Font
}
o.Legend.Theme = theme
o.Legend.theme = theme
if o.Legend.Style.FontSize == 0 {
o.Legend.Style.FontSize = 10
}
@ -238,13 +246,14 @@ func Render(opt ChartOption) (*Draw, error) {
if err != nil {
return nil, err
}
markPointRenderOptions := make([]*markPointRenderOption, 0)
fns := []func() error{
// pie render
func() error {
if !isPieChart {
return nil
}
_, err := pieChartRender(opt, result)
err := pieChartRender(opt, result)
return err
},
// bar render
@ -255,8 +264,12 @@ func Render(opt ChartOption) (*Draw, error) {
}
o := opt
o.SeriesList = barSeries
_, err := barChartRender(o, result)
return err
options, err := barChartRender(o, result)
if err != nil {
return err
}
markPointRenderOptions = append(markPointRenderOptions, options...)
return nil
},
// line render
func() error {
@ -266,14 +279,26 @@ func Render(opt ChartOption) (*Draw, error) {
}
o := opt
o.SeriesList = lineSeries
_, err := lineChartRender(o, result)
return err
options, err := lineChartRender(o, result)
if err != nil {
return err
}
markPointRenderOptions = append(markPointRenderOptions, options...)
return nil
},
// legend需要在顶层因此最后render
// legend需要在顶层因此此处render
func() error {
_, err := NewLegend(result.d, opt.Legend).Render()
return err
},
// mark point最后render
func() error {
// mark point render不会出错
for _, opt := range markPointRenderOptions {
markPointRender(opt)
}
return nil
},
}
for _, fn := range fns {
@ -296,6 +321,7 @@ func Render(opt ChartOption) (*Draw, error) {
}
func chartBasicRender(opt *ChartOption) (*basicRenderResult, error) {
opt.FillDefault(opt.Theme)
d, err := NewDraw(
DrawOption{
Type: opt.Type,
@ -309,7 +335,6 @@ func chartBasicRender(opt *ChartOption) (*basicRenderResult, error) {
return nil, err
}
opt.FillDefault(opt.Theme)
if len(opt.YAxisList) > 2 {
return nil, errors.New("y axis should not be gt 2")
}