예제 #1
0
파일: storage.go 프로젝트: Lkyzlwj/Graduate
func GetTrainRecord(coll string, page, num int) *types.QueryResult {
	recordLock.RLock()
	data := processedRecord[coll]
	recordLock.RUnlock()

	next := -1
	result := make([]types.TrainRecord, 1)
	record := types.TrainRecord{}
	record.Desc = data.Desc
	if 0 <= page*num && page*num < len(data.TimeStamp) {
		if (page+1)*num <= len(data.TimeStamp) {
			next = page + 1
			record.TimeStamp = data.TimeStamp[page*num : (page+1)*num]
		} else {
			record.TimeStamp = data.TimeStamp[page*num:]
		}

		if (page+1)*num <= len(data.Speed) {
			record.Speed = data.Speed[page*num : (page+1)*num]
		} else {
			record.Speed = data.Speed[page*num:]
		}

		record.CurSpeed = data.CurSpeed
		record.HIRun = data.HIRun

		if (page+1)*num <= len(data.Distance) {
			record.Distance = data.Distance[page*num : (page+1)*num]
		} else {
			record.Distance = data.Distance[page*num:]
		}

		record.CurDistance = data.CurDistance
		record.DistWithSpeed = data.DistWithSpeed
		record.DistWithHR = data.DistWithHR

		if (page+1)*num <= len(data.HeartRate) {
			record.HeartRate = data.HeartRate[page*num : (page+1)*num]
		} else {
			record.HeartRate = data.HeartRate[page*num:]
		}

		record.CurHeartRate = data.CurHeartRate
		record.HeartRateElapse = data.HeartRateElapse
		record.HRWithSpeed = data.HRWithSpeed

		if (page+1)*num <= len(data.Position) {
			record.Position = data.Position[page*num : (page+1)*num]
		} else {
			record.Position = data.Position[page*num:]
		}
	}
	result[0] = record

	return &types.QueryResult{result, len(data.TimeStamp), page - 1, page, next}
}