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
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)
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
class ElectionVote
attr_reader :votes
attr_reader :candidates
-
+
def initialize(votes=nil)
@votes = Hash.new unless defined?(@votes)
@candidates = Array.new unless defined?(@candidates)
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