diff --git a/analytics.go b/analytics.go index 3cabb6c8..99d2ac76 100644 --- a/analytics.go +++ b/analytics.go @@ -23,7 +23,7 @@ func (l analyticList) Len() int { } // Returns a list of frequency analytics for a given list of strings. -func analyticsFor(ss []string) []analytic { +func analyticsFor(ss []string, cutoff int) []analytic { m := make(map[string]int) t := 0 for _, s := range ss { @@ -37,6 +37,15 @@ func analyticsFor(ss []string) []analytic { } sort.Sort(analyticList(l)) + + if cutoff > 0 && len(l) > cutoff { + c := 0 + for _, i := range l[cutoff:] { + c += i.Count + } + l = append(l[:cutoff], analytic{"Others", c, 100 * float64(c) / float64(t)}) + } + return l } diff --git a/main.go b/main.go index d40bd06b..07f9dfd2 100644 --- a/main.go +++ b/main.go @@ -363,9 +363,9 @@ func getReport(key string) map[string]interface{} { r["key"] = key r["nodes"] = nodes r["categories"] = categories - r["versions"] = analyticsFor(versions) - r["platforms"] = analyticsFor(platforms) - r["os"] = analyticsFor(oses) + r["versions"] = analyticsFor(versions, 10) + r["platforms"] = analyticsFor(platforms, 0) + r["os"] = analyticsFor(oses, 0) reportCache = r