chart_theme.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package data
  2. import (
  3. "encoding/json"
  4. "eta_gn/eta_chart_lib/models/data_manage/chart_theme"
  5. "eta_gn/eta_chart_lib/utils"
  6. )
  7. func GetChartThemeConfig(chartThemeId, source, chartType int) (chartTheme *chart_theme.ChartTheme, err error) {
  8. chartTheme, err = chart_theme.GetChartThemeId(chartThemeId)
  9. if err != nil && !utils.IsErrNoRow(err) {
  10. return
  11. }
  12. err = nil
  13. if chartTheme != nil && chartTheme.ChartThemeId > 0 {
  14. newConfig, e := ConvertOldChartOptions(chartTheme.Config)
  15. if e == nil {
  16. chartTheme.Config = newConfig
  17. } else {
  18. err = e
  19. return
  20. }
  21. return
  22. }
  23. chartThemeType, err := chart_theme.GetChartThemeTypeByChartTypeAndSource(chartType, source)
  24. if err != nil {
  25. return
  26. }
  27. chartTheme, err = chart_theme.GetChartThemeId(chartThemeType.DefaultChartThemeId)
  28. if err != nil && !utils.IsErrNoRow(err) {
  29. return
  30. }
  31. err = nil
  32. if chartTheme != nil {
  33. newConfig, e := ConvertOldChartOptions(chartTheme.Config)
  34. if e == nil {
  35. chartTheme.Config = newConfig
  36. } else {
  37. err = e
  38. return
  39. }
  40. return
  41. }
  42. chartTheme, err = chart_theme.GetSystemChartTheme(chartThemeType.ChartThemeTypeId)
  43. newConfig, e := ConvertOldChartOptions(chartTheme.Config)
  44. if e == nil {
  45. chartTheme.Config = newConfig
  46. } else {
  47. err = e
  48. return
  49. }
  50. return
  51. }
  52. func ConvertOldChartOptions(config string) (newConfig string, err error) {
  53. var oldTheme chart_theme.OldChartOptions
  54. var newTheme chart_theme.NewChartOptions
  55. err = json.Unmarshal([]byte(config), &oldTheme)
  56. if err != nil {
  57. return
  58. }
  59. if oldTheme.LineOptionList != nil && len(oldTheme.LineOptionList) > 0 {
  60. newConfig = config
  61. return
  62. }
  63. newTheme.OldChartOptions = oldTheme
  64. for i := 0; i < 10; i++ {
  65. newLineOption := chart_theme.NewLineOptions{
  66. LineOptions: oldTheme.LineOptions,
  67. Color: oldTheme.ColorsOptions[i],
  68. DataMark: "none",
  69. MarkType: "square",
  70. MarkSize: 5,
  71. MarkColor: oldTheme.ColorsOptions[i],
  72. }
  73. newTheme.LineOptionList = append(newTheme.LineOptionList, newLineOption)
  74. }
  75. newThemeStr, _ := json.Marshal(newTheme)
  76. newConfig = string(newThemeStr)
  77. return
  78. }