chart_property.go 3.0 KB
package domain

var (
	RecordTable1   = "RecordTable"
	MetricsCard1   = "MetricsCard"
	ContainerCard1 = "ContainerCard"
	QuarterChart1  = "QuarterChart"
)

type ChartProperty struct {
	Title        Title        `json:"title,optional"`  // 标题
	TableAbility TableAbility `json:"table,optional"`  // 表筛选功能
	Series       []Series     `json:"series,optional"` // 系列(数据源)
	Cover        string       `json:"cover,optional"`  // 封面

	//XAxis interface{} `json:"xAxis"` // X轴
	//YAxis interface{} `json:"yAxis"` // Y轴
}
type Title struct {
	TitleSwitch     bool   `json:"titleSwitch,optional"`                     // 组件标题开关
	IntroduceSwitch bool   `json:"introduceSwitch,optional"`                 // 组件说明开关
	TitleType       string `json:"titleType"`                                // 标题类型
	Heading         string `json:"heading,optional"`                         // 主标题
	SubTitle        string `json:"subTitle,optional"`                        // 副标题
	ExplainType     string `json:"explainType,optional,options=[text,file]"` // text file
	ExplainTxt      string `json:"explainTxt,optional"`                      // 文字说明
	FileUrl         string `json:"fileUrl,optional"`                         // 组件图片/视频
}

type TableAbility struct {
	FilterSwitch  bool        `json:"filterSwitch,optional"`  // 表筛选功能开关
	DimensionList []Dimension `json:"dimensionList,optional"` // 维度列表
}

type Series struct {
	// Type             string       `json:"type"`                         // 图表类型 (记录型表格:RecordTable-1 总体指标:MetricsCard-1 容器卡片:ContainerCard-1 四分图:QuarterChart-1)
	Name             string       `json:"name"`                            // 名称 (例如 指标1、指标2)
	SourceFrom       string       `json:"from,options=[ByteBank,User]"`    // 数据源类型 ByteBank:字库  User:用户自定义
	DataSourceId     int64        `json:"dataSourceId,optional,omitempty"` // 数据源ID(from值为ByteBank时有值)
	CustomText       string       `json:"customText,optional,omitempty"`   // 自定义数据文本(from值为User时有值)
	MatchExpressions []Expression `json:"matchExpressions,omitempty"`      // 条件匹配表达式(总体指标)
}

type Expression struct {
	Operator     string `json:"operator,options=[<,>,==,<>,<=,>=]"` // 操作符号 <,>,==,<>,<=,>=
	CompareValue string `json:"compareValue"`                       // 比较值
	ToValue      string `json:"toValue"`                            // 显示值(转为)
}

type Dimension struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

func (e ChartProperty) GetFirstDataSourceId() int64 {
	for _, s := range e.Series {
		if s.DataSourceId > 0 {
			return s.DataSourceId
		}
	}
	return 0
}

func (e ChartProperty) GetAllDataSourceId() []int64 {
	var idList = make([]int64, 0)
	for _, s := range e.Series {
		if s.DataSourceId > 0 {
			idList = append(idList, s.DataSourceId)
		}
	}
	return idList
}