diff --git a/main.go b/main.go index 0f210be..339185a 100644 --- a/main.go +++ b/main.go @@ -126,6 +126,7 @@ func serveTracking() http.HandlerFunc { totalVisitorsLabels, totalVisitorsDps, sessionsDps, bouncesDps := tracking.GetTotalVisitors(startDate, endDate) hourlyVisitorsTodayLabels, hourlyVisitorsTodayDps := tracking.GetHourlyVisitorsToday() pageVisitors, pageRank := tracking.GetPageVisits(startDate, endDate) + timeOfDay, timeOfDayMax := tracking.GetVisitorTimeOfDay(startDate, endDate) tplCache.RenderWithoutCache(w, "tracking.html", struct { Start int StartDate time.Time @@ -143,6 +144,7 @@ func serveTracking() http.HandlerFunc { Countries []pirsch.CountryStats Platform *pirsch.VisitorStats TimeOfDay []pirsch.TimeOfDayVisitors + TimeOfDayMax float64 HourlyVisitorsTodayLabels template.JS HourlyVisitorsTodayDps template.JS ActiveVisitors int @@ -163,7 +165,8 @@ func serveTracking() http.HandlerFunc { tracking.GetOS(startDate, endDate), tracking.GetCountry(startDate, endDate), tracking.GetPlatform(startDate, endDate), - tracking.GetVisitorTimeOfDay(startDate, endDate), + timeOfDay, + float64(timeOfDayMax), hourlyVisitorsTodayLabels, hourlyVisitorsTodayDps, activeVisitors, diff --git a/template/tracking.html b/template/tracking.html index f6a288e..018fb4d 100644 --- a/template/tracking.html +++ b/template/tracking.html @@ -242,7 +242,10 @@ {{$i}} {{range $j, $day := $global.TimeOfDay}} - {{(index (index $global.TimeOfDay $j).Stats $i).Visitors}} + {{$visitors := float64 (index (index $global.TimeOfDay $j).Stats $i).Visitors}} + + {{$visitors}} + {{end}} {{end}} diff --git a/tpl/template.go b/tpl/template.go index 60cd339..402c38f 100644 --- a/tpl/template.go +++ b/tpl/template.go @@ -38,9 +38,11 @@ func (cache *Cache) load() { funcMap := template.FuncMap{ "slug": slug.Make, "format": func(t time.Time, layout string) string { return t.Format(layout) }, - "multiply": func(f, x float64) float64 { return f * x }, + "multiply": func(a, b float64) float64 { return a * b }, + "divide": func(a, b float64) float64 { return a / b }, "round": func(f float64) string { return fmt.Sprintf("%.2f", f) }, "intRange": intRange, + "float64": func(i int) float64 { return float64(i) }, } var err error cache.tpl, err = template.New("").Funcs(funcMap).ParseGlob(templateDir) diff --git a/tracking/statistics.go b/tracking/statistics.go index 6e3980b..9fd1594 100644 --- a/tracking/statistics.go +++ b/tracking/statistics.go @@ -161,7 +161,7 @@ func GetPlatform(startDate, endDate time.Time) *pirsch.VisitorStats { return analyzer.Platform(&pirsch.Filter{From: startDate, To: endDate}) } -func GetVisitorTimeOfDay(startDate, endDate time.Time) []pirsch.TimeOfDayVisitors { +func GetVisitorTimeOfDay(startDate, endDate time.Time) ([]pirsch.TimeOfDayVisitors, int) { min := endDate.Add(-time.Hour * 24 * 7) if startDate.Before(min) { @@ -172,10 +172,20 @@ func GetVisitorTimeOfDay(startDate, endDate time.Time) []pirsch.TimeOfDayVisitor if err != nil { logbuch.Error("Error reading visitor time of day statistics", logbuch.Fields{"err": err}) - return nil + return nil, 0 } - return visitors + maxVisitors := 0 + + for _, v := range visitors { + for _, s := range v.Stats { + if maxVisitors < s.Visitors { + maxVisitors = s.Visitors + } + } + } + + return visitors, maxVisitors } func sumVisitors(stats []pirsch.Stats) int {