X-Git-Url: https://projects.mako.cc/source/selectricity-live/blobdiff_plain/dc635b6d39be19a09a428282b6d639d029908df6..22f84a3ea8bc39eb4cb91575d35dfca683336032:/app/controllers/graphs_controller.rb?ds=sidebyside diff --git a/app/controllers/graphs_controller.rb b/app/controllers/graphs_controller.rb new file mode 100644 index 0000000..c810853 --- /dev/null +++ b/app/controllers/graphs_controller.rb @@ -0,0 +1,87 @@ +class GraphsController < ApplicationController + + # To make caching easier, add a line like this to config/routes.rb: + # map.graph "graph/:action/:id/image.png", :controller => "graph" + # + # Then reference it with the named route: + # image_tag graph_url(:action => 'show', :id => 42) + + def show + g = Gruff::Line.new + # Uncomment to use your own theme or font + # See http://colourlovers.com or http://www.firewheeldesign.com/widgets/ for color ideas +# g.theme = { +# :colors => ['#663366', '#cccc99', '#cc6633', '#cc9966', '#99cc99'], +# :marker_color => 'white', +# :background_colors => ['black', '#333333'] +# } +# g.font = File.expand_path('artwork/fonts/VeraBd.ttf', RAILS_ROOT) + + g.title = "Gruff-o-Rama" + + g.data("Apples", [1, 2, 3, 4, 4, 3]) + g.data("Oranges", [4, 8, 7, 9, 8, 9]) + g.data("Watermelon", [2, 3, 1, 5, 6, 8]) + g.data("Peaches", [9, 9, 10, 8, 7, 9]) + + g.labels = {0 => '2004', 2 => '2005', 4 => '2006'} + + send_data(g.to_blob, :disposition => 'inline', :type => 'image/png', :filename => "gruff.png") + end + + #The following section has been pasted directly fromworking pollarize graphs + #and hasn't been adopted to fit Selectricity yet + + def day_votes + @poll = Poll.find(params[:id]) + line = Gruff::Line.new + line.title = "Voters Per Day" + line.font = File.expand_path('/usr/X11R6/lib/X11/fonts/TTF/Vera.ttf', RAILS_ROOT) + line.data("#{@poll.name}", voter_days["voters_per_day"] ) + line.labels = voter_days["days_hash"] + line.x_axis_label = "Date" + line.y_axis_label = "Number of Votes" + line.minimum_value = 0.0 + line.draw + send_data(line.to_blob, + :disposition => 'inline', + :type => 'image/png', + :filename => "dayvotes#{@poll.id}.png") + end + + def voter_days + @poll = Poll.find(params[:id]) + voter_times = Array.new + unique_days = Array.new + voters_per_day = Array.new + days_hash = Hash.new + + @poll.questions.each do |qstn| + qstn.votes.each do |vote| + voter_times << vote.time unless voter_times.any? {|utime| utime == vote.time} + end + end + voter_times.sort! + #find all times in voter_times with the same date, and then concatenate + #that number onto votes_per_day + # + #doesn't work jsut yet + voter_times.each_with_index do |time, index| + count = 1 + unless unique_days.any? { |d1| d1.eql?(time.mon.to_s+"/"+time.day.to_s) } + unique_days << (time.mon.to_s+"/"+time.day.to_s) + count += (voter_times[(index+1)..-1].find_all {|t| t.mon == time.mon && t.day == time.day}).size + voters_per_day << count + end + end + + unique_days.each_with_index do |fmtdate, index| + days_hash[index] = fmtdate + end + return { "voters_per_day" => voters_per_day, "days_hash" => days_hash } + + end + #end copy/pasted section + + +end