| 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()) | |
| } | |