-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtemplate.go
69 lines (65 loc) · 1.79 KB
/
template.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
64
65
66
67
68
69
package rickshaw
import (
"encoding/json"
"fmt"
)
type TemplateData struct {
HeaderHTML string
ReportName string
ReportLink string
RickshawURL string
RickshawDataFormatted RickshawDataFormatted
ItemType string
IncludeDataTable bool
IncludeDataTableTotals bool
}
func (td *TemplateData) FormattedDataJSON() []byte {
bytes, err := json.Marshal(td.RickshawDataFormatted.FormattedData)
if err != nil {
return []byte("")
}
return bytes
}
func (td *TemplateData) TableData() ([]string, [][]string) {
dataRows := [][]string{}
headRow := []string{td.ItemType}
haveHeader := false
if len(td.RickshawDataFormatted.FormattedData) > 0 {
allSeriesSubtotal := int64(0)
for _, series := range td.RickshawDataFormatted.FormattedData {
if len(series.Data) > 0 {
if !haveHeader {
for _, item := range series.Data {
dt := item.Time.UTC()
headRow = append(
headRow, fmt.Sprintf("%v %v",
dt.Month().String()[0:3],
dt.Year()))
}
haveHeader = true
}
dataRow := []string{series.Name}
seriesYSubtotal := int64(0)
for _, item := range series.Data {
dataRow = append(dataRow, fmt.Sprintf("%v", item.ValueY))
seriesYSubtotal += item.ValueY
}
if td.IncludeDataTableTotals {
dataRow = append(dataRow, fmt.Sprintf("%v", seriesYSubtotal))
allSeriesSubtotal += seriesYSubtotal
}
dataRows = append([][]string{dataRow}, dataRows...)
}
}
if td.IncludeDataTableTotals {
headRow = append(headRow, "Total")
dataRow := []string{"Total"}
for i := 0; i < len(headRow)-2; i++ {
dataRow = append(dataRow, "")
}
dataRow = append(dataRow, fmt.Sprintf("%v", allSeriesSubtotal))
dataRows = append(dataRows, dataRow)
}
}
return headRow, dataRows
}