package models

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

type Series struct {
	Label struct {
		Position  string `json:"position"`
		Formatter string `json:"formatter"`
	} `json:"label"`
	Name      string   `json:"name"`
	Type      string   `json:"type"`
	Radius    []string `json:"radius"`
	ItemStyle struct {
		BorderRadius int    `json:"borderRadius"`
		BorderColor  string `json:"borderColor"`
		BorderWidth  int    `json:"borderWidth"`
	} `json:"itemStyle"`
	Data     []SeriesData `json:"data"`
	Emphasis struct {
		ItemStyle struct {
			ShadowBlur    int    `json:"shadowBlur"`
			ShadowOffsetX int    `json:"shadowOffsetX"`
			ShadowColor   string `json:"shadowColor"`
		} `json:"itemStyle"`
	} `json:"emphasis"`
}

type Piechart struct {
	Title struct {
		Text    string `json:"text"`
		SubText string `json:"subtext"`
		Left    string `json:"left"`
	} `json:"title"`
	Tooltip struct {
		Trigger string `json:"trigger"`
	} `json:"tooltip"`
	Legend struct {
		Top    string `json:"top"`
		Left   string `json:"left"`
		Orient string `json:"orient"`
		Height int    `json:"height"`
	} `json:"legend"`
	Series []Series `json:"series"`
}

type Barchart struct {
	Title struct {
		Text string `json:"text"`
		Left string `json:"left"`
	} `json:"title"`
	Dataset struct {
		Source [][]interface{} `json:"source"`
	} `json:"dataset"`
	Grid struct {
		ContainLabel bool `json:"containLabel"`
	} `json:"grid"`
	XAxis struct {
		Name string `json:"name"`
	} `json:"xAxis"`
	YAxis struct {
		Type string `json:"type"`
	} `json:"yAxis"`
	VisualMap struct {
		Orient    string `json:"orient"`
		Left      string `json:"left"`
		Min       int    `json:"min"`
		Max       int    `json:"max"`
		Show      bool   `json:"show"`
		Dimension int    `json:"dimension"`
		InRange   struct {
			Color []string `json:"color"`
		} `json:"inRange"`
	} `json:"visualMap"`
	Series []struct {
		Label struct {
			Position  string `json:"position"`
			Show      bool   `json:"show"`
			Formatter string `json:"formatter"`
		} `json:"label"`
		Type   string `json:"type"`
		Encode struct {
			X string `json:"x"`
			Y string `json:"y"`
		} `json:"encode"`
	} `json:"series"`
	Tooltip struct {
		Trigger     string `json:"trigger"`
		AxisPointer struct {
			Type string `json:"type"`
		} `json:"axisPointer"`
	} `json:"tooltip"`
	Graphic struct {
		Type  string `json:"type"`
		Left  string `json:"left"`
		Top   string `json:"top"`
		Style struct {
			Text       string `json:"text"`
			FontSize   string `json:"fontSize"`
			FontWeight string `json:"fontWeight"`
		} `json:"style"`
	} `json:"graphic"`
}

type BarDataset struct {
	Source [][]interface{} `json:"source"`
}

type BarchartV2 struct {
	Title struct {
		Text string `json:"text"`
		Left string `json:"left"`
	} `json:"title"`
	Dataset struct {
		Source [][]interface{} `json:"source"`
	} `json:"dataset"`
	Grid struct {
		ContainLabel bool `json:"containLabel"`
	} `json:"grid"`
	XAxis struct {
		Name      string `json:"name"`
		Type      string `json:"type"`
		AxisLabel struct {
			Interval int `json:"interval"`
			Rotate   int `json:"rotate"`
		} `json:"axisLabel"`
	} `json:"xAxis"`
	YAxis struct {
		Type          string `json:"type"`
		Name          string `json:"name"`
		NameTextStyle struct {
			Align string `json:"align"`
		} `json:"nameTextStyle"`
		NameGap int `json:"nameGap"`
	} `json:"yAxis"`
	VisualMap struct {
		Orient    string `json:"orient"`
		Left      string `json:"left"`
		Min       int    `json:"min"`
		Max       int    `json:"max"`
		Dimension int    `json:"dimension"`
		Show      bool   `json:"show"`
		InRange   struct {
			Color []string `json:"color"`
		} `json:"inRange"`
	} `json:"visualMap"`
	Series []struct {
		Label struct {
			Position  string `json:"position"`
			Show      bool   `json:"show"`
			Formatter string `json:"formatter"`
		} `json:"label"`
		Type   string `json:"type"`
		Encode struct {
			X string `json:"x"`
			Y string `json:"y"`
		} `json:"encode"`
	} `json:"series"`
	Tooltip struct {
		Trigger     string `json:"trigger"`
		AxisPointer struct {
			Type string `json:"type"`
		} `json:"axisPointer"`
	} `json:"tooltip"`
	Graphic struct {
		Type  string `json:"type"`
		Left  string `json:"left"`
		Top   string `json:"top"`
		Style struct {
			Text       string `json:"text"`
			FontSize   string `json:"fontSize"`
			FontWeight string `json:"fontWeight"`
		} `json:"style"`
	} `json:"graphic"`
}
