| package chartjs | |
| import ( | |
| "bytes" | |
| "encoding/json" | |
| "fmt" | |
| "html/template" | |
| template2 "github.com/GoAdminGroup/go-admin/template" | |
| ) | |
| type LineChart struct { | |
| *Chart | |
| JsContent LineJsContent | |
| } | |
| type LineJsContent struct { | |
| JsContent | |
| Data LineAttributes `json:"data"` | |
| } | |
| type LineAttributes struct { | |
| Attributes | |
| DataSets LineDataSets `json:"datasets"` | |
| } | |
| type LineDataSets []*LineDataSet | |
| func (l LineDataSets) Add(ds *LineDataSet) LineDataSets { | |
| return append(l, ds) | |
| } | |
| type LineDataSet 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"` | |
| BorderDash []int `json:"borderDash,omitempty"` | |
| BorderDashOffset float64 `json:"borderDashOffset,omitempty"` | |
| BorderJoinStyle string `json:"borderJoinStyle,omitempty"` | |
| BorderWidth float64 `json:"borderWidth,omitempty"` | |
| CubicInterpolationMode string `json:"cubicInterpolationMode,omitempty"` | |
| Fill bool `json:"fill"` | |
| HoverBackgroundColor Color `json:"hoverBackgroundColor,omitempty"` | |
| HoverBorderCapStyle string `json:"hoverBorderCapStyle,omitempty"` | |
| HoverBorderColor Color `json:"hoverBorderColor,omitempty"` | |
| HoverBorderDash float64 `json:"hoverBorderDash,omitempty"` | |
| HoverBorderDashOffset float64 `json:"hoverBorderDashOffset,omitempty"` | |
| HoverBorderJoinStyle string `json:"hoverBorderJoinStyle,omitempty"` | |
| HoverBorderWidth float64 `json:"hoverBorderWidth,omitempty"` | |
| LineTension float64 `json:"lineTension,omitempty"` | |
| Order float64 `json:"order,omitempty"` | |
| PointBackgroundColor Color `json:"pointBackgroundColor,omitempty"` | |
| PointBorderColor Color `json:"pointBorderColor,omitempty"` | |
| PointBorderWidth float64 `json:"pointBorderWidth,omitempty"` | |
| PointHitRadius float64 `json:"pointHitRadius,omitempty"` | |
| PointHoverBackgroundColor Color `json:"pointHoverBackgroundColor,omitempty"` | |
| PointHoverBorderColor Color `json:"pointHoverBorderColor,omitempty"` | |
| PointHoverBorderWidth float64 `json:"pointHoverBorderWidth,omitempty"` | |
| PointHoverRadius float64 `json:"pointHoverRadius,omitempty"` | |
| PointRadius float64 `json:"pointRadius,omitempty"` | |
| PointRotation float64 `json:"pointRotation,omitempty"` | |
| PointStyle string `json:"pointStyle,omitempty"` | |
| ShowLine bool `json:"showLine,omitempty"` | |
| SpanGaps bool `json:"spanGaps,omitempty"` | |
| SteppedLine bool `json:"steppedLine,omitempty"` | |
| XAxisID string `json:"xAxisID,omitempty"` | |
| YAxisID string `json:"yAxisID,omitempty"` | |
| } | |
| func (l *LineDataSet) SetLabel(label string) *LineDataSet { | |
| l.Label = label | |
| return l | |
| } | |
| func (l *LineDataSet) SetData(data []float64) *LineDataSet { | |
| l.Data = data | |
| return l | |
| } | |
| func (l *LineDataSet) SetType(t string) *LineDataSet { | |
| l.Type = t | |
| return l | |
| } | |
| func (l *LineDataSet) SetBackgroundColor(backgroundColor Color) *LineDataSet { | |
| l.BackgroundColor = backgroundColor | |
| return l | |
| } | |
| func (l *LineDataSet) SetBorderCapStyle(borderCapStyle string) *LineDataSet { | |
| l.BorderCapStyle = borderCapStyle | |
| return l | |
| } | |
| func (l *LineDataSet) SetBorderColor(borderColor Color) *LineDataSet { | |
| l.BorderColor = borderColor | |
| return l | |
| } | |
| func (l *LineDataSet) SetBorderDash(borderDash []int) *LineDataSet { | |
| l.BorderDash = borderDash | |
| return l | |
| } | |
| func (l *LineDataSet) SetBorderDashOffset(borderDashOffset float64) *LineDataSet { | |
| l.BorderDashOffset = borderDashOffset | |
| return l | |
| } | |
| func (l *LineDataSet) SetBorderJoinStyle(borderJoinStyle string) *LineDataSet { | |
| l.BorderJoinStyle = borderJoinStyle | |
| return l | |
| } | |
| func (l *LineDataSet) SetBorderWidth(borderWidth float64) *LineDataSet { | |
| l.BorderWidth = borderWidth | |
| return l | |
| } | |
| func (l *LineDataSet) SetCubicInterpolationMode(cubicInterpolationMode string) *LineDataSet { | |
| l.CubicInterpolationMode = cubicInterpolationMode | |
| return l | |
| } | |
| func (l *LineDataSet) SetFill(fill bool) *LineDataSet { | |
| l.Fill = fill | |
| return l | |
| } | |
| func (l *LineDataSet) SetHoverBackgroundColor(hoverBackgroundColor Color) *LineDataSet { | |
| l.HoverBackgroundColor = hoverBackgroundColor | |
| return l | |
| } | |
| func (l *LineDataSet) SetHoverBorderCapStyle(hoverBorderCapStyle string) *LineDataSet { | |
| l.HoverBorderCapStyle = hoverBorderCapStyle | |
| return l | |
| } | |
| func (l *LineDataSet) SetHoverBorderColor(hoverBorderColor Color) *LineDataSet { | |
| l.HoverBorderColor = hoverBorderColor | |
| return l | |
| } | |
| func (l *LineDataSet) SetHoverBorderDash(hoverBorderDash float64) *LineDataSet { | |
| l.HoverBorderDash = hoverBorderDash | |
| return l | |
| } | |
| func (l *LineDataSet) SetHoverBorderDashOffset(hoverBorderDashOffset float64) *LineDataSet { | |
| l.HoverBorderDashOffset = hoverBorderDashOffset | |
| return l | |
| } | |
| func (l *LineDataSet) SetHoverBorderJoinStyle(hoverBorderJoinStyle string) *LineDataSet { | |
| l.HoverBorderJoinStyle = hoverBorderJoinStyle | |
| return l | |
| } | |
| func (l *LineDataSet) SetHoverBorderWidth(hoverBorderWidth float64) *LineDataSet { | |
| l.HoverBorderWidth = hoverBorderWidth | |
| return l | |
| } | |
| func (l *LineDataSet) SetLineTension(lineTension float64) *LineDataSet { | |
| l.LineTension = lineTension | |
| return l | |
| } | |
| func (l *LineDataSet) SetOrder(order float64) *LineDataSet { | |
| l.Order = order | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointBackgroundColor(pointBackgroundColor Color) *LineDataSet { | |
| l.PointBackgroundColor = pointBackgroundColor | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointBorderColor(pointBorderColor Color) *LineDataSet { | |
| l.PointBorderColor = pointBorderColor | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointBorderWidth(pointBorderWidth float64) *LineDataSet { | |
| l.PointBorderWidth = pointBorderWidth | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointHitRadius(pointHitRadius float64) *LineDataSet { | |
| l.PointHitRadius = pointHitRadius | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointHoverBackgroundColor(pointHoverBackgroundColor Color) *LineDataSet { | |
| l.PointHoverBackgroundColor = pointHoverBackgroundColor | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointHoverBorderColor(pointHoverBorderColor Color) *LineDataSet { | |
| l.PointHoverBorderColor = pointHoverBorderColor | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointHoverBorderWidth(pointHoverBorderWidth float64) *LineDataSet { | |
| l.PointHoverBorderWidth = pointHoverBorderWidth | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointHoverRadius(pointHoverRadius float64) *LineDataSet { | |
| l.PointHoverRadius = pointHoverRadius | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointRadius(pointRadius float64) *LineDataSet { | |
| l.PointRadius = pointRadius | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointRotation(pointRotation float64) *LineDataSet { | |
| l.PointRotation = pointRotation | |
| return l | |
| } | |
| func (l *LineDataSet) SetPointStyle(pointStyle string) *LineDataSet { | |
| l.PointStyle = pointStyle | |
| return l | |
| } | |
| func (l *LineDataSet) SetShowLine(showLine bool) *LineDataSet { | |
| l.ShowLine = showLine | |
| return l | |
| } | |
| func (l *LineDataSet) SetSpanGaps(spanGaps bool) *LineDataSet { | |
| l.SpanGaps = spanGaps | |
| return l | |
| } | |
| func (l *LineDataSet) SetSteppedLine(steppedLine bool) *LineDataSet { | |
| l.SteppedLine = steppedLine | |
| return l | |
| } | |
| func (l *LineDataSet) SetXAxisID(xAxisID string) *LineDataSet { | |
| l.XAxisID = xAxisID | |
| return l | |
| } | |
| func (l *LineDataSet) SetYAxisID(yAxisID string) *LineDataSet { | |
| l.YAxisID = yAxisID | |
| return l | |
| } | |
| func Line() *LineChart { | |
| return &LineChart{ | |
| Chart: &Chart{ | |
| BaseComponent: &template2.BaseComponent{ | |
| Name: "chartjs", | |
| HTMLData: List["chartjs"], | |
| }, | |
| dataSetIndex: -1, | |
| }, | |
| JsContent: LineJsContent{ | |
| JsContent: JsContent{ | |
| Type: "line", | |
| }, | |
| Data: LineAttributes{ | |
| Attributes: Attributes{ | |
| Labels: make([]string, 0), | |
| }, | |
| DataSets: make(LineDataSets, 0), | |
| }, | |
| }, | |
| } | |
| } | |
| func (l *LineChart) SetID(s string) *LineChart { | |
| l.ID = s | |
| return l | |
| } | |
| func (l *LineChart) SetTitle(s template.HTML) *LineChart { | |
| l.Title = s | |
| return l | |
| } | |
| func (l *LineChart) SetHeight(s int) *LineChart { | |
| l.Height = s | |
| return l | |
| } | |
| func (l *LineChart) SetLabels(s []string) *LineChart { | |
| l.JsContent.Data.Labels = s | |
| return l | |
| } | |
| func (l *LineChart) AddDataSet(s string) *LineChart { | |
| l.dataSetIndex++ | |
| l.JsContent.Data.DataSets = l.JsContent.Data.DataSets.Add(&LineDataSet{ | |
| Type: "line", | |
| Label: s, | |
| }) | |
| return l | |
| } | |
| func (l *LineChart) DSLabel(s string) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetLabel(s) | |
| return l | |
| } | |
| func (l *LineChart) DSData(data []float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetData(data) | |
| return l | |
| } | |
| func (l *LineChart) DSType(t string) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetType(t) | |
| return l | |
| } | |
| func (l *LineChart) DSBackgroundColor(backgroundColor Color) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBackgroundColor(backgroundColor) | |
| return l | |
| } | |
| func (l *LineChart) DSBorderCapStyle(borderCapStyle string) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBorderCapStyle(borderCapStyle) | |
| return l | |
| } | |
| func (l *LineChart) DSBorderColor(borderColor Color) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBorderColor(borderColor) | |
| return l | |
| } | |
| func (l *LineChart) DSBorderDash(borderDash []int) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBorderDash(borderDash) | |
| return l | |
| } | |
| func (l *LineChart) DSBorderDashOffset(borderDashOffset float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBorderDashOffset(borderDashOffset) | |
| return l | |
| } | |
| func (l *LineChart) DSBorderJoinStyle(borderJoinStyle string) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBorderJoinStyle(borderJoinStyle) | |
| return l | |
| } | |
| func (l *LineChart) DSBorderWidth(borderWidth float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetBorderWidth(borderWidth) | |
| return l | |
| } | |
| func (l *LineChart) DSCubicInterpolationMode(cubicInterpolationMode string) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetCubicInterpolationMode(cubicInterpolationMode) | |
| return l | |
| } | |
| func (l *LineChart) DSFill(fill bool) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetFill(fill) | |
| return l | |
| } | |
| func (l *LineChart) DSHoverBackgroundColor(hoverBackgroundColor Color) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetHoverBackgroundColor(hoverBackgroundColor) | |
| return l | |
| } | |
| func (l *LineChart) DSHoverBorderCapStyle(hoverBorderCapStyle string) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetHoverBorderCapStyle(hoverBorderCapStyle) | |
| return l | |
| } | |
| func (l *LineChart) DSHoverBorderColor(hoverBorderColor Color) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetHoverBorderColor(hoverBorderColor) | |
| return l | |
| } | |
| func (l *LineChart) DSHoverBorderDash(hoverBorderDash float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetHoverBorderDash(hoverBorderDash) | |
| return l | |
| } | |
| func (l *LineChart) DSHoverBorderDashOffset(hoverBorderDashOffset float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetHoverBorderDashOffset(hoverBorderDashOffset) | |
| return l | |
| } | |
| func (l *LineChart) DSHoverBorderJoinStyle(hoverBorderJoinStyle string) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetHoverBorderJoinStyle(hoverBorderJoinStyle) | |
| return l | |
| } | |
| func (l *LineChart) DSHoverBorderWidth(hoverBorderWidth float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetHoverBorderWidth(hoverBorderWidth) | |
| return l | |
| } | |
| func (l *LineChart) DSLineTension(lineTension float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetLineTension(lineTension) | |
| return l | |
| } | |
| func (l *LineChart) DSOrder(order float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetOrder(order) | |
| return l | |
| } | |
| func (l *LineChart) DSPointBackgroundColor(pointBackgroundColor Color) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointBackgroundColor(pointBackgroundColor) | |
| return l | |
| } | |
| func (l *LineChart) DSPointBorderColor(pointBorderColor Color) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointBorderColor(pointBorderColor) | |
| return l | |
| } | |
| func (l *LineChart) DSPointBorderWidth(pointBorderWidth float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointBorderWidth(pointBorderWidth) | |
| return l | |
| } | |
| func (l *LineChart) DSPointHitRadius(pointHitRadius float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointHitRadius(pointHitRadius) | |
| return l | |
| } | |
| func (l *LineChart) DSPointHoverBackgroundColor(pointHoverBackgroundColor Color) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointHoverBackgroundColor(pointHoverBackgroundColor) | |
| return l | |
| } | |
| func (l *LineChart) DSPointHoverBorderColor(pointHoverBorderColor Color) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointHoverBorderColor(pointHoverBorderColor) | |
| return l | |
| } | |
| func (l *LineChart) DSPointHoverBorderWidth(pointHoverBorderWidth float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointHoverBorderWidth(pointHoverBorderWidth) | |
| return l | |
| } | |
| func (l *LineChart) DSPointHoverRadius(pointHoverRadius float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointHoverRadius(pointHoverRadius) | |
| return l | |
| } | |
| func (l *LineChart) DSPointRadius(pointRadius float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointRadius(pointRadius) | |
| return l | |
| } | |
| func (l *LineChart) DSPointRotation(pointRotation float64) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointRotation(pointRotation) | |
| return l | |
| } | |
| func (l *LineChart) DSPointStyle(pointStyle string) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetPointStyle(pointStyle) | |
| return l | |
| } | |
| func (l *LineChart) DSShowLine(showLine bool) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetShowLine(showLine) | |
| return l | |
| } | |
| func (l *LineChart) DSSpanGaps(spanGaps bool) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetSpanGaps(spanGaps) | |
| return l | |
| } | |
| func (l *LineChart) DSSteppedLine(steppedLine bool) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetSteppedLine(steppedLine) | |
| return l | |
| } | |
| func (l *LineChart) DSXAxisID(xAxisID string) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetXAxisID(xAxisID) | |
| return l | |
| } | |
| func (l *LineChart) DSYAxisID(yAxisID string) *LineChart { | |
| l.JsContent.Data.DataSets[l.dataSetIndex].SetYAxisID(yAxisID) | |
| return l | |
| } | |
| func (l *LineChart) 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()) | |
| } | |