Removed the two methods from Application controller which were redundant -
author<jlsharps@mit.edu> <>
Thu, 9 Aug 2007 22:26:16 +0000 (18:26 -0400)
committer<jlsharps@mit.edu> <>
Thu, 9 Aug 2007 22:26:16 +0000 (18:26 -0400)
 the main version are in the graph controller. Started to add a borda bar
graph results method, when it came to our attention that the borda method
was most likely broken, counting only the most recent vote. Have added an attr_reader :election to Class Electionresults in rubyvote. About to attempt to fix the Borda method.

app/controllers/application.rb
app/controllers/graph_controller.rb
lib/rubyvote/election.rb

index bab76f91062983c5e9b3472d7983b4580532acf8..8c6f8aeabfc803bbd538516f06365afe69e90578 100644 (file)
@@ -6,50 +6,4 @@ class ApplicationController < ActionController::Base
   helper :user
   model :user
   
   helper :user
   model :user
   
-  def day_votes
-  
-    @election = Election.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("#{@election.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
-    @election = Election.find(params[:id])
-    voter_times = Array.new
-    unique_days = Array.new
-    voters_per_day = Array.new
-    days_hash = Hash.new
-    
-    @election.votes.each do |vote|
-        voter_times << vote.time unless voter_times.any? {|utime| utime == vote.time}
-    end
-    
-    voter_times.sort!
-  
-    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
 end
index 4f33ac3a3f7b02d212a7362ca9b26f10d0e22f3a..9ab2a4c1a5a8ccacfb463c0ac7046755e7be19c2 100644 (file)
@@ -21,7 +21,8 @@ class GraphController < ApplicationController
     line.draw
     send_data(line.to_blob, :disposition => 'inline', :type => 'image/png')
   end
     line.draw
     send_data(line.to_blob, :disposition => 'inline', :type => 'image/png')
   end
+  
+  #will place votes in a fixed number of intervals, and shows votes over time
   def votes_per_interval
     @election = Election.find(params[:id])
     data, labels = get_votes_per_interval_data(@election)
   def votes_per_interval
     @election = Election.find(params[:id])
     data, labels = get_votes_per_interval_data(@election)
@@ -43,6 +44,23 @@ class GraphController < ApplicationController
     send_data(line.to_blob, :disposition => 'inline', :type => 'image/png')  
   end
  
     send_data(line.to_blob, :disposition => 'inline', :type => 'image/png')  
   end
  
+  def quickvote_bar
+    @election = Election.find(params[:id])
+  end
+  
+  def borda_bar
+    @election = Election.find(params[:id])
+    
+    #Get the list of candidates from the election, and calculate how RubyVote
+    #gave each one points
+    @election.candidates.each do |candidate|
+    
+    #Tabulate how many points each candidate received
+    #Make the name of each candidate a label under the correspoding column
+    #done!
+  end
+  
  private 
  
   # generate the data and labels for each graph
  private 
  
   # generate the data and labels for each graph
index 3d816a89212e572a2c2165a2180908ab20fc7198..75614e6b6d294995fb53cb7de45b5daf35884de2 100644 (file)
@@ -34,7 +34,7 @@
 class ElectionVote
   attr_reader :votes
   attr_reader :candidates
 class ElectionVote
   attr_reader :votes
   attr_reader :candidates
-
+  
   def initialize(votes=nil)
     @votes = Hash.new unless defined?(@votes)
     @candidates = Array.new unless defined?(@candidates)
   def initialize(votes=nil)
     @votes = Hash.new unless defined?(@votes)
     @candidates = Array.new unless defined?(@candidates)
@@ -114,7 +114,8 @@ end
 
 class ElectionResult
   attr_reader :winners
 
 class ElectionResult
   attr_reader :winners
-
+  attr_reader :election
+  
   def initialize(voteobj=nil)
     unless voteobj and voteobj.kind_of?( ElectionVote )
       raise ArgumentError, "You must pass a ElectionVote array.", caller
   def initialize(voteobj=nil)
     unless voteobj and voteobj.kind_of?( ElectionVote )
       raise ArgumentError, "You must pass a ElectionVote array.", caller

Benjamin Mako Hill || Want to submit a patch?