-
Notifications
You must be signed in to change notification settings - Fork 41
/
stats_export.dart.go
63 lines (52 loc) · 1.29 KB
/
stats_export.dart.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package tools
import (
"github.com/gin-gonic/gin"
"github.com/TUM-Dev/gocast/dao"
"strconv"
"strings"
)
type ExportDataEntry struct {
Name string
XName string
YName string
Data []dao.Stat
}
type ExportStatsContainer struct {
data []*ExportDataEntry
}
const CSVSep = ","
const CSVLb = "\n\r"
func csvCell(val string) string {
val = strings.ReplaceAll(val, "\"", "\"\"")
return "\"" + val + "\""
}
func (e ExportStatsContainer) AddDataEntry(entry *ExportDataEntry) ExportStatsContainer {
e.data = append(e.data, entry)
return e
}
func (e ExportStatsContainer) ExportCsv() string {
result := ""
for _, data := range e.data {
result += csvCell("Name") + CSVSep + csvCell(data.XName) + CSVSep + csvCell(data.YName) + CSVLb
for _, stat := range data.Data {
result += csvCell(data.Name) + CSVSep + csvCell(stat.X) + CSVSep + csvCell(strconv.Itoa(stat.Y)) + CSVLb
}
}
return result
}
func (e ExportStatsContainer) ExportJson() []gin.H {
var result []gin.H
for _, data := range e.data {
var stats []gin.H
xName := strings.ToLower(data.XName)
yName := strings.ToLower(data.YName)
for _, stat := range data.Data {
stats = append(stats, gin.H{
xName: stat.X,
yName: stat.Y,
})
}
result = append(result, gin.H{"name": data.Name, "data": stats})
}
return result
}