Oct
09

Today I wanted to start adding some stats to ¿Cómo vamos?. Turns out it was very easy to do with the googlecharts gem.

Here’s the relevant code to generate a pie chart showing the percentage of solutions uploaded by each user on the site:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  module StatsHelper def pie_chart_for_solutions count = {} Solution.all.each do |solution| count[solution.user] ||= 0 count[solution.user] += 1 end total = Solution.count data = count.collect { |user, number| number } labels = count.collect do |user, number| "#{user.name} (#{total == 0 ? 0 : (100.0 * number / total).round}%)" end Gchart.pie(:data => data, :labels => labels, :size => '695x380', :theme => :thirty7signals) end end

We cycle through all solutions and keep a counter for how many belong to each user. Then we generate a label for each portion of the pie, appending its user’s percentage to the end. Then we pass this data to the gem, and that’s it.

Here’s an example of how the generated chart looks like:

Take a look at this commit to see all the changes in context. And here’s the live stats page.