package request

// AddThemeReq
// @Description: 新增主题请求参数
type AddThemeReq struct {
	ChartThemeName   string `description:"主题名称"`
	ChartThemeTypeId int    `description:"图表类型id"`
}

// EditThemeReq
// @Description: 编辑主题请求参数
type EditThemeReq struct {
	ChartThemeId   int    `description:"主题id"`
	ChartThemeName string `description:"主题名称"`
	Config         string `description:"配置的值"`
	ChartImage     string `description:"缩略图"`
}

// DeleteThemeReq
// @Description: 删除主题请求参数
type DeleteThemeReq struct {
	ChartThemeId int `description:"配置id"`
}

// SetDefaultThemeReq
// @Description: 配置默认主题请求参数
type SetDefaultThemeReq struct {
	ChartThemeId     int `description:"主题id"`
	ChartThemeTypeId int `description:"主题类型id"`
}

type ColorsOptions []string

type LegendOptions struct {
	VerticalAlign string `json:"verticalAlign"`
	ItemStyle     struct {
		Color        string `json:"color"`
		FontSize     int    `json:"fontSize"`
		Cursor       string `json:"cursor"`
		FontWeight   string `json:"fontWeight"`
		TextOverflow string `json:"textOverflow"`
	} `json:"itemStyle"`
}

type TitleOptions struct {
	Align string `json:"align"`
	Style struct {
		Color    string `json:"color"`
		FontSize int    `json:"fontSize"`
	} `json:"style"`
}

type MarkerOptions struct {
	Style struct {
		Color    string `json:"color"`
		FontSize int    `json:"fontSize"`
	} `json:"style"`
}

type AxisOptions struct {
	Style struct {
		Color    string `json:"color"`
		FontSize int    `json:"fontSize"`
	} `json:"style"`
}

type DrawOption struct {
	PlotBackgroundColor string `json:"plotBackgroundColor"`
}

type LineOptions struct {
	DashStyle string  `json:"dashStyle"`
	LineWidth float64 `json:"lineWidth"`
	LineType  string  `json:"lineType"`
	Radius    float64 `json:"radius"`
}

type OldChartOptions struct {
	ColorsOptions  []string           `json:"colorsOptions"`
	LineOptions    LineOptions        `json:"lineOptions"`
	LegendOptions  interface{}        `json:"legendOptions"`
	TitleOptions   interface{}        `json:"titleOptions"`
	MarkerOptions  interface{}        `json:"markerOptions"`
	XAxisOptions   interface{}        `json:"xAxisOptions"`
	YAxisOptions   interface{}        `json:"yAxisOptions"`
	DrawOption     interface{}        `json:"drawOption"`
	LineOptionList []LineStyleOptions `json:"lineOptionList"`
}

type NewChartOptions struct {
	OldChartOptions
	LineOptionList []NewLineOptions `json:"lineOptionList"`
}

type NewLineOptions struct {
	LineOptions
	Color     string `json:"color"`
	DataMark  string `json:"dataMark"`
	MarkType  string `json:"markType"`
	MarkSize  int    `json:"markSize"`
	MarkColor string `json:"markColor"`
}

type LineStyleOptions struct {
	DashStyle string  `json:"dashStyle"`
	Color     string  `json:"color"`
	LineWidth float64 `json:"lineWidth"`
	LineType  string  `json:"lineType"`
	Radius    int     `json:"radius"`
	DataMark  string  `json:"dataMark"`
	MarkType  string  `json:"markType"`
	MarkSize  int     `json:"markSize"`
	MarkColor string  `json:"markColor"`
}
