mirror of
https://github.com/Kugelschieber/marvinblum.git
synced 2026-01-18 06:40:27 +00:00
Added language statistics to tracking page.
This commit is contained in:
@@ -2,6 +2,7 @@ package tracking
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/emvi/logbuch"
|
||||
"github.com/emvi/pirsch"
|
||||
"html/template"
|
||||
"strings"
|
||||
@@ -19,12 +20,10 @@ type PageVisits struct {
|
||||
}
|
||||
|
||||
func GetTotalVisitors(start int) (template.JS, template.JS) {
|
||||
startTime := today()
|
||||
startTime = startTime.Add(-time.Hour * 24 * time.Duration(start-1))
|
||||
analyzer := pirsch.NewAnalyzer(store)
|
||||
visitors, err := analyzer.Visitors(&pirsch.Filter{From: startTime, To: today()})
|
||||
visitors, err := analyzer.Visitors(&pirsch.Filter{From: getStartTime(start), To: today()})
|
||||
|
||||
if err != nil {
|
||||
logbuch.Error("Error reading visitor statistics", logbuch.Fields{"err": err})
|
||||
return "", ""
|
||||
}
|
||||
|
||||
@@ -32,12 +31,10 @@ func GetTotalVisitors(start int) (template.JS, template.JS) {
|
||||
}
|
||||
|
||||
func GetPageVisits(start int) []PageVisits {
|
||||
startTime := today()
|
||||
startTime = startTime.Add(-time.Hour * 24 * time.Duration(start-1))
|
||||
analyzer := pirsch.NewAnalyzer(store)
|
||||
visits, err := analyzer.PageVisits(&pirsch.Filter{From: startTime, To: today()})
|
||||
visits, err := analyzer.PageVisits(&pirsch.Filter{From: getStartTime(start), To: today()})
|
||||
|
||||
if err != nil {
|
||||
logbuch.Error("Error reading page statistics", logbuch.Fields{"err": err})
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -51,6 +48,26 @@ func GetPageVisits(start int) []PageVisits {
|
||||
return pageVisits
|
||||
}
|
||||
|
||||
func GetLanguages(start int) []pirsch.VisitorLanguage {
|
||||
languages, _, err := analyzer.Languages(&pirsch.Filter{From: getStartTime(start), To: today()})
|
||||
|
||||
if err != nil {
|
||||
logbuch.Error("Error reading language statistics", logbuch.Fields{"err": err})
|
||||
return nil
|
||||
}
|
||||
|
||||
if len(languages) > 10 {
|
||||
return languages[:10]
|
||||
}
|
||||
|
||||
return languages
|
||||
}
|
||||
|
||||
func getStartTime(start int) time.Time {
|
||||
startTime := today()
|
||||
return startTime.Add(-time.Hour * 24 * time.Duration(start-1))
|
||||
}
|
||||
|
||||
func getLabelsAndData(visitors []pirsch.VisitorsPerDay) (template.JS, template.JS) {
|
||||
var labels strings.Builder
|
||||
var dp strings.Builder
|
||||
|
||||
@@ -15,8 +15,11 @@ const (
|
||||
connectionString = `host=%s port=%s user=%s password=%s dbname=%s sslmode=%s sslcert=%s sslkey=%s sslrootcert=%s connectTimeout=%s timezone=%s`
|
||||
)
|
||||
|
||||
var db *sqlx.DB
|
||||
var store pirsch.Store
|
||||
var (
|
||||
db *sqlx.DB
|
||||
store pirsch.Store
|
||||
analyzer *pirsch.Analyzer
|
||||
)
|
||||
|
||||
func NewTracker() *pirsch.Tracker {
|
||||
logbuch.Info("Connecting to database...")
|
||||
@@ -48,6 +51,7 @@ func NewTracker() *pirsch.Tracker {
|
||||
db = sqlx.NewDb(conn, "postgres")
|
||||
store = pirsch.NewPostgresStore(conn)
|
||||
tracker := pirsch.NewTracker(store, nil)
|
||||
analyzer = pirsch.NewAnalyzer(store)
|
||||
processor := pirsch.NewProcessor(store)
|
||||
processTrackingData(processor)
|
||||
pirsch.RunAtMidnight(func() {
|
||||
|
||||
Reference in New Issue
Block a user