]> projects.mako.cc - selectricity/blobdiff - app/controllers/graphs_controller.rb
Well, it seems I forgot to add the acts_as_authenticated to the repository on my...
[selectricity] / app / controllers / graphs_controller.rb
diff --git a/app/controllers/graphs_controller.rb b/app/controllers/graphs_controller.rb
new file mode 100644 (file)
index 0000000..c810853
--- /dev/null
@@ -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

Benjamin Mako Hill || Want to submit a patch?