github.com/kotovmak/go-admin@v1.1.1/template/chartjs/chart.go (about)

     1  package chartjs
     2  
     3  import (
     4  	"html/template"
     5  
     6  	template2 "github.com/kotovmak/go-admin/template"
     7  )
     8  
     9  type Chart struct {
    10  	*template2.BaseComponent
    11  
    12  	ID     string
    13  	Title  template.HTML
    14  	Js     template.JS
    15  	Height int
    16  
    17  	JsContentOptions *Options
    18  
    19  	dataSetIndex int
    20  }
    21  
    22  func (c *Chart) SetID(id string) *Chart {
    23  	c.ID = id
    24  	return c
    25  }
    26  
    27  func (c *Chart) SetTitle(title template.HTML) *Chart {
    28  	c.Title = title
    29  	return c
    30  }
    31  
    32  func (c *Chart) SetHeight(height int) *Chart {
    33  	c.Height = height
    34  	return c
    35  }
    36  
    37  func (c *Chart) SetOptionAnimationDuration(duration int) {
    38  	if c.JsContentOptions == nil {
    39  		c.JsContentOptions = new(Options)
    40  	}
    41  	if c.JsContentOptions.Animation == nil {
    42  		c.JsContentOptions.Animation = new(OptionAnimation)
    43  	}
    44  	c.JsContentOptions.Animation.Duration = duration
    45  }
    46  
    47  func (c *Chart) SetOptionAnimationEasing(easing string) {
    48  	if c.JsContentOptions == nil {
    49  		c.JsContentOptions = new(Options)
    50  	}
    51  	if c.JsContentOptions.Animation == nil {
    52  		c.JsContentOptions.Animation = new(OptionAnimation)
    53  	}
    54  	c.JsContentOptions.Animation.Easing = easing
    55  }
    56  
    57  func (c *Chart) SetOptionLayoutPaddingLeft(left int) {
    58  	if c.JsContentOptions == nil {
    59  		c.JsContentOptions = new(Options)
    60  	}
    61  	if c.JsContentOptions.Layout == nil {
    62  		c.JsContentOptions.Layout = new(OptionLayout)
    63  	}
    64  	c.JsContentOptions.Layout.Padding.Left = left
    65  }
    66  
    67  func (c *Chart) SetOptionLayoutPaddingRight(right int) {
    68  	if c.JsContentOptions == nil {
    69  		c.JsContentOptions = new(Options)
    70  	}
    71  	if c.JsContentOptions.Layout == nil {
    72  		c.JsContentOptions.Layout = new(OptionLayout)
    73  	}
    74  	c.JsContentOptions.Layout.Padding.Right = right
    75  }
    76  
    77  func (c *Chart) SetOptionLayoutPaddingTop(top int) {
    78  	if c.JsContentOptions == nil {
    79  		c.JsContentOptions = new(Options)
    80  	}
    81  	if c.JsContentOptions.Layout == nil {
    82  		c.JsContentOptions.Layout = new(OptionLayout)
    83  	}
    84  	c.JsContentOptions.Layout.Padding.Top = top
    85  }
    86  
    87  func (c *Chart) SetOptionLayoutPaddingBottom(bottom int) {
    88  	if c.JsContentOptions == nil {
    89  		c.JsContentOptions = new(Options)
    90  	}
    91  	if c.JsContentOptions.Layout == nil {
    92  		c.JsContentOptions.Layout = new(OptionLayout)
    93  	}
    94  	c.JsContentOptions.Layout.Padding.Bottom = bottom
    95  }
    96  
    97  func (c *Chart) SetOptionLegendDisplay(display bool) {
    98  	if c.JsContentOptions == nil {
    99  		c.JsContentOptions = new(Options)
   100  	}
   101  	if c.JsContentOptions.Legend == nil {
   102  		c.JsContentOptions.Legend = new(OptionLegend)
   103  	}
   104  	c.JsContentOptions.Legend.Display = display
   105  }
   106  
   107  func (c *Chart) SetOptionLegendPosition(position string) {
   108  	if c.JsContentOptions == nil {
   109  		c.JsContentOptions = new(Options)
   110  	}
   111  	if c.JsContentOptions.Legend == nil {
   112  		c.JsContentOptions.Legend = new(OptionLegend)
   113  	}
   114  	c.JsContentOptions.Legend.Position = position
   115  }
   116  
   117  func (c *Chart) SetOptionLegendAlign(align string) {
   118  	if c.JsContentOptions == nil {
   119  		c.JsContentOptions = new(Options)
   120  	}
   121  	if c.JsContentOptions.Legend == nil {
   122  		c.JsContentOptions.Legend = new(OptionLegend)
   123  	}
   124  	c.JsContentOptions.Legend.Align = align
   125  }
   126  
   127  func (c *Chart) SetOptionLegendFullWidt(fullWidth bool) {
   128  	if c.JsContentOptions == nil {
   129  		c.JsContentOptions = new(Options)
   130  	}
   131  	if c.JsContentOptions.Legend == nil {
   132  		c.JsContentOptions.Legend = new(OptionLegend)
   133  	}
   134  	c.JsContentOptions.Legend.FullWidth = fullWidth
   135  }
   136  
   137  func (c *Chart) SetOptionLegendRevers(reverse bool) {
   138  	if c.JsContentOptions == nil {
   139  		c.JsContentOptions = new(Options)
   140  	}
   141  	if c.JsContentOptions.Legend == nil {
   142  		c.JsContentOptions.Legend = new(OptionLegend)
   143  	}
   144  	c.JsContentOptions.Legend.Reverse = reverse
   145  }
   146  
   147  func (c *Chart) SetOptionLegendRt(rtl bool) {
   148  	if c.JsContentOptions == nil {
   149  		c.JsContentOptions = new(Options)
   150  	}
   151  	if c.JsContentOptions.Legend == nil {
   152  		c.JsContentOptions.Legend = new(OptionLegend)
   153  	}
   154  	c.JsContentOptions.Legend.Rtl = rtl
   155  }
   156  
   157  func (c *Chart) SetOptionLegendTextDirection(textDirection string) {
   158  	if c.JsContentOptions == nil {
   159  		c.JsContentOptions = new(Options)
   160  	}
   161  	if c.JsContentOptions.Legend == nil {
   162  		c.JsContentOptions.Legend = new(OptionLegend)
   163  	}
   164  	c.JsContentOptions.Legend.TextDirection = textDirection
   165  }
   166  
   167  func (c *Chart) SetOptionLegendLabels(labels *OptionLegendLabel) {
   168  	if c.JsContentOptions == nil {
   169  		c.JsContentOptions = new(Options)
   170  	}
   171  	if c.JsContentOptions.Legend == nil {
   172  		c.JsContentOptions.Legend = new(OptionLegend)
   173  	}
   174  	c.JsContentOptions.Legend.Labels = labels
   175  }
   176  
   177  func (c *Chart) SetOptionTitleDisplay(display bool) {
   178  	if c.JsContentOptions == nil {
   179  		c.JsContentOptions = new(Options)
   180  	}
   181  	if c.JsContentOptions.Title == nil {
   182  		c.JsContentOptions.Title = new(OptionTitle)
   183  	}
   184  	c.JsContentOptions.Title.Display = display
   185  }
   186  
   187  func (c *Chart) SetOptionTitleFontSize(fontSize int) {
   188  	if c.JsContentOptions == nil {
   189  		c.JsContentOptions = new(Options)
   190  	}
   191  	if c.JsContentOptions.Title == nil {
   192  		c.JsContentOptions.Title = new(OptionTitle)
   193  	}
   194  	c.JsContentOptions.Title.FontSize = fontSize
   195  }
   196  
   197  func (c *Chart) SetOptionTitlePosition(position string) {
   198  	if c.JsContentOptions == nil {
   199  		c.JsContentOptions = new(Options)
   200  	}
   201  	if c.JsContentOptions.Title == nil {
   202  		c.JsContentOptions.Title = new(OptionTitle)
   203  	}
   204  	c.JsContentOptions.Title.Position = position
   205  }
   206  
   207  func (c *Chart) SetOptionTitleFontFamily(fontFamily string) {
   208  	if c.JsContentOptions == nil {
   209  		c.JsContentOptions = new(Options)
   210  	}
   211  	if c.JsContentOptions.Title == nil {
   212  		c.JsContentOptions.Title = new(OptionTitle)
   213  	}
   214  	c.JsContentOptions.Title.FontFamily = fontFamily
   215  }
   216  
   217  func (c *Chart) SetOptionTitleFontColor(fontColor Color) {
   218  	if c.JsContentOptions == nil {
   219  		c.JsContentOptions = new(Options)
   220  	}
   221  	if c.JsContentOptions.Title == nil {
   222  		c.JsContentOptions.Title = new(OptionTitle)
   223  	}
   224  	c.JsContentOptions.Title.FontColor = fontColor
   225  }
   226  
   227  func (c *Chart) SetOptionTitleFontStyle(fontStyle string) {
   228  	if c.JsContentOptions == nil {
   229  		c.JsContentOptions = new(Options)
   230  	}
   231  	if c.JsContentOptions.Title == nil {
   232  		c.JsContentOptions.Title = new(OptionTitle)
   233  	}
   234  	c.JsContentOptions.Title.FontStyle = fontStyle
   235  }
   236  
   237  func (c *Chart) SetOptionTitlePadding(padding int) {
   238  	if c.JsContentOptions == nil {
   239  		c.JsContentOptions = new(Options)
   240  	}
   241  	if c.JsContentOptions.Title == nil {
   242  		c.JsContentOptions.Title = new(OptionTitle)
   243  	}
   244  	c.JsContentOptions.Title.Padding = padding
   245  }
   246  
   247  func (c *Chart) SetOptionTitleLineHeight(lineHeight int) {
   248  	if c.JsContentOptions == nil {
   249  		c.JsContentOptions = new(Options)
   250  	}
   251  	if c.JsContentOptions.Title == nil {
   252  		c.JsContentOptions.Title = new(OptionTitle)
   253  	}
   254  	c.JsContentOptions.Title.LineHeight = lineHeight
   255  }
   256  
   257  func (c *Chart) SetOptionTitleText(text string) {
   258  	if c.JsContentOptions == nil {
   259  		c.JsContentOptions = new(Options)
   260  	}
   261  	if c.JsContentOptions.Title == nil {
   262  		c.JsContentOptions.Title = new(OptionTitle)
   263  	}
   264  	c.JsContentOptions.Title.Text = text
   265  }
   266  
   267  func (c *Chart) SetOptionTooltipsEnabled(enabled bool) {
   268  	if c.JsContentOptions == nil {
   269  		c.JsContentOptions = new(Options)
   270  	}
   271  	if c.JsContentOptions.Tooltips == nil {
   272  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   273  	}
   274  	c.JsContentOptions.Tooltips.Enabled = enabled
   275  }
   276  
   277  func (c *Chart) SetOptionTooltipsMode(mode string) {
   278  	if c.JsContentOptions == nil {
   279  		c.JsContentOptions = new(Options)
   280  	}
   281  	if c.JsContentOptions.Tooltips == nil {
   282  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   283  	}
   284  	c.JsContentOptions.Tooltips.Mode = mode
   285  }
   286  
   287  func (c *Chart) SetOptionTooltipsIntersect(intersect bool) {
   288  	if c.JsContentOptions == nil {
   289  		c.JsContentOptions = new(Options)
   290  	}
   291  	if c.JsContentOptions.Tooltips == nil {
   292  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   293  	}
   294  	c.JsContentOptions.Tooltips.Intersect = intersect
   295  }
   296  
   297  func (c *Chart) SetOptionTooltipsPosition(position string) {
   298  	if c.JsContentOptions == nil {
   299  		c.JsContentOptions = new(Options)
   300  	}
   301  	if c.JsContentOptions.Tooltips == nil {
   302  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   303  	}
   304  	c.JsContentOptions.Tooltips.Position = position
   305  }
   306  
   307  func (c *Chart) SetOptionTooltipsBackgroundColor(backgroundColor Color) {
   308  	if c.JsContentOptions == nil {
   309  		c.JsContentOptions = new(Options)
   310  	}
   311  	if c.JsContentOptions.Tooltips == nil {
   312  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   313  	}
   314  	c.JsContentOptions.Tooltips.BackgroundColor = backgroundColor
   315  }
   316  
   317  func (c *Chart) SetOptionTooltipsTitleFontFamily(titleFontFamily string) {
   318  	if c.JsContentOptions == nil {
   319  		c.JsContentOptions = new(Options)
   320  	}
   321  	if c.JsContentOptions.Tooltips == nil {
   322  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   323  	}
   324  	c.JsContentOptions.Tooltips.TitleFontFamily = titleFontFamily
   325  }
   326  
   327  func (c *Chart) SetOptionTooltipsTitleFontSize(titleFontSize int) {
   328  	if c.JsContentOptions == nil {
   329  		c.JsContentOptions = new(Options)
   330  	}
   331  	if c.JsContentOptions.Tooltips == nil {
   332  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   333  	}
   334  	c.JsContentOptions.Tooltips.TitleFontSize = titleFontSize
   335  }
   336  
   337  func (c *Chart) SetOptionTooltipsTitleFontStyle(titleFontStyle string) {
   338  	if c.JsContentOptions == nil {
   339  		c.JsContentOptions = new(Options)
   340  	}
   341  	if c.JsContentOptions.Tooltips == nil {
   342  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   343  	}
   344  	c.JsContentOptions.Tooltips.TitleFontStyle = titleFontStyle
   345  }
   346  
   347  func (c *Chart) SetOptionTooltipsTitleFontColor(titleFontColor Color) {
   348  	if c.JsContentOptions == nil {
   349  		c.JsContentOptions = new(Options)
   350  	}
   351  	if c.JsContentOptions.Tooltips == nil {
   352  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   353  	}
   354  	c.JsContentOptions.Tooltips.TitleFontColor = titleFontColor
   355  }
   356  
   357  func (c *Chart) SetOptionTooltipsTitleAlign(titleAlign string) {
   358  	if c.JsContentOptions == nil {
   359  		c.JsContentOptions = new(Options)
   360  	}
   361  	if c.JsContentOptions.Tooltips == nil {
   362  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   363  	}
   364  	c.JsContentOptions.Tooltips.TitleAlign = titleAlign
   365  }
   366  
   367  func (c *Chart) SetOptionTooltipsTitleSpacing(titleSpacing int) {
   368  	if c.JsContentOptions == nil {
   369  		c.JsContentOptions = new(Options)
   370  	}
   371  	if c.JsContentOptions.Tooltips == nil {
   372  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   373  	}
   374  	c.JsContentOptions.Tooltips.TitleSpacing = titleSpacing
   375  }
   376  
   377  func (c *Chart) SetOptionTooltipsTitleMarginBottom(titleMarginBottom int) {
   378  	if c.JsContentOptions == nil {
   379  		c.JsContentOptions = new(Options)
   380  	}
   381  	if c.JsContentOptions.Tooltips == nil {
   382  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   383  	}
   384  	c.JsContentOptions.Tooltips.TitleMarginBottom = titleMarginBottom
   385  }
   386  
   387  func (c *Chart) SetOptionTooltipsBodyFontFamily(bodyFontFamily string) {
   388  	if c.JsContentOptions == nil {
   389  		c.JsContentOptions = new(Options)
   390  	}
   391  	if c.JsContentOptions.Tooltips == nil {
   392  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   393  	}
   394  	c.JsContentOptions.Tooltips.BodyFontFamily = bodyFontFamily
   395  }
   396  
   397  func (c *Chart) SetOptionTooltipsBodyFontSize(bodyFontSize int) {
   398  	if c.JsContentOptions == nil {
   399  		c.JsContentOptions = new(Options)
   400  	}
   401  	if c.JsContentOptions.Tooltips == nil {
   402  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   403  	}
   404  	c.JsContentOptions.Tooltips.BodyFontSize = bodyFontSize
   405  }
   406  
   407  func (c *Chart) SetOptionTooltipsBodyFontStyle(bodyFontStyle string) {
   408  	if c.JsContentOptions == nil {
   409  		c.JsContentOptions = new(Options)
   410  	}
   411  	if c.JsContentOptions.Tooltips == nil {
   412  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   413  	}
   414  	c.JsContentOptions.Tooltips.BodyFontStyle = bodyFontStyle
   415  }
   416  
   417  func (c *Chart) SetOptionTooltipsBodyFontColor(bodyFontColor Color) {
   418  	if c.JsContentOptions == nil {
   419  		c.JsContentOptions = new(Options)
   420  	}
   421  	if c.JsContentOptions.Tooltips == nil {
   422  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   423  	}
   424  	c.JsContentOptions.Tooltips.BodyFontColor = bodyFontColor
   425  }
   426  
   427  func (c *Chart) SetOptionTooltipsBodyAlign(bodyAlign string) {
   428  	if c.JsContentOptions == nil {
   429  		c.JsContentOptions = new(Options)
   430  	}
   431  	if c.JsContentOptions.Tooltips == nil {
   432  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   433  	}
   434  	c.JsContentOptions.Tooltips.BodyAlign = bodyAlign
   435  }
   436  
   437  func (c *Chart) SetOptionTooltipsBodySpacing(bodySpacing int) {
   438  	if c.JsContentOptions == nil {
   439  		c.JsContentOptions = new(Options)
   440  	}
   441  	if c.JsContentOptions.Tooltips == nil {
   442  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   443  	}
   444  	c.JsContentOptions.Tooltips.BodySpacing = bodySpacing
   445  }
   446  
   447  func (c *Chart) SetOptionTooltipsFooterFontFamily(footerFontFamily string) {
   448  	if c.JsContentOptions == nil {
   449  		c.JsContentOptions = new(Options)
   450  	}
   451  	if c.JsContentOptions.Tooltips == nil {
   452  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   453  	}
   454  	c.JsContentOptions.Tooltips.FooterFontFamily = footerFontFamily
   455  }
   456  
   457  func (c *Chart) SetOptionTooltipsFooterFontSize(footerFontSize int) {
   458  	if c.JsContentOptions == nil {
   459  		c.JsContentOptions = new(Options)
   460  	}
   461  	if c.JsContentOptions.Tooltips == nil {
   462  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   463  	}
   464  	c.JsContentOptions.Tooltips.FooterFontSize = footerFontSize
   465  }
   466  
   467  func (c *Chart) SetOptionTooltipsFooterFontStyle(footerFontStyle string) {
   468  	if c.JsContentOptions == nil {
   469  		c.JsContentOptions = new(Options)
   470  	}
   471  	if c.JsContentOptions.Tooltips == nil {
   472  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   473  	}
   474  	c.JsContentOptions.Tooltips.FooterFontStyle = footerFontStyle
   475  }
   476  
   477  func (c *Chart) SetOptionTooltipsFooterFontColor(footerFontColor Color) {
   478  	if c.JsContentOptions == nil {
   479  		c.JsContentOptions = new(Options)
   480  	}
   481  	if c.JsContentOptions.Tooltips == nil {
   482  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   483  	}
   484  	c.JsContentOptions.Tooltips.FooterFontColor = footerFontColor
   485  }
   486  
   487  func (c *Chart) SetOptionTooltipsFooterAlign(footerAlign string) {
   488  	if c.JsContentOptions == nil {
   489  		c.JsContentOptions = new(Options)
   490  	}
   491  	if c.JsContentOptions.Tooltips == nil {
   492  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   493  	}
   494  	c.JsContentOptions.Tooltips.FooterAlign = footerAlign
   495  }
   496  
   497  func (c *Chart) SetOptionTooltipsFooterSpacing(footerSpacing int) {
   498  	if c.JsContentOptions == nil {
   499  		c.JsContentOptions = new(Options)
   500  	}
   501  	if c.JsContentOptions.Tooltips == nil {
   502  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   503  	}
   504  	c.JsContentOptions.Tooltips.FooterSpacing = footerSpacing
   505  }
   506  
   507  func (c *Chart) SetOptionTooltipsFooterMarginTop(footerMarginTop int) {
   508  	if c.JsContentOptions == nil {
   509  		c.JsContentOptions = new(Options)
   510  	}
   511  	if c.JsContentOptions.Tooltips == nil {
   512  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   513  	}
   514  	c.JsContentOptions.Tooltips.FooterMarginTop = footerMarginTop
   515  }
   516  
   517  func (c *Chart) SetOptionTooltipsXPadding(xPadding int) {
   518  	if c.JsContentOptions == nil {
   519  		c.JsContentOptions = new(Options)
   520  	}
   521  	if c.JsContentOptions.Tooltips == nil {
   522  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   523  	}
   524  	c.JsContentOptions.Tooltips.XPadding = xPadding
   525  }
   526  
   527  func (c *Chart) SetOptionTooltipsYPadding(yPadding int) {
   528  	if c.JsContentOptions == nil {
   529  		c.JsContentOptions = new(Options)
   530  	}
   531  	if c.JsContentOptions.Tooltips == nil {
   532  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   533  	}
   534  	c.JsContentOptions.Tooltips.YPadding = yPadding
   535  }
   536  
   537  func (c *Chart) SetOptionTooltipsCaretPadding(caretPadding int) {
   538  	if c.JsContentOptions == nil {
   539  		c.JsContentOptions = new(Options)
   540  	}
   541  	if c.JsContentOptions.Tooltips == nil {
   542  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   543  	}
   544  	c.JsContentOptions.Tooltips.CaretPadding = caretPadding
   545  }
   546  
   547  func (c *Chart) SetOptionTooltipsCaretSize(caretSize int) {
   548  	if c.JsContentOptions == nil {
   549  		c.JsContentOptions = new(Options)
   550  	}
   551  	if c.JsContentOptions.Tooltips == nil {
   552  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   553  	}
   554  	c.JsContentOptions.Tooltips.CaretSize = caretSize
   555  }
   556  
   557  func (c *Chart) SetOptionTooltipsCornerRadius(cornerRadius int) {
   558  	if c.JsContentOptions == nil {
   559  		c.JsContentOptions = new(Options)
   560  	}
   561  	if c.JsContentOptions.Tooltips == nil {
   562  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   563  	}
   564  	c.JsContentOptions.Tooltips.CornerRadius = cornerRadius
   565  }
   566  
   567  func (c *Chart) SetOptionTooltipsMultiKeyBackground(multiKeyBackground Color) {
   568  	if c.JsContentOptions == nil {
   569  		c.JsContentOptions = new(Options)
   570  	}
   571  	if c.JsContentOptions.Tooltips == nil {
   572  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   573  	}
   574  	c.JsContentOptions.Tooltips.MultiKeyBackground = multiKeyBackground
   575  }
   576  
   577  func (c *Chart) SetOptionTooltipsDisplayColors(displayColors bool) {
   578  	if c.JsContentOptions == nil {
   579  		c.JsContentOptions = new(Options)
   580  	}
   581  	if c.JsContentOptions.Tooltips == nil {
   582  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   583  	}
   584  	c.JsContentOptions.Tooltips.DisplayColors = displayColors
   585  }
   586  
   587  func (c *Chart) SetOptionTooltipsBorderColor(borderColor Color) {
   588  	if c.JsContentOptions == nil {
   589  		c.JsContentOptions = new(Options)
   590  	}
   591  	if c.JsContentOptions.Tooltips == nil {
   592  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   593  	}
   594  	c.JsContentOptions.Tooltips.BorderColor = borderColor
   595  }
   596  
   597  func (c *Chart) SetOptionTooltipsBorderWidth(borderWidth int) {
   598  	if c.JsContentOptions == nil {
   599  		c.JsContentOptions = new(Options)
   600  	}
   601  	if c.JsContentOptions.Tooltips == nil {
   602  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   603  	}
   604  	c.JsContentOptions.Tooltips.BorderWidth = borderWidth
   605  }
   606  
   607  func (c *Chart) SetOptionTooltipsRtl(rtl bool) {
   608  	if c.JsContentOptions == nil {
   609  		c.JsContentOptions = new(Options)
   610  	}
   611  	if c.JsContentOptions.Tooltips == nil {
   612  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   613  	}
   614  	c.JsContentOptions.Tooltips.Rtl = rtl
   615  }
   616  
   617  func (c *Chart) SetOptionTooltipsTextDirection(textDirection string) {
   618  	if c.JsContentOptions == nil {
   619  		c.JsContentOptions = new(Options)
   620  	}
   621  	if c.JsContentOptions.Tooltips == nil {
   622  		c.JsContentOptions.Tooltips = new(OptionTooltips)
   623  	}
   624  	c.JsContentOptions.Tooltips.TextDirection = textDirection
   625  }
   626  
   627  func (c *Chart) SetOptionElementPoint(point *OptionElementPoint) {
   628  	if c.JsContentOptions == nil {
   629  		c.JsContentOptions = new(Options)
   630  	}
   631  	if c.JsContentOptions.Elements == nil {
   632  		c.JsContentOptions.Elements = new(OptionElement)
   633  	}
   634  	c.JsContentOptions.Elements.Point = point
   635  }
   636  
   637  func (c *Chart) SetOptionElementLine(line *OptionElementLine) {
   638  	if c.JsContentOptions == nil {
   639  		c.JsContentOptions = new(Options)
   640  	}
   641  	if c.JsContentOptions.Elements == nil {
   642  		c.JsContentOptions.Elements = new(OptionElement)
   643  	}
   644  	c.JsContentOptions.Elements.Line = line
   645  }
   646  
   647  func (c *Chart) SetOptionElementArc(arc *OptionElementArc) {
   648  	if c.JsContentOptions == nil {
   649  		c.JsContentOptions = new(Options)
   650  	}
   651  	if c.JsContentOptions.Elements == nil {
   652  		c.JsContentOptions.Elements = new(OptionElement)
   653  	}
   654  	c.JsContentOptions.Elements.Arc = arc
   655  }
   656  
   657  func (c *Chart) SetOptionElementRectangle(rectangle *OptionElementRectangle) {
   658  	if c.JsContentOptions.Elements == nil {
   659  		c.JsContentOptions.Elements = new(OptionElement)
   660  	}
   661  	c.JsContentOptions.Elements.Rectangle = rectangle
   662  }
   663  
   664  type JsContent struct {
   665  	Type    string   `json:"type,omitempty"`
   666  	Options *Options `json:"options,omitempty"`
   667  }
   668  
   669  type OptionAnimation struct {
   670  	Duration int    `json:"duration,omitempty"`
   671  	Easing   string `json:"easing,omitempty"`
   672  }
   673  
   674  type OptionLayout struct {
   675  	Padding struct {
   676  		Left   int `json:"left,omitempty"`
   677  		Right  int `json:"right,omitempty"`
   678  		Top    int `json:"top,omitempty"`
   679  		Bottom int `json:"bottom,omitempty"`
   680  	} `json:"padding,omitempty"`
   681  }
   682  
   683  type OptionLegend struct {
   684  	Display       bool               `json:"display,omitempty"`
   685  	Position      string             `json:"position,omitempty"`
   686  	Align         string             `json:"align,omitempty"`
   687  	FullWidth     bool               `json:"full_width,omitempty"`
   688  	Reverse       bool               `json:"reverse,omitempty"`
   689  	Rtl           bool               `json:"rtl,omitempty"`
   690  	TextDirection string             `json:"text_direction,omitempty"`
   691  	Labels        *OptionLegendLabel `json:"labels,omitempty"`
   692  }
   693  
   694  type OptionLegendLabel struct {
   695  	BoxWidth      int    `json:"box_width,omitempty"`
   696  	FontSize      int    `json:"fontSize,omitempty"`
   697  	FontStyle     string `json:"fontStyle,omitempty"`
   698  	FontColor     Color  `json:"fontColor,omitempty"`
   699  	FontFamily    string `json:"fontFamily,omitempty"`
   700  	Padding       int    `json:"padding,omitempty"`
   701  	UsePointStyle bool   `json:"usePointStyle,omitempty"`
   702  }
   703  
   704  type OptionTitle struct {
   705  	Display    bool   `json:"display,omitempty"`
   706  	Position   string `json:"position,omitempty"`
   707  	FontSize   int    `json:"fontSize,omitempty"`
   708  	FontFamily string `json:"fontFamily,omitempty"`
   709  	FontColor  Color  `json:"fontColor,omitempty"`
   710  	FontStyle  string `json:"fontStyle,omitempty"`
   711  	Padding    int    `json:"padding,omitempty"`
   712  	LineHeight int    `json:"lineHeight,omitempty"`
   713  	Text       string `json:"text,omitempty"`
   714  }
   715  
   716  type OptionTooltips struct {
   717  	Enabled            bool   `json:"enabled,omitempty"`
   718  	Mode               string `json:"mode,omitempty"`
   719  	Intersect          bool   `json:"intersect,omitempty"`
   720  	Position           string `json:"position,omitempty"`
   721  	BackgroundColor    Color  `json:"backgroundColor,omitempty"`
   722  	TitleFontFamily    string `json:"titleFontFamily,omitempty"`
   723  	TitleFontSize      int    `json:"titleFontSize,omitempty"`
   724  	TitleFontStyle     string `json:"titleFontStyle,omitempty"`
   725  	TitleFontColor     Color  `json:"titleFontColor,omitempty"`
   726  	TitleAlign         string `json:"titleAlign,omitempty"`
   727  	TitleSpacing       int    `json:"titleSpacing,omitempty"`
   728  	TitleMarginBottom  int    `json:"titleMarginBottom,omitempty"`
   729  	BodyFontFamily     string `json:"bodyFontFamily,omitempty"`
   730  	BodyFontSize       int    `json:"bodyFontSize,omitempty"`
   731  	BodyFontStyle      string `json:"bodyFontStyle,omitempty"`
   732  	BodyFontColor      Color  `json:"bodyFontColor,omitempty"`
   733  	BodyAlign          string `json:"bodyAlign,omitempty"`
   734  	BodySpacing        int    `json:"bodySpacing,omitempty"`
   735  	FooterFontFamily   string `json:"footerFontFamily,omitempty"`
   736  	FooterFontSize     int    `json:"footerFontSize,omitempty"`
   737  	FooterFontStyle    string `json:"footerFontStyle,omitempty"`
   738  	FooterFontColor    Color  `json:"footerFontColor,omitempty"`
   739  	FooterAlign        string `json:"footerAlign,omitempty"`
   740  	FooterSpacing      int    `json:"footerSpacing,omitempty"`
   741  	FooterMarginTop    int    `json:"footerMarginTop,omitempty"`
   742  	XPadding           int    `json:"xPadding,omitempty"`
   743  	YPadding           int    `json:"yPadding,omitempty"`
   744  	CaretPadding       int    `json:"caretPadding,omitempty"`
   745  	CaretSize          int    `json:"caretSize,omitempty"`
   746  	CornerRadius       int    `json:"cornerRadius,omitempty"`
   747  	MultiKeyBackground Color  `json:"multiKeyBackground,omitempty"`
   748  	DisplayColors      bool   `json:"displayColors,omitempty"`
   749  	BorderColor        Color  `json:"borderColor,omitempty"`
   750  	BorderWidth        int    `json:"borderWidth,omitempty"`
   751  	Rtl                bool   `json:"rtl,omitempty"`
   752  	TextDirection      string `json:"textDirection,omitempty"`
   753  }
   754  
   755  type OptionElement struct {
   756  	Point     *OptionElementPoint     `json:"point,omitempty"`
   757  	Line      *OptionElementLine      `json:"line,omitempty"`
   758  	Rectangle *OptionElementRectangle `json:"rectangle,omitempty"`
   759  	Arc       *OptionElementArc       `json:"arc,omitempty"`
   760  }
   761  
   762  type OptionElementPoint struct {
   763  	Radius           int    `json:"radius,omitempty"`
   764  	PointStyle       string `json:"pointStyle,omitempty"`
   765  	Rotation         int    `json:"rotation,omitempty"`
   766  	BackgroundColor  Color  `json:"backgroundColor,omitempty"`
   767  	BorderWidth      int    `json:"borderWidth,omitempty"`
   768  	BorderColor      Color  `json:"borderColor,omitempty"`
   769  	HitRadius        int    `json:"hitRadius,omitempty"`
   770  	HoverRadius      int    `json:"hoverRadius,omitempty"`
   771  	HoverBorderWidth int    `json:"hoverBorderWidth,omitempty"`
   772  }
   773  
   774  type OptionElementLine struct {
   775  	Tension                int    `json:"tension,omitempty"`
   776  	BackgroundColor        Color  `json:"background_color,omitempty"`
   777  	BorderWidth            int    `json:"border_width,omitempty"`
   778  	BorderColor            Color  `json:"border_color,omitempty"`
   779  	BorderCapStyle         string `json:"border_cap_style,omitempty"`
   780  	BorderDash             int    `json:"border_dash,omitempty"`
   781  	BorderDashOffset       int    `json:"border_dash_offset,omitempty"`
   782  	BorderJoinStyle        string `json:"border_join_style,omitempty"`
   783  	CapBezierPoints        bool   `json:"cap_bezier_points,omitempty"`
   784  	CubicInterpolationMode string `json:"cubic_interpolation_mode,omitempty"`
   785  	Fill                   bool   `json:"fill,omitempty"`
   786  	Stepped                bool   `json:"stepped,omitempty"`
   787  }
   788  
   789  type OptionElementRectangle struct {
   790  	BackgroundColor Color  `json:"backgroundColor,omitempty"`
   791  	BorderWidth     int    `json:"borderWidth,omitempty"`
   792  	BorderColor     Color  `json:"borderColor,omitempty"`
   793  	BorderSkipped   string `json:"borderSkipped,omitempty"`
   794  }
   795  
   796  type OptionElementArc struct {
   797  	Angle           int    `json:"angle,omitempty"`
   798  	BackgroundColor Color  `json:"backgroundColor,omitempty"`
   799  	BorderAlign     string `json:"borderAlign,omitempty"`
   800  	BorderColor     Color  `json:"borderColor,omitempty"`
   801  	BorderWidth     int    `json:"borderWidth,omitempty"`
   802  }
   803  
   804  type Options struct {
   805  	Animation *OptionAnimation `json:"animation,omitempty"`
   806  	Layout    *OptionLayout    `json:"layout,omitempty"`
   807  	Legend    *OptionLegend    `json:"legend,omitempty"`
   808  	Title     *OptionTitle     `json:"title,omitempty"`
   809  	Tooltips  *OptionTooltips  `json:"tooltips,omitempty"`
   810  	Elements  *OptionElement   `json:"elements,omitempty"`
   811  }
   812  
   813  type Attributes struct {
   814  	Labels []string `json:"labels,omitempty"`
   815  }
   816  
   817  type DataSets []DataSet
   818  
   819  type DataSet struct {
   820  	Label string    `json:"label,omitempty"`
   821  	Data  []float64 `json:"data,omitempty"`
   822  	Type  string    `json:"type,omitempty"`
   823  }
   824  
   825  type Color string
   826  
   827  func NewChart() *Chart {
   828  	return &Chart{
   829  		BaseComponent: &template2.BaseComponent{
   830  			Name:     "chartjs",
   831  			HTMLData: List["chartjs"],
   832  		},
   833  	}
   834  }
   835  
   836  func (c *Chart) GetAssetList() []string               { return AssetsList }
   837  func (c *Chart) GetAsset(name string) ([]byte, error) { return Asset(name[1:]) }
   838  func (c *Chart) GetContent() template.HTML            { return c.GetContentWithData(c) }