From bb6aa392b953e018389843b02f044afd45d8afb9 Mon Sep 17 00:00:00 2001 From: Date: Thu, 9 Aug 2007 18:26:16 -0400 Subject: [PATCH] Removed the two methods from Application controller which were redundant - 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 | 46 ----------------------------- app/controllers/graph_controller.rb | 20 ++++++++++++- lib/rubyvote/election.rb | 5 ++-- 3 files changed, 22 insertions(+), 49 deletions(-) diff --git a/app/controllers/application.rb b/app/controllers/application.rb index bab76f9..8c6f8ae 100644 --- a/app/controllers/application.rb +++ b/app/controllers/application.rb @@ -6,50 +6,4 @@ class ApplicationController < ActionController::Base 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 diff --git a/app/controllers/graph_controller.rb b/app/controllers/graph_controller.rb index 4f33ac3..9ab2a4c 100644 --- a/app/controllers/graph_controller.rb +++ b/app/controllers/graph_controller.rb @@ -21,7 +21,8 @@ class GraphController < ApplicationController 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) @@ -43,6 +44,23 @@ class GraphController < ApplicationController 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 diff --git a/lib/rubyvote/election.rb b/lib/rubyvote/election.rb index 3d816a8..75614e6 100644 --- a/lib/rubyvote/election.rb +++ b/lib/rubyvote/election.rb @@ -34,7 +34,7 @@ class ElectionVote attr_reader :votes attr_reader :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 - + attr_reader :election + def initialize(voteobj=nil) unless voteobj and voteobj.kind_of?( ElectionVote ) raise ArgumentError, "You must pass a ElectionVote array.", caller -- 2.39.5