package data import ( "encoding/json" "eta_gn/eta_chart_lib/models/data_manage/chart_theme" "eta_gn/eta_chart_lib/utils" ) func GetChartThemeConfig(chartThemeId, source, chartType int) (chartTheme *chart_theme.ChartTheme, err error) { chartTheme, err = chart_theme.GetChartThemeId(chartThemeId) if err != nil && !utils.IsErrNoRow(err) { return } err = nil if chartTheme != nil && chartTheme.ChartThemeId > 0 { newConfig, e := ConvertOldChartOptions(chartTheme.Config) if e == nil { chartTheme.Config = newConfig } else { err = e return } return } chartThemeType, err := chart_theme.GetChartThemeTypeByChartTypeAndSource(chartType, source) if err != nil { return } chartTheme, err = chart_theme.GetChartThemeId(chartThemeType.DefaultChartThemeId) if err != nil && !utils.IsErrNoRow(err) { return } err = nil if chartTheme != nil { newConfig, e := ConvertOldChartOptions(chartTheme.Config) if e == nil { chartTheme.Config = newConfig } else { err = e return } return } chartTheme, err = chart_theme.GetSystemChartTheme(chartThemeType.ChartThemeTypeId) newConfig, e := ConvertOldChartOptions(chartTheme.Config) if e == nil { chartTheme.Config = newConfig } else { err = e return } return } func ConvertOldChartOptions(config string) (newConfig string, err error) { var oldTheme chart_theme.OldChartOptions var newTheme chart_theme.NewChartOptions err = json.Unmarshal([]byte(config), &oldTheme) if err != nil { return } if oldTheme.LineOptionList != nil && len(oldTheme.LineOptionList) > 0 { newConfig = config return } newTheme.OldChartOptions = oldTheme for i := 0; i < 10; i++ { newLineOption := chart_theme.NewLineOptions{ LineOptions: oldTheme.LineOptions, Color: oldTheme.ColorsOptions[i], DataMark: "none", MarkType: "square", MarkSize: 5, MarkColor: oldTheme.ColorsOptions[i], } newTheme.LineOptionList = append(newTheme.LineOptionList, newLineOption) } newThemeStr, _ := json.Marshal(newTheme) newConfig = string(newThemeStr) return }