package request

// BarChartInfoReq 柱方图预览请求数据
type BarChartInfoReq struct {
	EdbInfoIdList []BarChartInfoEdbItemReq `description:"指标信息"`
	DateList      []BarChartInfoDateReq    `description:"日期配置"`
	Sort          BarChartInfoSortReq      `description:"排序"`
	Unit          string                   `description:"中文单位名称"`
	UnitEn        string                   `description:"英文单位名称"`
}

type FutureGoodBarChartInfoReq struct {
	EdbInfoIdList       []BarChartInfoEdbItemReq `description:"指标信息"`
	DateList            []BarChartInfoDateReq    `description:"日期配置"`
	XDataList           []XData                  `description:"横轴配置"`
	BaseEdbInfoId       int                      `description:"日期基准指标id"`
	FutureGoodEdbName   string                   `description:"期货名称"`
	FutureGoodEdbNameEn string                   `description:"期货英文名称"`
}

// XData 商品价格曲线的的x轴数据
type XData struct {
	Name   string `description:"别名"`
	NameEn string `description:"英文别名"`
	IsHide int    `description:"是否隐藏，0不隐藏，1隐藏"`
}

// BarChartInfoEdbItemReq 柱方图预览请求数据（指标相关）
type BarChartInfoEdbItemReq struct {
	EdbInfoId int    `description:"指标ID"`
	Name      string `description:"别名"`
	NameEn    string `description:"英文别名"`
	Source    int    `description:"1：ETA图库；2：商品价格"`
	IsHide    int    `description:"是否隐藏该项，0不隐藏，1隐藏"`
}

// BarChartInfoDateReq 柱方图预览请求数据（日期相关）
type BarChartInfoDateReq struct {
	Type  int    `description:"配置类型"`
	Date  string `description:"固定日期"`
	Value int    `description:"N天的值"`
	Color string `description:"颜色"`
	Name  string `description:"别名"`
}

// BarChartInfoSortReq 柱方图预览请求数据（排序相关）
type BarChartInfoSortReq struct {
	Sort      int `description:"排序类型，0：默认，1：升序，2：降序"`
	DateIndex int `description:"日期数据的下标，从0开始"`
}

// SectionScatterReq 截面散点请求
type SectionScatterReq struct {
	XName       string `description:"x轴名称"`
	XNameEn     string `description:"x轴名称(英文)"`
	XUnitName   string `description:"x轴单位名称"`
	XUnitNameEn string `description:"x轴单位名称(英文)"`
	YName       string `description:"y轴名称"`
	YNameEn     string `description:"y轴名称(英文)"`
	YUnitName   string `description:"y轴单位名称"`
	YUnitNameEn string `description:"y轴单位名称(英文)"`
	XMinValue   string `description:"X轴的最小值"`
	XMaxValue   string `description:"X轴的最大值"`
	YMinValue   string `description:"Y轴的最小值"`
	YMaxValue   string `description:"Y轴的最大值"`
	//EdbList     []SectionScatterEdbItemReq    `description:"指标数据"`
	SeriesList []SectionScatterSeriesItemReq `description:"系列数据"`
}

// SectionScatterSeriesItemReq 系列的请求
type SectionScatterSeriesItemReq struct {
	Name            string `description:"系列名"`
	NameEn          string `description:"系列名(英文)"`
	Color           string `description:"颜色"`
	EdbInfoList     []SectionScatterEdbItemReq
	ShowTrendLine   bool `description:"是否展示趋势线"`
	ShowFitEquation bool `description:"是否展示方程式"`
	ShowRSquare     bool `description:"是否展示R平方"`
}

// SectionScatterEdbItemReq 截面散点请求的指标
type SectionScatterEdbItemReq struct {
	XEdbInfoId int    `description:"X轴的指标ID"`
	YEdbInfoId int    `description:"Y轴的指标ID"`
	Name       string `description:"别名"`
	NameEn     string `description:"英文别名"`
	XDateType  int    `description:"X轴的日期配置类型"`
	XDate      string `description:"X轴的日期固定日期"`
	XDateValue int    `description:"X轴的日期N天的值"`
	YDateType  int    `description:"Y轴的日期配置类型"`
	YDate      string `description:"Y轴的日期固定日期"`
	YDateValue int    `description:"Y轴的日期N天的值"`
	IsShow     bool   `description:"是否展示"`
}

// SectionScatterInfoResp 截面散点图数据
type SectionScatterInfoResp struct {
	XName       string                         `description:"x轴名称"`
	XNameEn     string                         `description:"x轴名称(英文)"`
	XUnitName   string                         `description:"x轴单位名称"`
	XUnitNameEn string                         `description:"x轴单位名称(英文)"`
	YName       string                         `description:"y轴名称"`
	YNameEn     string                         `description:"y轴名称(英文)"`
	YUnitName   string                         `description:"y轴单位名称"`
	YUnitNameEn string                         `description:"y轴单位名称(英文)"`
	XMinValue   string                         `description:"X轴的最小值"`
	XMaxValue   string                         `description:"X轴的最大值"`
	YMinValue   string                         `description:"Y轴的最小值"`
	YMaxValue   string                         `description:"Y轴的最大值"`
	DataList    []SectionScatterSeriesItemResp `description:"数据列"`
}

// SectionScatterSeriesItemResp 系列的返回
type SectionScatterSeriesItemResp struct {
	Name            string `description:"系列名"`
	NameEn          string `description:"系列名(英文)"`
	Color           string `description:"颜色"`
	EdbInfoList     []SectionScatterEdbItemResp
	ShowTrendLine   bool              `description:"是否展示趋势线"`
	ShowFitEquation bool              `description:"是否展示方程式"`
	ShowRSquare     bool              `description:"是否展示R平方"`
	TrendLine       string            `description:"方程式"`
	RSquare         string            `description:"R平方的值(决定系数R2)"`
	TrendLimitData  []CoordinatePoint `description:"趋势线的前后坐标点"`
}

// SectionScatterEdbItemResp 截面散点的返回参数
type SectionScatterEdbItemResp struct {
	XEdbInfoId int     `description:"X轴指标id"`
	XDate      string  `description:"X轴指标实际日期"`
	XName      string  `description:"X轴指标名称"`
	XNameEn    string  `description:"X轴指标英文名称"`
	XValue     float64 `description:"X轴实际值"`
	YEdbInfoId int     `description:"Y轴指标id"`
	YDate      string  `description:"Y轴指标实际日期"`
	YName      string  `description:"Y轴指标名称"`
	YNameEn    string  `description:"Y轴指标英文名称"`
	YValue     float64 `description:"Y轴实际值"`
	IsShow     bool    `description:"是否展示"`
	Name       string  `description:"标签名称"`
	NameEn     string  `description:"英文标签名称"`
}

// CoordinatePoint 坐标点
type CoordinatePoint struct {
	X float64
	Y float64
}

// ChartInfoReq 图表预览请求数据
type ChartInfoReq struct {
	FutureGoodEdbInfoIdList []EdbInfoFromTag   `description:"指标信息"`
	CalculateFormula        string             `description:"计算公式"`
	BaseEdbInfoId           int                `description:"基础的指标id"`
	DateList                []ChartInfoDateReq `description:"日期配置"`
	ProfitNameEn            string             `description:"利润英文名称"`
	EdbInfoIdList           []int              `description:"现货指标ID列表"`
	XDataList               []XData            `description:"横轴配置"`
}

// EdbInfoFromTag 计算指标的关联指标
type EdbInfoFromTag struct {
	EdbInfoId int    `description:"指标id"`
	FromTag   string `description:"指标对应标签"`
	MoveValue int    `description:"移动的值"`
}

// ChartInfoDateReq 图表的日期数据（日期相关）
type ChartInfoDateReq struct {
	Type  int    `description:"配置类型"`
	Date  string `description:"固定日期"`
	Value int    `description:"N天的值"`
	Color string `description:"颜色"`
	Name  string `description:"别名"`
}

// LineChartInfoReq 线性拟合图表预览请求数据
type LineChartInfoReq struct {
	DateType       int    `description:"日期类型"`
	StartDate      string `description:"开始日期"`
	EndDate        string `description:"结束日期"`
	XEdbInfoIdList []int  `description:"X轴的指标id列表"`
	YEdbInfoIdList []int  `description:"Y轴的指标id列表"`
	Source         int    `description:"来源，5：斜率图；6：截距图；7：相关性图"`
}
type Percentile struct {
	CalculateValue int    `description:"时间长度期数"`
	CalculateUnit  string `description:"时间长度频度"`
}

type FrequencyDistribution struct {
	//最近3月 最近6月 最近1年 最近2年 最近3年 最近5年 最近10年
	DateType       int    `description:"日期类型:1:最近3月；2:最近6月；3:最近1年；4:最近2年；5:最近3年；6:最近5年；7:最近10年，8:自定义时间"`
	StartDate      string `description:"自定义开始日期"`
	EndDate        string `description:"自定义结束日期"`
	FrequencyValue int    `description:"频段数，10/20"`
}

// ChartConfigReq
// @Description: 跨品种分析的图表配置
type ChartConfigReq struct {
	TagX           int               `description:"X轴的标签ID"`
	TagY           int               `description:"Y轴的标签ID"`
	CalculateValue int               `description:"计算窗口"`
	CalculateUnit  string            `description:"计算频度"`
	DateConfigList []ChartConfigDate `description:"日期配置列表"`
	VarietyList    []int             `description:"品种id列表"`
}

// ChartConfigDate
// @Description: 跨品种分析的日期配置
type ChartConfigDate struct {
	DateType int `description:"日期类型,，1：最新日期；2：N天前"`
	Num      int
}

// RadarChartInfoReq 雷达图预览请求数据
type RadarChartInfoReq struct {
	DateList []RadarChartInfoDateReq `description:"日期配置"`
}

// RadarChartInfoEdbItemReq 雷达图预览请求数据（指标相关）
type RadarChartInfoEdbItemReq struct {
	EdbInfoId int    `description:"指标ID"`
	Name      string `description:"别名"`
	//NameEn    string `description:"英文别名"`
	//Source    int    `description:"1：ETA图库；2：商品价格"`
}

// RadarChartInfoDateReq 雷达图预览请求数据（日期相关）
type RadarChartInfoDateReq struct {
	Type  int    `description:"配置类型"`
	Date  string `description:"固定日期"`
	Value int    `description:"N天的值"`
	Color string `description:"颜色"`
	Name  string `description:"别名"`
}
