| package chartjs |
|
|
| import ( |
| "bytes" |
| "encoding/json" |
| "fmt" |
| "html/template" |
|
|
| template2 "github.com/GoAdminGroup/go-admin/template" |
| ) |
|
|
| type BarChart struct { |
| *Chart |
|
|
| JsContent BarJsContent |
| } |
|
|
| type BarJsContent struct { |
| JsContent |
|
|
| Data BarAttributes `json:"data"` |
| } |
|
|
| type BarAttributes struct { |
| Attributes |
|
|
| DataSets BarDataSets `json:"datasets"` |
| } |
|
|
| type BarDataSets []*BarDataSet |
|
|
| func (l BarDataSets) Add(ds *BarDataSet) BarDataSets { |
| return append(l, ds) |
| } |
|
|
| type BarDataSet struct { |
| Label string `json:"label"` |
| Data []float64 `json:"data"` |
| Type string `json:"type,omitempty"` |
| BackgroundColor Color `json:"backgroundColor,omitempty"` |
| BorderCapStyle string `json:"borderCapStyle,omitempty"` |
| BorderColor Color `json:"borderColor,omitempty"` |
|
|
| BorderSkipped string `json:"borderSkipped,omitempty"` |
| BorderWidth float64 `json:"borderWidth,omitempty"` |
|
|
| HoverBackgroundColor Color `json:"hoverBackgroundColor,omitempty"` |
| HoverBorderColor Color `json:"hoverBorderColor,omitempty"` |
| HoverBorderWidth float64 `json:"hoverBorderWidth,omitempty"` |
|
|
| Order float64 `json:"order,omitempty"` |
| XAxisID string `json:"xAxisID,omitempty"` |
| YAxisID string `json:"yAxisID,omitempty"` |
| } |
|
|
| func (l *BarDataSet) SetLabel(label string) *BarDataSet { |
| l.Label = label |
| return l |
| } |
|
|
| func (l *BarDataSet) SetData(data []float64) *BarDataSet { |
| l.Data = data |
| return l |
| } |
|
|
| func (l *BarDataSet) SetType(t string) *BarDataSet { |
| l.Type = t |
| return l |
| } |
|
|
| func (l *BarDataSet) SetBackgroundColor(backgroundColor Color) *BarDataSet { |
| l.BackgroundColor = backgroundColor |
| return l |
| } |
|
|
| func (l *BarDataSet) SetBorderCapStyle(borderCapStyle string) *BarDataSet { |
| l.BorderCapStyle = borderCapStyle |
| return l |
| } |
|
|
| func (l *BarDataSet) SetBorderColor(borderColor Color) *BarDataSet { |
| l.BorderColor = borderColor |
| return l |
| } |
|
|
| func (l *BarDataSet) SetBorderWidth(borderWidth float64) *BarDataSet { |
| l.BorderWidth = borderWidth |
| return l |
| } |
|
|
| func (l *BarDataSet) SetBorderSkipped(skip string) *BarDataSet { |
| l.BorderSkipped = skip |
| return l |
| } |
|
|
| func (l *BarDataSet) SetHoverBackgroundColor(hoverBackgroundColor Color) *BarDataSet { |
| l.HoverBackgroundColor = hoverBackgroundColor |
| return l |
| } |
|
|
| func (l *BarDataSet) SetHoverBorderColor(hoverBorderColor Color) *BarDataSet { |
| l.HoverBorderColor = hoverBorderColor |
| return l |
| } |
|
|
| func (l *BarDataSet) SetHoverBorderWidth(hoverBorderWidth float64) *BarDataSet { |
| l.HoverBorderWidth = hoverBorderWidth |
| return l |
| } |
|
|
| func (l *BarDataSet) SetOrder(order float64) *BarDataSet { |
| l.Order = order |
| return l |
| } |
|
|
| func (l *BarDataSet) SetXAxisID(xAxisID string) *BarDataSet { |
| l.XAxisID = xAxisID |
| return l |
| } |
|
|
| func (l *BarDataSet) SetYAxisID(yAxisID string) *BarDataSet { |
| l.YAxisID = yAxisID |
| return l |
| } |
|
|
| func Bar() *BarChart { |
| return &BarChart{ |
| Chart: &Chart{ |
| BaseComponent: &template2.BaseComponent{ |
| Name: "chartjs", |
| HTMLData: List["chartjs"], |
| }, |
| dataSetIndex: -1, |
| }, |
| JsContent: BarJsContent{ |
| JsContent: JsContent{ |
| Type: "bar", |
| }, |
| Data: BarAttributes{ |
| Attributes: Attributes{ |
| Labels: make([]string, 0), |
| }, |
| DataSets: make(BarDataSets, 0), |
| }, |
| }, |
| } |
| } |
|
|
| func (l *BarChart) SetID(s string) *BarChart { |
| l.ID = s |
| return l |
| } |
|
|
| func (l *BarChart) SetTitle(s template.HTML) *BarChart { |
| l.Title = s |
| return l |
| } |
|
|
| func (l *BarChart) SetHeight(s int) *BarChart { |
| l.Height = s |
| return l |
| } |
|
|
| func (l *BarChart) SetLabels(s []string) *BarChart { |
| l.JsContent.Data.Labels = s |
| return l |
| } |
|
|
| func (l *BarChart) AddDataSet(s string) *BarChart { |
| l.dataSetIndex++ |
| l.JsContent.Data.DataSets = l.JsContent.Data.DataSets.Add(&BarDataSet{ |
| Type: "bar", |
| Label: s, |
| }) |
| return l |
| } |
|
|
| func (l *BarChart) DSLabel(s string) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetLabel(s) |
| return l |
| } |
|
|
| func (l *BarChart) DSData(data []float64) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetData(data) |
| return l |
| } |
|
|
| func (l *BarChart) DSType(t string) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetType(t) |
| return l |
| } |
|
|
| func (l *BarChart) DSBackgroundColor(backgroundColor Color) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBackgroundColor(backgroundColor) |
| return l |
| } |
|
|
| func (l *BarChart) DSBorderCapStyle(borderCapStyle string) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBorderCapStyle(borderCapStyle) |
| return l |
| } |
|
|
| func (l *BarChart) DSBorderSkipped(skip string) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBorderSkipped(skip) |
| return l |
| } |
|
|
| func (l *BarChart) DSBorderColor(borderColor Color) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBorderColor(borderColor) |
| return l |
| } |
|
|
| func (l *BarChart) DSBorderWidth(borderWidth float64) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBorderWidth(borderWidth) |
| return l |
| } |
|
|
| func (l *BarChart) DSHoverBackgroundColor(hoverBackgroundColor Color) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetHoverBackgroundColor(hoverBackgroundColor) |
| return l |
| } |
|
|
| func (l *BarChart) DSHoverBorderColor(hoverBorderColor Color) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetHoverBorderColor(hoverBorderColor) |
| return l |
| } |
|
|
| func (l *BarChart) DSHoverBorderWidth(hoverBorderWidth float64) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetHoverBorderWidth(hoverBorderWidth) |
| return l |
| } |
|
|
| func (l *BarChart) DSOrder(order float64) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetOrder(order) |
| return l |
| } |
|
|
| func (l *BarChart) DSXAxisID(xAxisID string) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetXAxisID(xAxisID) |
| return l |
| } |
|
|
| func (l *BarChart) DSYAxisID(yAxisID string) *BarChart { |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetYAxisID(yAxisID) |
| return l |
| } |
|
|
| func (l *BarChart) GetContent() template.HTML { |
| buffer := new(bytes.Buffer) |
| tmpl, defineName := l.GetTemplate() |
|
|
| if l.JsContentOptions != nil { |
| l.JsContent.Options = l.JsContentOptions |
| } |
|
|
| jsonByte, _ := json.Marshal(l.JsContent) |
| l.Js = template.JS(string(jsonByte)) |
|
|
| err := tmpl.ExecuteTemplate(buffer, defineName, l) |
| if err != nil { |
| fmt.Println("ComposeHtml Error:", err) |
| } |
| return template.HTML(buffer.String()) |
| } |
|
|