package model

import "sort"

type RequestCaptureFilter struct {
	StartTime string `form:"queryStartDate"`
	EndTime   string `form:"queryEndDate"`
	QueryType string `form:"queryType"` //类型 month月 day日
	CaptureId int    `form:"captureId"` //抓拍单元
	Type      int    `form:"type"`      //归属地时，区分查看城市 1=省份 2=城市
}

type ResponseCaptureVehicleTotal struct {
	CountTime string `json:"countTime"` //统一时间
	CountT    int    `json:"countT"`    //总报警
}

type ResponseCaptureSuggestSpeed struct {
	ID               int    `json:"id"`
	CaptureDirection int    `json:"captureDirection"` //方向
	WayName          string `json:"wayName"`          //名称
}

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

type TypeList struct {
	Name1   string `json:"name1"`
	Name2   string `json:"name2"`
	Name3   string `json:"name3"`
	Name4   string `json:"name4"`
	Name5   string `json:"name5"`
	Name6   string `json:"name6"`
	Name7   string `json:"name7"`
	Name8   string `json:"name8"`
	Name9   string `json:"name9"`
	Name10  string `json:"name10"`
	Name11  string `json:"name11"`
	Value1  int    `json:"value1"`
	Value2  int    `json:"value2"`
	Value3  int    `json:"value3"`
	Value4  int    `json:"value4"`
	Value5  int    `json:"value5"`
	Value6  int    `json:"value6"`
	Value7  int    `json:"value7"`
	Value8  int    `json:"value8"`
	Value9  int    `json:"value9"`
	Value10 int    `json:"value10"`
	Value11 int    `json:"value11"`
}
type TmpCaptures struct {
	TmpCapturesData []TmpCapture
	CountTime       string `json:"time"`
	TypeList
}

type IntSlice []TmpCapture

func (p IntSlice) Len() int           { return len(p) }
func (p IntSlice) Less(i, j int) bool { return p[i].Value < p[j].Value }
func (p IntSlice) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }

//渲染出10个前10的数据
func ViewData(tmp TmpCaptures) TmpCaptures {
	tmpNew := tmp
	for i, datum := range tmpNew.TmpCapturesData {
		switch i + 1 {
		case 1:
			tmpNew.Name1 = datum.Name
			tmpNew.Value1 = datum.Value
		case 2:
			tmpNew.Name2 = datum.Name
			tmpNew.Value2 = datum.Value
		case 3:
			tmpNew.Name3 = datum.Name
			tmpNew.Value3 = datum.Value
		case 4:
			tmpNew.Name4 = datum.Name
			tmpNew.Value4 = datum.Value
		case 5:
			tmpNew.Name5 = datum.Name
			tmpNew.Value5 = datum.Value
		case 6:
			tmpNew.Name6 = datum.Name
			tmpNew.Value6 = datum.Value
		case 7:
			tmpNew.Name7 = datum.Name
			tmpNew.Value7 = datum.Value
		case 8:
			tmpNew.Name8 = datum.Name
			tmpNew.Value8 = datum.Value
		case 9:
			tmpNew.Name9 = datum.Name
			tmpNew.Value9 = datum.Value
		case 10:
			tmpNew.Name10 = datum.Name
			tmpNew.Value10 = datum.Value
		case 11:
			tmpNew.Name11 = datum.Name
			tmpNew.Value11 = datum.Value
		}
	}
	return tmpNew
}

//排序功能
func RankByWordCount(wordFrequencies map[string]int) PairList {
	pl := make(PairList, len(wordFrequencies))
	i := 0
	for k, v := range wordFrequencies {
		pl[i] = TmpCapture{k, v}
		i++
	}
	//从小到大排序
	//sort.Sort(pl)
	//从大到小排序
	sort.Sort(sort.Reverse(pl))
	return pl
}

type PairList []TmpCapture

func (p PairList) Len() int           { return len(p) }
func (p PairList) Less(i, j int) bool { return p[i].Value < p[j].Value }
func (p PairList) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }

func IsContain(items []string, item string) bool {
	for _, eachItem := range items {
		if eachItem == item {
			return true
		}
	}
	return false
}
